TUI design system: slice C¶
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 now offers Light, Dark and System, with the same saved
light, dark and system values as the browser. The global appearance
setting applies on the next TUI launch. System detects the terminal background
before Bubble Tea starts, using termenv's OSC 11 / COLORFGBG fallback and dark
when unavailable. Forced modes bypass detection. The browser header preference
is separate and follows the OS for System.
Legacy auto, absent and unknown values resolve to System; reading does not
rewrite the file, and saving a valid choice replaces it. Retired palette rows
are hidden even from older daemon manifests. See configuration migration
for the full retired-key list and the deliberately separate daemon cleanup in
#3936.
Help omits the v prefix when the build has no Version. Released builds still
show their version. No other TUI layout or semantic mapping changes in C.
Capture provenance¶
These 116 light/dark frames were captured inside the existing make-created
af-p5-3916-b playtest sandbox, using the P4 app-model driver and ANSI-to-SVG
writer. Each SVG has its source ANSI beside it. No host TUI or app/daemon tests.
The new appearance scenes show explicit Light/Dark and System with each resolved
palette. System's resolved background is fixed by the driver for deterministic
stills; separate unit tests exercise detection, environment fallback, dark
fallback, and bypass for explicit choices.
Only eight TUI SVGs differ from B: four new appearance captures and four help / preview-help captures that remove the empty version prefix. The other 108 are byte-identical. These are app-model Update/View frames, not authenticated-agent recordings.
Reproduce inside the make-created sandbox, with /src as cwd:
AF_TUI_DESIGN_CAPTURE=/home/dev/sandbox/p5-c-design \
AF_TUI_RECOVERY_CAPTURE=/home/dev/sandbox/p5-c-recovery \
/usr/local/go/bin/go test ./app -run 'Test(Recovery|DesignDriverScenes|HelpTitleWithAndWithoutVersion)' -count=1
Without capture variables, the driver compares the checked-in app goldens. The shared manifest also adds the TUI setting to web Config, so its affected Config snapshots are refreshed by the perf container. Browser appearance selection is unchanged.
Verification¶
Role/contrast audit, state mapping enumeration, source branch inventory, and style construction inventory cover the complete C diff and the inherited UI state mappings. Verification record records checks.
The final make perf-container run passed at 1,000 sessions: full frame mean 79.734 ms,
max 88.021 ms; key-to-render mean 63.709 ms, max 68.426 ms.
Every sample is within the P5 480 ms / 351 ms budgets. No budgets changed.
Raw TUI samples and
complete metrics retain the evidence.
Stills¶
| Scene | Light | Dark |
|---|---|---|
| appearance | ||
| appearance system | ||
| help | ||
| preview help | ||
| account picker | ||
| account register | ||
| accounts | ||
| alarm | ||
| archive failed | ||
| archive warning | ||
| config | ||
| config edit | ||
| confirmation | ||
| create failed | ||
| failure notice | ||
| hooks | ||
| hooks add | ||
| hooks edit | ||
| keyboard | ||
| kill failed | ||
| multiple projects | ||
| no daemon | ||
| no project | ||
| notice | ||
| pane | ||
| preview | ||
| project picker | ||
| project picker existing | ||
| project picker overflow | ||
| projects degraded | ||
| projects unavailable | ||
| prompt | ||
| rail project selection | ||
| rail task selection | ||
| search | ||
| search overflow | ||
| selection | ||
| selection overflow | ||
| sessions | ||
| sessions dense | ||
| 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 |