TUI design system: slice B¶
The gallery files were regenerated from master after P2/P5 for #3917. The slice history below records the original implementation; the images now show the final design.
The TUI uses one rounded, raised dialog frame with two horizontal cells of inset. Pickers, prompts, confirmations, help, and the Config/Accounts, hooks and task forms share it. Titles and actionable hints use ink. Nested text resets restore the dialog background so styled labels do not leave stripes. This applies only to AF-owned dialog content, before framing; agent terminals and RGB values are not rewritten. Assistant and account-login sessions retain their existing full-terminal tmux handoff, with no extra AF overlay around the child.
Confirmations keep a border-coloured frame, dead consequence text, and one accent confirm action. Task deletion names its target and returns to the task list on cancel or confirm; a refresh cannot change the confirmed task ID.
Collapsed, unselected sessions use one row; selected/expanded groups disclose branch and churn detail, while failed restores/archives remain visible. The rail omits an empty branch line, and Agent no longer shares the limit-state diamond. The tab shown by the pane is marked “open” rather than an unexplained asterisk. Pane titles read Session · Tab · Preview or Keyboard; preview origin is available in help. Rail section headings use ink, with underline for focus and no decorative chip. Terminal frames share square geometry; dialogs alone use rounded corners. The footer uses one middle-dot separator and readable ink, retaining its context-sensitive choices, width-based shedding, exit route, and complete help.
Empty task sections already reserved no rows. Zero or one project now reserves
no rail block either: the header retains project context, the picker remains
available, and its Delete action retains the existing identity-aware
confirmation. Two or more projects remain in the rail. Tasks show names and
next occurrence first, expand selected metadata beneath, separate groups with
one blank row, and keep the selected group in view. Edit is visible; ? actions
discloses run/toggle/delete, with no run action offered for a watch.
Light/Dark/System selection and migration remain slice C. No daemon theme operation or token value changes in this slice. The literal guard and all-role foreground/background SGR tolerance tests remain in force.
Capture provenance¶
These 112 light/dark stills are actual app-model Update/View output from the
existing P4 driver fixtures, serialized by its ANSI-to-SVG writer. Each SVG has
its source .ansi alongside it. Eight added scene pairs cover account selection, task actions and deletion,
one/multiple/degraded projects, dense sessions, and preview-origin help.
All app execution runs inside a sandbox
created by make playtest-container-detached; no host TUI or app/daemon tests.
The A/P4 live scenario remains supplementary evidence; these new captures are
deterministic app-model frames, not authenticated-agent recordings.
Reproduce inside the make-created sandbox with /src as cwd:
AF_TUI_DESIGN_CAPTURE=/home/dev/sandbox/p5-b-design \
AF_TUI_RECOVERY_CAPTURE=/home/dev/sandbox/p5-b-recovery \
/usr/local/go/bin/go test ./app -run 'Test(Recovery|DesignDriverScenes)' -count=1
Without capture variables the tests compare with app/testdata/design and
app/testdata/recovery. The A gallery retains its previously approved stills.
Verification¶
The formatting, build, vet, fast lint, file-length, literal guard, SGR tolerance and generated-theme drift checks pass. The UI and design-token packages pass, as do the container driver goldens. All 112 driver goldens and the changed app tests pass inside the sandbox. State mapping enumeration, source branch inventory, and role/contrast audit cover the complete diff.
make perf-container passed at 1,000 sessions: full frame mean 66.873 ms,
max 68.649 ms; key-to-render mean 68.232 ms, max 80.148 ms.
Every sample meets the stricter P5 480 / 351 ms limits; no budget was relaxed.
Raw samples and the
complete report preserve the evidence.
Strict MkDocs builds include this gallery. SVG and ANSI pairs are self-reviewed
before the draft is submitted for Captain's design review.
Stills¶
| Scene | Light | Dark |
|---|---|---|
| account picker | ||
| account register | ||
| accounts | ||
| alarm | ||
| archive failed | ||
| archive warning | ||
| config edit | ||
| config | ||
| confirmation | ||
| create failed | ||
| failure notice | ||
| help | ||
| hooks add | ||
| hooks edit | ||
| hooks | ||
| keyboard | ||
| kill failed | ||
| multiple projects | ||
| no daemon | ||
| no project | ||
| notice | ||
| pane | ||
| preview help | ||
| preview | ||
| project picker existing | ||
| project picker | ||
| project picker overflow | ||
| projects unavailable | ||
| prompt | ||
| rail project selection | ||
| rail task selection | ||
| search | ||
| search overflow | ||
| selection | ||
| selection overflow | ||
| sessions | ||
| single project | ||
| task actions | ||
| task create | ||
| task delete | ||
| task edit save failed | ||
| task program | ||
| task save failed | ||
| task schedule | ||
| task schedule type | ||
| task trigger | ||
| task weekdays | ||
| task weekdays unchecked | ||
| tasks | ||
| tasks unavailable | ||
| too small | ||
| zero accounts | ||
| zero sessions | ||
| zero tasks | ||
| sessions dense | ||
| projects degraded |