docs: port TUI roadmap to cl-tty, mark Emacs as secondary client
v0.8.0: Information Radiator now built on cl-tty v1.1.0. Minibuffer uses cl-tty Dialog stack. New TODO items: conversation view (ScrollBox + Markdown), command palette (Select), sidebar (slot system), status bar (Box + Theme), keybindings (keymap). v0.9.1: Emacs is now an optional secondary client, not the primary bridge. cl-tty is the primary TUI.
This commit is contained in:
@@ -36,31 +36,89 @@ On release:
|
||||
|
||||
** TODO v0.8.0: Information Radiator (Foundation)
|
||||
|
||||
Sidebar (6 panels), sidebar overlay mode (<120 cols), command palette (Ctrl+P), TrueColor theme expansion (8 presets), unified minibuffer panel with slash-command context menu and sub-mode navigation (wizard, settings, help).
|
||||
Sidebar (6 panels), sidebar overlay mode (<120 cols), command palette (Ctrl+P), TrueColor theme (8 presets), unified minibuffer panel with slash-command context menu and sub-mode navigation (wizard, settings, help) — all built on ~cl-tty~ v1.1.0.
|
||||
|
||||
*** DONE Unified minibuffer slash-command panel
|
||||
The croatoan TUI is replaced entirely. cl-tty provides the widget set (box, text, scrollbox, select, markdown, dialog), keybinding system, and theme engine. Passepartout's job is wiring — cl-tty components call the daemon's TCP API and render its response structures.
|
||||
|
||||
*** TODO Minibuffer — cl-tty dialog stack
|
||||
:PROPERTIES:
|
||||
:ID: id-v080-minibuffer
|
||||
:CREATED: [2026-05-10 Sat]
|
||||
:END:
|
||||
:LOGBOOK:
|
||||
- State "DONE" from "TODO" [2026-05-10 Sat]
|
||||
|
||||
Replace ad-hoc overlay windows with cl-tty's ~Dialog~ stack. Typing =/= auto-opens a ~select-dialog~ with ~25 slash commands (filtered in real time). Selecting =/wizard= transitions to a ~prompt-dialog~ in the same panel — cl-tty's ~*dialog-stack*~ handles push/pop, Esc dismisses. Future sub-modes (=/settings=, =/help=) slot in as additional dialog types.
|
||||
|
||||
- Define ~*slash-commands*~ — the same data structure, now driving cl-tty's ~Select~ options
|
||||
- Wire ~select-dialog~ on-Enter to push the next dialog type (wizard, settings, help)
|
||||
- Implement ~wizard-dialog~ subclass — validates UUID, writes ~/.passepartout/config.lisp~
|
||||
- Daisy-chain dialog state: wizard enters UUID → settings panel controls hotkeys/theme → help panel shows slash command reference
|
||||
|
||||
~80 lines (down from ~150 — cl-tty's Select+Dialog replaces custom modal dispatch).
|
||||
|
||||
*** TODO Conversation view — cl-tty ScrollBox + Markdown
|
||||
:PROPERTIES:
|
||||
:ID: id-v080-conversation
|
||||
:CREATED: [2026-05-13 Wed]
|
||||
:END:
|
||||
|
||||
Replace ad-hoc overlay windows with a single bottom-anchored panel. Typing =/= as the first character opens a command context menu (~25 slash commands, filtered in real time as the user types). Navigating to =/wizard= and pressing Enter transitions the panel into the setup wizard — same panel, same position, sub-mode stack. Esc returns to the command list. Future sub-modes (=/settings=, =/help=) slot into the same architecture.
|
||||
|
||||
- Add ~:minibuffer-mode~ and ~:minibuffer-selected-idx~ state fields to ~init-state~
|
||||
- Extract ~*slash-commands*~ data structure (~25 commands, each with description) from the ~on-key~ Enter handler
|
||||
- Add ~view-minibuffer~ that dispatches on ~:minibuffer-mode~ to ~view-slash-menu~, ~view-wizard-in-panel~
|
||||
- Add ~minibuffer-handle-key~ which dispatches to ~slash-menu-handle-key~ or ~wizard-handle-key~
|
||||
- TUI event loop: replace separate wizard key handlers with unified modal dispatch block
|
||||
- ~on-key~: auto-open slash-menu when =/= typed as first character
|
||||
- ~wizard-start~ / ~wizard-cancel~: set ~:minibuffer-mode~ instead of ~:wizard-visible~
|
||||
- Merge the wizard overlay (centered, 60x14) into the bottom-anchored panel
|
||||
- Remove ~:wizard-visible~ state field
|
||||
- ~ScrollBox~ with ~sticky-scroll~ (auto-follows new content, respects manual scroll-up)
|
||||
- User messages rendered as ~Box~ (role-colored left border)
|
||||
- Agent messages rendered via cl-tty's ~Markdown~ + ~Code~ + ~Diff~ renderables
|
||||
- Tool calls rendered as ~Select~ (collapsible, status-indicated: spinner running / green done / red error)
|
||||
- Gate trace as a collapsible ~Box~ within agent messages (property-drawer style)
|
||||
|
||||
~150 lines.
|
||||
|
||||
*** TODO Command palette — cl-tty Select
|
||||
:PROPERTIES:
|
||||
:ID: id-v080-palette
|
||||
:CREATED: [2026-05-13 Wed]
|
||||
:END:
|
||||
|
||||
- Ctrl+P opens a ~select-dialog~ with all daemon commands
|
||||
- Fuzzy-filtered with categories (session, memory, system, help)
|
||||
- Enter dispatches the command to the daemon via TCP, displays result in conversation
|
||||
|
||||
~40 lines.
|
||||
|
||||
*** TODO Sidebar — cl-tty slot system
|
||||
:PROPERTIES:
|
||||
:ID: id-v080-sidebar
|
||||
:CREATED: [2026-05-13 Wed]
|
||||
:END:
|
||||
|
||||
- 6 panels as cl-tty ~slot~ registrations (gate trace, focus, rules, context, cost, files)
|
||||
- Toggle with Ctrl+B or auto-hide on narrow terminals (<120 cols)
|
||||
- Panel data sourced from daemon's existing response plist keys (~:rule-count~, ~:focal-id~, ~:gate-trace~, etc.)
|
||||
|
||||
~80 lines.
|
||||
|
||||
*** TODO Status bar — cl-tty Box + Theme
|
||||
:PROPERTIES:
|
||||
:ID: id-v080-statusbar
|
||||
:CREATED: [2026-05-13 Wed]
|
||||
:END:
|
||||
|
||||
- Bottom-most line: directory, LSP status (green dot), MCP count, ~/status~ hint
|
||||
- Degraded-mode signaling (amber when ~*degraded-components*~ non-nil)
|
||||
- cl-tty theme tokens for colors — works with all 8 presets
|
||||
|
||||
~30 lines.
|
||||
|
||||
*** TODO Keybinding layer — cl-tty keymap
|
||||
:PROPERTIES:
|
||||
:ID: id-v080-keybindings
|
||||
:CREATED: [2026-05-13 Wed]
|
||||
:END:
|
||||
|
||||
- Global: Ctrl+P (palette), Ctrl+B (sidebar), Ctrl+Q (quit), PageUp/PageDn (scroll)
|
||||
- Prompt: Enter (send), Ctrl+C (interrupt), Up/Dn (history)
|
||||
- cl-tty's layered keymaps handle priority (global → local → input)
|
||||
|
||||
~40 lines.
|
||||
|
||||
~420 lines total.
|
||||
|
||||
** v0.9.0: Eval Harness — Safety Net First
|
||||
|
||||
Every subsequent release ships with automated regression protection. The eval harness is the gate that makes self-modification safe — before any neurosymbolic component modifies the system, the harness verifies nothing broke.
|
||||
@@ -79,9 +137,9 @@ Every subsequent release ships with automated regression protection. The eval ha
|
||||
- Task suite grows with codebase: every bug fix adds a regression task
|
||||
~200 lines.
|
||||
|
||||
** v0.9.1: Emacs Development Environment — A Functional UI
|
||||
** v0.9.1: Emacs Development Environment — Secondary Client
|
||||
|
||||
The croatoan TUI is on life support — enough to see output and type commands, but every render feature (markdown, tool visualization, mouse, adaptive layout) requires custom ncurses code destined for the trash at v2.0.0. Emacs is the v2.0.0 bridge: the same major mode, sidebar, and M-x commands survive from now through Phase III.
|
||||
cl-tty is the primary TUI (v0.8.0). The Emacs major mode is an optional secondary client for users who prefer Emacs-based workflows. Both clients communicate with the same daemon over the same TCP protocol — they are interchangeable frontends, not competing architectures.
|
||||
|
||||
*** TODO Emacs major mode
|
||||
:PROPERTIES:
|
||||
|
||||
Reference in New Issue
Block a user