v0.3.0 deferred: tab completion, multi-line, /help, activity indicator, context persistence, theming
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 3s
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 3s
- Tab completion: Tab key autocompletes / commands (Tab handler in on-key) - Multi-line input: backslash + Enter inserts literal newline instead of sending - /help command: displays full command listing with descriptions - Activity indicator: :busy flag shows "...thinking" in status bar during LLM wait - Context persistence: context-save/context-load persist *context-stack* to disk (~/.cache/passepartout/context.lisp). Auto-restores on skill load. Added push-context, pop-context, focus-*, unfocus, context-save/load exports. - Theming: *tui-theme* plist with semantic color roles, /theme command View functions (view-chat, view-status, view-input) use theme-color - TUI test suite: 19 tests, 53 checks (100% pass) - Context test suite: 2 tests, 6 checks (100% pass) - Total: 5 suites, 81 checks, 0 failures
This commit is contained in:
@@ -26,13 +26,14 @@ State is read via ~(st :key)~ — no mutation here.
|
||||
(clear win)
|
||||
(box win 0 0)
|
||||
(add-string win
|
||||
(format nil " Passepartout ~a [~a] msgs:~a scroll:~a"
|
||||
(format nil " Passepartout ~a [~a] msgs:~a scroll:~a~a"
|
||||
(if (st :connected) "● Connected" "○ Disconnected")
|
||||
(string-upcase (string (st :mode)))
|
||||
(length (st :messages))
|
||||
(if (> (st :scroll-offset) 0) (format nil "~a↑" (st :scroll-offset)) "0"))
|
||||
:y 1 :x 1 :fgcolor (if (st :connected) :green :red))
|
||||
(add-string win (format nil " ~a" (now)) :y 2 :x 1 :fgcolor :yellow)
|
||||
(if (> (st :scroll-offset) 0) (format nil "~a↑" (st :scroll-offset)) "0")
|
||||
(if (st :busy) " …thinking" ""))
|
||||
:y 1 :x 1 :fgcolor (theme-color (if (st :connected) :connected :disconnected)))
|
||||
(add-string win (format nil " ~a" (now)) :y 2 :x 1 :fgcolor (theme-color :timestamp))
|
||||
(refresh win))
|
||||
#+end_src
|
||||
|
||||
@@ -58,11 +59,11 @@ State is read via ~(st :key)~ — no mutation here.
|
||||
(:agent (format nil "⬇ [~a] ~a" time content))
|
||||
(:system (format nil " [~a] ~a" time content))
|
||||
(t (format nil " [~a] ~a" time content))))
|
||||
(color (case role
|
||||
(:user :green)
|
||||
(:agent :white)
|
||||
(:system :yellow)
|
||||
(t :white))))
|
||||
(color (theme-color (case role
|
||||
(:user :user)
|
||||
(:agent :agent)
|
||||
(:system :system)
|
||||
(t :agent)))))
|
||||
(add-string win label :y y :x 1 :n (1- w) :fgcolor color)
|
||||
(incf y)))))
|
||||
(refresh win))
|
||||
@@ -75,7 +76,7 @@ State is read via ~(st :key)~ — no mutation here.
|
||||
(w (or (width win) 78))
|
||||
(clip (min (length text) (1- w))))
|
||||
(clear win)
|
||||
(add-string win (format nil "~a " text) :y 0 :x 0 :n (1- w) :fgcolor :cyan)
|
||||
(add-string win (format nil "~a " text) :y 0 :x 0 :n (1- w) :fgcolor (theme-color :input))
|
||||
(setf (cursor-position win) (list 0 clip)))
|
||||
(refresh win))
|
||||
#+end_src
|
||||
|
||||
Reference in New Issue
Block a user