Last updated: 2026-03-22
| Version | Status | Tests | Key Features |
|---|---|---|---|
| v0.1.0 | ✅ Released | 172 | Full widget library, 7 known bugs |
| v0.2.0-dev | ✅ Complete | 280 | Architecture rebuild: Container, Frame, Window, Desktop, Overlay, Application, Dialog, HorizontalBar, MsgBox, JSON themes |
| v0.2.1 | ✅ Released | 321 | Scrollbar fixes, window handling, Builder Lite, task shelf, lifecycle hooks, title centering |
| v0.2.2 | ✅ Released | 335 | MenuBar → Overlay dropdown refactor, minimized window tray fix |
Plan: docs/PLAN-v0.2.1.md
Branch: v0.2-rebuild
- Scrollbar inactive styling (3 theme fields,
set_active(), focus propagation) - Scrollbar hover fix (Frame routes mouse events to border scrollbars)
- Phase 3: Task bar shelf for minimized windows
- Phase 4a: FrameConfig struct
- Phase 4b: Window Builder Lite pattern
- Phase 4c: Widget presets (Window::editor, ::palette, ::tool)
- Phase 5: View lifecycle hooks (on_focus, on_blur)
- Phase 6: Demo update
- Phase 7: JSON theme files update
Phase 3 (task shelf) ──────────────┐
Phase 4a (FrameConfig) → 4b (builder) → 4c (presets) ──┐
Phase 5 (lifecycle) ──────────────┐ │
Phase 7 (JSON themes) ──────────────┤ │
└── Phase 6 (demo) ┘
Plan: docs/PLAN-v0.2.2.md
Branch: v0.2-rebuild
- Phase 1: MenuBox enhancement — command emission on confirm, Left/Right navigation
- Phase 2: HorizontalBar simplification — remove self-draw (~170 lines), post deferred events
- Phase 3: Application orchestration — intercept CM_OPEN_DROPDOWN, create MenuBox overlays
- Phase 4: OverlayManager — dismiss callback (on_dismiss command)
- Phase 5: Demo + integration tests
- F2: Minimized window tray fix — Frame draws at height=1, task shelf visible + clickable
Menu dropdowns render via OverlayManager above all windows, eliminating clip-area limitations. Removes ~200 lines of duplicate drawing/event code from HorizontalBar. Minimized windows visible in task shelf with close button + title, click-to-restore working.
- F4: TachyonFX integration point (
Application::draw()+ optionalEffectManager) - F5: Channel-based external events (
tokio::mpscfor background → UI) - F6:
Application::post_event()public API - F7: Widget validation framework
- F9: Tree widget (hierarchical list/tree view)
- Drag-and-drop between windows
- Multi-document interface (MDI) patterns
- Clipboard integration (copy/paste between views)
- Community Controls pattern — documented extension pattern for community-contributed View implementations (guide + example)
- View trait stays unified — state + events + render in one trait. NOT separate Widget + EventHandler. turbo-tui is a component framework, not a widget library.
- Builder Lite for construction —
self-consuming methods returningSelf. No separate Builder struct. - Deferred events over Action returns — Keep deferred event queue. Action enum doesn't support three-phase dispatch.
- Frame owns scrollbars —
Option<ScrollBar>on Frame, not Container children. Scrollbars sit on the border. - Post-render effects = future — TachyonFX-style transforms. Not yet, but design must not prevent it.
- Centralized catch + three-phase dispatch — Three-phase: PreProcess → Focused → PostProcess.
| Document | Path | Purpose |
|---|---|---|
| CLAUDE.md | CLAUDE.md |
Agent configuration, conventions, current state |
| HISTORY.md | HISTORY.md |
Change log (append-only) |
| v0.2 Plan | docs/PLAN-v0.2.md |
v0.2 architecture rebuild plan (completed) |
| v0.2.1 Plan | docs/PLAN-v0.2.1.md |
v0.2.1 sprint plan (completed) |
| HorizontalBar Design | docs/DESIGN-horizontal-bar.md |
Unified MenuBar+StatusBar design |
| ADR-002 | ~/four-code/docs/ADR-002-turbo-tui-windowing.md |
Architecture decision record |