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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user