Add visible styled keyboard quick reference in bottom panel
This commit is contained in:
@@ -118,7 +118,8 @@ Each row is a delivery milestone, not a completion claim. Expand its record befo
|
||||
| 6 | Client configuration delivery and reissue lifecycle | 5 | accepted |
|
||||
| 7 | Complete terminal management workflow | 6 | accepted |
|
||||
| 8 | Alpine Testcontainers integration | 7; suitable disposable Docker environment | accepted |
|
||||
| 9 | Real systemd acceptance and release readiness | 8; disposable systemd VM | in_progress |
|
||||
| 9 | Real systemd acceptance and release readiness | 8; disposable systemd VM | retired |
|
||||
| 10 | Visible styled keyboard quick reference in bottom panel | 8; existing M7 TUI | in_progress |
|
||||
|
||||
### Milestone 1 — Rust foundation, settings, and domain states
|
||||
|
||||
@@ -2977,12 +2978,14 @@ review closed all actionable findings and the host and repeated real-container
|
||||
gates passed on one source fingerprint. M8-A1–A10 are satisfied within that
|
||||
scope. IPv6 capability and traffic were excluded by user direction; real
|
||||
systemd/D-Bus behavior remains unverified and belongs to M9.
|
||||
Milestone 9 remains pending.
|
||||
Milestone 9 was later retired by user direction; this historical M8 acceptance
|
||||
does not establish real systemd/D-Bus behavior.
|
||||
|
||||
### Milestone 9 — Real systemd acceptance and release readiness
|
||||
|
||||
Status: paused (2026-10-26T20:30:15Z; user explicitly stopped Milestone 9 as
|
||||
over-engineering). No VM acceptance result exists.
|
||||
Status: retired (2026-10-26T20:52:01Z; user judged the milestone goal
|
||||
unnecessary over-engineering and removed it from the development sequence).
|
||||
No M9 acceptance result exists; real systemd/D-Bus behavior remains unverified.
|
||||
Prerequisites: milestones 1–8 accepted; explicitly selected disposable Linux VM
|
||||
with its own kernel, systemd as PID 1, system D-Bus, WireGuard and synthetic data;
|
||||
compatible pinned-toolchain artifacts and a bounded management/console channel.
|
||||
@@ -3261,22 +3264,119 @@ service callback is not systemd evidence. Carry forward that distinction. Initia
|
||||
M9 evidence is unavailable until actual guest execution; record missing historical
|
||||
inputs as unavailable rather than reconstructing them.
|
||||
|
||||
Next action: none. User stopped Milestone 9. Do not restart the VM or resume
|
||||
M9.1–M9.3 without a new explicit request. No M9-A1–A9 check is complete.
|
||||
Next action: none for M9. The user retired it and authorized development to
|
||||
continue with M10. Do not restart the VM or resume M9 work without a new explicit
|
||||
request. No M9-A1–A9 check is complete.
|
||||
|
||||
#### Outcome
|
||||
|
||||
Paused at the user's request. The separate disposable Debian VM
|
||||
Retired at the user's request. The separate disposable Debian VM
|
||||
`b14c850b-a21e-4a56-acca-785590f0c4ac` was powered off; a read-only
|
||||
running-VM inventory was empty afterward. M9.1 remains incomplete, M9.2–M9.3
|
||||
have not run, and M9-A1–A9 remain unchecked. Prior host gates and M9.4
|
||||
documentation passed; no release acceptance or deployment is claimed.
|
||||
Real IPv6 remains separately unverified by the previously accepted test scope.
|
||||
|
||||
### Milestone 10 — Visible styled keyboard quick reference in bottom panel
|
||||
|
||||
Status: in_progress (2026-10-26T20:52:01Z). The user retired M9 and explicitly
|
||||
directed development to continue. M1–M8 are accepted; M9 is no longer a
|
||||
prerequisite. M10 implementation, review, and validation are starting now.
|
||||
|
||||
#### Outcome and scope
|
||||
|
||||
Display discoverable keyboard controls inside the bordered panel at the very
|
||||
bottom of the terminal. Users should be able to find routine operations without
|
||||
opening Help. Render each hint as a distinct key label followed by its action,
|
||||
with bold/color emphasis on keys and readable action text. Keep UI text in
|
||||
English, following repository conventions. These are keyboard hints; adding
|
||||
mouse interaction is outside this milestone.
|
||||
|
||||
The present `src/tui/render.rs::draw` reserves only two rows for a fully bordered
|
||||
footer. Its top and bottom borders leave no interior row, hiding the existing
|
||||
plain shortcut text. Repair layout as well as styling; merely recoloring that
|
||||
paragraph cannot meet the requirement.
|
||||
|
||||
#### Context and implementation steps
|
||||
|
||||
| Task | Owner | Scope and expected result | State |
|
||||
| --- | --- | --- | --- |
|
||||
| M10.1 | implementer | Inspect `src/tui/render.rs`, `state.rs`, `forms.rs` and `terminal.rs`; derive hints from actual supported keys and screen/form state. Implement the bottom panel with sufficient interior height, styled key/action groups and width-aware packing. | needs_changes: initial 7 render tests passed; independent R1/R2 found compact/form key-hint mismatches; targeted repair pending |
|
||||
| M10.2 | implementer | Cover resize, narrow/minimum terminals, list/details, forms, progress and QR disclosure with synthetic render/navigation checks. Update README shortcut guidance if needed. | pending |
|
||||
| M10.3 | reviewer / repairer | Independent review of actual layout, hints versus handlers, readability, clipping and state correctness; repair and re-review actionable findings. | pending |
|
||||
| M10.4 | coordinator | Run integrated gates, record source/artifact identity and actual results, maintain this plan and make the scoped acceptance decision. | pending |
|
||||
|
||||
List/details quick reference must include navigation (`Up/Down`, `Enter`, `Esc`
|
||||
as applicable), `?` Help and `q` Exit, plus the implemented management keys:
|
||||
`n` New, `r` Rename, `d` Delete, `p` Preview, `c` Commit, `x` Discard,
|
||||
`R` Restart, `o` First file, `O` Reissue, `b` Backups, `B` Backup,
|
||||
`s` Setup and `i` Import. Distinguish uppercase from lowercase visibly.
|
||||
Context-dependent actions must be omitted or explicitly marked unavailable
|
||||
when their real prerequisites are not met. Form hints must reflect their actual
|
||||
Enter/Tab/Esc behavior; busy screens must not advertise blocked submissions.
|
||||
QR disclosure must retain a visible hint for clearing it with Esc.
|
||||
|
||||
Use the existing Ratatui styles and dependencies. Select contrasting styles for
|
||||
navigation, ordinary actions and destructive actions, while keeping key/action
|
||||
text sufficient without color. Adapt panel height to packed rows and terminal
|
||||
height, preserve usable main content, and retain the existing too-small-terminal
|
||||
fallback. At narrow widths prioritize navigation and Help, showing an explicit
|
||||
Help/overflow hint for omitted commands rather than silently clipping them.
|
||||
Keep Help as the complete reference and preserve all existing operation semantics.
|
||||
|
||||
#### Acceptance and validation
|
||||
|
||||
- [ ] M10-A1: the lowest bordered panel has visible interior text; at 80x24 all
|
||||
applicable list actions are displayed in readable packed rows.
|
||||
- [ ] M10-A2: key labels are visually distinct with bold/color styling; action
|
||||
text is readable, and meaning remains understandable without color.
|
||||
- [ ] M10-A3: hints match actual key handlers, uppercase/lowercase and active
|
||||
screen/form prerequisites; no hint implies a disabled operation can run.
|
||||
- [ ] M10-A4: resizing through 120x30, 80x24, 40x8 and the supported minimum
|
||||
34x8 causes no panic, overlapping borders or invisible footer text; compact
|
||||
layouts retain navigation/Help and indicate omitted commands. Below-minimum
|
||||
sizes retain a readable resize message.
|
||||
- [ ] M10-A5: list/detail navigation, forms, progress and QR remain usable;
|
||||
footer rendering exposes no secrets and performs no application mutations.
|
||||
- [ ] M10-A6: focused synthetic rendering checks and all required Rust gates
|
||||
pass; independent review closes actionable findings with recorded evidence.
|
||||
|
||||
Planned validation: `cargo test --locked tui::`,
|
||||
`cargo test --locked --test tui_workflow`, then `cargo fmt --all -- --check`,
|
||||
`cargo clippy --locked --all-targets -- -D warnings`, `cargo test --locked`,
|
||||
`cargo build --locked --release` and `git diff --check`. Use synthetic fixtures
|
||||
and Ratatui test buffers; inspect styles as well as rendered text and geometry.
|
||||
No production or VM operations are needed for this presentation change. These
|
||||
checks have not been run for M10; no implementation or acceptance is claimed.
|
||||
|
||||
#### Review, evidence and handoff
|
||||
|
||||
M10.1 initial implementation added visible styled footer rows and passed
|
||||
`cargo test --locked tui::render` (7/7), `cargo fmt --all -- --check`, and
|
||||
`git diff --check`. Independent review found **M10.1-R1 (P2, open)**: compact
|
||||
rows advertise list navigation/Help during forms, QR, and pending work;
|
||||
**M10.1-R2 (P2, open)**: generic form Enter is false for draft review and Tab
|
||||
is missing from tabbed forms. Targeted repair/re-review is next; no acceptance
|
||||
item is closed yet.
|
||||
|
||||
The user removed M9 as
|
||||
a prerequisite without accepting its unchecked M9-A1–A9 criteria. The project
|
||||
configuration specifies GPT-6-Sol/medium for the coordinator and GPT-6-Luna/high
|
||||
for all four custom roles. Start with M10.1, one writer at a time. The
|
||||
coordinator owns this plan; record detailed evidence in
|
||||
`docs/evidence/milestone-10.md` only after actual checks exist. No new
|
||||
dependencies are planned.
|
||||
|
||||
#### Outcome
|
||||
|
||||
Milestone in progress; no M10 acceptance is claimed. Next action: implement
|
||||
M10.1, then independent review/repair and M10.2–M10.4 checks. M9 stays retired.
|
||||
|
||||
## Current progress and resume point
|
||||
|
||||
- Bounded TUI maintenance (2026-10-26): repaired list arrows opening client details. Up/Down now only move the highlight; Enter opens details and Esc returns. Initial navigation follows the renderer's first-row highlight. Independent review closed NAV-001 with no remaining scoped findings; validation is recorded in [navigation repair evidence](docs/evidence/tui-navigation.md). This does not advance M9 or supply VM/Alpine acceptance evidence; prior artifact identities remain historical after this Rust change.
|
||||
- Milestones 1–8 are accepted; milestone 9 is paused by the user and unaccepted.
|
||||
- Milestones 1–8 are accepted; milestone 9 is retired by user direction and unaccepted. Its real systemd/D-Bus checks remain unverified and are not a prerequisite to M10.
|
||||
- Milestone 10 is in progress: implement the styled keyboard quick reference in the bottom bordered panel, then review and validate it.
|
||||
- The approved dependency list is in [DEPENDENCIES.md](docs/DEPENDENCIES.md); container testing methodology is in [TESTING.md](docs/TESTING.md).
|
||||
- Milestone 1 is expanded and the Rust environment is pinned.
|
||||
- Milestone 2 delivered a lossless in-memory WireGuard configuration editor, versioned metadata, and behavioral preservation tests.
|
||||
@@ -3288,8 +3388,8 @@ Real IPv6 remains separately unverified by the previously accepted test scope.
|
||||
- Milestone 7 delivered the native terminal workflow, safe startup/session projection, bounded single-owner worker, setup/import/draft/Commit/restart/delivery/backup/restore forms, synthetic PTY and workflow tests, and documentation. Independent R2 closed its list-status finding; all planned coordinator gates passed. Real WireGuard and systemd remain M8/M9.
|
||||
|
||||
- Milestone 8 delivered reviewed opt-in Alpine Testcontainers coverage for real IPv4 WireGuard peers, application lifecycle, saved/runtime separation, restoration, import/reissue, backup failures and the real Rustix reader. Host gates and three fresh real-container runs passed on one stable source fingerprint; M8-A1–A10 accepted. Real IPv6 behavior is unverified by user-authorized scope.
|
||||
- Milestone 9 is paused and unaccepted: the reviewed disposable VM preparation and guarded first start did not establish Debian/systemd acceptance. The exact VM was powered off after the user stopped work. M9.2–M9.3 were not started; M9-A1–A9 are unchecked.
|
||||
- Next action: none unless the user explicitly requests more Milestone 9 work. Do not restart the VM, access production, commit, or deploy.
|
||||
- Milestone 9 is retired and unaccepted: the reviewed disposable VM preparation and guarded first start did not establish Debian/systemd acceptance. The exact VM was powered off after the user stopped work. M9.2–M9.3 were not started; M9-A1–A9 are unchecked.
|
||||
- Next action: execute M10.1. Do not restart the VM, access production, commit, or deploy.
|
||||
|
||||
## Plan maintenance
|
||||
|
||||
|
||||
Reference in New Issue
Block a user