✨ 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