v0.5.0 — UX polish + TUI rendering fix
Highlights
Critical fix — TUI bodies no longer render empty
All 8 screens previously used height: NN% CSS, which Textual 8.2.5
collapses to 0 inside a TabPane. Every tab opened to an empty viewport.
Switched the screens and TabbedContent to 1fr fractional units;
DataTable and side panes now share remaining space correctly.
UX polish
- Per-screen header on every tab — a single Rich-markup line stating
what the tab shows and the key actions available. - Empty-state CTAs on Schedule (lists the 5 built-in templates),
Audit (shows thecc-janitor stats snapshotrecipe), and Dream
(explains the safety-net concept). - F1 tab-specific help modal — context-aware help for each tab.
- First-run Welcome modal with the 8-tab tour. Marker at
~/.cc-janitor/state/seen-welcomemakes it one-shot; re-display via
cc-janitor --tutorial. - Filter-by-scope labels next to the source-filter dropdowns on
Permissions / Memory / Hooks. - Inline column legends on Sessions (Msgs/Size) and Permissions
(Used90d, STALE/DUP). - Screen-level BINDINGS on every screen so Footer surfaces the
per-tab action keys.
Numbers
- 302 passing tests (was 290; +12 in
tests/tui/test_ux_polish.py) - All 4 CI jobs green (Ubuntu/Windows × Python 3.11/3.12)
Install / upgrade
pip install --upgrade cc-janitor
cc-janitor --tutorial # see the new Welcome tourSee CHANGELOG.md for the full diff.