✨ Features
- Hooks support for customizable agent behavior #9093
- Agents CRUD operations #9084
- Projects as backend sources with system prompt injection #8739
- Auto-updating for plugins #9061
- Linux Vulkan support for local inference #9038
- ACP streamable HTTP spec compliance #9034
- Expose built-in skills through sources list ACP calls #9045
- Provider-first onboarding flow #9039
- Move goose2 provider catalog behind ACP layer #9030
- Group consecutive tool calls into one summarized chain card #8995
- Replace raw config and secret methods in ACP #9000
- goose2 support for custom providers in UI & ACP #8924
- Configurable Ollama host in goose2 #8912
- Update provider row after saving credentials #8914
- Google model inventory refresh support #8913
- Skills in the chat composer #8881
- Mergeable configs #8378
- MCP Apps: hydrate and replay app payloads in goose2 #8632
- MCP Apps: translate ACP host capabilities into MCP initialization #8623
- Windows CUDA release artifacts #8750
- goose2 compact settings modal headers #8950
- goose-tui binary #9089
🐛 Bug Fixes
- Insert tool pair summaries at chronological position in conversation #9087
- Enable SQLite foreign key enforcement in session pool #9121
- Deleted chat session still appears in sidebar list #8674
- Revert unexpected change from ui/goose2 work #9098
- Require extension_name on read_resource #8989
- Queued message lost when clicking send now #9074
- Keep model picker and session config in sync #9048
- Read prompted file parameters in recipes #8504
- Accept null tool_call arguments in OpenAI streaming chunks #9035
- Use python3 in developer extension instructions for macOS/Linux compatibility #8784
- Synchronously reap ACP child to avoid SIGCHLD race #9023
- goose2 small-window chat and settings layouts #9019
- Elicitation fixes #8999
- SACP notifies clients of generated session names #8983
- Unscheduling a recipe should not delete them #8978
- Seed provider handoff history in ACP #8941
- Respect goose2 interface density settings #8953
- Make goose2 respect accent color #8952
- Preserve replay message timestamps #8942
- goose2 window minimum sizing #8946
- Avoid transform-rasterized dialog text in goose2 #8937
- Keep renamed skills open in detail view #8935
- Gemini OAuth onboarding failure #8905
- Copy and content improvements in goose2 #8886
- Model picker stays usable during provider loading #8900
- Handle ACP requests concurrently #8781
- CRT linkage in Windows CUDA build #8987
- Exclude preprompt from session title generation #8793
- Prevent login-shell PATH probe from suspending goose on startup #8804
- Remove defaults yaml #8854
🔧 Improvements
- Keep thread tables + column #9156
- Refactor local inference around backends #9137
- Remove threads layer, use sessions directly for ACP #9078
- Install plugins to ~/.agents/plugins #9088
- Switch to official new rust-sdk for ACP #9062
- Remove attachment preamble in goose2 #9052
- goose2 UI state refactor (part 1) #9049
- Clean up types #9057
- Use native arm64 runners for Linux artifact builds #9075
- Redesign Extensions page, remove enable toggle, treat Extension Manager as core MCP enabler per session #8940
- Extensions page styling alignment #9003
- Replace artifact heuristics/regexes with protocol messages #8996
- Fold UI refactor review into code review skill #8982
- LM Studio declarative provider improvements #8973
- Remove artifacts dir handling #8945
- Install plugins #8949
- Render MCP apps inline in goose2 #8877
- Remove skill categories #9008
- goose2 distribution bundling #8911
- goose2 used ACP session id #8985
- Clean up goose2 settings headers #8951
- Break up acp/server.rs #8932
- goose2 skill refactor #8897
- Update patterns for pattern-based command injection #8546
- Polish sidebar navigation and project icons #8896
- Parallelize provider resolution and eagerly init SQLite pool #8899
- Update goose2 credential management behind provider-scoped ACP/core API #8887
- Deduplicate _goose/providers/list RPC call at startup #8873
- Agent provider to use explicit type states #8879
- Redesign skills library #8868
- Revert client-side autocompaction #9055
- Set LLAMA_STATIC_CRT for Windows CUDA #8901
- Disable spellcheck in model search #8889
📚 Documentation
- Blog: orchestrating with goose #9104
- Remove old goose bench documentation #9054
- Updated tunnel remote access documentation #9077
- Blog: findings with minimax and office QA benchmark #8984
- Align CODEOWNERS with pull request review rules in GOVERNANCE.md #9056
- Bring MAINTAINERS.md up to date #9053
- Improve AGENTS.md readability #8979
- Improve goose2 AGENTS.md #9028
- Add CLAUDE.mds to mirror AGENTS.mds #9029
- Blog: goose with peekaboo #8884
- Blog: Built-in Local Inference #8808
- Hide Windows CUDA download links until release #8874