Boxed dialogs, Enter opens info, edit moved into info #6

Merged
Duckboot merged 2 commits from feat/boxed-dialogs into main 2026-11-02 22:35:14 +01:00
Owner

What

  • Same look everywhere: the guest table sits in a "Guests" frame with the active context in its bottom border. Every dialog is a centred box with a title, labelled fields and the buttons bottom right: confirm (titled by the action), edit resources, switch context, back up and edit network.
  • Enter opens the info screen and replaces i. The footer shows "⏎ Info". The hint comes from the guest table's own binding, because a priority binding at app level would take Enter away from buttons and lists in the dialogs.
  • Edit moved into the info screen: editing cores, memory and disk is now e in the info screen, not on the main screen. When the edit dialog closes, you are back on the info screen.

Bugs fixed

  • The network dialog hid most of its fields. In the rows with several widgets, Textual gave each Select a width of 1 and each Input 100 %, which pushed bridge, firewall, the IPv4/IPv6 mode selects and the gateways off-screen. Every widget in a row now has an explicit width, and a test checks that each field is inside the screen.
  • Markup in names crashed the app. A guest name or backup note like a[/b] crashed the guest table and the dialogs, because DataTable cells and border titles were parsed as markup. They are now plain text. The crash in the table predates this PR; the new test exposed it.

Verification

  • 268 tests pass.
  • ruff check and ruff format --check report no issues.
  • betterleaks found no secrets.
  • Screenshots of the main screen and all dialogs, before and after. The "after" ones use test data, because the cluster's hostname did not resolve on the network in use at the time.
  • Known limit: at 80x24 the network dialog is 25-26 rows tall, so it scrolls (Tab reaches Apply/Cancel, Escape closes it).

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

## What - **Same look everywhere:** the guest table sits in a "Guests" frame with the active context in its bottom border. Every dialog is a centred box with a title, labelled fields and the buttons bottom right: confirm (titled by the action), edit resources, switch context, back up and edit network. - **Enter opens the info screen** and replaces `i`. The footer shows "⏎ Info". The hint comes from the guest table's own binding, because a priority binding at app level would take Enter away from buttons and lists in the dialogs. - **Edit moved into the info screen:** editing cores, memory and disk is now `e` in the info screen, not on the main screen. When the edit dialog closes, you are back on the info screen. ## Bugs fixed - **The network dialog hid most of its fields.** In the rows with several widgets, Textual gave each `Select` a width of 1 and each `Input` 100 %, which pushed bridge, firewall, the IPv4/IPv6 mode selects and the gateways off-screen. Every widget in a row now has an explicit width, and a test checks that each field is inside the screen. - **Markup in names crashed the app.** A guest name or backup note like `a[/b]` crashed the guest table and the dialogs, because `DataTable` cells and border titles were parsed as markup. They are now plain text. The crash in the table predates this PR; the new test exposed it. ## Verification - 268 tests pass. - `ruff check` and `ruff format --check` report no issues. - `betterleaks` found no secrets. - Screenshots of the main screen and all dialogs, before and after. The "after" ones use test data, because the cluster's hostname did not resolve on the network in use at the time. - Known limit: at 80x24 the network dialog is 25-26 rows tall, so it scrolls (Tab reaches Apply/Cancel, Escape closes it). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Duckboot added 2 commits 2026-11-02 22:35:03 +01:00
The info screen's style now applies everywhere. The guest table sits
in a "Guests" frame with the active context in its bottom border.
Every dialog is a centred box with a title, labelled fields and the
buttons bottom right: confirm (titled by the action), edit resources,
switch context, back up and edit network.

Fixed:
- The network dialog hid most of its fields. In Horizontal rows
  Textual gave Select a width of 1 and Input 100 %, which pushed
  bridge, firewall, the IP mode selects and the gateways off-screen.
  Every field in a row now has an explicit width.
- A guest name or note containing markup, such as "a[/b]", crashed the
  guest table and the dialogs, because DataTable cells and border
  titles were parsed as markup. They are now plain text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Enter on a guest now opens its info screen, replacing i. The guest
table shows Enter as "Info" in the footer. A priority binding at app
level would have taken Enter away from buttons and lists in the
dialogs, so the hint comes from the table's own binding instead.

Editing cores, memory and disk moved from the main screen into the
info screen (key e). When the edit dialog closes, you are back on the
info screen. Test helpers that pressed i or e on the main screen now
go through Enter, because the requirement changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Duckboot merged commit 0c3669271c into main 2026-11-02 22:35:14 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Duckboot/cv4pve-cli-tui#6