Core
- Support non-OpenAI Azure models that use completions endpoints
- Flow branded ProviderID and ModelID through internal signatures
- Brand ProviderID and ModelID types for improved type safety
- Remove external sourcemap generation to reduce build artifacts
- Brand PermissionID, PtyID, QuestionID, and ToolID types for improved type safety
- Add ARM64 release targets for Windows CLI and desktop
- Brand PartID through Drizzle and Zod schemas
- Brand WorkspaceID through Drizzle and Zod schemas
- Resolve symlinks in Instance cache to prevent duplicate contexts (@jmylchreest)
- Brand SessionID through Drizzle and Zod schemas
- Restore plugin serverUrl getter so plugins can connect to local server
- Re-enable snapshot in ACP (@noamzbr)
- Adjust skill presentation to reduce token usage
- Brand ProjectID through Drizzle and Zod schemas
- Tighten effect-based account flows
- Read stdout and stderr in PackageRegistry.info before waiting for process to exit (@ghost91-)
- Improve skill presentation to agent to increase likelihood of skill invocations
- Hide Windows background consoles in Electron
- Add GOOGLE_VERTEX_LOCATION environment variable support for Vertex AI (@SOUMITRO-SAHA)
- Implement resilient organization data fetching with error handling
- Make account login upgrades safe while adding multi-account workspace authentication
- Don't permit access to system directories
- Allow passing workspaceID into session create endpoint
- Fixed chunk timeout when processing LLM stream
- Make worktrees read the project ID from local workspace
- Add thinking variants support for SAP AI provider (@jerome-benoit)
- Upgrade OpenTUI to v0.1.87
- Fix OAuth auto-connect failing on first MCP connection (@domdomegg)
- Extract createApp function for server initialization
- Put workspace routing behind OPENCODE_EXPERIMENTAL_WORKSPACES flag
- Replace Bun semver with npm semver package
- Replace Bun shell with direct spawn calls in core flows
- Change pathToFileURL imports from bun to url module
- Multiple jdtls LSPs eating memory in Java monorepos (@stevoland)
TUI
- Use parse() at boundaries instead of manual make() for imports
- Wait for model store before auto-submitting --prompt in TUI (@altendky)
- Handle error when creating a session in TUI
Desktop
- Fix broken mobile sidebar sizing issue in workflows mode (@5w14)
- Fixed terminal animation in application
- Fix sidebar quirks in app
- Rework default server initialization and connection handling in desktop client
- Fix terminal e2e test flakiness by implementing a real terminal driver
- Set default WebSocket username and fix terminal spawn lifecycle issues in desktop app (@OpeOginni)
- Theme Windows titlebar overlay in Electron
- Guard comment accessor in message timeline
- Re-focus prompt after terminal opens in slash-terminal test
- Restore to message and fork session functionality in app
- Todos not clearing in app
- Skip editor reconcile during IME composition (@ysm-dev)
- Simplify review pane
- Trim session render work in app for improved performance
- Fix tests in app package
- Fixed terminal jank in the app
- Fixed terminal focus issues and reduced jank in the app
- Add debug window to app
- Display development statistics in the application
- Terminal state corruption fixed
SDK
- Fix ESM imports for @opencode-ai/plugin
Thank you to 15 community contributors:
- @stevoland:
- fix: Multiple jdtls LSPs eating memory in java monorepos (#12123)
- @altendky:
- fix(tui): wait for model store before auto-submitting --prompt (#7476)
- @bhaktatejas922:
- @domdomegg:
- fix(mcp): fix OAuth auto-connect failing on first connection (#15547)
- @jerome-benoit:
- fix(opencode): add thinking variants support for SAP AI provider (#14958)
- @SOUMITRO-SAHA:
- fix: add GOOGLE_VERTEX_LOCATION env var support for Vertex AI (#16922)
- @neriousy:
- fix(app): make error tool card respect settings (#17005)
- @andyWang1688:
- docs(providers): clarify npm choice for chat vs responses APIs (#16974)
- @ghost91-:
- fix(core): read stdout and stderr in PackageRegistry.info before waiting for the process to exit (#16998)
- @ysm-dev:
- fix(app): skip editor reconcile during IME composition (#17041)
- @noamzbr:
- fix: re-enable snapshot in acp (#14918)
- @jmylchreest:
- fix: resolve symlinks in Instance cache to prevent duplicate contexts (#16651)
- @OpeOginni:
- fix(desktop): set default WebSocket username and prevent repeated calling of terminal spawn properly closing the terminal (#17061)
- @5w14:
- fix(web): fix broken mobile sidebar (in workflows mode) sizing issue by adding flex-1 (#17055)
- @Wangmerlyn:
- docs: clarify subagent session navigation keybinds (#16455)