Releases · anomalyco/opencode
v1.2.15
Core
- Fix most segfaults on Windows with Bun v1.3.10 stable
- Split TUI and server configuration
Desktop
- Remove interactive shell flag from sidecar spawn to prevent hang on macOS (@kilhyeonjun)
- Fixed permissions and questions handling from child sessions in the app
- Fixed keyboard navigation for previous/next message (@neriousy)
- Correct Copilot provider description in i18n files (@Oleksii-Pavliuk)
Thank you to 5 community contributors:
- @Oleksii-Pavliuk:
- fix(app): correct Copilot provider description in i18n files (#15071)
- @neriousy:
- fix(app): keyboard navigation previous/next message (#15047)
- @OpeOginni:
- fix(docs): update schema URL in share configuration examples across multiple languages (#15114)
- @kilhyeonjun:
- fix(desktop): remove interactive shell flag from sidecar spawn to prevent hang on macOS (#15136)
- @choephix:
- fix(app): middle-click tab close in scrollable tab bar (#15081)
v1.2.14
Core
- Add message delete endpoint (@shantur)
TUI
- Consume stdout concurrently with process exit in auth login (@Ayushlm10)
Thank you to 2 community contributors:
- @Ayushlm10:
- fix: consume stdout concurrently with process exit in auth login (#15058)
- @shantur:
- feat(core): add message delete endpoint (#14417)
v1.2.13
v1.2.12
Core
- Synchronize changes
- Temporarily disable plan enter tool to prevent unintended mode switches during task execution
- Migrate Bun.spawn to Process utility with timeout and cleanup
- Disable Bun config cache in CI
- Await git ID cache write in project module
- Import custom tools via file URL
TUI
- Add Go SDK code generation script
- Show LSP errors for apply_patch tool
Desktop
- Enhance Windows app resolution and UI loading states (@neriousy)
- Update desktop README for accuracy
Thank you to 1 community contributor:
v1.2.11
Core
- Add workspace-serve command (experimental)
- ACP both live and load share synthetic pending status preceding actual data (@noamzbr)
- Replace structuredClone with spread operator for process.env in tests
- Add 50ms tolerance for NTFS mtime precision in Windows FileTime assertions
- Replace Unix-only test assumptions with cross-platform alternatives
- Use path.sep in discovery test for cross-platform path matching
- Normalize backslash paths in config rel() and file ignore on Windows
- Fix plugin resolution with createRequire fallback on Windows
- Harden preload cleanup against Windows EBUSY errors
- Normalize git excludesFile path for Windows in tests
- Stream bash output and add synthetic pending events to ACP (@noamzbr)
- Add git flags for snapshot operations and fix tests for cross-platform on Windows
- Handle CRLF line endings in markdown frontmatter parsing on Windows
- Use path.join for cross-platform glob test assertions
- Upgrade to Bun 1.3.10 canary and force baseline builds always
- Normalize paths at permission boundaries on Windows
- Windows path support and canonicalization (@edemaine)
- Upgrade OpenTUI to v0.1.81
- Change detection on Windows, especially Cygwin (@edemaine)
- Cache platform binary in postinstall for faster startup
- Revert caching platform binary in postinstall for faster startup
- Cache platform binary in postinstall for faster startup
- Publish desktop beta releases to a separate repository
- Add experimental endpoint to list all sessions
- Fixed terminal issues in the app
- Respect info exclude in snapshot staging
- Missing plugin dependencies cause TUI to black screen (@elithrar)
TUI
- Support variant parameter in GitHub Actions and OpenCode GitHub run command (@elithrar)
Desktop
- Ignore stale part deltas in the application
- Fix bug where lines remain highlighted after canceling a comment (@neriousy)
- Replace error handling with serverErrorMessage utility and add ConfigInvalidError checks (@OpeOginni)
- Preserve native path separators in file path helpers
- Remove file tree tooltips
- Update createOpenReviewFile test to match new call order
- Wait for loadFile to complete before opening file tab
- Windows E2E test failures due to IPv6 networking issues resolved
- Correct inverted chevron direction in todo list (@kevinWangSheng)
- Feed customization options
- Add beta icon to desktop application
- E2E test updated to current version
- Remove double-border in share button
- Better sound effect disabling UX
- Add custom scroll view to app
- Show and hide reasoning summaries in the app
- Stay pinned with auto-scroll on todos, questions, and permissions
- Bring back -i flag in sidecar arguments for desktop
- Large text pasted into prompt input no longer causes main thread to lock
SDK
- Scripts using Turbo commands would not run on Windows
Thank you to 10 community contributors:
- @elithrar:
- @tuhin-cmd:
- docs: add Bangla README translation (#14331)
- @Seungjun0906:
- docs(ko): improve wording in gitlab, ide, index, keybinds, and lsp docs (#14517)
- @github-actions[bot]:
- Update VOUCHED list
- @pirrozani:
- docs(tui): correct typo in TUI documentation (#14604)
- @edemaine:
- @kevinWangSheng:
- fix(app): correct inverted chevron direction in todo list (#14628)
- @noamzbr:
- @OpeOginni:
- refactor: replace error handling with serverErrorMessage utility and checks for if error is ConfigInvalidError (#14685)
- @neriousy:
- fix(app): on cancel comment unhighlight lines (#14103)
v1.2.10
v1.2.9
Core
- Add missing id, sessionID, and messageID to MCP tool attachments (@NatChung)
- Remove unnecessary deep clones from session loop and LLM stream
- Remove User-Agent header assertion from LLM test to fix failing test
TUI
- Use structuredClone instead of remeda's clone for better performance and native support (@mhart)
Desktop
- Restore settings header mask
Thank you to 2 community contributors:
v1.2.8
v1.2.7
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)
v1.2.6
Core
- Add dfmt formatter support for D language files (@burner)
- Bump GitLab provider and auth plugin for mid-session token refresh (@vglafirov)
- Remove unnecessary per-message title LLM calls (@rmk40)
- Prioritize user-defined variables over environment variables in Google Vertex AI configuration
- Add OpenAI-compatible endpoint support for Google Vertex provider (@leehack)
- Add Venice support for temperature, topP, topK, and smallOption parameters (@dpuyosa)
- Add cljfmt formatter support for Clojure files (@finalfantasia)
TUI
- Make use of server directory path for file references in prompts (@OpeOginni)
- Add database migration command to convert JSON storage to SQLite
- Add --continue and --fork flags to attach command
- Fixed inaccurate tips in TUI (@imanolmzd-svg)
Desktop
- Normalize Linux Wayland/X11 backend and decoration policy (@bnema)
- Use process-wrap library instead of manual job object handling in desktop (@Brendonovich)
Thank you to 12 community contributors:
- @finalfantasia:
- feat(opencode): add
cljfmtformatter support for Clojure files (#13426)
- feat(opencode): add
- @pkx07:
- fix(website): correct zh-CN translation of proprietary terms in zen.mdx (#13734)
- @Brendonovich:
- desktop: use process-wrap instead of manual job object (#13431)
- @dpuyosa:
- feat(opencode): Add Venice support in temperature, topP, topK and smallOption (#13553)
- @bnema:
- fix(desktop): normalize Linux Wayland/X11 backend and decoration policy (#13143)
- @leehack:
- feat: add openai-compatible endpoint support for google-vertex provider (#10303)
- @hobostay:
- fix(docs): correct critical translation errors in Russian zen page (#13830)
- @rmk40:
- fix(core): remove unnecessary per-message title LLM calls (#13804)
- @imanolmzd-svg:
- fix (tui): Inaccurate tips (#13845)
- @vglafirov:
- fix: bump GitLab provider and auth plugin for mid-session token refresh (#13850)
- @OpeOginni:
- fix(tui): make use of server dir path for file references in prompts (#13781)
- @burner:
- feat(opencode): add
dfmtformatter support for D language files (#13867)
- feat(opencode): add