Changelog
Neue Updates und Verbesserungen für OpenCode
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.
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
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
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
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)
Core
- Disable fallback to free nano for small model requests
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
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
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)
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:
- 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)
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
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
Core
- Handle SIGHUP signal and kill process gracefully
TUI
- Add onClick handler to InlineTool and Task components
- Add options to auth login command to skip interactive questions(@dbpolito)
- Don't let Dax touch the UI
Desktop
- Fork Ghostty for web-based terminal implementation
- Show errors for stale keyed components
- Fixed locale error in app
- Resolve stale read error in app
- Improve provider settings consistency in app
- Preserve question dock state across session switches(@ualtinok)
- Fix icon jiggle in app
- Open search with Mod+F even when editor is not focused
- Improve error handling and translation in desktop server error formatting(@OpeOginni)
- Improve agent selection logic to correctly pass configured models and variants(@OpeOginni)
- Remove unnecessary macOS entitlements
- Add desktop deep link support for creating new sessions
- Prefer using useLocation hook instead of window.location in app
Core
- Rework workspace integration and adaptor interface
- Clarify output capture guidance in bash tool documentation
TUI
- Show scrollbar by default
- Prevent orphaned opencode subprocesses on shutdown
- Validate agent when running with attach flag(@alberti42)
Desktop
- Remove blur from todos in app
- Delay dock animation on session load
- Remove diff lines from sessions in sidebar
- Loading session should be scrolled to the bottom
- Close terminal tabs properly
Core
- Normalize trailing slashes in auth login URLs(@elithrar)
- Upgrade OpenTUI to v0.1.86 and enable markdown rendering by default
- Avoid Gemini combiner schema sibling injection
- Forward metadata options to Cloudflare AI Gateway provider(@ryanskidmore)
- Clone part data in Bus event to preserve token values(@ryanskidmore)
- Recover from 413 Request Entity Too Large errors via automatic compaction(@bentrd)
- Show human-readable message for HTML error responses(@rianvdm)
- Kill orphaned MCP child processes and expose OPENCODE_PID on shutdown(@ryanwyler)
- Add workspace_id to session table
- Add WorkspaceContext to core
- Basic implementation of remote workspace support
- Change keybindings to navigate between child sessions
- Fixed test issues
- Fixed terminal rendering and interaction issues in the application
TUI
- Replace curved arrow with straight arrow for better terminal compatibility
- Show pending tool call count in TUI instead of generic 'Running...' message
- Use arrow indicator for active tool execution in TUI
- Disable session navigation commands when no parent session(@jerome-benoit)
- Fixed project ID conflict and updated handling for same session ID(@noamzbr)
- Improve task tool display with subagent keybind hints and spinner animations
- Add Go provider list command
Desktop
- Defer diff rendering
- Fixed timeline performance jank in the application
- Tighten up header elements in the app
- Stabilize project close navigation
- Add comprehensive animation system with multiple easing functions and transition utilities
- Default auto-respond to false
- Refactor app to use SolidJS
- Move session review bottom padding to UI layer
- Fix latest.json finalizer in desktop application
- Revert Polish Turkish translations
- Use correct download link in finalize-latest-json script
- Faster session switching via windowed rendering and staged timeline
- Add compact UI to the app(@neriousy)
- Polish Turkish translations(@vaur94)
- Fallback to synthetic icon for unknown provider IDs(@rexdotsh)
- Fixed scroll issues in the app
- Synchronize internationalization translations
- Add Warp to the open menu
- Add latest.json finalizer script for desktop builds
- Auto-accept permissions in app
- Add Turkish locale support for app and UI packages(@vaur94)
- Add recent projects section to command palette(@neriousy)
- Move desktop open_path functionality to Rust
- Allow providing username and password when connecting to remote server
- Fixed permission indicator in app
- Add permission notifications to app
- Show keybind on context tab close button
- Better diff and code comments in app
- Deduplicate file tree scroll state management
- Align review changes select height
- Mute inactive file tab icons
- Set max-width on session when review is closed but file tree is open
- Add border to file tree on scroll
- Fix session tab alignment in compact view to prevent vertical overflow
- New tabs styling in the app
- Auto-accept all permissions mode
- Enhance project tile interaction with suppress hover functionality(@OpeOginni)
- Simplify review layout
- Restore shell path environment for desktop sidecar
- Open app in PowerShell instead of Command Prompt on Windows(@neriousy)
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)
TUI
- Consume stdout concurrently with process exit in auth login(@Ayushlm10)
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
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
Desktop
- Don't spawn sidecar if default is localhost server
SDK
- Build SDK to dist/ instead of dist/src
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