thurbox TUI — UI/UX Review
This page is generated by the ui-review skill: it drives the
real TUI in an isolated sandbox, screenshots every screen, and critiques
each through four lenses — visual design, usability, consistency, and
accessibility. Re-run the skill to refresh it.
Summary — 21 findings across 17 screens
21 nits8 visual8 usability4 consistency1 accessibility
Top recommendations
- Both prior warnings are resolved this run: the repo-picker footer no longer overlaps its action pills (the hint clips with a clean gap before Done/Cancel), and the Settings panel widens to ~84 cols at ≥120-col terminals so every feature/notification description renders in full instead of clipping with “…”, with the ↻ restart marker now an accent-warning glyph instead of near-invisible gray.
- Theme picker preview (nit, unchanged): the Accent swatches and Status glyphs read clearly, but the Border and Modal-bg preview chips are still nearly invisible (thin outline / dark-on-dark). Render all four as filled chips so the live preview communicates the whole palette.
- Consistent long-value truncation (nit, unchanged): the info panel still wraps “not logged in (no subscription token)” across three lines, the automation editor shows a full absolute repo path, and the bottom Automations pane cuts off “… · in <time>”. Adopt one middle-truncation rule that keeps the most useful end (repo leaf, next-run time) visible.
- Side-by-side diff layout is now captured (the prior coverage caveat is resolved): the split-column view renders one source line per row with add/del on their own side. The native code-review view remains well-realized — per-file headers with +/- counts, syntax-highlighted hunks, mirrored changed-files column, inline comment compose, and a working/branch/commit target picker.
- No blockers or warnings remain; the open items are all polish nits.
Session list + terminal (default view) launch

nit
Footer surfaces the F-key panel alternatesusability
The bottom bar shows Help·F1, Info·F2, Files·F3, Theme·F4, Tasks·F5, Settings·^X, Quit·^Q directly, so a user whose terminal is focused (where the Ctrl panel chords pass through to the agent) still has a discoverable way to reach each panel.
Fix: No change needed — noted as a strength; it mitigates the terminal-passthrough discoverability gap.
nit
Automations pane summary is cut off at the column edgevisual
The bottom-left Automations summary renders as “daily 09:00 · spawn · in” with the actual next-run value clipped off the right edge of the narrow left column.
Fix: Middle-truncate the summary so the “in <time>” tail stays visible, or drop the cadence text when space is tight.
A different session selected Ctrl+J

nit
Selection highlight and status badge stay in syncconsistency
Moving the selection updates the solid-fill row highlight and the top-right session badge together; the selected name stays legible on the accent fill.
Fix: No change needed.
Session info panel Ctrl+B

nit
Long values wrap raggedly in the narrow Info columnvisual
The info panel stacks under the session list, so “not logged in (no subscription token)” wraps across three lines and the “Repos:” label sits on its own line with the value beneath. Readable but ragged. Density is otherwise strong (Name/Status/Agent/Repos, per-session + system CPU/RAM gauges, Automations countdown).
Fix: Let the value use the full column width (label above, value indented) or abbreviate — not urgent.
File viewer (repo tree) Ctrl+E

nit
Directory markers + a context-specific hint rowconsistency
Directories carry ▸ expand markers and the footer switches to file-viewer hints (j/k Move · h/l Collapse/Expand · Open · Search), matching the pattern of the other focusable panes.
Fix: No change needed.
Tasks panel (todo list) Ctrl+W

nit
Empty-state copy teaches the keyusability
The detail pane shows “No description — press e to add notes.”, explaining the empty state and the relevant key in one line; the full task title is shown there even though the right-column rows truncate it.
Fix: No change needed — a pattern worth reusing elsewhere.
nit
Task status carries shape + colouraccessibility
Todo/in-progress/done use distinct glyphs (☐/◐/☑) in addition to colour.
Fix: No change needed.
Automations list Ctrl+P

nit
Schedule summary is scannableusability
“nightly-triage — daily 09:00 · spawn · in 12h 20m” packs name, cadence, action type, and next-run into one line; the modal is centered with Edit/Close pills like the other overlays.
Fix: No change needed.
Global search strip Ctrl+/ + query

nit
Strong feedback: per-scope counts + grouped resultsusability
Typing “test” shows “2 tasks · 1 file [1/3]” with grouped TASKS/FILES results; matched characters highlight with underline + bold (not colour-only) in the live panels, and the unmatched task row dims.
Fix: No change needed.
Theme picker Ctrl+Y

nit
Border and Modal-bg preview chips are nearly invisiblevisual
The live preview shows Accent (filled red/green swatches) and Status glyphs (◐◆●○✗) clearly, but the Border and Modal-bg rows render as a thin outline / dark-on-dark, so two of the four preview rows read as empty.
Fix: Render Border and Modal-bg as filled chips like the Accent swatch so the whole palette previews at a glance.
New-session / repo picker Ctrl+N

nit
Footer key-hints no longer collide with the action pills (prior warning resolved)visual
The earlier overlap (“Ta█Done█t Cancel”) is gone: the hint row now clips to the space left of the Done/Cancel pills with a one-column gap, so both read cleanly. The fix is shared in render_hint_action_footer, which reserves the right-aligned button strip its own space.
Fix: No change needed — confirms the footer-collision fix. (The clip can cut the last hint mid-word; eliding at a word boundary would be a small polish follow-up.)
nit
Clear empty state points at the next actionusability
“No bookmarks — add via path input below” explains the empty list and directs the user to the Add Repo Path input.
Fix: No change needed.
Keybindings help + editor Ctrl+G / F1

nit
Comprehensive, sectioned, scrollable, rebind-readyusability
Bindings are grouped (Navigation / Sessions / Project / UI) with a scrollbar, a clear selected row, and a footer for the live-rebind workflow (j/k move · r rebind · d reset · Reset all).
Fix: No change needed; slightly heavier section headers would speed scanning.
Settings panel Ctrl+, / F6

nit
Descriptions render in full and the restart marker is legible (prior warning resolved)visual
On a ≥120-col terminal the modal widens to ~84 cols, so every description renders in full (“Native code-review view (diff + comments)”, “Mouse: clicks, wheel, drag-select, hover”, “Soft-delete sessions with an undo window”, “Min seconds between notifications per session”) instead of clipping with “…”. The ↻ restart marker now uses the same bold accent-warning colour as the restart note, so it stands out against the dim values.
Fix: No change needed — confirms the truncation + marker-contrast fix. The compact 66-col layout still applies on narrow terminals (where some descriptions necessarily clip).
Automation editor (multi-line prompt) Ctrl+P then Enter

nit
Multi-line prompt renders inline; consistent footervisual
The wrapping prompt field shows its content within the field and the footer carries Save/Cancel pills + ^E enable, consistent with the other editors. The repo value is a long absolute sandbox path that fills the column.
Fix: Middle-truncate a long repo path so the repo leaf stays visible.
Task editor (in-pane) Ctrl+W then Enter

nit
Editor vocabulary matches the automation editorconsistency
Field navigation and footer hints (Tab/↑↓ move · ←→ adjust · Enter/^S save · Esc cancel) mirror the automation editor, and the ‹ todo › status stepper matches the Settings scalars.
Fix: No change needed; the full-screen pane is mostly empty below the three fields — fine as headroom for a growing multi-line description.
Code-review view (branch diff + changed-files column) Ctrl+X / F7

nit
Dense, GitHub-style diff that reads at a glancevisual
Each file has a header with status + path + per-file counts (A src/greet.rs +3 -0), hunks are syntax-highlighted with gutter +/- signs and a subtle row tint, line numbers show on both sides, and the header names the target (“All branch changes (master..HEAD) +11 -2”). The Agent/Review/Shell tab bar and the right-hand changed-files column reuse the app’s border/accent treatment.
Fix: No change needed — a strong, theme-aware view.
nit
Footer buttons are labelled with their keysusability
Comment·c, Send→Agent·e, Close·esc, Find·/, File·f, Summary·s make the shortcuts discoverable, and the changed-files column carries its own nav legend (↑↓ move · ↵ open · r …).
Fix: No change needed.
Code review: inline comment compose + classification c

nit
Comment composes in context, not in a separate modalconsistency
The compose box floats inline at the selected diff line with a classification badge ([Praise]/issue/suggestion/note) and an inline hint (Tab: cycle type · Ctrl+S: save · Esc: cancel); the footer swaps to Save·^S / Cancel·esc / Class·tab, matching the editor pattern elsewhere.
Fix: The inline-hint header clips its trailing “Esc: cancel” at the diff width — minor; the same hint is fully shown in the footer pills, so no information is lost.
Code review: side-by-side diff layout v

nit
Side-by-side split-column layout (prior coverage caveat resolved)visual
Toggling with v renders the split-column layout: removed lines on the left, added on the right, with context mirrored on both sides and per-file headers retained. Long right-column lines clip at the column edge, as expected for a split view.
Fix: No change needed; true paired side-by-side (one logical change per row) is a named v1 follow-up.
Code review: target picker (working / branch / commit) t

nit
Target picker covers the three useful scopesusability
The picker lists Working changes (uncommitted), All branch changes (master..HEAD), and each commit in range (2213f9c feat: add greeting + checked arithmetic), with the active target highlighted — the orchestrator-native equivalent of tuicr’s -w/-r/commit targets.
Fix: No change needed.