Changelog
New updates and improvements to OpenCode
Desktop
- Task tool rendering fixed in app
- Open apps with executables on Windows(@neriousy)
- Don't close sidebar on session change
Core
- Increase test timeout to 30s to prevent failures during package installation
- Memory leak fixed in platform fetch for events
- Show helpful message when free usage limit is exceeded
Desktop
- Disable terminal transparency
Core
- No changes in review pane
- Fix terminal replay in application
- Fix workspace reset issues in the app
- Resolve Homebrew upgrade requiring multiple runs(@GeneCodeSavvy)
- Publish session.error event for invalid model selection(@surma)
- Create file if it doesn't exist when writing via ACP(@BryceRyan)
- Adjust agent variant logic to check if variant is available for model instead of requiring exact match
- Add new ContextOverflowError type
- Remove obsolete Copilot model enablement instructions(@fgonzalezurriola)
- Enable thinking for all reasoning models on Alibaba Cloud (DashScope)(@AdJIa)
- Parse mid-stream OpenAI response errors to prevent infinite retries on unrecoverable errors
- Revert web input focus shortcut feature(@gigamonster256)
- Add web input focus shortcut(@ChangeHow)
- Add models.dev schema reference for model autocomplete in opencode.json(@remorses)
- Set variant in assistant messages(@shantur)
- Add skill discovery from URLs via well-known RFC
- Clean up orphaned worktree directories(@maharshi365)
- Properly encode file URLs with special characters(@yudgnahk)
- SessionPrompt.shell() now triggers loop if messages are queued(@goniz)
- Use reasoning summary auto for GPT-5 models that are not chat(@scratchmex)
- Add specific system prompt for Trinity model(@mariamjabara)
- Correct prefix selection for amazon-bedrock provider in getSmallModel(@NachoFLizaur)
- Don't rely on metadata.summary in task tool render
- Handle step-start and step-finish parts in GitHub response text extraction(@elithrar)
- Bump @gitlab/gitlab-ai-provider to 3.5.0(@vglafirov)
- Add directory parameter to plugin client for multi-project support(@cooooooooooode)
- Correct /data API usage and data format for importing share URLs(@yuvrajvirk)
- Parallelize skill downloads for faster loading in TUI
- Add skill discovery from URLs via well-known RFC
- Handle dollar sign character with file pattern in configuration(@hstove)
TUI
- Clean up dialog-model.tsx per code review
- Revert addition of version to session header and status dialog
- Revert showing connected providers in /connect dialog
- Use sender color for queued messages in TUI(@mcostasilva)
- Revert footer restoration in session view
- Add Claude Code-style --fork flag to duplicate sessions before continuing(@ariane-emory)
- Restore footer to session view(@ariane-emory)
- Increase skill dialog width
- Improve skills dialog readability(@kynnyhsap)
Desktop
- Back to platform fetch for now
- Include basic authentication in app
- Fixed global event default fetch behavior in app
- Fixed memory leak in event fetch operation
- Don't dispose instance after reset workspace
- Based on the commit message "fix(app): regressions" without access to the actual changes, I can only provide a generic summary:
- Use agent configured variant in app
- Persist defensiveness in app
- Add redo and undo end-to-end test(@neriousy)
- Use absolute paths for sidebar session navigation(@riftzen-bit)
- New session in workspace now correctly uses the selected workspace
- Add Cmd+[/] keybinds for session history navigation(@kitlangton)
- Correct module name for linux_display in main.rs(@Hona)
- Set maximum widths in app
- Incorrect workspace on new session
- Update tab file contents on change
- Polish Open in icon treatment
- Add fallback for when crypto.randomUUID is unavailable
- Allow creating sessions on touch devices(@kitlangton)
- Add native Wayland toggle on Linux desktop(@IsraelAraujo70)
- Include sandboxes in project unseen message and error notifications(@Brendonovich)
- Persist current sidecar URL in state when isSidecar prop is true(@OpeOginni)
- Track current sidecar URL in desktop application(@Brendonovich)
- Exclude devtools from production builds(@sneycampos)
- Add isSidecar prop to AppInterface and persist sidecar server URLs(@OpeOginni)
- Localize "close tab" in command palette(@alexyaroshuk)
- Improve workspace header truncation and item interaction(@kitlangton)
- Add default clipboard copy affordance to TextField component(@kitlangton)
- Fix stale context in prompt input
- Tighten slash command autocomplete matching(@kitlangton)
- Display toast notification when session is missing on prompt submit(@DNGriffin)
- Add native clipboard image paste and fix text paste in desktop app(@invarrow)
- Respect terminal toggle keybind when terminal is focused(@ryanmiville)
- Keep /share available to copy existing link(@kitlangton)
- Disable 3 Safari prompt-input annoyances(@DNGriffin)
- Add drag-and-drop support for @mentioning files in the app(@DNGriffin)
- Handle Windows paths in frontend file URL encoding(@yudgnahk)
- Move workspace New session button into header(@kitlangton)
- Toggle file tree and review panel with improved UX(@ProdigyRahul)
- Allow agent select to use full width on Windows(@abdiths)
- Keep startup script field scrollable in edit project dialog(@itskritix)
- Fix terminal replay issues in app
- Added macOS support for displaying only installed editors and added Sublime Text editor(@OpeOginni)
- Remove extra error page and use default error boundary
- Add loading window and restructure Rust desktop code(@Brendonovich)
- Hide 'open in app' button on narrow viewports
- Update server removal logic to clear default server URL if removed(@OpeOginni)
- Display session last updated time in command palette search(@alexyaroshuk)
- Add Windows File Explorer icon for session header(@maharshi365)
- Support desktop titlebar double-click maximize(@crob19)
- Add keyboard accelerators to menu items(@Brendonovich)
- Add more basic menu bar items to desktop application(@Brendonovich)
- Always show project menu button on mobile for accessibility(@DNGriffin)
- Maximize main window by default(@Brendonovich)
Core
- Load user plugins after built-in plugins
- Fix unhandled errors when aborting with queued messages
- User plugins override built-in plugins for the same provider(@rmk40)
- Move Codex 5.3 model definition to plugin to avoid showing unsupported model to other users
- Add session usage tracking to ACP(@SteffenDE)
- Update transforms for GPT-5.3
TUI
- Allow mouse escape via "esc" labels in dialogs(@AksharP5)
Desktop
- Make close comment button visible in prompt input(@alexyaroshuk)
- Hide prompt input when there are permissions requests or questions
- More terminal stability fixes
- Modified file color contrast in app for better visibility
- Add button to open files in external applications
- Allow toggling file tree closed independently
- Stop showing SessionSkeleton on new workspace(@dbpolito)
- Set workspace name earlier to improve creation and deletion(@dbpolito)
Core
- Enable Claude 3.5 Sonnet (new) model support
- Silently ignore proxy command failures to prevent config initialization crashes
- Ensure GitHub Copilot plugin properly sets headers when used in clients other than TUI
- Bundle GitLab auth plugin directly instead of dynamic install
- Fix plugin installation to use direct package.json manipulation instead of bun add
- Fix image reading with OpenAI-compatible providers like Kimi K2.5(@zhming0)
- Downgrade xai ai-sdk package due to errors
- Revert model autocomplete feature using models.dev schema reference
- Add models.dev schema reference for model autocomplete in opencode.json(@remorses)
- Adjust task tool description and input to reduce tool call failures with GPT models
- Wait for dependencies before loading custom tools and plugins
- Allow the function to hide or show thinking blocks to be bound to a key(@ariane-emory)
- Skip dependency installation in read-only configuration directories(@shantur)
- Ensure Kimi for Coding plan has thinking enabled by default for k2p5(@monotykamary)
- Fixed Cloudflare Workers AI provider
- Prevent random hangs in plugin installs when using HTTP proxy by adding --no-cache flag
- Session errors when attachment file not found are now handled gracefully
- Support remote server connections in terminal and fix GLIBC compatibility(@lucas-jo)
Desktop
- File changes not always available in app
- File tree kept in sync with filesystem changes
- Add Bosnian locale(@edoedac0)
- Fix terminal URL handling issues
- Remove extra horizontal padding around prompt input on mobile(@Brendonovich)
- Refresh workspace sessions when switching projects(@neriousy)
- Fixed terminal URL handling in the application
- Fix terminal end-of-line handling issues
- Refresh file contents when changing workspaces to prevent stale data(@ParkerSm1th)
- Derive terminal WebSocket URL from browser origin instead of hardcoded localhost(@0xdsqr)
- Last turn changes rendered in review pane
- Safety triangle for sidebar hover to prevent menu from closing
- Clear comments on prompt submission
- Fix e2e test action in app
- Terminal hyperlink clicks now work correctly
- Fix dated e2e tests in app
- Don't show scroll-to-bottom button unnecessarily
- File tree not staying in sync across projects/sessions
- Move session options to the session page
- Add session options to app
- Opened tabs follow created session
- Removed compression from RPM bundle to save 15 minutes in CI(@goniz)
Core
- Revert change that caused headers to be double merged if provider was authenticated in multiple places
- Document the built-in agents
- Prevent double-prefixing of Bedrock cross-region inference models(@sergical)
- Prioritize OPENCODE_CONFIG_DIR for AGENTS.md(@lgladysz)
TUI
- Restore direct OSC52 support
Core
- Prevent memory leaks from AbortController closures(@MaxLeiter)
- Revert addition of Trinity model system prompt support
- Add Trinity model system prompt support(@mariamjabara)
- Add shell.env hook for manipulating environment in tools and shell(@tylergannon)
- Use official ai-gateway-provider package for Cloudflare AI Gateway(@elithrar)
- Allow theme colors in agent customization(@IdrisGit)
- Add support for reading skills from .agents/skills directories
- Provider headers from config not applied to fetch requests(@cloudyan)
- Ensure MCP tools are sanitized
- Add .slnx to C#/F# LSP root detection(@workedbeforepush)
- Improve skills system with better prompting, fix permission requests after skill invocation, and ensure agents can locate scripts and resources
- Exclude k2p5 from reasoning variants(@neavo)
- Handle nested array items for Gemini schema validation(@mugnimaestra)
- Plugins are always reinstalled(@neriousy)
- Strip properties and required fields from non-object types in Gemini schema(@ChickenBreast-ky)
- Make CLI run command non-interactive
TUI
- Add --thinking flag to show reasoning blocks in run command
- Always fall back to native clipboard after OSC52(@MartinWie)
Desktop
- Faster end-to-end tests(@neriousy)
- Update command palette placeholder text
- Model selector truncating too soon
- Improve spacing in application UI
- Allow empty prompt with review comments in desktop(@dbpolito)
- Fixed terminal serialization bug in app
- Don't force mount tooltips in the app
- Restore previously opened session tabs on app restart(@ProdigyRahul)
- Edit project dialog icon now shows on hover(@ProdigyRahul)
- Move session search to command palette
- Fix custom providers overflow in app(@DNGriffin)
Core
- Revert pull request that was mistakenly merged
- Add --mdns-domain flag to customize mDNS hostname(@luiz290788)
- Added and deleted file status now correctly calculated in app
- Add User-Agent header for GitLab AI Gateway requests(@vglafirov)
- Add Ormolu code formatter for Haskell(@mimi1vx)
- Use OpenTUI OSC52 clipboard implementation
- Convert system message content to string for Copilot provider(@jogi47)
- Give OPENCODE_CONFIG_CONTENT proper priority for setting config based on docs(@OpeOginni)
- Fixed session title generation with OpenAI models(@oomathias)
- Simplify directory tree output for prompts
- Fix task status to show current tool state from message store
- Allow starting new sessions after errors by fixing stuck session status
- Adjust resolve parts to properly order tool calls when messages contain multiple @ references
- Hide badge for builtin slash commands
- Add workspace tests to the app(@neriousy)
- Send custom agent prompts as developer messages instead of user messages when using Codex subscriptions
- Fixed variant logic for Anthropic models through OpenAI compatibility endpoint
- Add prompt caching support for Claude Opus on AWS Bedrock(@rgodha24)
- Scope agent variant to model(@neavo)
- Prevent duplicate AGENTS.md injection when reading instruction files(@code-yeongyu)
- OpenCode no longer hangs when using client.app.log() during initialization(@desmondsow)
- Remove outer backtick wrapper in session transcript tool formatting(@zerone0x)
- Allow user plugins to override built-in auth plugins(@JosXa)
- Binary file handling in file view(@alexyaroshuk)
- Ensure switching Anthropic models mid-conversation works without errors and fix reasoning opaque not being picked up for Gemini models
- Fix issue where folders and files starting with "." could not be mentioned with @
- Show actual retry error message instead of generic error message
- Use process.env directly for runtime environment mutations in provider(@jerome-benoit)
- Add reasoning variants support for SAP AI Core(@jerome-benoit)
- Add UTF-8 encoding defaults for Windows PTY(@01luyicheng)
TUI
- Respect terminal transparency in system theme(@pablopunk)
- Truncate session title in exit banner to prevent display overflow
- Show exit message banner in TUI
- Add spinner animation for Task tool
- Correct pluralization of match count in grep and glob tools(@adamjhf)
- Remove extra padding between search and results in dialog-select
- Add UI for skill tool in session view
- Conditionally render bash tool output in TUI
- Add skill dialog for selecting and inserting skills
- Enable password authentication for remote session attachment
- Fix documentation issues(@lailoo)
- Revert skill slash commands feature
- Add skill slash commands to the app
Desktop
- Fix prompt input overflow issue in app(@neriousy)
- Sidebar losing projects on collapse has been fixed
- Add workspace toggle command to command palette and prompt input(@alexyaroshuk)
- Search through sessions
- Standardize icon sizes in the application
- Navigate to last project on open
- User messages not rendering consistently
- Add project context menu on right-click
- Open project search in app(@neriousy)
- Add tab close keybind to app(@ProdigyRahul)
- Enhance responsive design with additional breakpoints for larger screen layout adjustments(@OpeOginni)
- Add keyboard shortcuts for navigating between unread sessions(@Brendonovich)
- Fix Rust build and bindings formatting in desktop application(@Brendonovich)
- Remove unnecessary setTimeout in desktop app(@Brendonovich)
- Throttle window state persistence in desktop application(@Brendonovich)
- Integrate tauri-specta for desktop application(@Brendonovich)
- Keep macOS titlebar stable under zoom(@Brendonovich)
- Kill zombie server process on startup timeout(@heyitsmohdd)
- Show skill and MCP badges for slash commands
- Use static language names in Thai localization(@alexyaroshuk)
- Add tests for general settings, shortcuts, providers and status popover(@neriousy)
- Fixed session header 'share' button to hug content(@alexyaroshuk)
Core
- Sync changes
- Allow specifying custom models file path via OPENCODE_MODELS_PATH environment variable
- Ensure models configuration is not empty before loading
- Make skills invokable as slash commands in the TUI
- Don't follow symbolic links by default in grep and ripgrep operations
- Prevent parallel test runs from contaminating environment variables
- Ensure Mistral ordering fixes also apply to Devstral
- Add Copilot-specific provider to properly handle reasoning tokens(@SteffenDE)
- Respect OPENCODE_MODELS_URL environment variable in build process(@bbartels)
- Use snake_case for thinking parameter with OpenAI-compatible APIs(@Chesars)
- Bump AI SDK packages
- Ensure ask question tool isn't included when using acp
- Handle redirected statement treesitter node in bash permissions(@pschiel)
- Remove special case handling for Google Vertex Anthropic provider in response generation(@MichaelYochpaz)
- Exclude chat models from textVerbosity setting
Desktop
- Revert transitions, spacing, scroll fade, and prompt area updates
- Add session actions tests(@neriousy)
- Refactored tests and added project tests(@neriousy)
Core
- I need to see the actual commit message to summarize it. Could you please provide the commit message you'd like me to summarize for the changelog entry?
Core
- Remove unused experimental keys from TUI(@IdrisGit)
- Add continuous integration configuration
- Remove AI SDK middleware that was preventing think blocks from being sent back as assistant message content
Desktop
- Change language test in app(@neriousy)
- Add transitions, spacing improvements, scroll fade effects, and prompt area updates(@aaroniker)
Desktop
- Free model layout improvements in app
Core
- Revert to Anthropic completions endpoint to avoid rate limiting issues with copilot
- Fix frontmatter adding newlines causing invalid model IDs
- Ensure that Kimi doesn't have fake variants available
- Add sequential numbering for forked session titles(@ariane-emory)
TUI
- Add additional timeout race condition guards
- Guard destroyed input field in timeout callback
- Include cache tokens in CLI statistics(@bold84)
Core
- Ensure variants for Copilot models work with maxTokens being set
- Fixed maxOutputTokens being accidentally hardcoded to undefined which caused kimi-k2.5 issues on some inference providers(@ideallove)
- Include provider ID in SDK cache key to prevent cache collisions(@saba-ch)
- Allow media-src data: URL for small audio files in Content Security Policy(@tanapok)
- Update experimental environment variables in CLI documentation(@bbabou)
- Add `ctx.abort` to grep tool
- Add AbortSignal support to Ripgrep.files() and GlobTool(@goniz)
Core
- Add SubtaskPart with metadata reference(@YangTianz)
- Add global configuration support to app
- Global configuration updates in app package
- Bump plugins
Desktop
- Close review pane when pressing escape key
- Enable ctrl+n and ctrl+p for popover navigation in desktop app(@sairajchouhan)
- Add Thai locale support(@natt-v)
- Add custom provider support to app
Core
- Ensure Copilot plugin properly sets headers for new messages API
Core
- Prevent AGENTS.md from being loaded multiple times during parallel tool execution
- Bump plugin version
- Ensure unsubscribe from PartUpdated is always called in TaskTool(@goniz)
- Restore brand integrity of CLI wordmark(@mynameistito)
- Add experimental OpenTUI markdown component to app(@remorses)