docs: update v0.8.0+ roadmap for cl-tty, Emacs-style bottom panel

- Sidebar: Croatoan window → cl-tty framebuffer draw-text
- Overlay mode: absolute-positioned ncurses → Emacs minibuffer-style
  bottom panel (shrink chat height, render in freed rows)
- Command palette: Croatoan window overlay → framebuffer bottom panel
- TrueColor: Croatoan set-rgb → cl-tty hex-to-rgb + SGR 38/48
- Tool viz: Croatoan init-pair/color-pair → cl-tty draw-text fg/bg
- Mouse: Croatoan mouse-enabled-p → cl-tty v1.1.0 SGR mouse parsing
This commit is contained in:
Hermes
2026-05-12 22:47:42 +00:00
parent e674dcb2e3
commit edfcfcd7e1

View File

@@ -1514,15 +1514,23 @@ Content (ordered vertically):
6. ~Cost~ — session cost (~$0.12 this session~) updating after each LLM call. 6. ~Cost~ — session cost (~$0.12 this session~) updating after each LLM call.
7. ~Protection~ — gate effectiveness counter: "Gates blocked: 3 destructive, 7 network exfil, 12 secrets." Updated on each gate decision. This is the specific-value-proposition panel — no competitor has deterministic gates to count. 7. ~Protection~ — gate effectiveness counter: "Gates blocked: 3 destructive, 7 network exfil, 12 secrets." Updated on each gate decision. This is the specific-value-proposition panel — no competitor has deterministic gates to count.
Implementation uses a fourth Croatoan ~window~ (sidebar on right) or a panel overlay. All data is already in the daemon's response plist (~:rule-count~, ~:foveal-id~, ~:gate-trace~). The gate block counts come from a new ~*dispatcher-block-counts*~ alist tracked in ~dispatcher-check~. ~200 lines (includes panel 7 addition). |Implementation uses cl-tty's framebuffer-backend: render the sidebar panels—Gate trace, focus, rules, context gauge, files, cost, protection—to the right region of the framebuffer (offset x = width - 42). In the Emacs minibuffer-style approach (below), the panel content renders at the bottom of the terminal instead. All data is already in the daemon's response plist (~:rule-count~, ~:foveal-id~, ~:gate-trace~). The gate block counts come from a new ~*dispatcher-block-counts*~ alist tracked in ~dispatcher-check~. ~200 lines (includes panel 7 addition).
*** TODO Sidebar overlay mode (< 120 cols) *** TODO Information panel — Emacs minibuffer-style bottom region
:PROPERTIES: :PROPERTIES:
:ID: id-v070-sidebar-overlay :ID: id-v070-sidebar-overlay
:CREATED: [2026-05-08 Fri] :CREATED: [2026-05-08 Fri]
:END: :END:
When terminal width < 120, sidebar becomes an absolute-positioned overlay with semi-transparent backdrop (ncurses ~opaque~ + themed background). Toggle via ~/sidebar~ or ~Ctrl+X+B~. The chat area fills the full width when sidebar is hidden. ~30 lines. Replaces the Croatoan overlay approach. Uses cl-tty's framebuffer: the
chat area height shrinks by N lines and the panel content (gate trace,
focus, rules, context gauge, cost, protection counters) renders into the
freed rows at the bottom. No z-ordering or transparency needed. Dismissal
restores chat to full height.
Toggle via ~/sidebar~ or ~Ctrl+X+B~. When terminal width < 120, the side
panel info renders here. At ≥ 120 columns, renders as right sidebar
instead (offset x = width - 42). ~30 lines.
*** TODO Command palette (Ctrl+P) *** TODO Command palette (Ctrl+P)
:PROPERTIES: :PROPERTIES:
@@ -1532,11 +1540,12 @@ When terminal width < 120, sidebar becomes an absolute-positioned overlay with s
Single entry point for all actions. Mirrors OpenCode's pattern — fuzzy-searchable, categorized, keyboard-navigable: Single entry point for all actions. Mirrors OpenCode's pattern — fuzzy-searchable, categorized, keyboard-navigable:
- ~Ctrl+P~ opens palette as overlay dialog |- ~Ctrl+P~ opens palette in the bottom panel area
- Categories: Session (~/focus~, ~/scope~, ~/unfocus~, ~/rename~), Agent (~/rules~, ~/approve~, ~/config~), View (~/theme~, ~/sidebar~, ~/clear~), System (~/eval~, ~/status~, ~/reconnect~, ~/quit~) |- Categories: Session (~/focus~, ~/scope~, ~/unfocus~, ~/rename~), Agent (~/rules~, ~/approve~, ~/config~), View (~/theme~, ~/sidebar~, ~/clear~), System (~/eval~, ~/status~, ~/reconnect~, ~/quit~)
- Fuzzy text filter; Up/Down to navigate; Enter to execute; Esc to dismiss |- Fuzzy text filter; Up/Down to navigate; Enter to execute; Esc to dismiss
- Also shows keyboard shortcuts for each command as hints |- Also shows keyboard shortcuts for each command as hints
- Implemented as a Croatoan ~window~ overlay with ~add-string~-based rendering and ~get-char~-based filtering. ~100 lines. |- Implemented using cl-tty's framebuffer ~draw-text~ in the bottom panel
region, with keyboard input from ~read-event~. ~100 lines.
*** TODO TrueColor theme expansion (8 presets) *** TODO TrueColor theme expansion (8 presets)
:PROPERTIES: :PROPERTIES:
@@ -1544,7 +1553,9 @@ Single entry point for all actions. Mirrors OpenCode's pattern — fuzzy-searcha
:CREATED: [2026-05-08 Fri] :CREATED: [2026-05-08 Fri]
:END: :END:
All 27 existing theme keys wired into rendering. Use Croatoan's ~set-rgb~ for 24-bit hex color support (already available in Croatoan; currently unused). Add 4 new presets to the existing 4: |All 27 existing theme keys wired into rendering. cl-tty's modern-backend
|supports 24-bit RGB via hex-to-rgb + SGR 38/48 escapes — the theme-color
|function already returns hex strings. Add 4 new presets to the existing 4:
- ~nord~: blue-gray backgrounds, frost accent (#5E81AC key, #BF616A error, #A3BE8C success) - ~nord~: blue-gray backgrounds, frost accent (#5E81AC key, #BF616A error, #A3BE8C success)
- ~tokyonight~: purple-blue backgrounds, teal accent (#7AA2F7 key, #F7768E error, #9ECE6A success) - ~tokyonight~: purple-blue backgrounds, teal accent (#7AA2F7 key, #F7768E error, #9ECE6A success)
@@ -1584,7 +1595,8 @@ When the agent invokes a tool:
- Output collapsed by default to single-line summary. Tab on a tool invocation toggles full output. - Output collapsed by default to single-line summary. Tab on a tool invocation toggles full output.
- Diff display: ~+~ (green) / ~-~ (red) coloring for file edits. 3 lines of context around changes. The ~:tool-output~ theme color provides the background. - Diff display: ~+~ (green) / ~-~ (red) coloring for file edits. 3 lines of context around changes. The ~:tool-output~ theme color provides the background.
Uses Croatoan's ~init-pair~ + ~color-pair~ for 256-color backgrounds on tool state regions. ~100 lines. |Uses cl-tty's ~draw-text~ with foreground/background color arguments to
|color tool state regions. ~100 lines.
*** TODO Mouse support *** TODO Mouse support
:PROPERTIES: :PROPERTIES:
@@ -1592,7 +1604,10 @@ Uses Croatoan's ~init-pair~ + ~color-pair~ for 256-color backgrounds on tool sta
:CREATED: [2026-05-08 Fri] :CREATED: [2026-05-08 Fri]
:END: :END:
Croatoan supports ncurses mouse mode via ~(setf mouse-enabled-p)~. Enable: |cl-tty v1.1.0 supports SGR mouse events via ~enable-mouse~ (already called
|in ~initialize-backend~). ~read-event~ now returns ~mouse-event~ structs
|with ~:press~/~:release~ types, button keywords, and 0-based coordinates.
|Mouse support provides:
- Scroll wheel: PageUp/PageDown equivalent, scrolls chat by viewport height - Scroll wheel: PageUp/PageDown equivalent, scrolls chat by viewport height
- Click to position cursor in input area - Click to position cursor in input area