fix: remove hardcoded v0.5.0, show daemon version in status bar
- Removed connect-daemon's hardcoded "* Connected v0.5.0 *" message (fired before handshake arrived, was always stale) - Added :daemon-version slot to state plist, filled by handshake handler - view-status now shows version: "● passepartout v0.7.2 msgs:N Rules:N" - passepartout script: force cl-tty recompile (:force t) to pick up CSI positioning, ioctl sizing, and detection fixes
This commit is contained in:
@@ -672,6 +672,7 @@
|
||||
(text (setf (st :busy) nil)
|
||||
(add-msg :agent text :gate-trace gate-trace))
|
||||
((eq action :handshake)
|
||||
(setf (st :daemon-version) (getf payload :version))
|
||||
(add-msg :system (format nil "Connected v~a" (getf payload :version))))
|
||||
(t (add-msg :agent (format nil "~a" msg))))))
|
||||
|
||||
@@ -735,10 +736,9 @@
|
||||
(let ((s (usocket:socket-connect host port :timeout 5)))
|
||||
(setf (st :stream) (usocket:socket-stream s)
|
||||
(st :connected) t)
|
||||
(bt:make-thread (lambda () (reader-loop (st :stream)))
|
||||
:name "tui-reader")
|
||||
(add-msg :system (format nil "* Connected v~a *" "0.5.0"))
|
||||
(return-from connect-daemon t))
|
||||
(bt:make-thread (lambda () (reader-loop (st :stream)))
|
||||
:name "tui-reader")
|
||||
(return-from connect-daemon t))
|
||||
(usocket:connection-refused-error (c)
|
||||
(when (= attempt 3)
|
||||
(add-msg :system (format nil "* No daemon on port ~a after ~a attempts *"
|
||||
@@ -888,25 +888,21 @@
|
||||
(multiple-value-setq (w h) (cl-tty.backend:backend-size be))
|
||||
(setf (st :dirty) (list t t t))))
|
||||
;; Read key input from fd 0 (blocking via listen + read-char)
|
||||
;; Note: sb-unix:unix-simple-poll on fd 0 returns NIL in this
|
||||
;; SBCL environment, so read-char-no-hang never fires. Use
|
||||
;; blocking read-char instead — the TUI loop sleeps 0.1s
|
||||
;; between renders anyway.
|
||||
(let ((raw-ch (when (listen tty) (read-char tty nil nil))))
|
||||
(when raw-ch
|
||||
(let ((code (char-code raw-ch)))
|
||||
(let ((ch (cond
|
||||
((= code 13) :enter)
|
||||
((= code 10) :enter)
|
||||
((= code 27) :escape)
|
||||
((= code 9) :tab)
|
||||
((or (= code 127) (= code 8)) :backspace)
|
||||
((and (>= code 1) (<= code 26))
|
||||
(intern (string-upcase (format nil "CTRL-~a"
|
||||
(code-char (+ #x60 code))))
|
||||
:keyword))
|
||||
(t raw-ch))))
|
||||
(case ch
|
||||
(let ((ch (cond
|
||||
((= code 13) :enter)
|
||||
((= code 10) :enter)
|
||||
((= code 27) :escape)
|
||||
((= code 9) :tab)
|
||||
((or (= code 127) (= code 8)) :backspace)
|
||||
((and (>= code 1) (<= code 26))
|
||||
(intern (string-upcase (format nil "CTRL-~a"
|
||||
(code-char (+ #x60 code))))
|
||||
:keyword))
|
||||
(t raw-ch))))
|
||||
(case ch
|
||||
(:CTRL-Q (setf (st :running) nil))
|
||||
(:CTRL-P (command-palette-show-commands))
|
||||
(:CTRL-B (setf (st :sidebar-visible) (not (st :sidebar-visible)))
|
||||
|
||||
@@ -177,6 +177,7 @@
|
||||
:command-palette-active nil ; v0.8.0
|
||||
:command-palette-dialog nil ; v0.8.0
|
||||
:session-cost 0.0 ; v0.9.0
|
||||
:daemon-version nil ; filled by handshake
|
||||
:dirty (list nil nil nil))))
|
||||
|
||||
(defvar *sidebar-panels*
|
||||
|
||||
@@ -16,11 +16,14 @@ Returns a list of strings, one per line."
|
||||
(defun view-status (fb w h)
|
||||
(let* ((bg (theme-color :status-bg))
|
||||
(fg (theme-color :status-fg))
|
||||
(left (format nil " ~a ~a msgs:~d Rules:~a"
|
||||
(if (st :connected) "●" "○")
|
||||
(or (st :foveal-id) "passepartout")
|
||||
(length (st :messages))
|
||||
(or (st :rule-count) 0)))
|
||||
(ver (st :daemon-version))
|
||||
(ver-str (if ver (format nil " v~a" ver) ""))
|
||||
(left (format nil " ~a ~a~a msgs:~d Rules:~a"
|
||||
(if (st :connected) "●" "○")
|
||||
(or (st :foveal-id) "passepartout")
|
||||
ver-str
|
||||
(length (st :messages))
|
||||
(or (st :rule-count) 0)))
|
||||
(right (format nil "$~,2f ~a" (or (st :session-cost) 0.0) (now))))
|
||||
(dotimes (col w)
|
||||
(cl-tty.backend:draw-text fb 0 (- h 1) (make-string w :initial-element #\Space) nil bg))
|
||||
|
||||
Reference in New Issue
Block a user