Breaking Changes in SDK
Due to some performance issues we had to make a few breaking changes in our data model.Diff metadata
The diffs contained in the metadata for the edit and patch tool will no longer contain ato and from field with full file contents. they will only contain a patch field with the unified diff
Additionally all snapshot diffs contained in user message and session diff will follow this format
UserMessage.variant
Before the user message had a variant field - it is now nested under model so userMessage.model.variant
Core
- Added OTLP observability export support.
- Fixed failed web fetches leaving stale timeouts behind.
- Improved
opencode logintransport error messages.
- Retried Alibaba provider rate-limit errors instead of failing immediately.
- Kept model variants scoped to the selected model.
- Added full HTTP proxy support.
- Fixed OpenRouter provider issues.
- Aligned GitHub Copilot Anthropic reasoning levels and removed incorrect Qwen variants.
- Reduced TypeScript LSP memory use by using the native project config. (@derekbar90)
TUI
- Added a keybinding option for "Switch model variant". (@ariane-emory)
- Added PDF drag and drop for attachments. (@gitpush-gitpaid)
- Added
opencode run --dangerously-skip-permissionsto auto-approve non-denied permission prompts.
Desktop
- Improved subagent sessions with clearer titles, navigation, and progress states.
- Moved auto-accept permissions into Settings.
- Showed full file names on attachment chips.
- @derekbar90:
- fix(lsp): MEMORY LEAK: ensure typescript server uses native project config (#19953)
- @mchenco:
- docs: update Cloudflare provider setup to reflect /connect prompt flow (#20589)
- @gitpush-gitpaid:
- feat(opencode): Add PDF attachment Drag and Drop (#16926)
- @ariane-emory:
- fix(tui): use sentence case for theme mode command palette items (#21192)
- feat(tui): allow variant_list keybind for the "Switch model variant" command (#21185)