Core
- Fixed terminal rendering and interaction issues in the application
- Normalize file status paths relative to instance directory (@shantur)
- Migrate from Bun.Glob to npm glob package
- Bump AI SDK packages for Google, Google Vertex, Anthropic, Bedrock, and provider utils
- Add support for medium reasoning with Gemini 3.1
- Remove use of Bun.file
- Text files misclassified as binary
- Fetch default server at top level in desktop application
- Terminal rework in the app
- Bake in the AWS and Google authentication packages
- Token substitution in OPENCODE_CONFIG_CONTENT now works correctly (@ariane-emory)
- Revert migration from Bun.file() to Filesystem module
- Migrate project.ts from Bun.file() to Filesystem/stat modules
- Migrate read tool from Bun.file() to Filesystem module
- Migrate write tool from Bun.file() to Filesystem module
- Migrate Edit tool from Bun.file() to Filesystem module
- Migrate remaining tool files from Bun.file() to Filesystem/stat modules
- Migrate storage.ts from Bun.file()/Bun.write() to Filesystem module
- Migrate src/storage/json-migration.ts from Bun.file() to Filesystem module
- Migrate MCP auth module from Bun file APIs to Filesystem module
- Migrate storage database from Bun.file() to statSync for file existence checks
- Migrate session prompt module from Bun.file() to Filesystem/stat modules
- Fix crash in
opencode runand show errored tool calls in output - Migrate skill discovery to use Filesystem module instead of Bun file APIs
- Migrate session instruction handling from Bun.file() to Filesystem module
- Migrate provider.ts from Bun.file() to Filesystem module
- Migrate shell.ts from Bun.file() to statSync for improved file system operations
- Migrate log utility from Bun.file() to Node.js fs module for better compatibility
- Migrate models.ts from Bun.file()/Bun.write() to Filesystem module
- Use HashiCorp releases API for installing terraform-ls (@edubxb)
- Migrate LSP server from Bun.file()/Bun.write() to Filesystem module
- Migrate session command from Bun.file() to statSync for improved file system operations
- Migrate agent.ts from Bun.file() to Filesystem module
- Migrate auth module from Bun.file()/Bun.write() to Filesystem module
- Pass sessionID and callID to shell.env hook input (@tesdal)
- Fix terminal cross-talk issue in the application
- Update SST version
- Migrate src/global/index.ts from Bun.file() to Filesystem module
- Emit PROMPT_TOO_LARGE error when GitHub context overflows (@elithrar)
- Migrate src/bun/index.ts from Bun.file()/Bun.write() to Filesystem module
- Migrate config/markdown.ts from Bun.file() to Filesystem module
- Migrate file/index.ts from Bun.file() to Filesystem module
- Migrate format/formatter.ts from Bun.file() to Filesystem module
- Allow readJson to be called without explicit type parameter
- Migrate file/ripgrep.ts from Bun APIs to Filesystem module
- Migrate index.ts from Bun.file() to Filesystem module
- Add Julia language server support (@zarly)
- Bump GitLab AI provider to 3.6.0 to add Sonnet 4.6 support (@vglafirov)
- Add centralized filesystem module for Bun.file migration
- Fix Clojure syntax highlighting (@finalfantasia)
- Ensure explore subagent prompts for external directory permission instead of auto-denying
- Don't autoload kilo
- Add Kilo as a native provider (@Nomadcxx)
- Simplify redundant ternary in updateMessage (@yikayiyo)
- Ensure Read tool uses fs/promises for all file system operations
- Make read tool more memory efficient
- Surface plugin auth providers in the login picker (@anoldguy)
- Invalidate OAuth credentials when OAuth provider indicates they are invalid (@GreenStage)
- Don't fetch models.dev on completion (@gigamonster256)
- Recover state after SSE reconnect and harden SSE streams
- Keep message part order stable when files resolve asynchronously
- Drop IDs from attachments in tools and assign them in prompt.ts instead
TUI
- Improve GitHub action branch detection and handle 422 errors (@elithrar)
- Ensure onExit callback fires after terminal output is written
- Migrate TUI thread module from Bun.file() to Filesystem module
- Migrate agent command from Bun.file()/Bun.write() to Filesystem module
- Migrate import command from Bun.file() to Filesystem module
- Update pasteImage to only increment count when the previous attachment is an image (@OpeOginni)
- Migrate editor.ts from Bun.file()/Bun.write() to Filesystem module
- Migrate clipboard.ts from Bun.file() to Filesystem module
- Migrate CLI run command from Bun.file() to Filesystem/stat modules
- Session list --max-count parameter now correctly limits the number of sessions displayed (@mharris717)
- Exit cleanly without hanging after session ends
- Style scrollbox for permission and sidebar (@akronb)
- Increase button heights and improve permission prompt layout alignment
- Display new session banner with logo and project details in TUI
Desktop
- Update Japanese translations for WSL integration (@taroj1205)
- Made localhost URLs work correctly in isLocal function
- Navigate to last session when navigating to a project
- Fix typecheck errors in app
- Deduplicate allServers list in app
- Adjust session turn horizontal padding
- Tighten prompt dock padding in app
- Fixed sidecar spawning a window on Windows
- Delay prompt mode toggle tooltip
- Shorten prompt mode toggle tooltips in the app
- Reduce review panel padding
- Tweak search button style in UI
- Expanded color state on titlebar buttons
- Tweak hover and active styles for title bar buttons
- Share button now has a border
- Adjust file tree background color
- Handle sidecar key in projectsKey for desktop projects
- Fixed desktop app incorrectly identifying local servers
- Refactor server management backend
- Use group-hover for file tree icon color swap at all nesting levels
- Simplify mode toggle icon styling in TUI
- Clean up desktop implementation
- Temporarily disable WSL support in desktop application
- Use radio group in prompt input
- Simplify prompt mode toggle icon colors via CSS and tighten message timeline padding in TUI
- Fix prompt input quirks in app
- Terminal disconnect and resync functionality fixed
- Replicate tauri-plugin-shell logic in desktop application
- Improve modified file visibility and button spacing in TUI
- Show monochrome file icons by default in tree view, revealing colors on hover to reduce visual clutter
- Fix share button text styling to use consistent 12px regular font weight
- Add warning icon to permission requests for better visibility
- Extract dock prompt shell component
- UI no longer flashes when switching tabs (@neriousy)
- Avoid sidecar health-check timeout on shell startup in desktop app (@ysm-dev)
- Increase prompt mode toggle height for better clickability
- Add more end-to-end tests for desktop application (@neriousy)
- Update magnifying-glass icon in UI
- Tighten titlebar action padding
- Refine titlebar search and open padding
- Center titlebar search and soften keybind styling
- Align titlebar search text size
- Match titlebar active background to hover
- Use weak borders in titlebar actions
- Reduce titlebar right padding
- Keep file tree toggle visible
- Adjust icon button spacing in UI
- Session timeline and turn handling reworked in app
- Keep Escape handling local to prompt input on macOS desktop (@itskritix)
- Hide server CLI window on Windows
SDK
- Fix nested exports transformation in SDK publish script
Thank you to 25 community contributors:
- @itskritix:
- fix(app): keep Escape handling local to prompt input on macOS desktop (#13963)
- @vynnlee:
- docs(ko): improve Korean translation accuracy and clarity in Zen docs (#13951)
- @chenmijiang:
- docs: improve zh-cn and zh-tw documentation translations (#13942)
- @hmu332233:
- fix(docs): correct reversed meaning in Korean plugins logging section (#13945)
- @neriousy:
- @ysm-dev:
- fix(desktop): avoid sidecar health-check timeout on shell startup (#13925)
- @alexcarpenter:
- fix: Homepage video section layout shift (#13987)
- @gigamonster256:
- fix: don't fetch models.dev on completion (#13997)
- @GreenStage:
- fix: Invalidate oauth credentials when oauth provider says so (#14007)
- @anoldguy:
- feat: surface plugin auth providers in the login picker (#13921)
- @akronb:
- fix(tui): style scrollbox for permission and sidebar (#12752)
- @yikayiyo:
- refactor: simplify redundant ternary in updateMessage (#13954)
- @Nomadcxx:
- feat: add Kilo as a native provider (#13765)
- @finalfantasia:
- fix(opencode): fix Clojure syntax highlighting (#13453)
- @mharris717:
- fix(cli): session list --max-count not honored, shows too few sessions (#14162)
- @vglafirov:
- feat: GitLab Duo - bump gitlab-ai-provider to 3.6.0 (adds Sonnet 4.6) (#14115)
- @zarly:
- feat: add Julia language server support (#14129)
- @elithrar:
- @OpeOginni:
- fix(opencode): update pasteImage to only increment count when the previous attachment is an image too (#14173)
- @tesdal:
- feat(plugin): pass sessionID and callID to shell.env hook input (#13662)
- @edubxb:
- fix(lsp): use HashiCorp releases API for installing terraform-ls (#14200)
- @ariane-emory:
- fix: token substitution in OPENCODE_CONFIG_CONTENT (alternate take) (#14047)
- @Seungjun0906:
- docs(ko): improve wording in ecosystem, enterprise, formatters, and github docs (#14220)
- @shantur:
- fix(core): normalize file.status paths relative to instance dir (#14207)
- @taroj1205:
- feat(i18n): update Japanese translations to WSL integration (#13160)