• v0.5.1 7106af5c09

    style(tui): UI polish pass (v0.5.1)

    vh released this 2026-05-24 15:06:10 -07:00 | 259 commits to main since this release

    Cosmetic refinements on top of v0.5.0's content-only main pane. No
    behavior change; ships as a patch bump.

    Color signal — terminal labels tinted per outcome

    The transcript's [done]/[error]/[cancelled] labels were plain
    foreground (Australis #a9bcc3 white), which made them slow to scan
    against the surrounding assistant text. Now tinted per outcome:

    • [done] → Aurora green (#16B866 / $success)
    • [error] → Dawn red (#ff491a / $error)
    • [cancelled] → Dawn yellow (#e1c631 / $warning)

    The post-Done Rule() separator is also tinted to Australis dark-60
    (#86929d) so the streamed-text → markdown-body boundary reads as
    chrome, not a content artifact.

    Empty-state placeholders

    Tools and Debug panes were stark-empty before any turn fired — easy
    to misread as "the pane is broken." Now show placeholder lines on
    mount in Sea dark-50 italic:

    Tools tab: (no tool events yet — start a turn that uses tools)
    Debug tab: (waiting for telemetry — start a turn)

    The placeholders scroll off naturally as real events fill the panes.

    Live thinking widget self-explains

    The thinking-current Static at the top of the right column used to
    just display raw thinking content with no context — an operator
    glancing at the screen mid-stream might not realize they were
    looking at LLM chain-of-thought. Now prefixed with "thinking… " so
    the widget self-identifies.

    Spacing + chrome

    • Transcript / tools-log / debug-log: 1-cell horizontal padding so
      content doesn't hug the column border.
    • thinking-current: italic text-style on top of the dark-60 color,
      so the live-preview band is visually distinct from solid-colored
      log content.
    • Active tab in TabbedContent: Aurora bright-cyan label + bold
      text-style, so the eye lands on the currently selected pane.
    • Input placeholder text: tinted to Sea dark-50 so it reads as
      placeholder, not content.

    Test impact

    3 new tests added (test_done_label_styled_success,
    test_empty_state_placeholders_present, plus the polish hits
    test_thinking_widget_truncation / test_thinking_coalesce updated for
    the "thinking… " prefix). 4 existing tests that checked
    isinstance(w, str) and w.startswith("[done]") updated to use the
    _text_of helper (terminal labels are now RichText, not str).
    _spy_writes helper widened to accept positional args after Textual's
    internal deferred-render path started passing them positionally
    post-Resize.

    241/241 GREEN; ruff clean. Live smoke against personal Worldtree
    confirmed: Done line renders in Aurora green #16B866 verbatim;
    both placeholder lines appear in dark-50; thinking widget shows
    "thinking… " during a turn.

    Patch bump (v0.5.0 → v0.5.1) per SemVer etiquette: purely cosmetic;
    no signature change; no caller-visible behavioral shift.

    Downloads