✨ Features
- Live voice conversations in the desktop app #12093
- Decisions provider crate with OpenRouter and Jev implementations #12418
- Z.AI Coding Plan provider with streaming tool calls #12205
- Recipe parameter limits enforcement (max 32 params, 200 select options, 128 KiB) #12259
- OpenAI provider custom base URL support in SDK #11967
- Support for Opus 5.5, GPT-6-sol, and GPT-6-luna models #12447
🐛 Bug Fixes
- Cancel elicitation on incomplete CLI input #11403
- Protect custom provider configuration files #11438
- Prevent duplicate schedules from overwriting recipes #12434
- Classify many-image dimension limit errors as context length-exceeded #12208
- Set strict:false on chat-completions tools #12272
- Show CoreWeave in bundled provider metadata #12149
- Allow 60 seconds for provider readiness #12240
- Write PATH to login shell files idempotently in installer #12072
- De-duplicate @radix-ui packages to fix pointer-events stranded on body #11792
- Drive pre-key model lists from the canonical registry #11475
- Make todo opt-in and soften its prompts #12123
- Prevent updates to unsupported macOS versions #12115
- Require recipe consent before session/new spawns extensions #12094
- Skills follow working directory updates #11443
- Create updater staging atomically #11741
- Require opt-in for roaming TCP bridge #11701
- Omit unsupported socket MCP servers #11417
- Let recipe settings outrank GOOSE_SUBAGENT_MODEL/PROVIDER #12070
- Send session usage updates after each provider call #12006
- Start a chat with no extensions when the user selects none #11908
- Databricks GLM-5.3 and Kimi K3 reasoning effort #12079
- Avoid splitting graphemes in skills list #12074
- Keep the subagent prompt prefix cacheable #12062
- Install libclang and cmake in devcontainer #12091
🔧 Improvements
- Redesign settings as a full-screen view #12163
- Split extension transports out of ExtensionManager #12088
- Compress canonical_models.json #12385
- Resolve data_dir from Paths::data_dir() instead of config #12203