## Core
### Improvements
- Added the v2 model and provider listing API.
- Added DigitalOcean OAuth and Inference Router support. (@Spherrrical)
- Create a global `opencode.jsonc` automatically when no config exists.
- Enable `customize-opencode` by default with a linked full schema.
- Autocomplete configured `@mentions` in prompts.
- Parse fenced Markdown code blocks in patch diffs by default.
### Bugfixes
- Fix keymap fallback priority and make TUI config errors clearer.
- Restore model suggestions for unloaded providers and missing models.
- Preserve layered permission rule order in config merges. (@asuffield)
- Preserve attachments returned by custom tools.
- Keep recent turns after compaction instead of folding them into the summary.
- Fix prompt cursor movement and mentions for wide characters.
- Prevent duplicate submits from creating empty phantom sessions.
- Keep compacted tail history when forking a session.
- Return proper busy-session errors from the HTTP API.
## TUI
### Improvements
- Add pinned recent sessions, quick slots, and recent-session cycling.
### Bugfixes
- Restore non-interactive `run` exit behavior.
- Make the websearch provider label update reactively. (@NormallyGaussian)
- Reduce flicker when switching workspaces.
- Fix `run --json` output draining.
- Fix prompt history and line up/down commands.
## Desktop
### Improvements
- Add Ctrl/Cmd+number shortcuts to switch projects.
- Remember whether the todo dock is collapsed.
- Restore AppStream metadata in Linux desktop builds.
### Bugfixes
- Show clearer wrapped server errors in the app. (@OpeOginni)
- Use the login shell when loading desktop environment variables. (@qwq202)
- Remember the selected model variant when switching sessions or projects.
- Open the next available project when closing the current one.
- Prevent streamed Markdown from being cut off.
**Thank you to 5 community contributors:**
- @NormallyGaussian:
- fix(tui): make websearch provider label reactive (#26943)
- @Spherrrical:
- feat(plugin): add DigitalOcean OAuth + Inference Routers (#26095)
- @asuffield:
- fix: preserve permission ordering by accepting a layered array (#23214)
- @qwq202:
- fix(desktop): resolve login shell when loading env (#26449)
- @OpeOginni:
- fix(app): enhance error handling by unwrapping SDK-wrapped errors in formatServerError (#27061)