Some checks failed
Deploy (Gitea) / deploy (push) Failing after 3s
Add v0.7.0 (Unicode, key bindings, status bar, scroll, autocomplete) and v0.7.1 (streaming, watchdog, markdown, URLs, syntax highlight, Tab-activate, interrupt, bug fixes). Add CHANGELOG update to release procedure in ROADMAP.org.
9.6 KiB
9.6 KiB
Passepartout Changelog
- v0.7.1 — Streaming + Markdown Rendering
- v0.7.0 — TUI Essentials: Terminal Parity
- v0.6.0 — Time Awareness
- v0.5.1 — Compilation Hardening
- v0.5.0 — File Reorganization & Token Economics
- v0.4.3 — Shell Sandboxing & Safety Classification
- v0.4.2 — Structured Output (LLM → JSON → plist)
- v0.4.1 — Design Cleanup
- v0.4.0 — Production Hardening
All notable changes to Passepartout, extracted from ROADMAP.org DONE items with LOGBOOK timestamps.
v0.7.1 — Streaming + Markdown Rendering
- Released [2026-05-08 Fri]
Streaming (SSE + TUI)
provider-openai-stream: SSE streaming via Dexador:want-stream t, parsesdata:linesparse-sse-line: extracts content from SSE lines, returns:donefor[DONE]cascade-stream: streaming cascade called fromthink()viafboundpguard- TUI
on-daemon-msghandles:stream-chunkframes: appends live, stamps time on final chunk - Esc during streaming: appends
[interrupted], finalizes message, sends cancel event [streaming]indicator in status bar when:streaming-textis non-nil- SSE cancel infrastructure:
*stream-cancel*check in read loop (thread-safe for v0.7.2)
Watchdog
- 30s stall detection via Dexador
read-timeout; injects[Response stalled]message on timeout
Markdown Rendering
parse-markdown-spans: detects**bold**,*italic*,`code`,https://URLs — returns (text . attrs) segmentsparse-markdown-blocks: splits text at```boundaries, extracts language tag + contentrender-styled: renders styled segments to Croatoan window with:bold,:underline,:bgcolorsyntax-highlight: colors Lisp code — strings green, comments dim, keywords purple, function calls peachview-chatwired: agent messages render markdown, others remain plain- Tab-to-activate URLs: Tab on empty input extracts URL from last agent message; second Tab confirms
Bug Fixes
- Fixed 7 pre-existing TUI test failures:
first~→~aref(car on vectors),nil~→~zerop(empty vector) - Fixed
add-msgextra argument STYLE-WARNING in/themehandler
Test Suite
- Core: 65/65 (100%)
- Neuro-provider: 13/13 (100%)
- TUI View: 22/22 (100%)
- TUI Main: 65/65 (100%)
- Total: 165 tests, 0 failures
v0.7.0 — TUI Essentials: Terminal Parity
- Released [2026-05-08 Fri]
TDD from Contract
Every item followed contract → RED test → GREEN implementation → recorded.
Unicode Width Awareness
char-width: ASCII/CJK/emoji/combining marks/tab/null. 30 lines, pure Lisp- 6 TDD tests, 11 assertions
Readline/Ctrl Key Bindings
- Ctrl+D quit, Ctrl+U clear line, Ctrl+W delete word, Ctrl+A/E home/end
- Ctrl+L redraw, Ctrl+X+E external editor (
$EDITORfallback), Ctrl+C interrupt - 6 TDD tests, all pass
Status Bar Fix
- Timestamp right-aligned at
(- w 12)on line 2, focus info at:x 1— no overlap
Scroll Notification
:scroll-at-bottomand:scroll-notifystate flagsadd-msgsets:scroll-notifywhen user is scrolled up on new message- 2 TDD tests
Deeper Autocomplete
/theme <Tab>subcommand completion,/focus <Tab>directory completion@path<Tab>file path completion frommemex/projects/(Org + Lisp files)- 2 TDD tests
Test Suite
- Core: 135/135 (100%)
- TUI: 39/46 (7 pre-existing failures fixed in v0.7.1)
v0.6.0 — Time Awareness
- Released [2026-05-08 Thu]
Temporal Memory Filtering (symbolic-time-memory skill)
memory-objects-since(timestamp)— hash-table walk returning objects withversion >= timestampmemory-objects-in-range(since until)— version between two timestamps (inclusive)context-query-with-time— extended query with:since/:untilparameters- 6 tests, 100% pass. Pure Lisp, sub-millisecond, 0 LLM tokens
Sensor-Time Skill
format-time-for-llm— TIME: section for system prompt, iso/natural formatsession-duration— session start tracking, included in TIME sectionsensor-time-tick— deadline scanning via cron (:reflextier), 0 LLM tokensTIME_AWARENESS/TIME_FORMAT/DEADLINE_WARNING_MINUTESenv vars- 13 tests, 100% pass
System Prompt
- TIME section injected at top of
think()viafboundpguard incore-reason.lisp - Falls back gracefully when sensor-time skill not loaded
v0.5.1 — Compilation Hardening
- Released [2026-05-08 Thu]
- Fixed
defvarmissing opening paren insecurity-vault.lisp - Updated 19 CFFI struct references in
embedding-native.lisp(deprecation fix) - Fixed heartbeat variable scope in
symbolic-events.lisp(passepartout::prefix) - Suppressed ~100 harmless cross-skill STYLE-WARNINGs via bash script filter
- ROADMAP: two false errors documented (
symbolic-memorylambda,gateway-messagingdeleted) - Test suite: 116/116 (100%)
v0.5.0 — File Reorganization & Token Economics
- Released [2026-05-08 Thu]
File Reorganization (self-repair criterion)
- Extracted
core-context→symbolic-awareness(skill, hot-reloadable) - Extracted heartbeat generation →
symbolic-events(skill) - Relocated 6 utility fragments to correct files
- Renamed 6 core files (core-defpackage → core-package, core-communication → core-transport, core-loop → core-pipeline, core-loop-perceive → core-perceive, core-loop-reason → core-reason, core-loop-act → core-act)
- Renamed 13 system-* files (system-config → symbolic-config, system-model-provider → neuro-provider, system-actuator-shell → channel-shell, etc.)
- Deleted
system-model.lisp(dead code) - Renamed 4 gateway-* files → channel-*
- Split
gateway-messaging.lisp(411 lines) → 4 channel-{telegram,signal,discord,slack} files - Deleted
gateway-messaging.org/.lisp, renamed 13defskill~/~defpackagenames to match - Renamed
gateway-cli-input→channel-cli-input(function + exports) - Removed
core-contextfilter fromcore-skills.lisp - Documented the self-repair criterion in ARCHITECTURE.org, DESIGN_DECISIONS.org, and AGENTS.md
- Added hard rule in AGENTS.md: no core additions without permission
Token Economics (skills, not core)
org/tokenizer.org→lisp/tokenizer.lisp:count-tokens,model-token-ratio,token-cost,provider-token-cost— char-ratio heuristic per model family with per-provider pricing (11 tests)org/cost-tracker.org→lisp/cost-tracker.lisp:cost-track-call,cost-session-total,cost-by-provider,cost-format-budget-status— per-call cost logged asCOST TRACKER: DEEPSEEK call: 0.0002 USD(6 tests)org/token-economics.org→lisp/token-economics.lisp:prompt-prefix-cached(sxhash-based IDENTITY+TOOLS caching),context-assemble-cached(skip heartbeat/delegation, cache on unchanged foveal/scope/memory),enforce-token-budget(L1→L2→L3 progressive trimming, CONTEXT_MAX_TOKENS env var) (9 tests)- All three loaded as skills via
skill-initialize-all,fboundp-guarded inthink() - Full test suite: 116/116 (100%)
Bug Fixes
- Fixed DeepSeek 400 error: removed malformed
toolsparameter from cascade requests - Fixed
UNDEFINED-FUNCTIONcrash inthink()whensymbolic-awarenessskill not loaded (fboundpguards) - Fixed gate-trace duplication in TUI responses (
setfreplaceslist*incognitive-verify) - Tightened dexador
connect-timeoutfrom 10s → 5s for faster cascade failover
v0.4.3 — Shell Sandboxing & Safety Classification
- Released [2026-05-07 Thu]
- Added
bwrapsandbox to shell actuator (--unshare-net,--unshare-ipc, read-only system bindings) - Fallback to regex-only safety when
bwrapunavailable - Shell safety severity classification:
:catastrophic→:dangerous→:moderate→:harmless :catastrophicalways HITL regardless of approval count;:harmlessallowed by default- Severity tier feeds into rule learning engine (v0.7.2)
v0.4.2 — Structured Output (LLM → JSON → plist)
- Released [2026-05-07 Thu]
- Function-calling / tool-use API in
provider-openai-request - LLM returns guaranteed-valid JSON → deterministic
json-alist-to-plistconversion at boundary think()wired to use structured tool calls from the LLM- Raw
read-from-stringplist parsing kept as fallback for streaming/local models
v0.4.1 — Design Cleanup
- Released [2026-05-07 Thu]
- Removed
system-prompt-augmentmechanism from skill struct anddefskill - Introduced
*standing-mandates*(list of function → string generators) as replacement - Fixed false token-overhead claims in DESIGN_DECISIONS and ROADMAP (3,000-8,000 → ~40)
- Updated security vector count 9→10 in README, ARCHITECTURE.org, dispatcher docstring
- Rewrote README: added "What is an agent?" section, moved cost claims to DESIGN_DECISIONS
- Registered 10 cognitive tools (
search-files,find-files,read-file,write-file,list-directory,run-shell,eval-form,run-tests,org-find-headline,org-modify-file) - Enforced NO-HARDCODED-CONSTANTS standard with
.env.exampleentries
v0.4.0 — Production Hardening
- Released [2026-05-06 Wed 20:56]
- Activated semantic retrieval: wired
:foveal-vectorinto context assembly; replaced SHA-256 hashing default with trigram Jaccard similarity for offline semantic retrieval - Self-build safety boundary:
core-*path protection;SELF_BUILD_MODEenv var; HITL Flight Plan for core modifications - TUI differentiator visualization: gate trace per action (pass/block/approval), focus map in status bar, rule counter
- Expanded theme system: 25-color layered system,
/theme <name>command (dark/light/solarized/gruvbox) - Gateway QA: Telegram + Signal integration tests; Discord + Slack gateways
- Emacs bridge:
passepartout.elover framed TCP protocol,M-x passepartout-send-region,M-x passepartout-focus - Native embedding inference: CFFI binding to llama.cpp, nomic-embed-text-v1.5 (768-dim),
EMBEDDING_PROVIDER=native