Files
passepartout/CHANGELOG.org
Amr Gharbeia 22878be710
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 3s
docs: update CHANGELOG for v0.7.0 and v0.7.1
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.
2026-05-08 14:33:51 -04:00

209 lines
9.6 KiB
Org Mode

#+TITLE: Passepartout Changelog
#+AUTHOR: Passepartout
#+FILETAGS: :changelog:release:
All notable changes to Passepartout, extracted from [[file:docs/ROADMAP.org][ROADMAP.org]]
DONE items with LOGBOOK timestamps.
* v0.7.1 — Streaming + Markdown Rendering
:LOGBOOK:
- Released [2026-05-08 Fri]
:END:
** Streaming (SSE + TUI)
- ~provider-openai-stream~: SSE streaming via Dexador ~:want-stream t~, parses ~data:~ lines
- ~parse-sse-line~: extracts content from SSE lines, returns ~:done~ for ~[DONE]~
- ~cascade-stream~: streaming cascade called from ~think()~ via ~fboundp~ guard
- TUI ~on-daemon-msg~ handles ~:stream-chunk~ frames: appends live, stamps time on final chunk
- Esc during streaming: appends ~[interrupted]~, finalizes message, sends cancel event
- ~[streaming]~ indicator in status bar when ~:streaming-text~ is 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) segments
- ~parse-markdown-blocks~: splits text at ~```~ boundaries, extracts language tag + content
- ~render-styled~: renders styled segments to Croatoan window with ~:bold~, ~:underline~, ~:bgcolor~
- ~syntax-highlight~: colors Lisp code — strings green, comments dim, keywords purple, function calls peach
- ~view-chat~ wired: 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-msg~ extra argument STYLE-WARNING in ~/theme~ handler
** 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
:LOGBOOK:
- Released [2026-05-08 Fri]
:END:
** 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 (~$EDITOR~ fallback), 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-bottom~ and ~:scroll-notify~ state flags
- ~add-msg~ sets ~:scroll-notify~ when 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 from ~memex/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
:LOGBOOK:
- Released [2026-05-08 Thu]
:END:
** Temporal Memory Filtering (symbolic-time-memory skill)
- ~memory-objects-since(timestamp)~ — hash-table walk returning objects with ~version >= timestamp~
- ~memory-objects-in-range(since until)~ — version between two timestamps (inclusive)
- ~context-query-with-time~ — extended query with ~:since~ / ~:until~ parameters
- 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 format
- ~session-duration~ — session start tracking, included in TIME section
- ~sensor-time-tick~ — deadline scanning via cron (~:reflex~ tier), 0 LLM tokens
- ~TIME_AWARENESS~ / ~TIME_FORMAT~ / ~DEADLINE_WARNING_MINUTES~ env vars
- 13 tests, 100% pass
** System Prompt
- TIME section injected at top of ~think()~ via ~fboundp~ guard in ~core-reason.lisp~
- Falls back gracefully when sensor-time skill not loaded
* v0.5.1 — Compilation Hardening
:LOGBOOK:
- Released [2026-05-08 Thu]
:END:
- Fixed ~defvar~ missing opening paren in ~security-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-memory~ lambda, ~gateway-messaging~ deleted)
- Test suite: 116/116 (100%)
* v0.5.0 — File Reorganization & Token Economics
:LOGBOOK:
- Released [2026-05-08 Thu]
:END:
** 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 13 ~defskill~/~defpackage~ names to match
- Renamed ~gateway-cli-input~~channel-cli-input~ (function + exports)
- Removed ~core-context~ filter from ~core-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 as ~COST 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 in ~think()~
- Full test suite: 116/116 (100%)
** Bug Fixes
- Fixed DeepSeek 400 error: removed malformed ~tools~ parameter from cascade requests
- Fixed ~UNDEFINED-FUNCTION~ crash in ~think()~ when ~symbolic-awareness~ skill not loaded (~fboundp~ guards)
- Fixed gate-trace duplication in TUI responses (~setf~ replaces ~list*~ in ~cognitive-verify~)
- Tightened dexador ~connect-timeout~ from 10s → 5s for faster cascade failover
* v0.4.3 — Shell Sandboxing & Safety Classification
:LOGBOOK:
- Released [2026-05-07 Thu]
:END:
- Added ~bwrap~ sandbox to shell actuator (~--unshare-net~, ~--unshare-ipc~, read-only system bindings)
- Fallback to regex-only safety when ~bwrap~ unavailable
- Shell safety severity classification: ~:catastrophic~~:dangerous~~:moderate~~:harmless~
- ~:catastrophic~ always HITL regardless of approval count; ~:harmless~ allowed by default
- Severity tier feeds into rule learning engine (v0.7.2)
* v0.4.2 — Structured Output (LLM → JSON → plist)
:LOGBOOK:
- Released [2026-05-07 Thu]
:END:
- Function-calling / tool-use API in ~provider-openai-request~
- LLM returns guaranteed-valid JSON → deterministic ~json-alist-to-plist~ conversion at boundary
- ~think()~ wired to use structured tool calls from the LLM
- Raw ~read-from-string~ plist parsing kept as fallback for streaming/local models
* v0.4.1 — Design Cleanup
:LOGBOOK:
- Released [2026-05-07 Thu]
:END:
- Removed ~system-prompt-augment~ mechanism from skill struct and ~defskill~
- 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.example~ entries
* v0.4.0 — Production Hardening
:LOGBOOK:
- Released [2026-05-06 Wed 20:56]
:END:
- Activated semantic retrieval: wired ~:foveal-vector~ into context assembly; replaced SHA-256 hashing default with trigram Jaccard similarity for offline semantic retrieval
- Self-build safety boundary: ~core-*~ path protection; ~SELF_BUILD_MODE~ env 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.el~ over 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~