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:

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:

  • @neriousy:
    • feat(desktop): enhance Windows app resolution and UI loading states (#13320)

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:
    • fix(cli): missing plugin deps cause TUI to black screen (#14432)
    • fix(github): support variant in github action and opencode github run (#14431)
  • @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:
    • fix(desktop): change detection on Windows, especially Cygwin (#13659)
    • fix: Windows path support and canonicalization (#13671)
  • @kevinWangSheng:
    • fix(app): correct inverted chevron direction in todo list (#14628)
  • @noamzbr:
    • feat: ACP - stream bash output and synthetic pending events (#14079)
    • fix: ACP both live and load share synthetic pending status preceeding… (#14916)
  • @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

Desktop

  • Don't spawn sidecar if default is localhost server

SDK

  • Build SDK to dist/ instead of dist/src

Thank you to 1 community contributor:

  • @rmk40:
    • docs: clarify tool name collision precedence (#14313)

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:

  • @mhart:
    • Use structuredClone instead of remeda's clone (#14351)
  • @NatChung:
    • fix: add missing id/sessionID/messageID to MCP tool attachments (#14345)

v1.2.8

Core

  • Support adaptive thinking for Claude Sonnet 4.6 (@tctev)

TUI

  • Add custom tool and MCP call responses that are visible and collapsible (@yanosh-k)

Desktop

  • Black screen on launch with sidecar server fixed
  • Clear todos on abort

Thank you to 2 community contributors:

  • @yanosh-k:
    • feat(tui): add custom tool and mcp call responses visible and collapsable (#10649)
  • @tctev:
    • feat(opencode): support adaptive thinking for claude sonnet 4.6 (#14283)

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 run and 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:
    • feat(desktop): more e2e tests (#13975)
    • fix(app): ui flashing when switching tabs (#13978)
  • @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:
    • fix(github): emit PROMPT_TOO_LARGE error on context overflow (#14166)
    • fix(github): action branch detection and 422 handling (#14322)
  • @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 cljfmt formatter support for Clojure files (#13426)
  • @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 dfmt formatter support for D language files (#13867)