✨ Features
- Reconnect desktop ACP sessions after sleep and connection loss #10411
- Per-message usage stats UI (tokens, cost, TTFT, tok/s) #10210
- Per-message usage/cost tracking with derived session totals #10172
- Group chat sessions by project in nav panel #10212
- Show project names in directory switcher dropdown #10207
- OllamaCloudProvider with dynamic model discovery and context limits #10264
- Delete support for custom apps from Apps UI #10127
--editsession flag to edit conversation before forking #9799- iFlytek Spark and Astron MaaS providers #9837
- Fireworks AI declarative provider #9990
- OpenRouter request parameters support #9276
- OVHcloud Qwen3.6-27B model (262K context) #10339
- GPT-5.6 family support #10349
- GLM-5.2 support #9967
- French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, and Traditional Chinese desktop locales #10072
- Provider bindings MVP to goose-sdk with Python wheel publishing #10208
- TLS support for ACP serve #10088
- Streamable HTTP support in deeplink generator #9954
🐛 Bug Fixes
- Exclude MCP App tools from Code Mode callbacks #10290
- Preserve reasoning_content for DeepSeek thinking mode on multi-turn tool calls #10366
- Compaction disabled during approval #10089
- Treat empty-string finish_reason as non-terminal in streaming #10258
- Gemini OAuth onboarding failure #10363
- Retry empty provider turns instead of stopping silently #10360
- Guard llama.cpp backend init against SIGILL on x86_64 CPUs without FMA/AVX2 #10105
- Sanitize responses function call names #10344
- Pick session mode from the IDs the agent actually offers #10320
- Desktop ACP shell PATH #10336
- Dedupe duplicate signed thinking blocks to fix Anthropic 400 #10083
- Resolve provider default model instead of leaking sentinel "current" #10305
- Return effective context limit from /model-info #10165
- Gate rcgen aws_lc_rs feature behind rustls-tls #10116
- Recover malformed tool calls from GLM/Minimax models instead of rejecting them #10230
- Restore cursor when configure exits #10222
- Skip scheduled sessions for implicit resume #10178
- Sync slash help with builtins #10173
- Treat unicode punctuation as image path terminators #10106
- Don't bleed provider-specific request_params into delegate() sessions #9906
- Purge empty phantom sessions on startup #9651
- Include structuredContent from MCP tool response #10128
- Propagate agent cleanup errors on session delete #10112
- Tolerate partial Responses output items #10108
- Always use OpenAI-compatible "parameters" for Databricks tools #10101
- Unescape shell-escaped image paths #10098
- Send inference config (max_tokens, temperature) on Bedrock Converse #9889
- Dedupe Nostr session deep link imports #9918
- Don't retry deterministically-permanent 400s (thinking-block immutability) #10005
- Use async reqwest client so OTLP export works in
goose servemode #10100 - Reject non-object tool-call arguments instead of panicking #9832
- Save /edit prompts to history #10011
- Buffer thinking across stream chunks for DeepSeek/Kimi tool calls #9704
- Surface actionable errors for truncated tool-call arguments #9946
- Show optimistic toggle state when disabling an extension #9882
- Resolve databricks_v2 pricing and surface cost in standard usage update #9925
- Activate hermit on macOS so STDIO extensions resolve node #9482
- Prompt timestamps are now timezone-explicit #10209
🔧 Improvements
- Apply the default extension timeout to developer shell tool calls #10348
- Disable thinking preservation for Groq #10284
- Bound code-mode execution with timeout and cancellation #10214
- Keep turn-context out of the Anthropic prefix cache #10030
- Disable extended thinking for fast-model operations #9815
- Switch the local inference provider MLX backend to use the safemlx crate #10304
- OpenAI Responses API store param configurable #10040
- Support streamed tool calls without indexes #10023
- Fail closed on unverifiable update provenance #10168
- Migrate diagnostics to JSON report #9964
- Route MCP elicitations through tool streams #9943
- ACP migration for desktop UI #10081
- Relabel settings 'Session' tab to 'External Backend' #10318
- Show manual-setup indicator for extensions without an install link #10321