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

9.6 KiB

Passepartout Changelog

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, 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

  • 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 ($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

  • Released [2026-05-08 Thu]

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

  • Released [2026-05-08 Thu]
  • 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

  • Released [2026-05-08 Thu]

File Reorganization (self-repair criterion)

  • Extracted core-contextsymbolic-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-inputchannel-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.orglisp/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.orglisp/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.orglisp/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

  • Released [2026-05-07 Thu]
  • 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)

  • Released [2026-05-07 Thu]
  • 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

  • Released [2026-05-07 Thu]
  • 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

  • Released [2026-05-06 Wed 20:56]
  • 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