Releases: anomalyco/opencode
Releases Β· anomalyco/opencode
v1.3.0
Important
- Removed anthropic oauth plugin, see: https://github.com/anomalyco/opencode/pull/18186/changes
New Features
- GitLab Agent Platform (#18014): GitLab Agent Platform is now fully supported with automatic discovery of workflow models from your GitLab instance. Workflow models can use opencode's local tools (file read/write, shell, etc.) over WebSocket.
- Git-backed Session Review (#17961): Added git-backed session review modes, enabling users to review uncommitted changes and branch diffs directly within opencode. Git changes are now the default review source with the desktop review tree staying synchronized with your selected source.
- Multistep Authentication (#18103, #18035): TUI and Desktop both support multistep authentication flows which means providers like Github Copilot for Enterprise deployments now work as intended
- Interactive Update Flow (#18662): Major and minor updates now show a confirmation dialog before upgrading, allowing you to review changes before updating. You can also skip specific versions if you prefer to stay on your current release.
- Node.js Support (#18324): opencode can now run on Node.js in addition to Bun, with a dedicated Node.js entry point and build script that bundles the server with database migrations.
Desktop App Improvements
- Project Navigation (#18502): Navigate between projects faster using keyboard shortcuts (cmd+option+arrow keys).
- File Uploads (#18403): Desktop app now supports file type filters and multiple file selection when uploading files.
- Workspace Switching (#18207): Fixed visual flickering when switching between workspaces or projects - the interface now transitions smoothly without showing loading spinners during navigation.
- Sidebar Resize (#18647): Fixed issue where sidebar would automatically close when being resized to minimum width. The sidebar now clamps at minimum width instead of closing.
- Loading States (#18501): Improved loading state management across the app for smoother, more consistent feedback during async operations.
- Console Login (#18281): Fixed console device login to properly handle pending authorization states, ensuring the login process continues polling instead of failing while waiting for approval.
Terminal & Editor
- Terminal Rename (#18263): Fixed terminal renaming from the context menu, which previously failed due to dropdown focus conflicts.
- Terminal Error Recovery (#17591): Fixed an issue where terminals would become unresponsive when the server returned a "not found" error for terminal sessions. Terminals now properly reinitialize and remain interactive.
- Paste Operations (#18079): Paste operations now preserve raw byte data, enabling proper handling of binary content and special characters when pasting into the terminal.
- Prevent Duplicate Submits (#18148): Fixed issue where rapidly pressing Enter could submit prompts multiple times. Now ignores repeated Enter submits.
Providers & Models
- xAI Responses API (#18175): Improved xAI reasoning models performance in long multi-turn conversations by switching to the responses API with encrypted content support.
- GPT Model List (#18101): Updated the GPT subscription model list with the latest available models.
- Vertex AI Fix (#18283): Fixed Vertex AI errors with non-thinking models (like gemini-2.0-flash) by only applying thinking configuration to models that support reasoning capabilities.
- vLLM Context Overflow (#17763): Improved error detection for vLLM context overflow errors, providing clearer feedback when context limits are exceeded during inference.
- Cost Chunk Format (#16817): Fixed streaming error where cost data was sent in upstream provider format instead of client-requested format, preventing validation errors when mixing provider formats.
Review & Collaboration
- File Attachments (#17815): Fixed file and image attachments being silently lost when reusing or forking a previous prompt with attachments.
- Snapshot Revert (#18093): Fixed snapshot revert issues where overlapping file changes could apply the wrong patch hash, and resolved a sorting bug in hidden file ordering.
Authentication & Account
- Stale Credentials (#18426): Fixed stale server URL and email on re-login. Previously, logging into a different server could fail due to cached credentials from a previous environment.
- Codex Access (#18337): OAuth plan users can now access codex instructions freely without the previous whitelisting restrictions.
UI/UX Improvements
- Theme Improvements (#17958): Improved UI contrast and reduced brightness of hover/active elements for better readability and reduced eye strain.
- System Prompt (#18140): Cleaner AI responses with a streamlined fallback system prompt that removes unnecessary boilerplate text.
- Agent & Skill Ordering (#18261): More consistent AI responses with improved prompt caching by stabilizing the order of agents and skills in system prompts.
Bug Fixes
- Remote Server Switching (#17214): Fixed issues when switching between remote servers that caused stale project data, broken terminal spawning, and sidebar showing incorrect projects.
- Windows Commands (#18010): Fixed Windows command execution for shims (.cmd/.bat files) to resolve failures during upgrades, uninstalls, IDE installs, and LSP launches.
- Tool Discovery (#18320): Fixed tool discovery for npm-installed packages by including the cache bin directory in PATH lookups, ensuring locally installed tools are properly found.
- Error Messages (#18165): Tool and session error messages now display in clean, human-readable format instead of showing confusing technical error strings.
- Chunk Timeout (#18264): Disabled chunk timeout by default to prevent issues across various use cases; users can still enable it in their configuration if needed.
- Event Ordering (#18259): Events in real-time streams now process sequentially in order, ensuring consistent and predictable event display instead of potentially out-of-order delivery.
- Desktop Stability (#18300): Improved desktop stability with more reliable workspace and session routing, fixing sidebar selection mismatches and race conditions when switching projects.
Thank you to 16 community contributors:
- @jquense:
- fix(opencode): preserve prompt tool enables with empty agent permissions (#17064)
- @bugulo:
- fix(app): agent switch should not reset thinking level (#17470)
- @ghost91-:
- @Tarquinen:
- fix(opencode): apply message transforms during compaction (#17823)
- @AbigailJixiangyuyu:
- fix(windows): restore /editor support on Windows (#17146)
- @altendky:
- @OpeOginni:
- docs: mark tools config as deprecated (#17951)
- docs(cli): update experimental TY LSP flag description for clarity across multiple languages (#14770)
- fix(desktop): fix error handling by adding errorName function to identify NotFoundError rather than statusCode (#17591)
- fix(desktop): remote server switching (#17214)
- @ariane-emory:
- fix: Add apply_patch to EDIT_TOOLS filter (#18009)
- @anduimagui:
- fix(app): ignore repeated Enter submits in prompt input (#18148)
- @jorgitin02:
- fix: stabilize agent and skill ordering in prompt descriptions (#18261)
- @Jaaneek:
- feat: switch xai provider to responses API (#18175)
- @mchenco:
- docs: add Cloudflare Workers AI provider (#18322)
- @vglafirov:
- feat: enable GitLab Agent Platform with workflow model discovery (#18014)
- @github-actions[bot]:
- Update VOUCHED list
- @Protocol-zero-0:
- fix(provider): only set thinkingConfig for models with reasoning capability (#18283)
- @neriousy:
- fix(app): terminal rename from context menu (#18263)
v1.2.27
Core
- Fixed VCS watcher if statement logic
- Delete legacy permission module
- Clean up pending entry when question is aborted
- Remove SIGHUP exit handler
- Effectify PermissionNext and fix InstanceState ALS bug
- Inline branded ID schemas
- Refactor QuestionService to use effects
- Ensure that compaction message is tracked as agent initiated
- Increase default chunk timeout from 2 minutes to 5 minutes
- Fix lost sessions across worktrees and orphan branches (@michaeldwan)
Desktop
- Remove open label from UI
- Handle multiline web paste in prompt composer
Thank you to 4 community contributors:
- @michaeldwan:
- fix(opencode): lost sessions across worktrees and orphan branches (#16389)
- @marcusschiesser:
- fix(ui): prevent long filenames from overlapping actions (#17151)
- @Gojer16:
- docs(es): fix Spanish intro page translation, grammar, and terminology (#17563)
- @erikengervall:
- docs: Add opencode-firecrawl to ecosystem documentation (#17672)
v1.2.26
Core
- Scaffold effect-to-zod bridge for schema conversion
- Serialize configuration for Bun installations
- Support text attachments in app
- Paginate session history for improved server performance
- Sessions lost after git init in existing project (@michaeldwan)
- Fail fast on config dependency installs in end-to-end tests
- Filter empty content blocks for Bedrock provider (@Tom-Ryder)
- Refactor ProviderAuthService to use Effect pattern
- Add console account subcommands to CLI
- Refactor AuthService to use Effect pattern
TUI
- Hide console command from help output
- Remove OpenRouter warning
- Reorder provider list in providers login
Desktop
- Model selection now persists by session
- Polish prompt composer controls
- Synchronize sidebar state across the application
- Use new-session icon in sidebar buttons
- Avoid clipping new session during sidebar animation
- Animate titlebar controls on sidebar open
- Restore sidebar dash and sync session spinner colors
- Fork should copy prompt into new session
- Improved sidebar spacing and session list spinner transition
- Terminal cloning without retry
- Scroll falls behind prompt input
- Adjust spacing in todo list component
- Better optimistic prompt submit in app
- Synchronize internationalization translations
- Use cursor session history loading for improved performance
- List item background colors fixed in app
- Stabilize todo dock end-to-end tests with composer probe
- Desktop multi-window support added to Electron
- Increase CI end-to-end test workers
Thank you to 2 community contributors:
- @Tom-Ryder:
- fix: filter empty content blocks for Bedrock provider (#14586)
- @michaeldwan:
- fix(opencode): sessions lost after git init in existing project (#16814)
v1.2.25
Core
- Support non-OpenAI Azure models that use completions endpoints
- Flow branded ProviderID and ModelID through internal signatures
- Brand ProviderID and ModelID types for improved type safety
- Remove external sourcemap generation to reduce build artifacts
- Brand PermissionID, PtyID, QuestionID, and ToolID types for improved type safety
- Add ARM64 release targets for Windows CLI and desktop
- Brand PartID through Drizzle and Zod schemas
- Brand WorkspaceID through Drizzle and Zod schemas
- Resolve symlinks in Instance cache to prevent duplicate contexts (@jmylchreest)
- Brand SessionID through Drizzle and Zod schemas
- Restore plugin serverUrl getter so plugins can connect to local server
- Re-enable snapshot in ACP (@noamzbr)
- Adjust skill presentation to reduce token usage
- Brand ProjectID through Drizzle and Zod schemas
- Tighten effect-based account flows
- Read stdout and stderr in PackageRegistry.info before waiting for process to exit (@ghost91-)
- Improve skill presentation to agent to increase likelihood of skill invocations
- Hide Windows background consoles in Electron
- Add GOOGLE_VERTEX_LOCATION environment variable support for Vertex AI (@SOUMITRO-SAHA)
- Implement resilient organization data fetching with error handling
- Make account login upgrades safe while adding multi-account workspace authentication
- Don't permit access to system directories
- Allow passing workspaceID into session create endpoint
- Fixed chunk timeout when processing LLM stream
- Make worktrees read the project ID from local workspace
- Add thinking variants support for SAP AI provider (@jerome-benoit)
- Upgrade OpenTUI to v0.1.87
- Fix OAuth auto-connect failing on first MCP connection (@domdomegg)
- Extract createApp function for server initialization
- Put workspace routing behind OPENCODE_EXPERIMENTAL_WORKSPACES flag
- Replace Bun semver with npm semver package
- Replace Bun shell with direct spawn calls in core flows
- Change pathToFileURL imports from bun to url module
- Multiple jdtls LSPs eating memory in Java monorepos (@stevoland)
TUI
- Use parse() at boundaries instead of manual make() for imports
- Wait for model store before auto-submitting --prompt in TUI (@altendky)
- Handle error when creating a session in TUI
Desktop
- Fix broken mobile sidebar sizing issue in workflows mode (@5w14)
- Fixed terminal animation in application
- Fix sidebar quirks in app
- Rework default server initialization and connection handling in desktop client
- Fix terminal e2e test flakiness by implementing a real terminal driver
- Set default WebSocket username and fix terminal spawn lifecycle issues in desktop app (@OpeOginni)
- Theme Windows titlebar overlay in Electron
- Guard comment accessor in message timeline
- Re-focus prompt after terminal opens in slash-terminal test
- Restore to message and fork session functionality in app
- Todos not clearing in app
- Skip editor reconcile during IME composition (@ysm-dev)
- Simplify review pane
- Trim session render work in app for improved performance
- Fix tests in app package
- Fixed terminal jank in the app
- Fixed terminal focus issues and reduced jank in the app
- Add debug window to app
- Display development statistics in the application
- Terminal state corruption fixed
SDK
- Fix ESM imports for @opencode-ai/plugin
Thank you to 15 community contributors:
- @stevoland:
- fix: Multiple jdtls LSPs eating memory in java monorepos (#12123)
- @altendky:
- fix(tui): wait for model store before auto-submitting --prompt (#7476)
- @bhaktatejas922:
- @domdomegg:
- fix(mcp): fix OAuth auto-connect failing on first connection (#15547)
- @jerome-benoit:
- fix(opencode): add thinking variants support for SAP AI provider (#14958)
- @SOUMITRO-SAHA:
- fix: add GOOGLE_VERTEX_LOCATION env var support for Vertex AI (#16922)
- @neriousy:
- fix(app): make error tool card respect settings (#17005)
- @andyWang1688:
- docs(providers): clarify npm choice for chat vs responses APIs (#16974)
- @ghost91-:
- fix(core): read stdout and stderr in PackageRegistry.info before waiting for the process to exit (#16998)
- @ysm-dev:
- fix(app): skip editor reconcile during IME composition (#17041)
- @noamzbr:
- fix: re-enable snapshot in acp (#14918)
- @jmylchreest:
- fix: resolve symlinks in Instance cache to prevent duplicate contexts (#16651)
- @OpeOginni:
- fix(desktop): set default WebSocket username and prevent repeated calling of terminal spawn properly closing the terminal (#17061)
- @5w14:
- fix(web): fix broken mobile sidebar (in workflows mode) sizing issue by adding flex-1 (#17055)
- @Wangmerlyn:
- docs: clarify subagent session navigation keybinds (#16455)
v1.2.24
Core
- Add initial support for workspaces into the TUI
- Send context-1m-2025-08-07 beta header to GitLab to enable 1M context window (@Krule)
- Add Copilot GPT-5.4 xhigh support
Desktop
- Fix scroll jitter and loop issues in app
- Session title turn spinner now displays correctly
- Dismiss toast notifications when questions or permissions are resolved (@neriousy)
Thank you to 3 community contributors:
v1.2.23
Core
- Disable fallback to free nano for small model requests
TUI
- Pass missing auth headers in run --attach (@ericclemmons)
Desktop
- Remove oc-1 theme from app
- Fix sidebar workspace container sizing to prevent content overflow
- Don't animate review panel in/out
- Revert "Stupid Sexy Timeline" feature
- Sanitize workspace store filenames on Windows
- Generate color palettes in app
Thank you to 3 community contributors:
- @ariane-emory:
- docs: add session_child_first keybinding to documentation (#16631)
- @ericclemmons:
- fix(opencode): pass missing auth headers in
run --attach(#16097)
- fix(opencode): pass missing auth headers in
- @yihuikhuu:
- fix(app): fix issue with scroll jumping when pressing escape in comment text area (#15374)
v1.2.22
Core
- Canonicalize current working directory after changing directories in TUI
- Fix broken MCP toggling in TUI (@natewill)
- Update database path test to verify correct channel-based filename
- Allow beta channel to share database with stable channel
- Add OPENCODE_SKIP_MIGRATIONS flag to bypass database migrations
TUI
- Guard TUI exit to prevent premature termination
- Avoid TTY corruption from double cleanup (@tobwen)
Desktop
- Fix sidebar background color when collapsed
- Suppress hover when opening project menu or right-clicking to prevent flickering
- Trim retained desktop terminal buffers
- Messages not loading reliably
- Prune and evict stale app session caches
- Restore new-session logo on dev so users recognize OpenCode immediately
- Revert new session logo on dev branch to ship UI change with auto-accept-permissions feature
- Add OpenCode logo to new session screen for immediate app identification
- Revert prompt control docking in TUI
- Dock auto-accept after thinking and move Add file to bottom-left
- Balance titlebar columns so center content doesn't get squeezed by long side content
- Center empty states vertically in session view and improve review panel messaging for projects without version control
- Review panel transition fixed in app
Thank you to 3 community contributors:
v1.2.21
Core
- Preserve original line endings in edit tool (@ranqn)
- Fix Git path resolution for modified files across Git Bash, MSYS2, and Cygwin on Windows
- Fix PTY session handle leak (@kikuchan)
- Sanitize preview database filenames
- Log stack trace when schema validation fails
- I need to see the actual commit diff to understand what was fixed and provide an accurate changelog entry.
- Add project git init API
- Update Drizzle and channel database handling
- Speed up share loads
- Enable auto-accept keybind regardless of permission config (@luisfelipesena)
TUI
- Fix broken /export toggling in TUI (@natewill)
Desktop
- Guard session-header current() against undefined when options is empty (@cyberprophet)
- Preserve file tree tab on reopen and fix e2e test regressions (@neriousy)
- Remove close button from project hover popover
- New session uses agent model/variant
- Model sticks to session after being changed
- Based on the commit message "fix(app): all panels transition", here's the changelog entry:
All panels transition correctly
- Can't scroll files in app
- Fix maximum width on timeline component
- Align session empty states in TUI
- Add interactive timeline visualization feature
- Share workspace slug wait helper across e2e specs
- Abort sessions and wait for idle before e2e cleanup
- Show skill issue when snapshotting is off in desktop app
- Fix portal positioning for sidebar menus and tooltips by removing conditional mount logic
- Add end-to-end tests for app (part 67) (@neriousy)
- Add sidebar reveal animation, hover peek overlay, and weaker dividers to app
- Better review and file tree empty states
- Enable Safari autocorrect in normal mode, disable in shell mode (@alexandrereyes)
- Revert stale read error fix in app
- Add English to locale matchers (@KirillTregubov)
Thank you to 12 community contributors:
- @luisfelipesena:
- fix(app): enable auto-accept keybind regardless of permission config (#16259)
- @imdzx:
- feat: Add Vietnamese README and update all language navigation links β¦ (#16322)
- @KirillTregubov:
- fix(app): add english to locale matchers (#16280)
- @hoshiumiarata:
- fix(ui): prevent unwanted key events during composition in LineCommentEditor (#16361)
- @alexandrereyes:
- fix(app): enable Safari autocorrect in normal mode, disable in shell mode (#15563)
- @neriousy:
- @kikuchan:
- fix(pty): pty session handle leak (#15599)
- @ShriKaranHanda:
- @natewill:
- fix(tui): fix broken /export toggling (#16443)
- @ranqn:
- fix(opencode): preserve original line endings in 'edit' tool (#9443)
- @cyberprophet:
- fix(app): guard session-header current() against undefined when options is empty (#16478)
- @Eric-Guo:
- fix(app): text-shimmer undefined length (#16475)
v1.2.20
Core
- Stop leaking fsmonitor daemons that caused 60GB+ of committed memory after running tests
- Replace Bun.which with npm which in OpenCode
TUI
- Restore Bun stdin reads for prompt input
v1.2.19
Core
- Add GPT-5.4 to Codex allowed models list (@msadiks)
- Replace Bun.stderr and Bun.color with Node.js equivalents
- Replace Bun.connect with net.createConnection for better compatibility
- Use SHA1 for hash instead of unsupported xxHash3-XXH64
- Replace Bun.hash with Hash.fast using xxhash3-xxh64
- Replace Bun.write with Filesystem.write in config files
- Replace Bun.write/file with Filesystem utilities in snapshot
- Replace Bun.sleep with Node.js timers for better compatibility
TUI
- Use node:stream/consumers for stdin reading
- Replace Bun.stdin.text with Node.js stream reading for better compatibility
Desktop
- Fix stale show in app (@neriousy)
- Remove keyboard shortcut tooltips from new session and new workspace buttons in the sidebar
- Load tab when opening file
Thank you to 3 community contributors: