v0.8.0: cl-tty input primitives, on-key keyword dispatch, XDG tangle paths, remove croatoan

- read-raw-byte: sb-unix:unix-read instead of read-char-no-hang
- raw-mode: sb-posix:tcsetattr instead of stty
- read-event: no probe-file /dev/stdin guard
- on-key: accepts &key ctrl alt shift code
- .asd: :croatoan dropped, :cl-tty added
- script: detection fix (empty lisp/ -> XDG)
This commit is contained in:
2026-05-18 13:04:26 -04:00
parent e04b12c31c
commit 73d42a812a
52 changed files with 7 additions and 12254 deletions

View File

@@ -34,7 +34,9 @@ Event handlers + daemon I/O + main loop.
#+BEGIN_SRC lisp :tangle /home/user/.local/share/passepartout/lisp/channel-tui-main.lisp
(in-package :passepartout.channel-tui)
(defun on-key (ch)
(defun on-key (key &key ctrl alt shift code)
(let ((ch key))
(declare (ignore alt shift))
(cond
;; v0.7.1: Esc — interrupt streaming
((and (or (eq ch :escape) (eql ch 27)) (st :streaming-text))
@@ -563,7 +565,7 @@ Event handlers + daemon I/O + main loop.
(setf (st :dirty) (list nil nil t))
(when (and (char= chr #\/) (null (st :dialog-stack))
(= (length (st :input-buffer)) 1))
(unified-menu-show "/")))))))
(unified-menu-show "/"))))))))
;; v0.9.0 — unified command minibuffer (replaces separate palette and slash menus)
(defun unified-menu-show (&optional initial-filter)

View File

@@ -43,11 +43,11 @@ Tests are embedded directly in each module's source file — see the `* Test Sui
** TUI System
The TUI is a standalone system that depends on Croatoan (ncurses bindings) in addition to the core opencortex system. It's loaded separately because Croatoan requires a terminal and is not needed for daemon-mode operation.
The TUI is a standalone system that depends on cl-tty (pure CL terminal UI) in addition to the core system. It's loaded separately because it requires a terminal and is not needed for daemon-mode operation.
#+begin_src lisp
(defsystem :passepartout/tui
:depends-on (:passepartout :croatoan :usocket :bordeaux-threads)
:depends-on (:passepartout :cl-tty :usocket :bordeaux-threads)
:serial t
:components ((:file "lisp/channel-tui-state")
(:file "lisp/channel-tui-view")