Compare commits

31 Commits

Author SHA1 Message Date
b22a15cc5d Bump passepartout: config/test/models via daemon TCP protocol 2026-05-20 16:56:03 -04:00
b8f359f518 Bump cl-tty (render-select-minibuffer, csi nil-code fix), passepartout (dispatch table, config menu, dialog fix) 2026-05-20 16:28:06 -04:00
3a4c5a6f23 bump passepartout (migrate on-key to text-input callbacks), cl-tty (add text-input callback slots) 2026-05-20 13:36:30 -04:00
7d7fbe0881 bump passepartout (cleanup, dialog, sidebar fixes), cl-tty (theme persistence, csi parser fix) 2026-05-20 12:35:04 -04:00
3b6bf53829 bump cl-tty → v1.0.0 (library consolidation), passepartout → v0.8.0 (read-event, text-input)
cl-tty changes:
- merged select → dialog (eliminate package)
- merged mouse → input (eliminate package)
- merged scrollbox+tabbar from container → box (eliminate package)
- extracted theme from box → cl-tty.theme (clean boundary)
- added word-wrap to text-input.render (multi-line input)
- added char-width, search-highlight as exported functions
- exported all text-input manipulation functions

passepartout changes:
- replaced inline read-raw-byte reader with cl-tty.input:read-event
- integrated cl-tty text-input widget for buffer management
- uses cl-tty.box:char-width, cl-tty.markdown:search-highlight
2026-05-18 16:52:14 -04:00
5c2a928522 bump cl-tty → simple backend ANSI support, passepartout → v0.8.0 TUI stabilization
cl-tty: simple backend now supports cursor positioning, ANSI colors,
bold, and background fills (previously all no-ops).

passepartout: Emacs-style reverse-video cursor, command palette
reverse-video highlight, hint bar with F:focus/MCP:/token gauge,
sidebar with gate trace/rules+blocks/cost/files, roadmap
consolidated — all TUI work is v0.8.0, eval harness moved to v0.9.0.
2026-05-17 15:37:47 -04:00
cfb1fb01d2 bump passepartout: fix Reader error nil loop, Swank *standard-output* redirect 2026-05-15 16:12:44 -04:00
f32acc54a1 bump passepartout: fix nil in CSI detection, Swank *standard-output* redirect 2026-05-15 16:10:11 -04:00
18a73b4fe0 bump passepartout: direct read-raw-byte reader, working arrow keys 2026-05-15 15:23:13 -04:00
36275b0307 bump cl-tty: CSI timeout fixes, select-next category fix 2026-05-15 13:43:42 -04:00
81c558dcdf bump cl-tty: fix unix-simple-poll return value check 2026-05-15 13:10:02 -04:00
15a5aaba8c bump passepartout: use cl-tty.input:read-event for keyboard 2026-05-15 13:09:18 -04:00
0705804fc6 bump cl-tty: fix CSI parsing and read-raw-byte timeout 2026-05-15 13:09:09 -04:00
104164048c bump passepartout: Swank stderr fix, CSI progn wrapper 2026-05-15 12:40:08 -04:00
34a95373a9 bump passepartout: fix loop close, daemon auto-connect 2026-05-15 12:08:41 -04:00
41d52d94d0 bump passepartout: fix terminal restore with trap 2026-05-15 11:43:29 -04:00
f0fe2d8ed8 bump passepartout: fix runtime crash, listen-based polling 2026-05-15 11:36:47 -04:00
71398e93eb bump passepartout: fix disconnect-daemon close paren, TUI compiles 2026-05-15 11:27:58 -04:00
3cce601aa8 bump passepartout: daemon port conflict handling, multi-port TUI connect 2026-05-15 10:56:17 -04:00
3e0163c2c7 bump passepartout: CSI escape detection, paren balance fix 2026-05-15 09:43:09 -04:00
81243704ea bump passepartout: revert to blocking connect-daemon (reliable) 2026-05-15 09:22:05 -04:00
79bc3fb94d bump submodules: cl-tty (backend-size multi-value fix) and passepartout (multi-value backend-size, minibuffer polish, warning fixes) 2026-05-15 08:51:25 -04:00
d42882446f bump passepartout: fix input (direct stdin reads), fix parens 2026-05-15 08:33:30 -04:00
b2c3a82bf4 bump passepartout: fix cat buffering, dialog filter int-chars, remove double render 2026-05-14 20:29:55 -04:00
162d489556 bump submodules: passepartout (flicker fix, minibuffer, colors) and cl-tty (remove per-call flush) 2026-05-14 19:36:33 -04:00
dd6f9bd23e bump submodules: passepartout (clean exit, terminal restore, compiler warnings) and cl-tty (sync .org docs with backend-size/input/SIGWINCH) 2026-05-14 16:26:14 -04:00
51d833a64a bump passepartout: v0.9.0 Warm TUI Redesign fixes 2026-05-13 19:49:50 -04:00
902196ba0b bump passepartout: fix draw-rect framebuffer crash 2026-05-13 19:20:04 -04:00
ab2dc009a6 bump passepartout → v0.9.0 2026-05-13 19:13:30 -04:00
bde09f7ea8 bump passepartout: fix all 21 TUI test failures 2026-05-13 18:08:35 -04:00
e28af77f18 bump passepartout → v0.8.0 2026-05-13 17:58:02 -04:00
3 changed files with 46 additions and 6 deletions

View File

@@ -207,12 +207,13 @@ When sending code to the REPL, use the correct `(in-package ...)` form first.
|---------|-------------|
| `:cl-tty.backend` | Backend protocol — terminal init, draw-text, read-event |
| `:cl-tty.rendering` | Framebuffer — make-framebuffer, flush-framebuffer |
| `:cl-tty.input` | Input — key-event, defkeymap, dispatch-key-event |
| `:cl-tty.input` | Input — key-event, defkeymap, dispatch-key-event, text-input, textarea |
| `:cl-tty.layout` | Layout — vbox, hbox, spacer, layout-calculate |
| `:cl-tty.dialog` | Dialog system — dialog stack, select-dialog |
| `:cl-tty.select` | Select widget — filter, handle-key |
| `:cl-tty.box` | Components — box, text, word-wrap, char-width, dirty-mixin, render protocol |
| `:cl-tty.theme` | Theme — theme class, define-preset, load-preset, theme-color |
| `:cl-tty.dialog` | Dialog — dialog stack, select, select-dialog, alert-dialog, toast |
| `:cl-tty.slot` | Slot/plugin system |
| `:cl-tty.markdown` | Markdown rendering |
| `:cl-tty.markdown` | Markdown — parse-blocks, parse-inline, highlight-code, render-md |
## Setup
@@ -286,3 +287,42 @@ when the runtime itself cannot start.
- **YOU MAY NOT** push a version tag (e.g., `v0.5.0`), create a GitHub release,
or run `git push` that triggers CI/CD version workflows without explicit
permission. Ask first.
## Library/Application Boundary (passepartout + cl-tty)
The line between cl-tty and passepartout must be clear. Violations produce
duplicated code, inconsistent UX, and maintenance burden across both projects.
**The rule: before writing any UI code in passepartout, check cl-tty first.**
If the abstraction already exists in cl-tty, use it. If it doesn't exist, add it
to cl-tty first, then consume it in passepartout.
| This belongs in **cl-tty** (library) | This belongs in **passepartout** (application) |
|---------------------------------------|------------------------------------------------|
| Widget rendering, layout computation, dirty tracking | Which widgets to show and when |
| Theme system (presets, role→hex resolution, load/switch) | Theme choice and application-specific semantic keys |
| Markdown parser, renderer, syntax highlighter | What markdown content to render |
| Input handling (keymaps, text-input, textarea, event dispatch) | What keybindings to register and what actions they trigger |
| Dialog, select, toast rendering and keyboard navigation | Dialog content and on-submit/on-select callbacks |
| Word-wrap, char-width, cursor rendering | Cursor position and text content |
| Box, scrollbox, tabbar, panel containers | Data displayed inside containers |
**Concrete checklist before writing any UI function in a passepartout .org file:**
1. Run `(do-external-symbols (s :cl-tty.box) ...)` or check this table
2. If the function exists in cl-tty, call it — do not reimplement
3. If the function doesn't exist but belongs in a library (generic widget, theme
mechanism, layout primitive, input handler), add it to cl-tty first
4. If the function is passepartout-specific business logic (command dispatch,
daemon communication, gate trace data model), write it in passepartout
Common violations found in the codebase (do not repeat):
- Writing a parallel theme system (`*tui-theme*`, `*tui-theme-presets*`,
`theme-switch`) — use `cl-tty.theme` instead
- Writing a custom word-wrap — use `cl-tty.box:word-wrap` instead
- Writing a custom markdown parser or syntax highlighter — use
`cl-tty.markdown` instead
- Bypassing `select-handle-key` with manual dialog key dispatch — use
`select-handle-key` and `render-dialog` instead
- Hardcoding inline hex colors — use `(theme-color :role)` instead
- Manual framebuffer coordinate arithmetic — use `vbox`/`hbox`/`spacer` layout
from `cl-tty.layout` instead