v1.0.0 — Stable release + TUI support #8
Reference in New Issue
Block a user
Delete Branch "feature/v0.11.0-slots"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
v1.0.0
461 checks, 100% pass across 14 test suites.
Bug fixes
New features
For passepartout TUI migration
read-eventchecks terminal-resized-p and returns(values :resize (cols . rows))*terminal-resized-p*exported from cl-tty.inputwith-terminalexported from cl-tty.backendBug fixes: - read-raw-byte now returns (values nil :eof) on stdin EOF instead of just nil, so callers can distinguish EOF from timeout. Previously, non-TTY stdin (pipes, /dev/null) caused a busy-spin: sb-posix:read returned 0 immediately, read-raw-byte returned nil, the demo loop treated nil as 'no event yet' and spun at 100% CPU producing 86MB of repeated rendering frames. - %read-escape-sequence now uses a 50ms timeout on the first follow-up byte to resolve the classic Escape-key ambiguity: a lone Escape press returned an :escape key-event instead of blocking indefinitely on VMIN=1 VTIME=0. All callers (SS3, CSI, Alt+char) propagate :eof instead of faking :escape events when EOF occurs mid-sequence. - parse-csi-params now uses multiple-value-bind on read-raw-byte to preserve the :eof signal through CSI parsing. - simple-backend draw-border now renders :title on the top edge instead of declaring it (ignore). The title was silently swallowed — the box rendered with the right border frame but the title text was never written. - demo.lisp: removed 'q' as quit key (conflicted with text input). Only Esc and Ctrl+C quit. Widget event forwarding scoped to tab 1 (Widgets tab). EOF handling in main loop. - Stale help text (still said 'q/esc: quit') updated. Verification infrastructure: - PTY-based demo test (17 checks) spawns the demo in a real pseudo-terminal, sends actual keystrokes, reads terminal output back. Verifies: startup rendering, tab switching, key dispatch, 'q' doesn't quit, Escape quits via timeout, Ctrl+C quits, EOF clean exit, no busy-spin. - API feature verification (29 checks) exercises every major component through the actual exported API: Simple backend, Box with title, Text attributes, draw-rect, TextInput (insert/backspace/cursor/Ctrl-A/E), TextArea, key/mouse events, Layout flex, Markdown, Theme presets (dark/light/ nord), Select filtering, Dialog stack, Mouse hit-test, Framebuffer, Dirty tracking, Modern backend, draw-ellipsis/ draw-link, Render dispatch, Detection, Capabilities. - Testing pattern saved as skill (tui-pty-testing) for reuse. Unit tests: 392/392 passing. All 12 test suites green.Bug fixes: - Fix OSC8 format strings (backslash escape layering) in modern-backend.org - Test format string had single backslash instead of double, causing unclosed CL string that cascaded through 3 subsequent test forms - Implementation format string had leading escaped quote (not a string opener) and triple-backslash ending (also not a string terminator) - Fix missing closing parens in border-char-rounded and border-char-double tests - Fix ASDF input-tests pathname (file lives in tests/, not src/components/) New features: - Implement suspend-backend / resume-backend protocol methods - modern-backend: exit/enter alt screen, re-enable mouse/kitty/bracketed-paste - simple-backend: no-ops (no terminal state to preserve) Infrastructure: - Update test suite to cover suspend/resume (backend + modern-backend suites) - 454 checks, 100% pass across 14 test suites