Skip to content

v3.20.0 β€” Reliability audit

Choose a tag to compare

@eniz1806 eniz1806 released this 02 Jul 08:01

Reliability audit release. A broad correctness + resilience sweep from a four-agent audit (core engine, command/UX, error-handling, test coverage) β€” 25 fixes across four priority tiers, test suite 685 β†’ 710.

Interaction & tool plumbing

  • Interactive prompts no longer swallowed by the tool spinner β€” confirmations, arrow-select menus, and ask_user pause the live spinner on every path (native single/multi + Ollama). Confirming a command or picking an option works reliably again.
  • Lazy-MCP meta-tools work when batched with other tools (no more "Unknown tool").
  • Batch-edit rejections reach the model instead of being dropped (no building on a phantom edit).

History & compaction

  • Ollama loop normalizes mixed-format history; /compact + auto-compact no longer 400 on OpenAI-compat after tool turns; image tool-results aren't dumped as base64 text on a provider switch.
  • Session/history files written atomically; monotonic history ids (no collision/overwrite after 100 sessions).

Resilience

  • Quit-time summary gated (summarize_on_exit) + hard-capped at 15s; MCP stdio uses one persistent reader (no leaked threads / desync); MemoryStore SQLite lock-guarded; REPL survives a non-tty stdout.

Polish

  • /watch detects new files; /multi folds in @-files + warns; arrow-select numbers work beyond 5; completer keywords for /approve /effort /failover /tune /toon /sandbox /mcp and /lsp diagnostics; /voice preflights the recorder; save_settings no longer mutates the caller's dict.

710 tests passing.