Files
2026-10-27 23:04:52 +02:00

2.9 KiB
Raw Permalink Blame History

TUI-FL-001 evidence: stable keyboard footer

Validated 2026-10-27T22:59:34+02:00 on the native x86_64-unknown-linux-gnu development host with synthetic Ratatui/TestBackend fixtures. No production configuration, host service, or systemd VM was used.

Behavior and review

The standard TUI layout now reserves four footer rows from the first draw: two hint rows and their borders. The client-list region therefore keeps the same height as selection and available actions change. Hints use a stable priority order and fit into two bounded rows. A first packing pass shows every hint when they fit; only actual overflow triggers a second pass reserving a visible … more marker on the last row. The existing ? Help route remains visible in narrow list layouts. The source of context-sensitive hints and the keyboard action handlers were not changed. Terminals with 8 or 9 rows use the compact layout so the client pane retains visible content.

Buffer-level tests cover empty/populated/selected list geometry at 80×24, narrow widths 34/36/40, the compact 80×9 case, and widths 102/103 where all actions fit without a false omission marker. Tests check complete rendered labels and the marker row, not just source-side packing. Existing TUI workflow tests cover the unchanged action behavior.

An independent GPT-6-Luna/high reviewer found TUI-FL-001.2-R1 (P2, clipped marker on the first row) and R2 (P2, border-only list at height 9). A separate GPT-6-Luna/high repairer fixed both; re-review closed them. Re-review then found R3 (P3, unnecessary omission from reserving marker space too early). The repairer added a two-pass packer and a 102/103-column regression. Independent re-review closed R3 with no further actionable finding.

Checks and identity

Pinned rustc/Cargo 1.97.1, rustfmt 1.9.0 and Clippy 0.1.97 were verified. The final integrated revision passed from the repository root:

  • cargo test --locked tui::render::tests: 31 passed.
  • cargo fmt --all -- --check: exit 0.
  • cargo clippy --locked --all-targets -- -D warnings: exit 0.
  • cargo test --locked: 370 passed, 3 explicitly ignored, 0 failed, including 2 documentation tests.
  • cargo build --locked --release: exit 0.
  • git diff --check: exit 0.

Base commit: 4b53aad20cff6cec5d23f779702b58f0de599d44. Dirty Rust input src/tui/render.rs SHA256: ceae0bec7add49304a38f38987fdac554fc83e9d7d23695cf148f2f8404d3016. Native release artifact target/release/wireguard-admin SHA256: a16214c426b0cc9b29ec03124e965352e4f64f07c82d3ac23e4caf8e45d6273b. PLANS.md was also dirty with this maintenance record. The M16 private-systemd validation gap remains separate and unverified; no Alpine or VM suite was rerun.

Very narrow layouts intentionally show only priority hints plus the Help affordance; additional shortcuts remain available through the existing Help screen. A physical-terminal visual check was not performed.