2.9 KiB
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.