v0.7.3: cl-tty TUI migration — replace Croatoan (ncurses CFFI) with cl-tty (pure CL) #1
@@ -1514,15 +1514,23 @@ Content (ordered vertically):
|
||||
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.
|
||||
|
||||
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:
|
||||
:ID: id-v070-sidebar-overlay
|
||||
:CREATED: [2026-05-08 Fri]
|
||||
: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)
|
||||
: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:
|
||||
|
||||
- ~Ctrl+P~ opens palette as overlay dialog
|
||||
- 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
|
||||
- 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.
|
||||
|- ~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~)
|
||||
|- Fuzzy text filter; Up/Down to navigate; Enter to execute; Esc to dismiss
|
||||
|- Also shows keyboard shortcuts for each command as hints
|
||||
|- 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)
|
||||
:PROPERTIES:
|
||||
@@ -1544,7 +1553,9 @@ Single entry point for all actions. Mirrors OpenCode's pattern — fuzzy-searcha
|
||||
:CREATED: [2026-05-08 Fri]
|
||||
: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)
|
||||
- ~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.
|
||||
- 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
|
||||
:PROPERTIES:
|
||||
@@ -1592,7 +1604,10 @@ Uses Croatoan's ~init-pair~ + ~color-pair~ for 256-color backgrounds on tool sta
|
||||
:CREATED: [2026-05-08 Fri]
|
||||
: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
|
||||
- Click to position cursor in input area
|
||||
|
||||
Reference in New Issue
Block a user