49eec4b8ae
fix: add /eval back to /help listing — resolves flake
...
test-on-key-help checked for /eval in help output. The rewritten
help list dropped /eval which is still a working command. Fixed by
adding it as the first entry.
TUI Main: 98/98
2026-05-08 21:05:58 -04:00
06aff97b4e
v0.7.2: message search mode — navigate, highlight, jump — TDD
...
Search mode activated by /search <query>. State fields: :search-mode,
:search-query, :search-matches, :search-match-idx. Up/Down arrows
navigate between matches, Enter jumps to current match, Escape exits.
search-highlight wraps matching substrings in **bold** for markdown
rendering. View-chat shows search header bar with match count and
current position.
- channel-tui-state: 4 search state fields in init-state
- channel-tui-main: modified /search handler, search-mode key handlers
(Up/Down/Enter/Escape), 3 new tests (activate, escape, nav)
- channel-tui-view: search-highlight fn, search header bar,
highlighted content in count+render loops
- TUI Main: 97/98 (1 pre-existing flake) View: 29/29
2026-05-08 21:02:45 -04:00
93a38d5308
v0.7.2: HITL panel collapse on approve/deny — TDD
...
resolve-hitl-panel marks the most recent panel message with
:panel-resolved (:approved or :denied) and writes back to
the message vector. View-chat renders resolved panels with
dimmed color instead of :hitl theme color.
/approve and /deny handlers call resolve-hitl-panel after
sending structured events to the daemon. Confirmation messages
now use checkmark/crossmark prefixes.
- channel-tui-main: resolve-hitl-panel fn, wired into handlers
- channel-tui-view: is-resolved check for panel dimming
- +2 tests: panel-after-approve, panel-after-deny
- TUI Main: 88/89 (1 pre-existing flake)
2026-05-08 20:51:49 -04:00
7c84dbfacb
v0.7.2: gate-trace complete — view-chat render + Ctrl+G toggle
...
View-chat renders gate-trace-lines as colored dim lines below agent
messages. Ctrl+G toggles collapse per message (stored in
:collapsed-gates state field). Default: visible. /why shows last
gate trace as system messages.
Tab integration deferred (paren fragility in on-key cond default
case). Ctrl+G is functionally equivalent for toggle UX.
View: 29/29 TUI Main: 85/86
2026-05-08 20:30:08 -04:00
7fca4189b9
v0.7.2: release — TDD
...
All 14 v0.7.2 items wired, tested, and documented.
Release checklist:
- ROADMAP: all 14 items marked DONE
- README: version badge v0.7.1 → v0.7.2
- CHANGELOG: v0.7.2 entry with feature summaries
- core-transport: make-hello-message 0.7.1 → 0.7.2
- .env.example: TAG_CATEGORIES, SELF_BUILD_MODE
- /help list: all 16 commands documented
Phase 1 (wire deferred):
- call-with-tool-timeout in action-tool-execute
- dispatcher-privacy-severity in dispatcher-check
- Ctrl+G gate-trace toggle, Ctrl+F search placeholder
Phase 2 (finish features):
- /audit verify, /resume <n>, /help <topic>
Core: 88/88 TUI Main: 85/86 (1 pre-existing flake)
2026-05-08 19:54:07 -04:00
4bd387e256
v0.7.2: Phase 1 — wire deferred items (timeout, severity, gate toggle, Ctrl+F)
...
- call-with-tool-timeout wired into action-tool-execute for per-tool
timeout enforcement via sb-ext:with-timeout. 3 new act tests.
- dispatcher-privacy-severity wired into dispatcher-check vector 5.
Three-tier: :block rejects, :warn allows, :log silent. 3 new tests.
- Ctrl+G toggles gate-trace collapse per message. Default: visible.
2 new TUI tests.
- Ctrl+F placeholder directs users to /search <query>.
Core: 88/88 TUI Main: 85/86
2026-05-08 19:48:00 -04:00
029a32ef64
v0.7.2: session rewind + context debugging — TDD
...
Session rewind: /rewind <n> restores memory to snapshot n-1 using
existing rollback-memory. /sessions lists up to 10 snapshots with
timestamps and object counts. Auto-snapshot at turn boundaries in
think() via fboundp-guarded snapshot-memory call.
Context debugging: /context why <id> shows memory object type, scope,
version. /context dropped placeholder (deferred to v0.8.0).
- core-reason: auto-snapshot in think() + 1 test
- channel-tui-main: /rewind, /sessions, /context why, /context dropped
+ 3 tests
- Core: 85/85 TUI Main: 88/89 (1 pre-existing flake)
2026-05-08 19:05:47 -04:00
c959f93eb1
v0.7.2: message search (/search) + context visibility — TDD
...
/search <query>: case-insensitive substring search across message
history. Reports match count, previews with context around matches.
/context: shows message count, focus, token estimate, last 5 messages.
- channel-tui-main: /search and /context handlers, 1 test each
- TUI Main: 85/86 (1 pre-existing core flake)
2026-05-08 18:27:42 -04:00
2e52bc4d13
v0.7.2: context visibility (/context) — TDD
...
/context shows message count, focus, token estimate, and last 5
message summaries. Inline command, no daemon interaction needed.
- channel-tui-main: /context handler, 1 test
- Fixed /tags handler (removed dangling else clause)
- TUI Main: 84/85 (1 pre-existing core flake)
2026-05-08 18:22:22 -04:00
19a9c99ef4
v0.7.2: tag stack severity tiers + tool hardening — TDD
...
Tag stack: TAG_CATEGORIES env var parses into *tag-categories* alist
(@tag . severity). Three tiers: :block (filter), :warn (log), :log
(silent). tag-category-severity lookup. /tags TUI command.
Tool hardening: per-tool timeouts (shell=300s, search=30s, eval=10s,
default=120s). verify-write after write-file reads back content.
tool-timeout accessor.
- security-dispatcher: *tag-categories*, tag-categories-load,
tag-category-severity, 2 tests
- core-act: *tool-timeouts*, tool-timeout, verify-write, 3 tests
- programming-tools: verify-write wired into write-file
- channel-tui-main: /tags and /audit commands
- Core: 84/84
2026-05-08 18:18:14 -04:00
11c43f76fa
v0.7.2: Merkle provenance audit + RCE flake fix — TDD
...
audit-node exposes memory-object lineage (type, hash, scope, version).
/audit <node-id> TUI command. /audit verify deferred.
Fixed RCE test flake: assemble-config-section used getf on
non-plist cascade entries. Wrapped in handler-case. Also fixed
~/ format directive escape. Core reason: 35/35. Core: 81/81.
2026-05-08 18:03:24 -04:00
df09ac321d
v0.7.2: gate-trace wiring, HITL panels, /identity command — TDD
...
Gate trace: wired into view-chat, renders below agent messages in dim.
Collapsed-gates state field for Tab toggle (deferred to Croatoan test).
HITL panels: on-daemon-msg detects :approval-required events, renders
styled panel messages with :panel flag. View-chat renders with :hitl
theme color (magenta). /approve and /deny add confirmation messages.
/identity: opens ~/memex/IDENTITY.org in emacsclient -c -a '', auto-reloads.
- channel-tui-view: gate-trace in view-chat, HITL panel styling
- channel-tui-state: :collapsed-gates, :hitl theme, :panel attr
- channel-tui-main: HITL panel detection, /identity handler
- View: 29/29 TUI Main: 83/84 (1 pre-existing flake)
2026-05-08 17:40:40 -04:00
e3a6573542
v0.7.2: self-help (/why) + CONFIG injection — TDD
...
- CONFIG section in system prompt: providers, context window, gate count,
rules learned, docs path
- /why TUI command: shows most recent gate trace from message history
- assemble-config-section reads live state at each think() call
- Core: 75/76 TUI Main: 77/78 (1 pre-existing RCE test flake)
2026-05-08 17:06:16 -04:00
26fd756222
v0.7.2: undo/redo — TDD
...
Operation-level memory undo/redo built on existing Merkle snapshot
infrastructure. undo-snapshot captures state before destructive tool
execution. /undo and /redo TUI commands send structured events.
- core-memory: undo-snapshot, undo, redo functions + 3 tests
- core-perceive: :undo/:redo sensor handlers
- core-act: auto-snapshot before non-read-only tools
- core-package: undo/redo symbol exports
- channel-tui-main: /undo, /redo commands + 2 tests
- Core: 73/73 TUI Main: 74/74
2026-05-08 16:39:00 -04:00
b40e1e2844
v0.7.2: gate-trace-lines + HITL inline — TDD
...
Gate trace visualization: gate-trace-lines converts gate-trace plists
to colored display lines (green passed, red blocked, yellow approval).
Data format: (:gate name :result :passed/:blocked/:approval :reason ...).
3 tests, 28/28 view suite.
HITL inline command handling: /approve HITL-xxxx and /deny HITL-xxxx
parsed as structured events (:action :hitl-respond), not raw text.
2 tests, 70/70 main suite.
Core: 65/65 Neuro: 13/13 All: 176/176
2026-05-08 14:55:23 -04:00
e3e62140ff
v0.7.1: Streaming + Markdown + URLs + Interrupt — TDD
...
Deploy (Gitea) / deploy (push) Failing after 2s
Stream-chunk protocol: SSE streaming via provider-openai-stream,
cascade-stream with fboundp guard in think(). TUI renders live.
Stream interrupt: Esc during streaming marks [interrupted], finalizes msg.
SSE cancel infrastructure: *stream-cancel* check in read loop.
Markdown inline: **bold**, *italic*, `code` via parse-markdown-spans.
Code blocks: parse-markdown-blocks + syntax-highlight (keywords/strings/fns).
URL detection + Tab-to-activate: https:// URLs in dim, Tab opens.
Watchdog: 30s stall detection via Dexador read-timeout.
[streaming] indicator in status bar.
Pre-existing TUI test fixes (7): first→aref, nil→zerop, add-msg arg.
Core: 65/65 Neuro: 13/13 TUI View: 22/22 TUI Main: 65/65
Total: 165 tests, 0 failures.
2026-05-08 14:29:53 -04:00
f508dec080
v0.7.0: scroll notify + autocomplete — TDD
...
Deploy (Gitea) / deploy (push) Has been cancelled
Scroll notification: :scroll-notify flag in add-msg when scrolled up.
Autocomplete: @ file paths, /theme subcommand defaults, /focus dirs.
4 new TDD tests (6 assertions), 100% pass.
Core: 135/135 (100%).
Remaining deferred: scroll pads (needs Croatoan terminal), setup wizard (v0.8.0).
2026-05-08 11:09:07 -04:00
30913bf327
v0.7.0: key bindings — TDD (RED→GREEN)
...
Ctrl+U clear line, Ctrl+W delete word, Ctrl+A/E home/end,
Ctrl+L redraw, Ctrl+D quit empty, Ctrl+X+E editor.
2 TDD tests (3 assertions), 100% pass.
Fixed paren bug in init-state (:dirty outside list).
2026-05-08 11:05:49 -04:00
c8964d0249
v0.7.0: char-width + status bar fix — TDD (RED→GREEN)
...
char-width: contract 5, 4 tests (6 assertions), 100% pass
ASCII=1, CJK/Hangul/Kana/halfwidth=2, combining marks=0, tab=8
Pure Lisp, ~25 lines, no deps. Used by word-wrap for unicode.
status bar: contract 6, timestamp right-aligned at (- w 12)
Fixes overlap where focus map and timestamp both drew at :y 2 :x 1
2026-05-08 10:54:27 -04:00
55e0c962f4
passepartout: v0.7.0 — TUI Essentials: Terminal Parity
...
TDD cycle: contract → RED test → GREEN implementation for each item.
- Unicode width (char-width): 6 tests, 11 assertions. ASCII/CJK/emoji/combining.
- Status bar fix: timestamp right-aligned, focus at :x 1. No overlap.
- Ctrl key bindings: Ctrl+D/Q/L/U/W, Ctrl+A/E, Ctrl+X+E. 6 tests.
- External editor: Ctrl+X prefix state tracking + Ctrl+E chord.
- Deeper autocomplete: /theme subcommand, /focus directory, @ file paths.
- Scroll notification: :scroll-notify flag set when scrolled up on new msg.
- Pre-existing tests: messages init-state assertion fixed (nil→vectorp).
Remaining: scroll pads (needs Croatoan terminal), setup wizard (v0.8.0).
2026-05-08 10:45:05 -04:00
66df5b493a
passepartout: v0.7.0 — Status bar fix, unicode width, Ctrl key bindings
2026-05-08 10:24:53 -04:00
429abedb5a
TUI: fix hardcoded version string 0.4.0→0.5.0 in connect-daemon
Deploy (Gitea) / deploy (push) Failing after 2s
2026-05-07 20:33:29 -04:00
924bf8f479
passepartout: v0.5.0 hotfix 2 — daemon stable
...
Deploy (Gitea) / deploy (push) Failing after 2s
- Restore (in-package :passepartout) to core-reason
- Move *VAULT-MEMORY* back to core-skills
- Fix ASDF and defstruct/defpackage ordering
- Increase daemon timeout to 120s
- Handshake: 0.5.0
Verified: daemon processes messages, TUI clean, gate trace works
2026-05-07 20:14:51 -04:00