Prototype the TUI information architecture #3
Notifications
Due Date
No due date set.
Depends on
#4 Define the lifespan projection and confidence model
xavierk/Fenris
#8 Define the collector, service, and CLI lifecycle
xavierk/Fenris
#6 Evaluate Python TUI frameworks for Fenris
xavierk/Fenris
Reference: xavierk/Fenris#3
Reference in New Issue
Block a user
Parent map: Chart Fenris’s persistent TUI monitoring redesign
Question
What TUI information architecture and interaction model makes Fenris’s overview, usage history, drive health, settings, service state, warming-up state, projection confidence, unexplained gaps, and changing habits understandable in a keyboard-first terminal? Build a cheap interactive or concrete prototype, gather the human’s reaction, and resolve the screen hierarchy, navigation, critical actions, and presentation priorities.
Context from the lifecycle decision (ADR 0003), now unblocking this prototype: present boot enablement, runtime activity, last collect outcome, and freshness as separate facts; Pause asks for confirmation, Resume doesn't; collect-now and pause/resume run through the polkit prompt via a terminal-attached subprocess — validating that tty passthrough works under the chosen TUI framework is part of this prototype.
Prototype asset ready for reaction: prototype/tui-ia on branch prototype/tui-information-architecture (throwaway branch, not main).
Run:
cd prototype/tui-ia && ./run(Textual 8.2.8; uv-based venv).s): steady·Supported, warming up·Limited, habit changed·Limited, stale·Supported→Limited, no baseline·Unavailable, paused·Limited — covering confidence presentation, warming-up, unexplained gaps, and changing habits.ppause (asks confirmation),rresume (does not),ccollect now (synchronous outcome) — each suspends the TUI and runs a polkit stand-in on the real terminal, validating the tty passthrough ADR 0003 requires. Outcomes land in the tty log (variant B service page).screenshots/(smoke_test.py, all checks green).Awaiting the human's reaction before resolving: which variant (or mix — header of B with density of A is a valid answer), whether the four service facts read as separate facts at a glance, whether confidence + contributing facts read as evidence rather than a percentage, whether pause has the right friction, and whether the polkit stub actually prompted in the terminal (the mechanism check).
Resolution — Variant A (Panes) adopted.
The human ran the prototype live and picked A · Panes: one dense keyboard-first screen, no page navigation — headline lifespan + confidence with contributing facts and scenario range across the top, usage history (sparkline with ▲ habit-change / ? gap markers, habit-split bar) as the left pane, drive health + settings right, and a service strip with the four separate facts plus the action legend at the bottom.
pasks,rdoesn't.screenshots/.This settles the map's first fog patch (exact presentation of confidence, warming-up, unexplained gaps, changing habits). The acceptance-criteria fog graduates to its own ticket, blocked by the remaining open decisions.