Build the Panes TUI #28

Closed
opened 2026-08-31 18:24:34 +00:00 by xavierk · 1 comment
Owner

Parent

Implement the Fenris persistent TUI monitoring redesign

Canonical contracts: fenris-redesign spec · acceptance criteria — criterion IDs cited below live in the register.

What to build

The keyboard-first Panes TUI on Textual, per the normative layout: a full-width headline band (lifespan headline or its no-projection wording with the regime line; confidence state plus contributing facts; scenario range); a usage-history pane on the left (write-history sparkline with ▲ habit-change and ? unexplained-gap markers plus legend, habit-split bar with active/idle/powered-off/unknown shares); a drive-health and settings pane on the right (health facts, vendor-wear context line, read-only settings with the endurance baseline and its provenance label); a full-width service strip at the bottom (the four separate service facts, monitoring-period line, action legend). Bindings p pause (asks confirmation, explaining that paused time is excluded from the usage habit), r resume (does not), c collect now, d disclosures, q quit. The disclosures view carries the six disclosures verbatim. An empty store greets "no observations yet" with an enable hint, and the first-run prompt is the opt-in that enables the timer and opens the first period in one step. Privileged actions are invoked as terminal-attached subprocesses of the helper so the platform polkit agent can prompt on the real terminal (the helper itself lands in its own ticket; its invocation contract is what this ticket builds against). Headless snapshot/pilot tests drive the layout and the state matrix.

Acceptance criteria

  • One dense keyboard-first screen with the four normative regions and their content contracts; confidence rendered as evidence — state plus contributing facts, never a percentage (TUI-1)
  • Layout regions normative per the register: headline band, left history pane, right health+settings pane, bottom service strip with four separate facts (TUI-4)
  • Bindings p/r/c/d/q with pause-asks/resume-doesn't asymmetry; no page navigation (TUI-2 UI side, TUI-4)
  • Disclosures view renders the six disclosures verbatim; empty-store greeting and first-run opt-in prompt present (CI-4, IN-3 TUI side)
  • Privileged actions route through terminal-attached subprocess invocation of the helper; the TUI never samples in-process (LC-6/LC-8 invocation contract)
  • Headless tests render the confidence × freshness × baseline-tier combinations from synthetic stores per the rule table (CI-1, TUI side)

Blocked by

## Parent [Implement the Fenris persistent TUI monitoring redesign](https://git.bongbetic.com/xavierk/Fenris/issues/20) Canonical contracts: [fenris-redesign spec](https://git.bongbetic.com/xavierk/Fenris/src/branch/main/docs/spec/fenris-redesign.md) · [acceptance criteria](https://git.bongbetic.com/xavierk/Fenris/src/branch/main/docs/spec/acceptance-criteria.md) — criterion IDs cited below live in the register. ## What to build The keyboard-first Panes TUI on Textual, per the normative layout: a full-width headline band (lifespan headline or its no-projection wording with the regime line; confidence state plus contributing facts; scenario range); a usage-history pane on the left (write-history sparkline with ▲ habit-change and ? unexplained-gap markers plus legend, habit-split bar with active/idle/powered-off/unknown shares); a drive-health and settings pane on the right (health facts, vendor-wear context line, read-only settings with the endurance baseline and its provenance label); a full-width service strip at the bottom (the four separate service facts, monitoring-period line, action legend). Bindings `p` pause (asks confirmation, explaining that paused time is excluded from the usage habit), `r` resume (does not), `c` collect now, `d` disclosures, `q` quit. The disclosures view carries the six disclosures verbatim. An empty store greets "no observations yet" with an enable hint, and the first-run prompt is the opt-in that enables the timer and opens the first period in one step. Privileged actions are invoked as terminal-attached subprocesses of the helper so the platform polkit agent can prompt on the real terminal (the helper itself lands in its own ticket; its invocation contract is what this ticket builds against). Headless snapshot/pilot tests drive the layout and the state matrix. ## Acceptance criteria - [ ] One dense keyboard-first screen with the four normative regions and their content contracts; confidence rendered as evidence — state plus contributing facts, never a percentage (TUI-1) - [ ] Layout regions normative per the register: headline band, left history pane, right health+settings pane, bottom service strip with four separate facts (TUI-4) - [ ] Bindings `p`/`r`/`c`/`d`/`q` with pause-asks/resume-doesn't asymmetry; no page navigation (TUI-2 UI side, TUI-4) - [ ] Disclosures view renders the six disclosures verbatim; empty-store greeting and first-run opt-in prompt present (CI-4, IN-3 TUI side) - [ ] Privileged actions route through terminal-attached subprocess invocation of the helper; the TUI never samples in-process (LC-6/LC-8 invocation contract) - [ ] Headless tests render the confidence × freshness × baseline-tier combinations from synthetic stores per the rule table (CI-1, TUI side) ## Blocked by - [Render fenris status as the read-only CLI twin](https://git.bongbetic.com/xavierk/Fenris/issues/27)
xavierk added the ready-for-agent label 2026-08-31 18:25:27 +00:00
xavierk added this to the Build: Fenris persistent TUI monitoring redesign milestone 2026-08-31 18:25:29 +00:00
xavierk added a new dependency 2026-08-31 18:25:44 +00:00
xavierk added a new dependency 2026-08-31 18:25:47 +00:00
xavierk added a new dependency 2026-08-31 18:25:49 +00:00
xavierk self-assigned this 2026-09-01 18:21:38 +00:00
Author
Owner

Implemented in a2f7b62. Panes TUI on Textual with four normative regions, keybindings p/r/c/d/q, terminal-attached subprocess for privileged actions, disclosures view, empty-store greeting, first-run opt-in. 35 headless tests pass covering CI-1 state matrix, TUI-1/TUI-4 layout, CI-4 disclosures, IN-3 first-run prompt, pause/resume asymmetry.

Implemented in a2f7b62. Panes TUI on Textual with four normative regions, keybindings p/r/c/d/q, terminal-attached subprocess for privileged actions, disclosures view, empty-store greeting, first-run opt-in. 35 headless tests pass covering CI-1 state matrix, TUI-1/TUI-4 layout, CI-4 disclosures, IN-3 first-run prompt, pause/resume asymmetry.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: xavierk/Fenris#28