Changelog
New updates and improvements to OpenCode
Core
- Enable thinking for Google Vertex Anthropic models(@MichaelYochpaz)
- Make question validation more lax to avoid tool call failures
Desktop
- Visual cleanup in app
- Scroll to comment on click in app
- Fixed crash when no default model is set
- Performance improvements in the app package
- Clean up comment component usage in app
Core
- Add tests
- Sync changes from upstream
- Fix models snapshot loading to prevent caching issues
- Fix Nix configuration
- Fix unicode filename handling in snapshot diff by disabling quote escaping
- Deep merge providerOptions in applyCaching to preserve nested configuration(@zerone0x)
- Construct apply_patch metadata before requesting permission in web interface(@brittlewis12)
- Remove models.dev macro
- Tell the model what model it is in the environment section of the prompt
- Retry web fetch with simple user agent on 403 errors(@Arasple)
- Allow GPT-5.1-Codex model in Codex auth plugin(@Danztee)
- Bump gitlab-ai-provider version(@vglafirov)
- Add model information as part of task metadata(@shantur)
- Add xhigh reasoning effort for GitHub Copilot GPT-5 models(@Arthur742Ramos)
- Normalize path separators for session diff filtering on Windows(@alexyaroshuk)
- Faster workspace creation
TUI
- Fix question selection click when terminal is unfocused(@maharshi365)
- Use min/maxHeight for question textarea
- Permission prompt should ignore keyboard events while dialog stack length is greater than zero(@justfortheloveof)
- Use selectedForeground for question prompt tab text visibility(@ariane-emory)
- Always center selected item in selection dialogs(@ariane-emory)
Desktop
- Fix submit button state in app
- Fix unnecessary suspense flash in app
- Add active state to comment cards in prompt input
- Fix type error
- Terminal clone needs remount to function properly
- Remove terminal connection error overlay
- Remove space between ellipsis and truncated text in comment card tooltip
- Update status popover empty state text color and centering
- Prevent focus on share popover text field
- Add link icon and use it for copy-to-clipboard buttons in UI
- Adjust share popover position 64px to the left
- Update share popover gutter to 6px and radius to match status dropdown
- Add 8px spacing between share button and icon buttons in titlebar
- Replace Popover with DropdownMenu for server options in app
- Update options icon button styling with improved active state and hover effects
- Change server item actions div padding from px-4 to pl-4
- Add onFilter callback to List component and hide add server row during search
- Position status circle inside input wrapper and fix dialog padding
- Remove hover background color from server list items
- Allow add server row to grow for error messages in app
- Update add server button and row styling in app
- Update manage servers dialog styling and behavior
- Add truncation tooltip to server items in status popover
- Update server and MCP item styles in status popover
- Update status popover styling and positioning
- Use 4px border radius (rounded-sm) consistently in app components
- Update titlebar spacing and status popover styling in app
- Enable submit button when comment cards are present in app
- Add back button in subagent sessions(@tomzhu1024)
- Model select dropdown not closing when pressing Escape key
- Improve model selector user experience
- Fix inability to select text when creating a new session
- Fix scrolling in unpaid model selector
- Fix Adam integration issue
- Add critical shadow for comment input validation and set editor popover radius to 14px
- Improve comment popover with better error styling and click-outside detection
- Change prompt placeholder based on comment count in app
- Adjust prompt container padding to 16px on bottom and horizontal sides
- Adjust prompt input positioning to 12px from bottom and right edges, remove session panel bottom padding
- Add escape/click-away to close read-only comment popovers, 10px radius, and remove 'Click to view context' text
- Don't use findLast in app package
- Add state to pause existing audio for demo menus and add support for audio controls(@jcampuza)
- Implement new server management for web and desktop(@OpeOginni)
- New workspace appears expanded and at the top of the list
- Missing translations in app
- Better error screen when connecting to sidecar
- Fix line selection issues in the app
- Fixed reactive loops in the app
- Better session stream rendering performance
- Add Iosevka as a font choice in desktop app(@ariane-emory)
- Always close hovercard when view-sessions is clicked(@DNGriffin)
- Close comment input popover on Escape key or click away
- Use shadow-lg-border-base on read-only comment popovers and align label spacing
- Remove border from comment input popover
- Position read-only comment popover below icon with 4px gutter
- Style comment popovers with 14px radius, move label below comment, and adjust text colors and sizes
- Move filename and line count below comment text in popovers
- Add tooltip with path, 6px spacing before close icon, and reduce filename truncation to 14 characters in editor tabs
- Add middle truncation for filename in comment card
- Truncate filename from start to show end of path in the app
- Remove gap between filename and comment in comment card
- Add shadow-xs-border with hover state to comment card
- Fix comment card styling with 48px height, 2px gap, and truncated filename while preserving line count visibility
- Increase comment font size to 12px in the app
- Add 8px gap before close icon and truncate long filenames in app
- Keep close icon in top right of comment card
- Add transition-all to comment card hover states
- Add close-small icon and use it for comment card dismiss button
- Truncate comment text and set card max-width to 200px in app
- Indent comment text to align with filename in context card
- Style submitted comment icons to match comment popup style
- Update prompt input styling with refined borders, hover states, and spacing
- Update context cards styling with 8px padding/gap and 6px border radius
- Add button-primary-base variable and use primary variant for Comment button
- Improve comment popup styling and add new comment icon
- Center checkbox indicator in provider selection(@ProdigyRahul)
- Auto-open OAuth links for Codex and Copilot(@edoedac0)
- Close delete workspace dialog immediately
- Don't remount directory layout in app for better performance
- Reapply work in progress changes for line selection feature in app
- Revert line selection work in progress
- Fix view all sessions flakiness in app(@DNGriffin)
Desktop
- Fixed a reactive feedback loop in the global project cache sync(@Eric-Guo)
- Add line selection functionality to the app
Core
- Add thinking presets for Google Vertex Anthropic provider(@zerone0x)
- Added support for OpenAI-based GitLab Duo models(@vglafirov)
- Show file path in apply_patch request permission screen(@iltenahmet)
TUI
- Add weight to fuzzy search to maintain title priority in TUI(@IdrisGit)
Desktop
- Session shouldn't be keyed
- Flash of fallback icon for projects fixed
- Fix project icon color flash on load
- Fixed folder suggestions missing last part in path completion
- Allow adding projects from any directory depth
- Allow adding projects from root directory in the app
- Non-git projects can now be renamed
- Add app version display to settings(@alexyaroshuk)
Core
- Revert handling of special characters in paths and git snapshot reading logic
- Revert snapshot regression fix
- Ensure cat command triggers external directory permission check in Bash tool
- Print MCP stderr to OpenCode log file(@karta0807913)
- Write refresh tokens to OpenAI auth in Codex(@CasualDeveloper)
- Add workspace startup script to projects
- Ensure images are properly returned as tool results
- Rename `setSessionModel` to `unstable_setSessionModel` in ACP(@maxious)
- Correct spelling of 'supercedes' to 'supersedes'(@luojiyin1987)
- Add prompt cache key support for Venice provider(@dpuyosa)
- Include noop tool in activeTools for LiteLLM proxy compatibility(@danielfrg)
TUI
- Allow remote directory specification in attach command(@gricha)
Desktop
- Add Brazilian Portuguese locale support(@ygorsimoes)
- Make 'Learn More' link functional in theme settings(@LAG-4)
- Render images in session review
- Fix Windows path handling in app tests
- Fix new session button in app
- Add translations support to app
- Delete sessions
- Close projects from hover card
- Don't auto-navigate to workspace after reset
- Expand font stacks to include macOS Nerd Font default names(@bewareoftheleopard)
- Clear session hover state on navigation(@kyashrathore)
- Correct NO_PROXY environment variable syntax in desktop application(@Brendonovich)
- Improve desktop connection reliability(@Brendonovich)
- Add terminal smoke test to app test suite
- Add file viewer smoke test
- Add model picker smoke test
- Add smoke test for @ attachment functionality
- Add slash command smoke tests to app
- Settings smoke tests
- Fix type error in codebase
- Fix TypeScript satisfies operator usage
- Fix hover card scrolling behavior
- Auto-scroll to bottom when new messages arrive
- Add scrollbar styling to session page(@alexyaroshuk)
- Add support for Norwegian translations(@Finityno)
- Snap to bottom when user submits a prompt
- Add accessibility translations to the app
- Change project path tooltip position to bottom in desktop app(@ProdigyRahul)
- Session screen accessibility improvements(@ndarilek)
- Move markdown rendering to Rust in desktop app(@nexxeln)
- Add 8px left margin to sidebar toggle on desktop
- Match terminal toggle button size with sidebar and review toggles
- Update jump to latest button with circular design and animation
- Add Arabic language support(@NourEldin-Osama)
- Always show Toggle-Review button in app(@DNGriffin)
- Open terminal pane when creating new terminal(@kearns-cu)
Core
- Mark subagent sessions as agent-initiated to exclude them from quota limits
- Add chat.headers hook and update codex and copilot plugins to use it (thanks to @ananas-viber for catching)
TUI
- Add Gruvbox theme to Web and App(@swolg)
Core
- Add session list and session fork support to ACP(@remorses)
- Fix metadata matching to use model.id instead of model.api.id to support legacy model identifiers
- Adjust textVerbosity and reasoningEffort defaults to better align with Codex CLI behavior
- Implement home directory expansion for permission patterns using `~` and `$HOME` prefixes(@Danztee)
- Add back todo list tools for OpenAI models
- Persist loaded model and mode when loading ACP sessions(@noamzbr)
- Update GitLab packages for better self-hosted instance support(@vglafirov)
- Make the models.dev domain configurable for offline environments(@bartbroere)
Desktop
- Rename favicon on web again
- Improve provider OAuth error handling in app
- Fix renaming non-git projects affecting other projects
- Tab should select suggestion in the app
- Fix type error
- Fix terminal issues and regressions
- Remove terminal button border to align with close button(@allanhvam)
- Fixed navigation issues when working with large sessions in desktop app(@dbpolito)
Core
- Adjust skill tool description to clarify available skills
- Add caching support for Claude with Bedrock custom inference profiles(@stevoland)
- Add Laravel Pint as a PHP formatter(@nunomaduro)
- Change session title prompt to respond in user's language(@spoons-and-mirrors)
- Terminal improvements including focus handling, rename functionality, error state management, and CSP compliance(@unitythemaker)
- Fix snapshot regression in core module
- Handle special characters in paths and git snapshot reading logic(@shirukai)
- Update session summary after revert to show file changes
- Add OPENCODE_DISABLE_PROJECT_CONFIG environment variable to disable project configuration(@kdcokenny)
- Add OPENCODE_DISABLE_FILETIME_CHECK flag to skip file modification time checks(@luojiyin1987)
- Ensure apply patch tool emits edited events
- Ensure synthetic user message following subtasks is only added when user manually invoked subtask
- Don't update session timestamp for metadata-only changes(@ariane-emory)
- Fix issue when switching models between providers where past reasoning/metadata would cause 400 errors
TUI
- Support responsive layout for narrow terminal screens(@vmotta8)
Desktop
- New sound effects, downmixed to mono
- Fix keybind search dialog height in app
- Add new sounds to app
- Add missing internationalization keys in app package
- Add search functionality to settings shortcuts(@ProdigyRahul)
- Add new workspace button supporting all available languages(@ProdigyRahul)
- Add aria-labels to titlebar and sidebar buttons for improved accessibility(@ndarilek)
- Fix e2e tests in app package
- Fix type error
- Breaking out of auto-scroll in the app
- Add model tooltip metadata in chooser per Figma request(@kearns-cu)
- Fix workspaces padding inconsistency(@DNGriffin)
- Properly integrate window controls on Windows desktop(@Brendonovich)
- Add Japanese language support to the app
- Add workaround for nushell in desktop application(@Brendonovich)
- Add Danish translations to the application
- Add Japanese translations to the app
- Add French translations to the app
- Add Spanish translations to the app
- Add German translations to the application
- Add Korean language translations to the application
- Don't show notification on session if active
- Add manage models icon to selector(@kearns-cu)
- Allow users to select directory text on new session(@DNGriffin)
- Fix desktop app not connecting to sidecar when proxy is configured
- Standardize desktop layout icons(@jacobabahn)
- Fix numbered list rendering in web markdown(@R44VC0RP)
- Remove portal spacer and fix terminal toggle padding in UI(@alexyaroshuk)
- Add internationalization support to the app
- Add internationalization support for prompt input component
- Initial internationalization stubbing for the app
- Don't interfere with scroll when using message navigation
- Add keyboard shortcut (Mod+,) to open settings dialog
- Improve auto-scroll user experience in app
Core
- Preserve tool input from running state for MCP tool results(@rynfar)
- Pass arguments to commands without explicit placeholders(@remorses)
- Adjust Codex prompt to discourage unnecessary questions and encourage more autonomous decision-making
- Register OAuth callback before opening browser in MCP(@msvechla)
- Support ACP audience by mapping to ignore and synthetic(@noamzbr)
- Terminal no longer hangs on exit or Ctrl+D and closes the pane properly(@ProdigyRahul)
TUI
- Prevent sidebar height from overflowing in terminal UI(@IdrisGit)
Desktop
- Refactor Select component to use settings variant for settings modal styling
- Show "View all sessions" button for active project and close hovercard on click
- Remove close delay on hover cards to prevent overlapping
- Fix review empty state font size
- Fix race condition when editing project names(@DNGriffin)
- Resolve Select children type conflict with ButtonProps
- Fix prompt agent button style
- Fix type error
- Update keyboard shortcuts panel to match general settings styling
- Add color scheme preview on hover in appearance dropdown
- Update settings panel padding and make content full width
- Set 32px spacing between main title and group title
- Add fade gradient to settings panel headers
- Reset select trigger to default state after selection
- Add extra large dialog size and use it for settings modal
- Add triggerStyle prop to Select component and apply it to font selector
- Render font options in their respective fonts
- Wrap settings row groups with styled container
- Remove border and background from settings panel headers
- Remove subheader from General settings panel
- Add keyboard icon and use it for Shortcuts settings tab
- Add sliders icon and use it for General settings tab
- Update settings tabs layout and spacing
- Increase icon letter size to 32px in edit project dialog
- Increase session messages popover open delay to 1000ms
- Fix end-to-end tests in app package
- Add Windows end-to-end tests for the app
- Change terminal.new keybind to Ctrl+Alt+T(@ProdigyRahul)
- Cleanup PTY exited event listener on component unmount(@ProdigyRahul)
- Fix duplicate session loads in app
- Add tooltips to sidebar new session and workspace buttons(@ProdigyRahul)
- Better pending states for workspace operations
- Fix session loading loop in app
- Add restart and reload menu items on macOS(@BlankParticle)
- Fix broken app functionality
- Add settings page to app
Core
- Remove filetime assertions from patch tool
- Ensure truncation handling applies to MCP servers
- Update batch tool definition to outline correct value for max tool calls(@jamesmengo)
TUI
- Add space toggle hint to tool selection prompt(@cjellick)
- Fix message history cleanup to prevent memory leaks in TUI
Desktop
- Fixed flash of home page on application start
- Fixed localStorage quota handling in app
- Persist quota limits to prevent loss on reload
- Completely disable pinch to zoom in desktop application(@Brendonovich)
- Fix message list overflow and scrolling issues(@neriousy)
- Add 8px padding to recent sessions popover
- Remove top padding from edit project dialog form
- Update session messages popover gutter to 28px
- Position session messages popover at top
- Retain session hover state when popover is open and update border radius
- Update session hover popover styling
- Update review session empty state styling
- Add ability to select project directory text in web interface(@DNGriffin)
Core
- Improve wording
- Revert tool attachment fix to prevent them being sent as user messages
- Reinstall plugins when cache module is missing(@kenryu42)
Desktop
- Remember last opened project in app
- Truncate workspace title in app
- Handle new session correctly in app
- Center dialog on page instead of session
Core
- Upgrade OpenTUI to v0.1.74 and fix tmux kitty keyboard regression
- Ensure that tool attachments aren't sent as user messages
- Use dynamic import for session event in config.ts to avoid circular dependency
- Fix broken URL in documentation(@berenar)
- Fix itemId stripping logic for GPT models
- Revert test fix for image handling
- Update GPT models prompt
- Add OAuth redirect URI configuration for MCP servers(@christso)
- Adjust websearch tool to emphasize current date and clarify it's no longer 2024
- Clarify question tool guidance in documentation(@kitlangton)
- Set OpenCode as user agent for most inference requests
- Show auth URL when browser cannot open in remote sessions(@danlapid)
- Strip item IDs in more cases
- Stop changing main model/agent from subtasks invocation(@dbpolito)
- Fix default agent selection in ACP and headless mode(@assagman)
- Add LiteLLM proxy provider option for explicit compatibility(@seilk)
Desktop
- Add ability to edit project and session titles
- Open workspace if navigating to session in workspace
- Can't expand workspaces
- Fixed scroll jumping when expanding workspaces
- Truncate the workspace name on hover
- Fix alignment of load more label
- Update panel minimum size and button maximum width
- Fix session icon and label alignment
- Fixed desktop hamburger menu shifting issue
- Center hamburger menu with project avatars
- Fix mobile menu on web
- Fix responsive menu on desktop
- Moved createMemo down to fix bug
- Updated project and sessions list width
- Fix styles for view all sessions state
- Add default icon to sessions
- Fix search bar sizing, padding, and keyboard shortcut styling
- Fixed avatar border radius and current project display
- Persist workspace order and collapsed state
- Add unified search for commands and files in app
- Add skeleton loader for sessions
- Fix project avatar border radius
SDK
- Update OpenAPI TypeScript SDK generator to version 0.90.4
- Revert SDK OpenAPI TypeScript generator update to 0.90.4
- Update @hey-api/openapi-ts to 0.90.4(@coleleavitt)
Core
- Ensure agent exists before processing title in session summary(@0x404)
- More defensive handling of project list to prevent errors
- Filter dead worktrees from git worktree list
- Load models.dev in development mode
- Ensure frontmatter can process same content as other agents
- Show toast error message when ConfigMarkdown parsing fails(@vvarp)
- Prettify retry duration display in TUI
- Handle broken symlinks gracefully in grep tool(@andrew-kramer-inno)
- Honor per-server MCP timeouts
- Upgrade OpenTUI to v0.1.73, fixing CJK word wrapping and Thai text rendering in non-tmux environments
- Add input limit for compaction(@brandon93s)
- Fix Codex ID issue
- Revert provider-level store option
- Allow provider-level store option(@cyhhao)
- Make dialog keybinds configurable(@CasualDeveloper)
TUI
- Update black plan selection with light rays effect and mobile styles(@aaroniker)
- Use native text truncation for sidebar diff paths
- Center the initially selected session in the session list(@ariane-emory)
- Restore brand integrity of TUI wordmark(@kitlangton)
Desktop
- Fix sidebar toggle on desktop
- Persist workspace branch selection across sessions
- Persist workspace order and collapsed state in sidebar
- Fix thinking animation opacity and improve design
- Fix session icon and name alignment
- Show session as busy even when it's the active session
- Stop killing opencode-cli process on dev mode restart(@dbpolito)
- Update desktop question tools(@dbpolito)
- Fix current session background color
- Remove the active state from load more button after press
- Fix new session tooltip position and add keyboard shortcut
- Remove more options tooltip
- Fix workspace name color in UI
- Hide "View all sessions" button when on active project page
- Fix avatar button states
- Reduce font size of load more button
- Fix recent sessions title color
- Fix project dropdown labels and sorting order
- Move left panel toggle button to the right
- Fix avatar background color
- Show project options on hover of row
- Increase delay on session list tooltips
- Fix tooltip gutter spacing on session items and archive buttons
- Archive icon replaces diff count on hover
- Fix hover state for recent sessions in gutter
- Fix search bar functionality in header
- Fixed layout issues in the app
- Fix stale sessions in new layout
- New app layout
- Open external links in system browser instead of webview in desktop app(@turculaurentiu91)
Core
- Add error message to prompt users to reauthenticate with Copilot
- Official Copilot plugin
- Adjust LSP wording to better encourage users to fix issues
- Fix plan path permissions
- Add check in case provider doesn't exist in models list
- Adjust GitLab logic in provider configuration
- Add AWS Web Identity Token File support for Bedrock(@bainos)
- Add Chocolatey and Scoop to OpenCode upgrade methods(@itsrainingmani)
- Remove duplicate path import in session module(@CasualDeveloper)
Core
- Fixed "load more" button behavior in desktop sidebar(@shanebishop1)
- Fix plan mode when not in git worktree
- Skip duplicate system prompt for Codex OAuth sessions(@zerone0x)
SDK
- Add missing metadata() and ask() definitions to ToolContext type(@danielmbrasil)
Core
- Do not allow agent to ask custom-less questions
- Improve prompt for explore agent
- Add plugin mocks to provider tests(@vglafirov)
- Update User-Agent string to latest Chrome version in webfetch(@AlanThiec)
- Add plan mode with enter and exit tools
- Add family to GPT 5.2 Codex in Codex plugin
- Add GitLab Duo Agentic Chat provider support(@vglafirov)
- Delete key from recordsByKey on instance disposal(@sauerdaniel)
- Close existing MCP client before reassignment to prevent resource leaks(@sauerdaniel)
- Added Ask Question tool support for desktop application(@dbpolito)
TUI
- Tweak external directory permission rendering in TUI
- Ensure external directory and Bash tool invocations render working directory details
- Fix duplicate radio button icon in MCP auth CLI interface(@dmmulroy)
Desktop
- Handle Shift+Enter before IME check to prevent stuck state in prompt input(@josephbharrison)
- Revert provider icon on select model dialog in desktop app(@dbpolito)
TUI
- Add persist-credentials: false to workflow templates to prevent credential exposure(@LeonMueller-OneAndOnly)
- Add fullscreen view to permission prompt
Desktop
- Add provider icons to desktop application(@dbpolito)
- Correct desktop health check endpoint URL to /global/health(@usvimal)
Core
- Remove the symlinkBinary function call that replaces the wrapper script
- Fix Homebrew auto-upgrade functionality
TUI
- Prevent question tool keybindings when dialog is open(@zerone0x)