chore(deps): update dependency anomalyco/opencode to v2 #472

Open
botaniker wants to merge 1 commit from renovate/anomalyco-opencode-2.x into main
Member

This PR contains the following updates:

Package Update Change OpenSSF
anomalyco/opencode major 1.18.34 → 2.2.6 OpenSSF Scorecard

⚠️ Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

anomalyco/opencode

v2.2.6

Compare Source

Highlights
  • Shared MCP Connections: Turn on pooling for an MCP server to share one connection across projects with the same setup, so you run fewer processes and start faster. (#​61185)
  • GUI Plugin Themes and New Slots: GUI plugins can now add color themes, render or add actions to code blocks, and use native settings and menu components. (#​61485, #​61533, #​61527, #​61509)
  • Mobile Composer Dock: On phones and tablets, composer actions now sit in a touch dock above the keyboard with larger buttons. (#​61773)
  • Scripted Runs in Worktrees: Run opencode run -w to start the session in a new git worktree, or --worktree=<name> to name it. (#​60712)
  • Automatically Archived Runs: Add --archived to opencode run to keep scripted and CI sessions out of your inbox and session lists. (#​61270)
Core
Improvements
  • Added opt-in MCP connection sharing through pool: true. (#​61185)
  • Added opencode run --archived, which creates the session already archived so scripted and CI runs stay out of the inbox, home, and session lists. Archived sessions are also hidden from the TUI session list and skipped by --continue. (#​61270)
  • Added opencode run --worktree (-w), which starts the session in a new git worktree. Use --worktree=<name> to choose the worktree name. It cannot be combined with --continue or --session. (#​60712)
  • Added provider- and model-specific session warming settings, including an interval: "auto" mode based on cache TTL. (#​60025, #​60969)
  • Added the websearch.use policy action and switches for enabling all feature flags with OPENCODE_FLAGS=all or experimental.all_flags. (#​61557, #​61826)
  • Added an experimental bytecode VM for Code Mode. It is off by default; turn it on with experimental.codemode_vm: true or OPENCODE_FLAGS=codemode_vm. (#​62358)
  • Added support for Microsoft Store installations of PowerShell 7 on Windows. (#​61952)
  • Added Azure Messages support for Foundry Claude models. (#​60934)
Bug fixes
  • opencode run now waits for the background shell commands, subagents, and image jobs that its prompt started, then lets the model respond to their results before it exits. While it waits, it prints waiting for N background job(s) (a background_wait event with --format json). There is no time limit: a job that never exits, such as a dev server or file watcher, keeps the run open until you press Ctrl+C or send SIGTERM, so set a timeout on CI jobs. (#​60699, #​61911)
  • Reworked noninteractive opencode run execution so arguments, cancellation, compiled WebSocket upgrades, and service shutdown complete reliably. SIGTERM now cancels the session and its background jobs and exits with code 143. (#​61911, #​61721, #​61518, #​61564)
  • Serve file reads and media from the server API as sandboxed downloads, and refuse cross-site browser navigations and requests from disallowed origins to /api/*, so a file in your project cannot run scripts on the server's origin. (#​62422)
  • Webfetch and Code Mode fetch now reject URLs that contain credentials and ignore the #fragment when matching permission rules, and Code Mode fetch checks every redirect against your webfetch rules. (#​60502, #​61701, #​62373)
  • Ask for external_directory permission before session_move leaves the current project. (#​62204)
  • Wait up to 2 seconds for MCP servers that are still connecting before a model call, so tools from servers that connect quickly reach the first prompt and opencode run. Also expand ~ in local MCP working directories, handle legacy stdio servers, and send logo_uri during dynamic registration. (#​60490, #​61496, #​61817, #​59031)
  • Time out OpenCode Console config requests after 5 seconds, so startup no longer hangs when the Console accepts the connection but never answers. (#​62404)
  • Retry provider requests while their host is unreachable and recover prematurely ended Cohere streams. (#​61880, #​61184)
  • Keep legacy custom providers whose models set only part of limit, such as only limit.context, instead of dropping the whole provider without an error. Thanks @​Tarquinen. (#​62240)
  • opencode acp now removes a session that a client creates with session/new and closes without prompting, so IDE integrations no longer leave empty sessions behind. (#​62189)
  • Prevent repeated zsh q flags from freezing shell permission scanning. Thanks @​yangguan-xue. (#​60791)
  • Allow npm upgrade install scripts again. Thanks @​renatomoselli. (#​51554)
TUI
Improvements
  • Added Scroll on send in Settings. Choose Keep (session.submit_scroll: "keep") to retain your reading position after submitting a prompt. (#​61460)
Bug fixes
  • Allow Ctrl+Z to suspend OpenCode while a form or dialog is open. (#​62118)
  • Keep focus on an open dialog when a question arrives and contain plugin dialogs that throw during rendering. (#​60365, #​62110)
  • Show an error when Ctrl+V cannot read the clipboard. Thanks @​jimmyallinai. (#​61094)
  • Prevent session titles containing newlines from crashing the TUI. Thanks @​vishalshekhar. (#​57523)
  • Improved message spacing and prevented older history from flashing while scrolling. (#​62104, #​59236)
  • Jump to the first or last message with Home, End, and Ctrl+G in subagent sessions. Thanks @​ricky9408. (#​60817)
  • Keypad Home, End, Page Up, and Page Down now navigate the transcript like the main keys in terminals that use the kitty keyboard protocol. Thanks @​argszero. (#​59770)
  • opencode mini now uses the agent colors from your config. Thanks @​ferdinandyb. (#​62067)
  • Return to the /mcp list after signing in to an MCP server, with that server still selected. Thanks @​Tarquinen. (#​62245)
  • Allow favoriting models with Ctrl+F in /models when they come from a provider declared in config or an add-on instead of a saved connection. Thanks @​Tarquinen. (#​62244)
Desktop
Improvements
  • Added a mobile composer dock for touch devices, with 44px action targets and predictable multiline input. (#​61773)
  • Added close-other-tabs and close-tabs-after actions to the tab menu. (#​61631)
  • Added unread-session grouping in Inbox and failed-run indicators on tabs. (#​61691, #​62077)
  • MCP sign-in now accepts a pasted redirect URL when automatic redirection is unavailable. (#​61706)
  • Markdown file previews now display frontmatter as a properties list. (#​60333)
  • The command palette shows a date instead of "Xd ago" for sessions 7 or more days old. Hover the time to see the full date and time. (#​62314)
  • Prompt history now keeps up to 200 prompts. Past the newest 100, only prompts without attachments are kept. (#​62313)
Bug fixes
  • Improved prompt submission and timeline behavior during loading, reconnects, retries, scrolling, compaction, and optimistic delivery. (#​62025, #​62037, #​61932, #​62151)
  • Surface loading and offline failures in review previews, file search, details, Word pages, and review diffs instead of showing empty or clean results. (#​62114, #​61862)
  • Fixed provider connection, MCP sign-in, settings, and plugin loading flows that could become stuck after failures. (#​62102, #​61917, #​61580)
  • Preserve drafts, focus, caret position, queued prompts, and selected terminal tabs across failed or concurrent transitions. (#​61579, #​61969, #​61852)
  • Restart plugins after failed update handoffs and recover the renderer, storage, event stream, and background-service connection from transient failures. (#​61649, #​61908, #​61804, #​61748)
  • Corrected V2 file labels and mention syntax. Thanks @​velmet and @​cheapredwine. (#​55677, #​60737)
  • Attach only the @mentions in a line comment that match an existing file or folder, so a comment such as Check @here no longer fails the send. Render partial diffs in the review pane when it shows all lines, instead of a blank pane. Thanks @​Tarquinen. (#​62242, #​62241)
  • Keep pasted images sendable after the clipboard tool deletes its temporary file. Thanks @​lfscqk67. (#​62057)
  • While an input method is composing text, Escape, Enter, and Tab go to the input method instead of stopping the agent or picking a suggestion. (#​62318)
  • Fixed padding in the WSL distribution picker, the position of worktree and branch labels in Home search results, and the selected ring on the Interface layout setting. Thanks @​inuyume. (#​53676, #​62317, #​62309)
SDK
Improvements
  • Added client.experimental.job.list() and its Effect equivalent for listing background shell, subagent, and image jobs, with session, descendant, kind, and status filters. (#​60698)
  • Server embedders can provide a custom fetch implementation for OpenCode HTTP, model, web, and remote MCP traffic. (#​61582)
Extensions
Improvements
  • Added CodeBlock and CodeBlockAction GUI registries for custom fenced-code rendering and actions. (#​61533)
  • GUI plugins can contribute themes through the Theme registry. (#​61485)
  • Added ctx.ui.Select, settings layout components, and menu-row components for native-looking plugin interfaces. (#​61527)
  • GUI plugin side panels can set, read, and persist their preferred width. (#​61509)
Bug fixes
  • Isolated plugin dialogs, Markdown renderers, terminal views, lazy chunks, and artifact viewers so failures do not take down their host surface. (#​62110, #​62123, #​61993)

v2.2.5

Compare Source

Highlights
  • Worktree and Shell Mode Shortcuts: Press ⌘⌥O on macOS or Ctrl+Alt+O on Windows and Linux to choose a worktree, and ⌘⌥B or Ctrl+Alt+B to choose its base branch. ⌘⇧X or Ctrl+Shift+X now toggles shell mode in the composer. (#​60713)
  • Send Quotes From the Comment Popup: Hold ⌘ or Ctrl in the quote popup to turn its checkmark into send, or press ⌘Enter or Ctrl+Enter, to send just that quote and comment while leaving the rest of the composer untouched. (#​60640)
  • Percentage Compaction Buffer: Set "compaction": { "buffer": "20%" } in opencode.json to keep a share of each model's context window free, so one setting fits models with small and large windows. Token counts still work. (#​60647)
Core
Improvements
  • compaction.buffer accepts a percentage of the model's context window, such as "20%", in addition to a token count. (#​60647)
  • When read misses because a folder is missing, the error names that folder and the nearest one that exists. (#​60688)
  • When edit can't find oldString, the error shows the file's closest lines, or says the change is already there. (#​60689)
  • Calls to a tool named bash now run as shell instead of failing, with the same permissions. A plugin tool actually named bash still takes precedence. (#​60687)
Bug fixes
  • MCP servers that send stdio messages larger than 10 MiB no longer get disconnected, and large messages are read much faster. (#​60694)
  • Idle locations no longer restart their MCP servers right after shutting down. (#​60668)
  • Compaction now caps its prompt at the model's context window when the input limit is larger. (#​60660)
  • LiteLLM context window errors now trigger compaction instead of stopping the session. (#​60692)
  • Reasoning is no longer turned into plain text when you switch models or resume an interrupted response, which caused request errors on some providers. (#​60498)
TUI
Bug fixes
  • The connect menu no longer lists MCP servers, which are managed in their own place. (#​60675)
Desktop
Improvements
  • Added keyboard shortcuts to choose a worktree and its base branch, shown in tooltips, and a shortcut to toggle shell mode. The worktree path can be selected to copy the full directory. (#​60713)
  • Hold ⌘ or Ctrl in the quote popup to send a quote and its comment directly. (#​60640)
  • Added flat input surfaces and a compact input size. (#​60598)
Bug fixes
  • The connect menu no longer lists MCP servers. (#​60675)
  • Added the missing top inset to the search field in the recently closed menu. (#​60652)

v2.2.4

Compare Source

Highlights
  • Persistent Desktop Terminals: Desktop terminals now belong to the session, survive server restarts with their scrollback, and stay synchronized with the TUI and other windows. Renamed terminals also keep their names across restarts. (#​60346)
  • Publish Interactive Artifacts: Enable "experimental": { "artifacts": true } in opencode.json to let agents publish, update, and serve HTML or static artifacts through the built-in local provider or plugin-provided storage. (#​60351)
  • Guided Claude Agent Setup: Select Claude Agent from the provider picker to copy claude auth login, install Claude Code, and verify the connection before continuing to model selection. (#​60603)
  • Choose a Base Branch Quickly: While creating a worktree, open Choose base branch with ⌘⌥. on macOS or Ctrl+Alt+. on Windows and Linux. The command is also available in the command palette and Settings › Shortcuts. (#​60579)
Core
Improvements
  • Added opt-in artifacts with artifact_create, artifact_read, artifact_update, and artifact_delete, including a built-in local static-file provider. (#​60351)
  • Made enabled schedules run under opencode serve and coordinated multiple server processes so a schedule fires only once. Schedules remain opt-in through experimental.schedules. (#​60478)
  • Raised OpenCode Go limits for DeepSeek V4.1 Flash. (#​60625)
Bug fixes
  • Allowed user, project, and remote configuration to override Console-supplied provider names, limits, variants, settings, and headers. (#​60597)
  • Kept local OpenCode service requests out of environment-configured proxies. (#​60441)
  • Replaced Claude Code’s misleading /login instruction with claude auth login. Thanks @​Tarquinen. (#​60592)
TUI
Bug fixes
  • Preserved prompt cursor styles applied by plugins when themes or unrelated prompt state change. (#​60599)
  • Added missing right padding to edit and patch diffs. (#​60614)
  • Extended the vertical session-tab activity pulse across the full tab width. (#​60338)
Desktop
Improvements
  • Moved terminals to persistent session PTYs shared with the TUI and other windows, with restored scrollback, server-side renaming, and restart persistence. (#​60346)
  • Added guided Claude Agent installation, sign-in, connection checking, and recovery from Needs sign-in. (#​60603)
  • Added Choose base branch to the command palette and shortcuts, bound to ⌘⌥. or Ctrl+Alt+.. (#​60579)
  • Simplified the session location popover and made long paths easier to read. (#​60492)
Bug fixes
  • Kept terminal tab clicks and rename fields attached to the intended tab. (#​60645)
  • Listed matching commands before sessions in command-palette search. (#​60616)
  • Restored copying user messages from an open actions menu. (#​60576)
  • Reduced repeated work and allocations while streaming Markdown, especially in long sessions. (#​60549, #​60562, #​60577)
SDK
Improvements
  • Added client.experimental.artifacts.providers, list, create, get, update, delete, and view. (#​60351)
  • Extended client.experimental.persistentPty.update to rename terminals or clear a user title, and exposed userTitle plus persistent-pty.updated events. (#​60329)
Extensions
Improvements
  • Added ctx.experimental.artifact.transform(...) to Effect and Promise plugins for registering artifact providers, capabilities, prompts, and the default provider. (#​60351)

v2.2.3

Compare Source

Highlights
  • Use Claude Code in OpenCode: Install Claude Code, run claude auth login, then select Claude Agent in /connect to use your Claude Code login and models. (#​58782)
  • Faster Long Sessions in Desktop: Streaming replies and long conversations now do much less rendering work. (#​60489, #​60521, #​60513, #​60481)
  • Desktop Stability Fixes: Fixes side-panel tabs, repeated "Session not found" toasts, and Open file over HTTP. (#​60430, #​60436, #​60459, #​60462)
Breaking changes
TUI plugins require OpenTUI 0.8

@opencode/plugin now requires @opentui/core and @opentui/solid 0.8.0 or later. In OpenTUI 0.8, a ScrollBox's wrapper, viewport, content, and scrollbars are facade objects instead of renderables, and a custom RenderContext must implement clock and onAnimationTick. See the OpenTUI 0.8.0 release notes. (#​60385)

Managed policy: integration.use covers integrations only

integration.use now controls which integration accounts can be used, and the new mcp.use, skill.use, and plugin.use actions control MCP servers, skills, and plugins. Rules with the old mcp:, skill:, and plugin: resource prefixes are converted automatically, but a bare integration.use rule no longer applies to MCP servers, skills, or plugins. (#​60315)

Core
Improvements
  • Added the built-in Claude Agent provider. Install Claude Code, run claude auth login, and select Claude Agent in /connect; OPENCODE_CLAUDE_PATH can override the Claude executable. Thanks @​Tarquinen. (#​58782)
  • Added Code Mode JavaScript checks to experimental schedules, including statically authorized tool calls, persistent state, and custom wake messages. (#​60140)
  • Added separate managed-policy actions for connecting to integrations and using integrations, MCP servers, skills, and plugins. (#​60315)
Bug fixes
  • Preserved plugin-provided model variants and delayed dynamic provider fallback until external SDK hooks have run. (#​60097, #​60380)
  • Preserved permission reasons and feedback in MCP failures, and made Code Mode failures match direct tool-call failures. (#​60102, #​60109)
  • Fixed invalid Code Mode schedule checks so creation fails immediately and existing invalid checks pause without repeated execution. (#​60349)
  • Removed a session’s persistent terminals when the session is deleted. (#​60322)
  • Kept nested tool progress from replacing the parent execute call rows. (#​60480)
TUI
Improvements
  • Added lazy loading for stored image references when experimental.media_blob is enabled. Images are downloaded only for previews, while undo, revert, fork, and prompt recall restore referenced attachments safely. (#​60116)
  • Added a distinct marker for the selected composer suggestion in the new designs. (#​60393)
Bug fixes
  • Fixed PHP syntax highlighting for code blocks without an opening <?php tag. (#​60359)
  • Preserved # in file-search paths unless it introduces a valid line range. (#​60336)
  • Kept the configured default cursor style after config reloads. (#​60302)
  • Matched the search cursor to the highlighted row when a selection dialog has no query. (#​60310)
Desktop
Improvements
  • Added a Desktop spellcheck toggle under Settings → General and system-language dictionary selection on Windows and Linux. (#​59129)
  • Added PageUp and PageDown timeline paging from the composer without moving the draft cursor or focus. (#​59426)
  • Added independently configurable question notifications and sounds under Settings → Notifications → Questions. Thanks @​YuriNek0. (#​60358)
  • Added separate project and worktree actions to the new-session control. (#​60486)
  • Added one-click version copying in Settings → About. (#​52356)
  • Grouped added projects in workspace settings. (#​60221)
  • Made question-answer text selectable. (#​60372)
  • Adapted the session header to narrow timeline widths. (#​59512)
Bug fixes
  • Side-panel tabs close again and New tab launchers respond to clicks, fixing a 2.2.2 regression. (#​60430, #​60436)
  • Open file in the side panel works again in the web app over HTTP. (#​60462)
  • Kept question options and submit controls reachable on mobile. (#​60335)
  • Preserved simultaneous request notifications and inbox scroll position when opening sessions. (#​60378, #​60356)
  • Fixed consecutive dropped files so every file mention is inserted into the composer. (#​60463)
  • Kept the current @ and command-menu selection stable while results update under a stationary pointer. (#​59434, #​60368)
  • Fixed ⌘W side-panel closing and focus restoration when no closable tabs remain. (#​59002, #​60435)
  • Kept the mobile session drawer open while a session loads. (#​59427)
  • Restored maximized windows on their saved display and retained renderer permissions across shared-session windows. (#​60482, #​60458)
  • Fixed timeline growth, zoom-end scrolling, highlighting, and DOM-observer performance issues in long sessions. (#​60489, #​60481, #​60488, #​60513, #​60521)
  • Kept models with unknown release dates visible. Thanks @​joe-ieta. (#​60496)
  • Fixed reasoning-capability detection for models that expose reasoning through variants or compatibility metadata. (#​60457)
  • Evicted deleted sessions after a 404 instead of retrying or showing repeated errors. (#​60459)
  • Fixed the macOS application icon and added the required folder-access description to the app bundle. (#​60020, #​60503)
SDK
Improvements
  • Preserved partial LLMResponse output on AIError.partial when generation, object generation, or a tool loop fails. (#​60477)
  • Unified Effect and Promise tool declarations around tool(...), with optional output schemas and executable or declaration-only tools. (#​60407)
  • Added typed OpenRouter debug, models, plugins, provider, and user options to the Responses route. (#​60044)
  • Added withMediaRefs, mediaHashFromUri, and MediaRequestOptions to the Promise client for experimental stored-media references. (#​60116)
Bug fixes
  • Matched the Promise AI client more closely to the Effect API and accepted typed tools in loops. (#​60465, #​60390)
  • Kept tools whose execute handler can throw available to the AI client. (#​60431)
  • Continued polling queued media generations when providers return unknown intermediate statuses. (#​59988)
  • Stopped sending an incompatible filename alongside file_url on OpenAI Responses requests. (#​60382)
Extensions
Improvements
  • Added persistent-terminal renaming to the process daemon, including capability discovery and user titles that override shell-provided titles until cleared. (#​60324)
Bug fixes

v2.2.2

Compare Source

Highlights
  • Image Generation by Default: When a connected provider supports image models, agents can now use experimental_image_generate without additional configuration. Set its preferred model through experimental.image_generate.model. (#​60258)
  • Faster Worktree Selection: On the new-session screen, click the current Git branch to open that project’s “Run session in” worktree picker directly. (#​60263)
  • Unified Quotes and Annotations: Timeline quotes, terminal quotes, and browser annotations now share a compact optional-comment editor, while source highlights remain attached to local drafts. (#​60164)
Core
Improvements
  • Enabled experimental_image_generate by default when an image-capable provider is connected. (#​60258)
  • Recorded the start time of each session’s latest execution.
Bug fixes
  • Rejected persistent terminal requests whose working directory no longer exists.
  • Preserved media when sessions are forked or imported.
  • Associated image-generation notices with the correct background job.
TUI
Bug fixes
  • Preserved captured attachments and their original source paths. Thanks @​OpeOginni. (#​60222)
  • Prevented middle-truncated paths from overflowing at very narrow terminal widths.
  • Improved Go usage-limit messages with the reset time and account page link.
  • Correctly typed and displayed Go and ChatGPT usage-limit errors.
Desktop
Improvements
  • Made the Git branch on the new-session screen open the current project’s worktree picker directly. (#​60263)
  • Unified timeline quotes, terminal quotes, and browser annotations around one optional-comment workflow. (#​60164)
  • Restored classic question cards by default and added Settings → Experimental → New question UI for the redesigned keyboard-oriented dock. (#​59723)
  • Added a side-panel tab menu and kept close buttons visible when tabs overflow.
  • Moved user-message actions into a compact menu.
  • Redesigned the active todo pill to show the current task and concurrent work more clearly.
  • Added consistent styling for searchable dialogs and composer pills.
Bug fixes
  • Stopped queued prompts from dropping frames as their content grows.
  • Counted queued quotes and browser annotations as attachments.
  • Reported failures to persist composer attachments through the normal error UI.
  • Made Markdown fragment links scroll to the referenced heading.
  • Kept each tab’s timeline state when switching directories.
  • Ordered the inbox’s Working shelf by execution start time.
  • Fixed side-panel launchers and automatic closing when the final tab is removed.
  • Focused the matching navigation arrow while reviewing changes.
  • Preserved pending model labels only when a queued prompt actually changes models.
  • Added reset details, an account link, and a composer tray for Go usage limits.
SDK
Improvements
  • Added if and until inputs for client.experimental.schedule.create, plus schedule check results and output fields. (#​60137)
  • Exposed SessionInfo.time.busy for the latest execution’s start time.
  • Added optional source metadata to prompt file attachments.
Extensions
Improvements
  • Added optional title and subtitle fields to composer notes, source-relative quote positioning, and focus options for composer integrations. (#​60164)
Bug fixes
  • Corrected visible flowchart edges connected through Merman subgraphs.

v2.2.1

Compare Source

Highlights
  • Keep Working Toward a Goal: Run /goal <objective> in the TUI or Desktop to let the session continue until a reviewer confirms the objective is met. Use /goal pause, /goal resume, or /goal clear to control it. (#​59437)
  • Generate Images: Enable experimental.image_generate to let agents create or edit images with the new image_generate tool. You can optionally set its default model with experimental.image_generate.model. (#​59939, #​60096)
  • Inspect Background Shells: Click a running shell in the Desktop activity pill to see its live output and stop it without leaving the menu. (#​59496)
  • New Default Model Picker: Search favorites, recent models, providers, and variants from the redesigned model picker, which is now the default in Desktop. (#​59997)
Breaking changes
@opencode/ai provider removals and renames

These changes affect code that imports @opencode/ai directly. They don't change the CLI, Desktop, or the HTTP API.

  • The fal, Black Forest Labs, Replicate, and Stability providers are removed, along with their ./providers/fal, ./providers/black-forest-labs, ./providers/replicate, and ./providers/stability entry points. (#​59977)
  • Five legacy entry points are removed. Import the nested paths instead, which 2.2.0 already exports: ./providers/amazon-bedrock-mantle → ./providers/amazon-bedrock/mantle, and ./providers/google-vertex-chat, -interactions, -mistral, and -responses → ./providers/google-vertex/chat, /interactions, /mistral, and /responses. (#​59506)
  • Each provider's configure() input type is now named Config, for example Groq.LanguageModelOptions → Groq.Config, and model() settings are optional when every setting is optional. (#​59765)
Core
Improvements
  • Add /goal <objective> with pause, resume, and clear controls, plus automatic progress review until the objective is met. (#​59437)
  • Add opt-in scheduled prompts through /schedule, agent tools, and experimental.schedules. (#​59401, #​59457)
  • Add the opt-in image_generate tool for background image creation and editing, with automatic or configured model selection. (#​59939, #​60096)
  • Offer GPT Image 2 after Codex sign-in and add MiniMax and Meta Muse image generation support. (#​60085, #​59929, #​60081)
  • Add Responses API support for OpenRouter, DigitalOcean, and Venice, including freeform tools. (#​59991, #​59963)
  • Improve snapshot performance by coalescing captures and avoiding repeated ignore-file work. (#​59419)
Bug fixes
  • Preserve more context headroom when fitting tool output into the context window. (#​59934)
  • Retry provider throttling correctly instead of reporting it as context overflow. (#​59649)
  • Send image-edit references and image sizes in the formats expected by OpenRouter, Google, and Vercel Grok. (#​60067, #​59927)
  • Keep credential metadata and prompt-cache settings out of model settings and variants. (#​60057, #​59500)
  • Keep Git snapshots working in repositories that use a split index. (#​59417)
  • Expose Console web search only when the workspace enables it. (#​59592)
  • Improve Code Mode diagnostics for parse errors, stalled awaits, and promise-like search results. (#​59834, #​59749, #​59981)
TUI
Improvements
  • Show /goal status below the prompt and provide a dialog for pausing, resuming, or clearing it. (#​59437)
Bug fixes
  • Show execution failures that occur before the first model step. (#​60079)
  • Keep the activity spinner visible while a continued subagent runs. (#​59950)
  • Send pasted image and PDF paths correctly when connected to a local server. (#​59833)
  • Improve spacing in an empty /usage dialog. Thanks @​Tarquinen. (#​59918)
Desktop
Improvements
  • Add /reload to reload configuration without restarting. (#​59887)
  • Make the redesigned searchable model picker the default, with dedicated Favorites and Recent sections and keyboard-accessible provider controls. (#​59997)
  • Show live output and a Stop action when you select a background shell from the activity pill. (#​59496)
  • Show /goal state and actions in a composer pill. (#​59437)
  • Redesign the integrations dialog and always include OpenCode free models in the model picker. (#​59976, #​60047)
  • Add project, worktree, open-in-app, and terminal actions to the session location menu. (#​59607)
  • Refine project and worktree selection, command search, prompt-history focus, composer model labels, and artifact preview controls. (#​59397, #​59604, #​59626, #​59735, #​59657)
  • Highlight quoted timeline content while you write its first comment. (#​59286)
  • Keep draft attachment bytes local when using experimental media URIs. (#​59104)
Bug fixes
  • Follow each plugin server’s configured endpoint when connecting to its event stream. (#​60087)
  • Treat the reachable scroll boundary as the end when Desktop zoom is active. (#​60034)
  • Prevent shell text from showing through copy buttons and avoid restyling the transcript when closing a side panel. (#​59901, #​59878)
  • Keep rendering malformed tool metadata instead of crashing the timeline. (#​59736)
  • Make dropdowns open immediately and keep the new-session location shortcut working after tooltip interactions. (#​59268, #​59680)
  • Remove edge halos from macOS application icons. (#​59900)
SDK
Improvements
  • Add client.experimental.schedule.{create,list,get,pause,resume,delete} for managing scheduled prompts. (#​59457)
  • Group experimental generated-client methods under client.experimental; previous locations remain as deprecated aliases until the next minor release. (#​59072)
  • Expose compaction through the Promise AI client. (#​59987)
  • Add freeform tool support and Responses routes for OpenRouter, DigitalOcean, and Venice. (#​59963, #​59991)
Extensions
Improvements
  • Add the experimental experimental.idle Session hook so plugins can continue work before a session goes idle. (#​59437)
  • Let Code Mode extension globals return Effects and declare required services. (#​59948)
  • Add custom composer-pill popovers for GUI plugins. (#​59437)

v2.2.0

Compare Source

Highlights
  • Create, install and share Desktop plugins (experimental) (#​55246, #​59469, #​59489)
  • Refreshed the desktop app experience (#​56898, #​58865, #​55838, #​57962)
  • Add experimental image and decision generation APIs to plugins and sdk, allowing image generation or decision model (think typesafe, clef, etc) workflows. (#​59190, #​59380, #​58758)
  • Plugins can now attach and update keyed session instructions with ctx.session.instructions.entry.put/list/remove. Instead of editing the system prompt and busting the prompt cache, each change is added as a small update at the next step. The entries also survive compaction and reverts, and they don't start an extra model turn. (#​56550)
  • Restored the Todo tool in desktop via opt-in (#​59092)
  • Add configurable prompt cache TTLs per provider/model (#​59157)
Breaking changes
@opencode/ai root is now the Promise API

@opencode/ai now works like @opencode/sdk and @opencode/client: the package root exports the Promise API, and the Effect API moved to @opencode/ai/effect. @opencode/ai/promise is removed, and the wildcard subpath export is replaced with an explicit list of provider and protocol entry points. (#​58847, #​59183)

-import { AI } from "@opencode/ai/promise"
-import { LLM } from "@opencode/ai"
+import { AI } from "@opencode/ai"
+import { LLM } from "@opencode/ai/effect"
The OpenCode GitHub Action is removed

The OpenCode GitHub Action is no longer published. Remove it from your workflows. (#​59032)

TUI plugins require OpenTUI 0.7

@opencode/plugin now requires @opentui/core and @opentui/solid 0.7.0, up from 0.6.8 or later. Plugins that depend on OpenTUI 0.6 fail to install until they upgrade. In OpenTUI 0.7, custom renderables read their hooks from their class at construction: assign renderBefore, renderAfter, and onLifecyclePass in the constructor instead of as class fields, call refreshHooks() after adding a hook by reflection, and replace defineNativeIntegration() with a static nativeIntegration declaration. See the OpenTUI 0.7.0 release notes. (#​59295)

Core
Improvements
  • Add experimental image and decision generation API endpoints. (#​59190)
  • Add image and decision entrypoints for catalog providers. (#​59380)
  • Improve integration rebuild performance. (#​59402)
  • Let custom model configuration set a model type. (#​59388)
  • Let model-list API requests filter by type. (#​59355)
  • Make external-directory permission checks use the project's filesystem. (#​59089)
  • Reduce memory use when code search finds very large lines. (#​59205)
  • Let plugins filter event subscriptions by type. (#​58864)
  • Add configurable prompt-cache TTLs. (#​59157)
  • Move image resizing off the main process and release idle image memory. (#​58820)
  • Reduce repeated session-history loading during a step. (#​59091)
  • Add an experimental API for session media and opt-in media URI support. (#​59103)
  • Add the machine hostname to /api/info. (#​59090)
  • Add experimental content-addressed blob storage for session media behind experimental.media_blob. (#​58656, #​58741)
  • Start session history from the latest completed compaction. (#​59020)
  • Reduce work encoding durable event payloads that are not persisted. (#​58923)
  • Expose MCP server titles from serverInfo. (#​58950)
  • Apply OpenCode Console workspace configuration as a configuration layer. (#​57703)
  • Replace experimental evaluations with Decision APIs in the AI pkg, including OpenAI Decisions, System One, and Cloudflare Run models. (#​58758, #​58382, #​58379, #​58381)
  • Convert tool schemas once to speed up tool execution. (#​58798, #​58848)
  • Make Git project discovery faster while recognizing repository changes. (#​58616)
  • Show OpenCode Console budget limits and Go usage where they block you. (#​58694, #​58714)
  • Record provider-reported session costs. (#​58562)
  • Find Git more reliably on macOS. (#​58602)
  • Resolve model details once per prompt step. (#​58601)
  • Let plugins manage session instruction entries for subsequent model requests. (#​56550)
  • Add GPT-6.1 Terra and GPT-6.1 Terra Fast to Sign in with ChatGPT. (#​59359)
Bug fixes
  • Wait for plugins to finish reloading before each session step and tool call. Thanks @​kernel-oops and @​Tarquinen. (#​51133)
  • Size session compaction from the provider's reported token count to preserve usable context. (#​59441)
  • Skip unavailable models.dev API entrypoints instead of failing model catalog updates. (#​59475)
  • Return a server error with a reference ID when the server cannot encode a response. (#​59459)
  • Avoid warming a session while its model request is running. (#​59325)
  • Preserve legacy MCP codemode settings during migration. Thanks @​tneemo. (#​59126)
  • Use the correct Vertex AI endpoints for the eu and us multi-regions. (#​59335)
  • Accept Databricks hosts that include http:// or https://. (#​59334)
  • Keep files intact when patch edits move a file onto itself. (#​59197)
  • Preserve literal $0 and $ARGUMENTS text in custom command input. (#​59198)
  • Close project locations concurrently during shutdown. (#​59326)
  • Treat equivalent directory paths, including trailing slashes, as one location. (#​59327)
  • Send valid tool schemas to Kimi for tuple, default, and keyword-like arguments. (#​59207)
  • Expose Code Mode MCP tools directly when the execute permission is denied. (#​59315)
  • Coordinate OAuth credential refreshes across locations and processes. (#​54023)
  • List and search remote Git branches correctly without bare remote names. (#​58597)
  • Detect AVIF, HEIC/HEIF, QuickTime, and M4A attachments correctly. (#​58480, #​58886, #​58887)
  • Reduce memory retained by long-running tool calls and unchanged hooked model requests. (#​58448, #​58449)
  • Load session diffs without reading every message, improving performance for large sessions. (#​57686)
  • Keep active locations alive when session events use an equivalent directory path. (#​56259)
  • Reload compatibility skills only when their own sources change. (#​59086)
  • Avoid publishing redundant catalog updates when configuration is unchanged. (#​56267)
  • Avoid booting idle or deleted project locations while polling session forms. (#​59083)
  • Wait for plugins before returning agent and provider lists, preventing incomplete catalogs. (#​59082)
  • Manage sessions and instruction entries after their project directory is deleted. (#​58997)
  • Start fuzzy file search only on first use, reducing project startup work. (#​58959)
  • Exit after 10 seconds when shutdown hangs and report pending work. (#​58817)
  • Keep the models catalog fresh without redownloading it when unchanged. (#​58813)
  • Send xAI Responses top_k settings and stop sending unsupported penalties. (#​58868)
  • Honor shared parallel tool-call and service-tier settings for Groq. (#​58871)
  • Retry throttled requests instead of misreporting them as context overflows. (#​58866)
  • Preserve streamed text and reasoning that arrive after an OpenAI Chat finish reason. (#​58851)
  • Classify AWS REST JSON errors consistently regardless of where the error type appears. (#​58770)
  • Validate large base64 attachments without slowdowns or hangs. (#​58811)
  • Retry Bedrock throttling errors as rate limits instead of context overflows. Thanks @​Irish-Joseph. (#​58759)
  • Keep working MCP tools available when a server returns malformed ones. (#​58350)
  • Match absolute instruction-file globs across directories. Thanks @​heimoshuiyu. (#​58749)
  • Use configured provider regions in Bedrock endpoint URLs. (#​58538)
  • Handle unknown OpenAI Chat finish reasons without failing the response. (#​58608)
  • Avoid unnecessary Azure model updates when endpoint transforms make no change. (#​58600)
  • Prefer JPEG for opaque browser screenshots, reducing attachment size. (#​56990)
  • Detect generated image types from their bytes when compatible hosts omit the format. (#​58475)
  • Keep project services alive while sessions run long tools or wait for input, with a 24-hour inactivity cap. (#​57274)
  • Prevent unrelated configuration changes and compatibility-skill update bursts from repeatedly reloading skills. (#​56260)
TUI
Improvements
  • Reduce CPU use while animated session-tab pulses are visible. (#​59235)
  • List OpenCode Console before OpenCode Go in the integration picker. (#​59107)
  • Add /usage, model-picker, prompt, sidebar, warning, and error details for OpenCode Console usage limits. (#​58731)
  • Make CLI service registration more reliable when concurrent processes update its files. (#​59105)
Bug fixes
  • Return opencode run --format json server connection errors as JSON. Thanks @​andreivince. (#​59366)
  • Preserve pasted prompt text when copying it back out. (#​59209)
  • Reliably update the background service on Windows when its files are briefly locked. (#​59105)
  • Keep the background service state directory out of tool shells and identify processes blocking its port. (#​58815)
  • Refresh Git branch details after switching branches. (#​58982)
  • Keep the TUI running when a plugin slot or route renders bare text. Thanks @​anmol0b and @​Tarquinen. (#​58144)
  • Accept --server and --standalone anywhere in supported CLI commands. (#​58505)
  • Release closed and background session transcripts to prevent memory growth. (#​58434, #​57025)
  • Connect remote access tunnels through HTTP proxies. (#​58464)
  • Keep development builds on a separate server, database, and port from released builds. (#​58331)
Desktop
Improvements
  • Manage desktop plugins from Settings › Extensions › Plugins. (#​59489)
  • Add a persistent desktop zoom setting. (#​59277)
  • Capture heap snapshots in desktop debug builds on SIGUSR2 when explicitly enabled. (#​58317)
  • Show the open session title in the browser tab. (#​59131)
  • Show todowrite tasks above the composer. (#​59092)
  • Load session history once when returning to a session tab. (#​59166)
  • Answer questions with number keys and show multi-select choices as checkboxes. (#​58595)
  • Add an always-available Add project action to the location picker. (#​57962)
  • Let you rewind or fork from any message. (#​58865)
  • Let you edit line comments and copy shell output. (#​58970, #​58974)
  • Render Mermaid diagrams in messages much faster, sized to fit the column. (#​57483, #​57004)
  • Add opt-in memory logging and remote debugging for desktop debug builds. (#​58315)
  • Show web sources for a turn behind the experimental Sources setting. (#​58307)
  • Jump from a completed shell notification to its shell output. (#​58663)
  • Keep the composer usable while the voice-call panel floats. (#​58587)
  • Use the Soft Radar activity spinner by default and provide experimental variations. (#​58010, #​57903)
  • Add an experimental new model picker. (#​58413)
  • Add experimental Console voice calls in Desktop beta. (#​58249)
  • Add a timeline width setting. (#​58308)
  • Improve command, session, and model search lists with sticky sections. (#​58222)
  • Add search to recently closed sessions. (#​55721)
  • Open extension configuration and skills in side tabs. (#​58023)
  • Open session extension lists on hover and follow keyboard navigation. (#​58021)
  • Add video previews with zoom controls. (#​57924)
  • Add generated project avatars and an experimental avatar-style switcher. (#​57871, #​57930)
  • Add recently closed side tabs to the new-tab view. (#​57863)
  • Add a searchable prompt history picker. (#​57716)
  • Find settings from the command palette. (#​57651)
  • Group queued and steered messages, and group consecutive user messages under one metadata line. (#​57561, #​57552)
  • Improve file-tree and folder-picker performance. (#​57573, #​57557)
  • Keep branch search results visible while new results load. (#​57531)
  • Add a session-details menu to the session header. (#​57528)
  • Show a subagent's model, status, and elapsed time in its composer area. (#​57473)
  • Let you delete sessions from tab menus and rename the current session with Ctrl+R. (#​57453, #​57423)
  • Restore session summary and project menu actions. (#​57781)
  • Let you place the background-activity capsule at the left, center, right, or hide it. (#​57962)
  • Show project and worktree details in the session header and location menu. (#​57962)
  • Add text-rendering controls to the debug bar. (#​57326)
  • Show elapsed time for background work. (#​57218)
  • Improve streamed Markdown rendering reliability and performance. (#​57016)
  • Split the side pane and add a draggable bottom pane with tabs. (#​56960)
  • Add consistent MCP sign-in and error-status links across connection, session, and Settings views. (#​57962)
  • Open multiple file tabs at once and open side-panel content in tabs. (#​57182, #​57094)
  • Move running work to the background when you steer a session. (#​57142)
  • Let the timeline scroll beneath the composer while keeping its content visible. (#​57141)
  • Simplify Settings into a flat list with a per-server switcher. (#​57962)
  • Quote selected timeline or terminal text into the composer. (#​55664, #​58420)
  • Search sessions across online servers from the title bar. (#​57962)
  • Add a Reduce motion appearance setting. (#​57103)
  • Show projects from all servers in the new-session location picker. (#​57962)
  • Pick models from a searchable dialog with favorites and recent models. (#​55838)
  • Attach the new-session location picker below the composer. (#​56952)
  • Open image previews directly from message and composer thumbnails. (#​56896)
  • Start new worktrees from the current branch in the simplified location picker. (#​57962)
  • Manage running subagents and shells from the composer activity capsule. (#​57962)
  • Sync projects from each server and prioritize projects you use on Home. (#​57962)
  • Choose between Focus and Pro interface layouts in Settings. (#​56898)
  • Open terminals as side-panel tabs. (#​57962)
  • Choose a project and worktree from one new-session location dialog. (#​57962)
  • Show subagents as separate timeline rows by default. (#​57962)
  • Add a sidebar toggle for vertical tabs. (#​55646)
  • Add ⌘1–9 and ⇧⌘[ / ⇧⌘] shortcuts for side-panel tabs. (#​57301)
  • Let you choose a new directory or worktree when a session location is unavailable. (#​56087)
  • Refresh the Manage models, MCP, and fork dialogs with compact searchable lists. (#​56029, #​56028)
  • Install future Windows desktop updates in about a second. (#​55933)
  • Show individual Code Mode tool calls in Execute rows. (#​55649)
  • Add a Commentary timeline category and display setting. (#​55248)
  • Support @ links to other sessions in messages. (#​57480)
  • Polish spacing, alignment, borders, and typography across the session header, titlebar, composer, file tree, browser pane, timeline, and Settings. (#​58195, #​57776, #​57570, #​57782, #​57336, #​57363, #​58100, #​58979)
Bug fixes
  • Prevent duplicate tab shortcuts and remove uninstalled plugin commands from Shortcuts. (#​59499)
  • Keep todo items from shrinking in the todo panel. (#​59430)
  • Keep question-dock answers and controls positioned correctly when changing questions. (#​59383)
  • Keep the @​ menu open while it searches. (#​59425)
  • Finish quitting after Cmd+Q on macOS. Thanks @​anmol0b. (#​59144)
  • Toggle MCP servers for the current session location from Settings. (#​59132)
  • Deliver steering messages when an earlier move was missed. (#​58984)
  • Keep session and command-palette search results stable while searching. (#​58908, #​57479)
  • Restrict Search projects to the project list. (#​58978)
  • Let custom Close tab shortcuts close terminal and browser tabs. (#​58945)
  • Prevent live status rows from jumping or leaving gaps above the composer. (#​58691, #​58697)
  • Keep browser tabs still behind open dialogs. (#​58958)
  • Keep side-panel content and browser pages visible while the sidebar or panel moves. (#​58202, #​58185)
  • Render session diffs reliably.
  • Keep keyboard focus in terminals, side panels, dialogs, and the composer when appropriate. (#​57980, #​57297, #​56273)
  • Preserve empty browser and side-panel tabs instead of closing them automatically. (#​58440)
  • Reduce desktop memory use by releasing closed transcripts, discarded tool-result images, retained UI batches, and aborted timeline work. (#​57025, #​58434, #​58427, #​58560, #​58447, #​58439, #​58432)
  • Restore horizontal scrolling and sticky change badges in the file tree. (#​58117)
  • Show live Thinking for reasoning-only turns. (#​58299)
  • Stop loading older history after completing the initially visible turn and prioritize the first transcript page. (#​57700, #​57741)
  • Keep Home project and session lists reliable during refreshes.
  • Keep deleted sessions from reappearing on Home. (#​55349)
  • Find sessions immediately in @​ mentions, including multi-word titles. (#​57683)
  • Keep queued messages editable while changes sync with the server. (#​57569)
  • Open image and video URLs in the browser pane. (#​57562)
  • Mark submitted generated forms as complete and send each response only once. (#​57537)
  • Improve file-view performance with reused views, virtualized medium files, and cached diffs. (#​57551)
  • Group untracked folders into one expandable review row. (#​57527)
  • Let you paste into the composer from the session view. (#​57545)
  • Recover failed beta background servers and preserve their required CLI versions. (#​57321)
  • Restore branch selection when starting a new worktree session. (#​57962)
  • Keep the running server available while beta updates install. (#​57309)
  • Make links in user messages, shell output, and Code Mode output clickable. (#​57211, #​57303)
  • Make Check for Updates always report its result. (#​57296)
  • Reopen the last closed side-panel tab with ⇧⌘T and open a browser tab with ⌘T. (#​57269, #​57156)
  • Keep OpenCode keyboard shortcuts working in the browser pane. (#​56697, #​55240)
  • Preview image attachments supplied by file path. (#​57249)
  • Apply configured code and UI fonts consistently. (#​57242)
  • Keep activity and busy indicators steady while switching sessions. (#​57196)
  • Reserve ⇧⌘W for closing the window so ⌘W does not. (#​57150)
  • Make image preview transitions resize smoothly without clipping or blocking clicks. (#​56997, #​57324)
  • Keep in-session search reliable alongside titlebar session search. (#​57962)
  • Return focus to the prompt after keyboard model selection.
  • Open searchable pickers at the top with search focused. (#​57962)
  • Keep tables visible beneath sticky headers. (#​57050)
  • Fit provider connection steps without shifting a dialog's top edge. (#​57006)
  • Give unavailable-server panels clear error styling. (#​57003)
  • Make mouse-wheel and keyboard scrolling respond immediately on Linux. (#​57962)
  • Keep long Execute tool code contained and show successful Code Mode output. (#​56915)
  • Focus the most useful control when dialogs open, including Cancel in delete confirmations. (#​57453)
  • Install Windows beta, stable, and nightly builds into separate directories. (#​56904)
  • Keep session tabs recoverable when their server becomes unreachable. (#​56248)
  • Keep the composer model's provider and session-model resolution consistent with the TUI. (#​56225)
  • Reread open files without resetting their scroll position. (#​55899)
  • Hide agent names when agents are disabled. (#​57525)
  • Polish sidebar, panel, composer, activity, question-dock, loading, and motion behavior across light and dark themes. (#​57449, #​58013, #​58577, #​57944, #​58052, #​58494, #​58073, #​58114)
  • Polish hover states, cursors, tooltips, focus rings, scrollbars, and transitions across desktop controls. (#​57653, #​57787, #​57304, #​58971, #​57221, #​57192, #​58575, #​58580)
SDK
Improvements
  • Add GUI plugin APIs for toasts, dialogs, notifications, tabs, composer controls, and custom UI. (#​59469)
Bug fixes
  • Fix generated Promise client input types for TypeScript consumers. (#​58875)
  • Let SDK clients discard inline tool-result file payloads to reduce memory use. (#​59101)
  • Avoid unnecessary catalog refreshes for locations an SDK client has not loaded. (#​55237, #​59099)
  • Restore running sessions created while an SDK client was disconnected. (#​53012)
  • Release omitted tool-image payloads from memory instead of retaining their base64 data. (#​58560)

v1.19.5

Compare Source

Core
Bugfixes
  • Failed TUI worker requests now return an error instead of leaving the caller hanging. (@​Nowaker)

Thank you to 1 community contributor:

v1.19.4

Compare Source

Core
Improvements
  • Upgraded the bundled Bun runtime to 1.4.4, which includes security fixes for Brotli, TLS, HTTP/1.1, HTTP/2, HTTP/3, WebSocket, and fetch, and updates root certificates to NSS 3.131.1.

v1.19.3

Compare Source

Core
Improvements
  • Configure model reasoning options to generate reasoning variants, replacing catalog variants while preserving your configured variant overrides.

v1.19.2

Compare Source

Core
Bugfixes
  • OpenCode 1 now stays on the 1.x release line: update checks use only the npm opencode-ai latest version, so 1.x installs are never offered a 2.x build as a regular update.
  • Upgrading to OpenCode 2 remains a separate, explicit choice through the 2.0 offer in /update or opencode upgrade --major.
  • Fix upgrades for installs managed by yarn.
  • Skip 1.x updates for Homebrew Core installs, which now track OpenCode 2, and check tap and Chocolatey availability before offering an update.
  • The install script refuses to install 2.x versions.

v1.19.1

Compare Source

Core
Bugfixes
  • Session sharing has been discontinued. Existing share links and session-sharing commands are no longer available, and importing sessions from share URLs is unsupported.

v1.19.0

Compare Source

Core
Improvements
  • Run opencode upgrade --major to upgrade to OpenCode 2.
Bugfixes
  • Allow the OpenAI ultrafast service tier.
  • Validate PTY connection origins and tickets before checking whether a PTY exists.
TUI
Improvements
  • Use /update to install OpenCode updates or upgrade to OpenCode 2; updates are no longer installed automatically.

Thank you to 1 community contributor:

  • @​dc85:
    • docs(web): add Exo Free to Zen docs (#​53622)
    • fix(stats): attribute exo usage to an unknown provider (#​53621)
    • docs(web): remove Fledge Alpha Free from Zen docs (#​53984)

v1.18.35

Compare Source

Core
Improvements
  • Added canonical redirects and JSON and Markdown data formats for agent-readable stats.
Bugfixes
  • xAI tool results now include supported images, while unsupported image formats are skipped. (@​Jaaneek)

Thank you to 3 community contributors:


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot. The local configuration can be found in the SI Renovate Bot repository.

This PR contains the following updates: | Package | Update | Change | OpenSSF | |---|---|---|---| | [anomalyco/opencode](https://github.com/anomalyco/opencode) | major | `1.18.34` → `2.2.6` | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/anomalyco/opencode/badge)](https://securityscorecards.dev/viewer/?uri=github.com/anomalyco/opencode) | --- > ⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/30) for more information. --- ### Release Notes <details> <summary>anomalyco/opencode</summary> ### [`v2.2.6`](https://github.com/anomalyco/opencode/releases/tag/v2.2.6) [Compare Source](https://github.com/anomalyco/opencode/compare/v2.2.5...v2.2.6) ##### Highlights - **Shared MCP Connections**: Turn on pooling for an MCP server to share one connection across projects with the same setup, so you run fewer processes and start faster. ([#&#8203;61185](https://github.com/anomalyco/opencode/pull/61185)) - **GUI Plugin Themes and New Slots**: GUI plugins can now add color themes, render or add actions to code blocks, and use native settings and menu components. ([#&#8203;61485](https://github.com/anomalyco/opencode/pull/61485), [#&#8203;61533](https://github.com/anomalyco/opencode/pull/61533), [#&#8203;61527](https://github.com/anomalyco/opencode/pull/61527), [#&#8203;61509](https://github.com/anomalyco/opencode/pull/61509)) - **Mobile Composer Dock**: On phones and tablets, composer actions now sit in a touch dock above the keyboard with larger buttons. ([#&#8203;61773](https://github.com/anomalyco/opencode/pull/61773)) - **Scripted Runs in Worktrees**: Run `opencode run -w` to start the session in a new git worktree, or `--worktree=<name>` to name it. ([#&#8203;60712](https://github.com/anomalyco/opencode/pull/60712)) - **Automatically Archived Runs**: Add `--archived` to `opencode run` to keep scripted and CI sessions out of your inbox and session lists. ([#&#8203;61270](https://github.com/anomalyco/opencode/pull/61270)) ##### Core ##### Improvements - Added opt-in MCP connection sharing through `pool: true`. ([#&#8203;61185](https://github.com/anomalyco/opencode/pull/61185)) - Added `opencode run --archived`, which creates the session already archived so scripted and CI runs stay out of the inbox, home, and session lists. Archived sessions are also hidden from the TUI session list and skipped by `--continue`. ([#&#8203;61270](https://github.com/anomalyco/opencode/pull/61270)) - Added `opencode run --worktree` (`-w`), which starts the session in a new git worktree. Use `--worktree=<name>` to choose the worktree name. It cannot be combined with `--continue` or `--session`. ([#&#8203;60712](https://github.com/anomalyco/opencode/pull/60712)) - Added provider- and model-specific session warming settings, including an `interval: "auto"` mode based on cache TTL. ([#&#8203;60025](https://github.com/anomalyco/opencode/pull/60025), [#&#8203;60969](https://github.com/anomalyco/opencode/pull/60969)) - Added the `websearch.use` policy action and switches for enabling all feature flags with `OPENCODE_FLAGS=all` or `experimental.all_flags`. ([#&#8203;61557](https://github.com/anomalyco/opencode/pull/61557), [#&#8203;61826](https://github.com/anomalyco/opencode/pull/61826)) - Added an experimental bytecode VM for Code Mode. It is off by default; turn it on with `experimental.codemode_vm: true` or `OPENCODE_FLAGS=codemode_vm`. ([#&#8203;62358](https://github.com/anomalyco/opencode/pull/62358)) - Added support for Microsoft Store installations of PowerShell 7 on Windows. ([#&#8203;61952](https://github.com/anomalyco/opencode/pull/61952)) - Added Azure Messages support for Foundry Claude models. ([#&#8203;60934](https://github.com/anomalyco/opencode/pull/60934)) ##### Bug fixes - `opencode run` now waits for the background shell commands, subagents, and image jobs that its prompt started, then lets the model respond to their results before it exits. While it waits, it prints `waiting for N background job(s)` (a `background_wait` event with `--format json`). There is no time limit: a job that never exits, such as a dev server or file watcher, keeps the run open until you press Ctrl+C or send SIGTERM, so set a timeout on CI jobs. ([#&#8203;60699](https://github.com/anomalyco/opencode/pull/60699), [#&#8203;61911](https://github.com/anomalyco/opencode/pull/61911)) - Reworked noninteractive `opencode run` execution so arguments, cancellation, compiled WebSocket upgrades, and service shutdown complete reliably. SIGTERM now cancels the session and its background jobs and exits with code 143. ([#&#8203;61911](https://github.com/anomalyco/opencode/pull/61911), [#&#8203;61721](https://github.com/anomalyco/opencode/pull/61721), [#&#8203;61518](https://github.com/anomalyco/opencode/pull/61518), [#&#8203;61564](https://github.com/anomalyco/opencode/pull/61564)) - Serve file reads and media from the server API as sandboxed downloads, and refuse cross-site browser navigations and requests from disallowed origins to `/api/*`, so a file in your project cannot run scripts on the server's origin. ([#&#8203;62422](https://github.com/anomalyco/opencode/pull/62422)) - Webfetch and Code Mode `fetch` now reject URLs that contain credentials and ignore the `#fragment` when matching permission rules, and Code Mode `fetch` checks every redirect against your webfetch rules. ([#&#8203;60502](https://github.com/anomalyco/opencode/pull/60502), [#&#8203;61701](https://github.com/anomalyco/opencode/pull/61701), [#&#8203;62373](https://github.com/anomalyco/opencode/pull/62373)) - Ask for `external_directory` permission before `session_move` leaves the current project. ([#&#8203;62204](https://github.com/anomalyco/opencode/pull/62204)) - Wait up to 2 seconds for MCP servers that are still connecting before a model call, so tools from servers that connect quickly reach the first prompt and `opencode run`. Also expand `~` in local MCP working directories, handle legacy stdio servers, and send `logo_uri` during dynamic registration. ([#&#8203;60490](https://github.com/anomalyco/opencode/pull/60490), [#&#8203;61496](https://github.com/anomalyco/opencode/pull/61496), [#&#8203;61817](https://github.com/anomalyco/opencode/pull/61817), [#&#8203;59031](https://github.com/anomalyco/opencode/pull/59031)) - Time out OpenCode Console config requests after 5 seconds, so startup no longer hangs when the Console accepts the connection but never answers. ([#&#8203;62404](https://github.com/anomalyco/opencode/pull/62404)) - Retry provider requests while their host is unreachable and recover prematurely ended Cohere streams. ([#&#8203;61880](https://github.com/anomalyco/opencode/pull/61880), [#&#8203;61184](https://github.com/anomalyco/opencode/pull/61184)) - Keep legacy custom providers whose models set only part of `limit`, such as only `limit.context`, instead of dropping the whole provider without an error. Thanks [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;62240](https://github.com/anomalyco/opencode/pull/62240)) - `opencode acp` now removes a session that a client creates with `session/new` and closes without prompting, so IDE integrations no longer leave empty sessions behind. ([#&#8203;62189](https://github.com/anomalyco/opencode/pull/62189)) - Prevent repeated zsh `q` flags from freezing shell permission scanning. Thanks [@&#8203;yangguan-xue](https://github.com/yangguan-xue). ([#&#8203;60791](https://github.com/anomalyco/opencode/pull/60791)) - Allow npm upgrade install scripts again. Thanks [@&#8203;renatomoselli](https://github.com/renatomoselli). ([#&#8203;51554](https://github.com/anomalyco/opencode/pull/51554)) ##### TUI ##### Improvements - Added **Scroll on send** in Settings. Choose **Keep** (`session.submit_scroll: "keep"`) to retain your reading position after submitting a prompt. ([#&#8203;61460](https://github.com/anomalyco/opencode/pull/61460)) ##### Bug fixes - Allow Ctrl+Z to suspend OpenCode while a form or dialog is open. ([#&#8203;62118](https://github.com/anomalyco/opencode/pull/62118)) - Keep focus on an open dialog when a question arrives and contain plugin dialogs that throw during rendering. ([#&#8203;60365](https://github.com/anomalyco/opencode/pull/60365), [#&#8203;62110](https://github.com/anomalyco/opencode/pull/62110)) - Show an error when Ctrl+V cannot read the clipboard. Thanks [@&#8203;jimmyallinai](https://github.com/jimmyallinai). ([#&#8203;61094](https://github.com/anomalyco/opencode/pull/61094)) - Prevent session titles containing newlines from crashing the TUI. Thanks [@&#8203;vishalshekhar](https://github.com/vishalshekhar). ([#&#8203;57523](https://github.com/anomalyco/opencode/pull/57523)) - Improved message spacing and prevented older history from flashing while scrolling. ([#&#8203;62104](https://github.com/anomalyco/opencode/pull/62104), [#&#8203;59236](https://github.com/anomalyco/opencode/pull/59236)) - Jump to the first or last message with Home, End, and Ctrl+G in subagent sessions. Thanks [@&#8203;ricky9408](https://github.com/ricky9408). ([#&#8203;60817](https://github.com/anomalyco/opencode/pull/60817)) - Keypad Home, End, Page Up, and Page Down now navigate the transcript like the main keys in terminals that use the kitty keyboard protocol. Thanks [@&#8203;argszero](https://github.com/argszero). ([#&#8203;59770](https://github.com/anomalyco/opencode/pull/59770)) - `opencode mini` now uses the agent colors from your config. Thanks [@&#8203;ferdinandyb](https://github.com/ferdinandyb). ([#&#8203;62067](https://github.com/anomalyco/opencode/pull/62067)) - Return to the `/mcp` list after signing in to an MCP server, with that server still selected. Thanks [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;62245](https://github.com/anomalyco/opencode/pull/62245)) - Allow favoriting models with Ctrl+F in `/models` when they come from a provider declared in config or an add-on instead of a saved connection. Thanks [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;62244](https://github.com/anomalyco/opencode/pull/62244)) ##### Desktop ##### Improvements - Added a mobile composer dock for touch devices, with 44px action targets and predictable multiline input. ([#&#8203;61773](https://github.com/anomalyco/opencode/pull/61773)) - Added close-other-tabs and close-tabs-after actions to the tab menu. ([#&#8203;61631](https://github.com/anomalyco/opencode/pull/61631)) - Added unread-session grouping in Inbox and failed-run indicators on tabs. ([#&#8203;61691](https://github.com/anomalyco/opencode/pull/61691), [#&#8203;62077](https://github.com/anomalyco/opencode/pull/62077)) - MCP sign-in now accepts a pasted redirect URL when automatic redirection is unavailable. ([#&#8203;61706](https://github.com/anomalyco/opencode/pull/61706)) - Markdown file previews now display frontmatter as a properties list. ([#&#8203;60333](https://github.com/anomalyco/opencode/pull/60333)) - The command palette shows a date instead of "Xd ago" for sessions 7 or more days old. Hover the time to see the full date and time. ([#&#8203;62314](https://github.com/anomalyco/opencode/pull/62314)) - Prompt history now keeps up to 200 prompts. Past the newest 100, only prompts without attachments are kept. ([#&#8203;62313](https://github.com/anomalyco/opencode/pull/62313)) ##### Bug fixes - Improved prompt submission and timeline behavior during loading, reconnects, retries, scrolling, compaction, and optimistic delivery. ([#&#8203;62025](https://github.com/anomalyco/opencode/pull/62025), [#&#8203;62037](https://github.com/anomalyco/opencode/pull/62037), [#&#8203;61932](https://github.com/anomalyco/opencode/pull/61932), [#&#8203;62151](https://github.com/anomalyco/opencode/pull/62151)) - Surface loading and offline failures in review previews, file search, details, Word pages, and review diffs instead of showing empty or clean results. ([#&#8203;62114](https://github.com/anomalyco/opencode/pull/62114), [#&#8203;61862](https://github.com/anomalyco/opencode/pull/61862)) - Fixed provider connection, MCP sign-in, settings, and plugin loading flows that could become stuck after failures. ([#&#8203;62102](https://github.com/anomalyco/opencode/pull/62102), [#&#8203;61917](https://github.com/anomalyco/opencode/pull/61917), [#&#8203;61580](https://github.com/anomalyco/opencode/pull/61580)) - Preserve drafts, focus, caret position, queued prompts, and selected terminal tabs across failed or concurrent transitions. ([#&#8203;61579](https://github.com/anomalyco/opencode/pull/61579), [#&#8203;61969](https://github.com/anomalyco/opencode/pull/61969), [#&#8203;61852](https://github.com/anomalyco/opencode/pull/61852)) - Restart plugins after failed update handoffs and recover the renderer, storage, event stream, and background-service connection from transient failures. ([#&#8203;61649](https://github.com/anomalyco/opencode/pull/61649), [#&#8203;61908](https://github.com/anomalyco/opencode/pull/61908), [#&#8203;61804](https://github.com/anomalyco/opencode/pull/61804), [#&#8203;61748](https://github.com/anomalyco/opencode/pull/61748)) - Corrected V2 file labels and mention syntax. Thanks [@&#8203;velmet](https://github.com/velmet) and [@&#8203;cheapredwine](https://github.com/cheapredwine). ([#&#8203;55677](https://github.com/anomalyco/opencode/pull/55677), [#&#8203;60737](https://github.com/anomalyco/opencode/pull/60737)) - Attach only the `@mentions` in a line comment that match an existing file or folder, so a comment such as `Check @here` no longer fails the send. Render partial diffs in the review pane when it shows all lines, instead of a blank pane. Thanks [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;62242](https://github.com/anomalyco/opencode/pull/62242), [#&#8203;62241](https://github.com/anomalyco/opencode/pull/62241)) - Keep pasted images sendable after the clipboard tool deletes its temporary file. Thanks [@&#8203;lfscqk67](https://github.com/lfscqk67). ([#&#8203;62057](https://github.com/anomalyco/opencode/pull/62057)) - While an input method is composing text, Escape, Enter, and Tab go to the input method instead of stopping the agent or picking a suggestion. ([#&#8203;62318](https://github.com/anomalyco/opencode/pull/62318)) - Fixed padding in the WSL distribution picker, the position of worktree and branch labels in Home search results, and the selected ring on the Interface layout setting. Thanks [@&#8203;inuyume](https://github.com/inuyume). ([#&#8203;53676](https://github.com/anomalyco/opencode/pull/53676), [#&#8203;62317](https://github.com/anomalyco/opencode/pull/62317), [#&#8203;62309](https://github.com/anomalyco/opencode/pull/62309)) ##### SDK ##### Improvements - Added `client.experimental.job.list()` and its Effect equivalent for listing background shell, subagent, and image jobs, with session, descendant, kind, and status filters. ([#&#8203;60698](https://github.com/anomalyco/opencode/pull/60698)) - Server embedders can provide a custom `fetch` implementation for OpenCode HTTP, model, web, and remote MCP traffic. ([#&#8203;61582](https://github.com/anomalyco/opencode/pull/61582)) ##### Extensions ##### Improvements - Added `CodeBlock` and `CodeBlockAction` GUI registries for custom fenced-code rendering and actions. ([#&#8203;61533](https://github.com/anomalyco/opencode/pull/61533)) - GUI plugins can contribute themes through the `Theme` registry. ([#&#8203;61485](https://github.com/anomalyco/opencode/pull/61485)) - Added `ctx.ui.Select`, settings layout components, and menu-row components for native-looking plugin interfaces. ([#&#8203;61527](https://github.com/anomalyco/opencode/pull/61527)) - GUI plugin side panels can set, read, and persist their preferred width. ([#&#8203;61509](https://github.com/anomalyco/opencode/pull/61509)) ##### Bug fixes - Isolated plugin dialogs, Markdown renderers, terminal views, lazy chunks, and artifact viewers so failures do not take down their host surface. ([#&#8203;62110](https://github.com/anomalyco/opencode/pull/62110), [#&#8203;62123](https://github.com/anomalyco/opencode/pull/62123), [#&#8203;61993](https://github.com/anomalyco/opencode/pull/61993)) ### [`v2.2.5`](https://github.com/anomalyco/opencode/blob/HEAD/CHANGELOG.md#v225--2026-10-30) [Compare Source](https://github.com/anomalyco/opencode/compare/v2.2.4...v2.2.5) ##### Highlights - **Worktree and Shell Mode Shortcuts**: Press `⌘⌥O` on macOS or `Ctrl+Alt+O` on Windows and Linux to choose a worktree, and `⌘⌥B` or `Ctrl+Alt+B` to choose its base branch. `⌘⇧X` or `Ctrl+Shift+X` now toggles shell mode in the composer. ([#&#8203;60713](https://github.com/anomalyco/opencode/pull/60713)) - **Send Quotes From the Comment Popup**: Hold `⌘` or `Ctrl` in the quote popup to turn its checkmark into send, or press `⌘Enter` or `Ctrl+Enter`, to send just that quote and comment while leaving the rest of the composer untouched. ([#&#8203;60640](https://github.com/anomalyco/opencode/pull/60640)) - **Percentage Compaction Buffer**: Set `"compaction": { "buffer": "20%" }` in `opencode.json` to keep a share of each model's context window free, so one setting fits models with small and large windows. Token counts still work. ([#&#8203;60647](https://github.com/anomalyco/opencode/pull/60647)) ##### Core ##### Improvements - `compaction.buffer` accepts a percentage of the model's context window, such as `"20%"`, in addition to a token count. ([#&#8203;60647](https://github.com/anomalyco/opencode/pull/60647)) - When `read` misses because a folder is missing, the error names that folder and the nearest one that exists. ([#&#8203;60688](https://github.com/anomalyco/opencode/pull/60688)) - When `edit` can't find `oldString`, the error shows the file's closest lines, or says the change is already there. ([#&#8203;60689](https://github.com/anomalyco/opencode/pull/60689)) - Calls to a tool named `bash` now run as `shell` instead of failing, with the same permissions. A plugin tool actually named `bash` still takes precedence. ([#&#8203;60687](https://github.com/anomalyco/opencode/pull/60687)) ##### Bug fixes - MCP servers that send stdio messages larger than 10 MiB no longer get disconnected, and large messages are read much faster. ([#&#8203;60694](https://github.com/anomalyco/opencode/pull/60694)) - Idle locations no longer restart their MCP servers right after shutting down. ([#&#8203;60668](https://github.com/anomalyco/opencode/pull/60668)) - Compaction now caps its prompt at the model's context window when the input limit is larger. ([#&#8203;60660](https://github.com/anomalyco/opencode/pull/60660)) - LiteLLM context window errors now trigger compaction instead of stopping the session. ([#&#8203;60692](https://github.com/anomalyco/opencode/pull/60692)) - Reasoning is no longer turned into plain text when you switch models or resume an interrupted response, which caused request errors on some providers. ([#&#8203;60498](https://github.com/anomalyco/opencode/pull/60498)) ##### TUI ##### Bug fixes - The connect menu no longer lists MCP servers, which are managed in their own place. ([#&#8203;60675](https://github.com/anomalyco/opencode/pull/60675)) ##### Desktop ##### Improvements - Added keyboard shortcuts to choose a worktree and its base branch, shown in tooltips, and a shortcut to toggle shell mode. The worktree path can be selected to copy the full directory. ([#&#8203;60713](https://github.com/anomalyco/opencode/pull/60713)) - Hold `⌘` or `Ctrl` in the quote popup to send a quote and its comment directly. ([#&#8203;60640](https://github.com/anomalyco/opencode/pull/60640)) - Added flat input surfaces and a compact input size. ([#&#8203;60598](https://github.com/anomalyco/opencode/pull/60598)) ##### Bug fixes - The connect menu no longer lists MCP servers. ([#&#8203;60675](https://github.com/anomalyco/opencode/pull/60675)) - Added the missing top inset to the search field in the recently closed menu. ([#&#8203;60652](https://github.com/anomalyco/opencode/pull/60652)) ### [`v2.2.4`](https://github.com/anomalyco/opencode/blob/HEAD/CHANGELOG.md#v224--2026-10-30) [Compare Source](https://github.com/anomalyco/opencode/compare/v2.2.3...v2.2.4) ##### Highlights - **Persistent Desktop Terminals**: Desktop terminals now belong to the session, survive server restarts with their scrollback, and stay synchronized with the TUI and other windows. Renamed terminals also keep their names across restarts. ([#&#8203;60346](https://github.com/anomalyco/opencode/pull/60346)) - **Publish Interactive Artifacts**: Enable `"experimental": { "artifacts": true }` in `opencode.json` to let agents publish, update, and serve HTML or static artifacts through the built-in local provider or plugin-provided storage. ([#&#8203;60351](https://github.com/anomalyco/opencode/pull/60351)) - **Guided Claude Agent Setup**: Select **Claude Agent** from the provider picker to copy `claude auth login`, install Claude Code, and verify the connection before continuing to model selection. ([#&#8203;60603](https://github.com/anomalyco/opencode/pull/60603)) - **Choose a Base Branch Quickly**: While creating a worktree, open **Choose base branch** with `⌘⌥.` on macOS or `Ctrl+Alt+.` on Windows and Linux. The command is also available in the command palette and Settings › Shortcuts. ([#&#8203;60579](https://github.com/anomalyco/opencode/pull/60579)) ##### Core ##### Improvements - Added opt-in artifacts with `artifact_create`, `artifact_read`, `artifact_update`, and `artifact_delete`, including a built-in local static-file provider. ([#&#8203;60351](https://github.com/anomalyco/opencode/pull/60351)) - Made enabled schedules run under `opencode serve` and coordinated multiple server processes so a schedule fires only once. Schedules remain opt-in through `experimental.schedules`. ([#&#8203;60478](https://github.com/anomalyco/opencode/pull/60478)) - Raised OpenCode Go limits for DeepSeek V4.1 Flash. ([#&#8203;60625](https://github.com/anomalyco/opencode/pull/60625)) ##### Bug fixes - Allowed user, project, and remote configuration to override Console-supplied provider names, limits, variants, settings, and headers. ([#&#8203;60597](https://github.com/anomalyco/opencode/issues/60597)) - Kept local OpenCode service requests out of environment-configured proxies. ([#&#8203;60441](https://github.com/anomalyco/opencode/pull/60441)) - Replaced Claude Code’s misleading `/login` instruction with `claude auth login`. Thanks [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;60592](https://github.com/anomalyco/opencode/pull/60592)) ##### TUI ##### Bug fixes - Preserved prompt cursor styles applied by plugins when themes or unrelated prompt state change. ([#&#8203;60599](https://github.com/anomalyco/opencode/pull/60599)) - Added missing right padding to edit and patch diffs. ([#&#8203;60614](https://github.com/anomalyco/opencode/pull/60614)) - Extended the vertical session-tab activity pulse across the full tab width. ([#&#8203;60338](https://github.com/anomalyco/opencode/pull/60338)) ##### Desktop ##### Improvements - Moved terminals to persistent session PTYs shared with the TUI and other windows, with restored scrollback, server-side renaming, and restart persistence. ([#&#8203;60346](https://github.com/anomalyco/opencode/pull/60346)) - Added guided Claude Agent installation, sign-in, connection checking, and recovery from **Needs sign-in**. ([#&#8203;60603](https://github.com/anomalyco/opencode/pull/60603)) - Added **Choose base branch** to the command palette and shortcuts, bound to `⌘⌥.` or `Ctrl+Alt+.`. ([#&#8203;60579](https://github.com/anomalyco/opencode/pull/60579)) - Simplified the session location popover and made long paths easier to read. ([#&#8203;60492](https://github.com/anomalyco/opencode/pull/60492)) ##### Bug fixes - Kept terminal tab clicks and rename fields attached to the intended tab. ([#&#8203;60645](https://github.com/anomalyco/opencode/pull/60645)) - Listed matching commands before sessions in command-palette search. ([#&#8203;60616](https://github.com/anomalyco/opencode/pull/60616)) - Restored copying user messages from an open actions menu. ([#&#8203;60576](https://github.com/anomalyco/opencode/pull/60576)) - Reduced repeated work and allocations while streaming Markdown, especially in long sessions. ([#&#8203;60549](https://github.com/anomalyco/opencode/pull/60549), [#&#8203;60562](https://github.com/anomalyco/opencode/pull/60562), [#&#8203;60577](https://github.com/anomalyco/opencode/pull/60577)) ##### SDK ##### Improvements - Added `client.experimental.artifacts.providers`, `list`, `create`, `get`, `update`, `delete`, and `view`. ([#&#8203;60351](https://github.com/anomalyco/opencode/pull/60351)) - Extended `client.experimental.persistentPty.update` to rename terminals or clear a user title, and exposed `userTitle` plus `persistent-pty.updated` events. ([#&#8203;60329](https://github.com/anomalyco/opencode/pull/60329)) ##### Extensions ##### Improvements - Added `ctx.experimental.artifact.transform(...)` to Effect and Promise plugins for registering artifact providers, capabilities, prompts, and the default provider. ([#&#8203;60351](https://github.com/anomalyco/opencode/pull/60351)) ### [`v2.2.3`](https://github.com/anomalyco/opencode/blob/HEAD/CHANGELOG.md#v223--2026-10-30) [Compare Source](https://github.com/anomalyco/opencode/compare/v2.2.2...v2.2.3) ##### Highlights - **Use Claude Code in OpenCode**: Install Claude Code, run `claude auth login`, then select **Claude Agent** in `/connect` to use your Claude Code login and models. ([#&#8203;58782](https://github.com/anomalyco/opencode/pull/58782)) - **Faster Long Sessions in Desktop**: Streaming replies and long conversations now do much less rendering work. ([#&#8203;60489](https://github.com/anomalyco/opencode/pull/60489), [#&#8203;60521](https://github.com/anomalyco/opencode/pull/60521), [#&#8203;60513](https://github.com/anomalyco/opencode/pull/60513), [#&#8203;60481](https://github.com/anomalyco/opencode/pull/60481)) - **Desktop Stability Fixes**: Fixes side-panel tabs, repeated "Session not found" toasts, and **Open file** over HTTP. ([#&#8203;60430](https://github.com/anomalyco/opencode/pull/60430), [#&#8203;60436](https://github.com/anomalyco/opencode/pull/60436), [#&#8203;60459](https://github.com/anomalyco/opencode/pull/60459), [#&#8203;60462](https://github.com/anomalyco/opencode/pull/60462)) ##### Breaking changes ##### TUI plugins require OpenTUI 0.8 `@opencode/plugin` now requires `@opentui/core` and `@opentui/solid` 0.8.0 or later. In OpenTUI 0.8, a ScrollBox's `wrapper`, `viewport`, `content`, and scrollbars are facade objects instead of renderables, and a custom `RenderContext` must implement `clock` and `onAnimationTick`. See the [OpenTUI 0.8.0 release notes](https://opentui.com/docs/releases/0.8.0). ([#&#8203;60385](https://github.com/anomalyco/opencode/pull/60385)) ##### Managed policy: `integration.use` covers integrations only `integration.use` now controls which integration accounts can be used, and the new `mcp.use`, `skill.use`, and `plugin.use` actions control MCP servers, skills, and plugins. Rules with the old `mcp:`, `skill:`, and `plugin:` resource prefixes are converted automatically, but a bare `integration.use` rule no longer applies to MCP servers, skills, or plugins. ([#&#8203;60315](https://github.com/anomalyco/opencode/pull/60315)) ##### Core ##### Improvements - Added the built-in **Claude Agent** provider. Install Claude Code, run `claude auth login`, and select **Claude Agent** in `/connect`; `OPENCODE_CLAUDE_PATH` can override the Claude executable. Thanks [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;58782](https://github.com/anomalyco/opencode/pull/58782)) - Added Code Mode JavaScript checks to experimental schedules, including statically authorized tool calls, persistent state, and custom wake messages. ([#&#8203;60140](https://github.com/anomalyco/opencode/pull/60140)) - Added separate managed-policy actions for connecting to integrations and using integrations, MCP servers, skills, and plugins. ([#&#8203;60315](https://github.com/anomalyco/opencode/pull/60315)) ##### Bug fixes - Preserved plugin-provided model variants and delayed dynamic provider fallback until external SDK hooks have run. ([#&#8203;60097](https://github.com/anomalyco/opencode/pull/60097), [#&#8203;60380](https://github.com/anomalyco/opencode/pull/60380)) - Preserved permission reasons and feedback in MCP failures, and made Code Mode failures match direct tool-call failures. ([#&#8203;60102](https://github.com/anomalyco/opencode/pull/60102), [#&#8203;60109](https://github.com/anomalyco/opencode/pull/60109)) - Fixed invalid Code Mode schedule checks so creation fails immediately and existing invalid checks pause without repeated execution. ([#&#8203;60349](https://github.com/anomalyco/opencode/pull/60349)) - Removed a session’s persistent terminals when the session is deleted. ([#&#8203;60322](https://github.com/anomalyco/opencode/pull/60322)) - Kept nested tool progress from replacing the parent `execute` call rows. ([#&#8203;60480](https://github.com/anomalyco/opencode/pull/60480)) ##### TUI ##### Improvements - Added lazy loading for stored image references when `experimental.media_blob` is enabled. Images are downloaded only for previews, while undo, revert, fork, and prompt recall restore referenced attachments safely. ([#&#8203;60116](https://github.com/anomalyco/opencode/pull/60116)) - Added a distinct marker for the selected composer suggestion in the new designs. ([#&#8203;60393](https://github.com/anomalyco/opencode/pull/60393)) ##### Bug fixes - Fixed PHP syntax highlighting for code blocks without an opening `<?php` tag. ([#&#8203;60359](https://github.com/anomalyco/opencode/pull/60359)) - Preserved `#` in file-search paths unless it introduces a valid line range. ([#&#8203;60336](https://github.com/anomalyco/opencode/pull/60336)) - Kept the configured default cursor style after config reloads. ([#&#8203;60302](https://github.com/anomalyco/opencode/pull/60302)) - Matched the search cursor to the highlighted row when a selection dialog has no query. ([#&#8203;60310](https://github.com/anomalyco/opencode/pull/60310)) ##### Desktop ##### Improvements - Added a Desktop spellcheck toggle under **Settings → General** and system-language dictionary selection on Windows and Linux. ([#&#8203;59129](https://github.com/anomalyco/opencode/pull/59129)) - Added `PageUp` and `PageDown` timeline paging from the composer without moving the draft cursor or focus. ([#&#8203;59426](https://github.com/anomalyco/opencode/pull/59426)) - Added independently configurable question notifications and sounds under **Settings → Notifications → Questions**. Thanks [@&#8203;YuriNek0](https://github.com/YuriNek0). ([#&#8203;60358](https://github.com/anomalyco/opencode/pull/60358)) - Added separate project and worktree actions to the new-session control. ([#&#8203;60486](https://github.com/anomalyco/opencode/pull/60486)) - Added one-click version copying in **Settings → About**. ([#&#8203;52356](https://github.com/anomalyco/opencode/pull/52356)) - Grouped added projects in workspace settings. ([#&#8203;60221](https://github.com/anomalyco/opencode/pull/60221)) - Made question-answer text selectable. ([#&#8203;60372](https://github.com/anomalyco/opencode/pull/60372)) - Adapted the session header to narrow timeline widths. ([#&#8203;59512](https://github.com/anomalyco/opencode/pull/59512)) ##### Bug fixes - Side-panel tabs close again and New tab launchers respond to clicks, fixing a 2.2.2 regression. ([#&#8203;60430](https://github.com/anomalyco/opencode/pull/60430), [#&#8203;60436](https://github.com/anomalyco/opencode/pull/60436)) - **Open file** in the side panel works again in the web app over HTTP. ([#&#8203;60462](https://github.com/anomalyco/opencode/pull/60462)) - Kept question options and submit controls reachable on mobile. ([#&#8203;60335](https://github.com/anomalyco/opencode/pull/60335)) - Preserved simultaneous request notifications and inbox scroll position when opening sessions. ([#&#8203;60378](https://github.com/anomalyco/opencode/pull/60378), [#&#8203;60356](https://github.com/anomalyco/opencode/pull/60356)) - Fixed consecutive dropped files so every file mention is inserted into the composer. ([#&#8203;60463](https://github.com/anomalyco/opencode/pull/60463)) - Kept the current `@` and command-menu selection stable while results update under a stationary pointer. ([#&#8203;59434](https://github.com/anomalyco/opencode/pull/59434), [#&#8203;60368](https://github.com/anomalyco/opencode/pull/60368)) - Fixed `⌘W` side-panel closing and focus restoration when no closable tabs remain. ([#&#8203;59002](https://github.com/anomalyco/opencode/pull/59002), [#&#8203;60435](https://github.com/anomalyco/opencode/pull/60435)) - Kept the mobile session drawer open while a session loads. ([#&#8203;59427](https://github.com/anomalyco/opencode/pull/59427)) - Restored maximized windows on their saved display and retained renderer permissions across shared-session windows. ([#&#8203;60482](https://github.com/anomalyco/opencode/pull/60482), [#&#8203;60458](https://github.com/anomalyco/opencode/pull/60458)) - Fixed timeline growth, zoom-end scrolling, highlighting, and DOM-observer performance issues in long sessions. ([#&#8203;60489](https://github.com/anomalyco/opencode/pull/60489), [#&#8203;60481](https://github.com/anomalyco/opencode/pull/60481), [#&#8203;60488](https://github.com/anomalyco/opencode/pull/60488), [#&#8203;60513](https://github.com/anomalyco/opencode/pull/60513), [#&#8203;60521](https://github.com/anomalyco/opencode/pull/60521)) - Kept models with unknown release dates visible. Thanks [@&#8203;joe-ieta](https://github.com/joe-ieta). ([#&#8203;60496](https://github.com/anomalyco/opencode/pull/60496)) - Fixed reasoning-capability detection for models that expose reasoning through variants or compatibility metadata. ([#&#8203;60457](https://github.com/anomalyco/opencode/pull/60457)) - Evicted deleted sessions after a `404` instead of retrying or showing repeated errors. ([#&#8203;60459](https://github.com/anomalyco/opencode/pull/60459)) - Fixed the macOS application icon and added the required folder-access description to the app bundle. ([#&#8203;60020](https://github.com/anomalyco/opencode/pull/60020), [#&#8203;60503](https://github.com/anomalyco/opencode/pull/60503)) ##### SDK ##### Improvements - Preserved partial `LLMResponse` output on `AIError.partial` when generation, object generation, or a tool loop fails. ([#&#8203;60477](https://github.com/anomalyco/opencode/pull/60477)) - Unified Effect and Promise tool declarations around `tool(...)`, with optional output schemas and executable or declaration-only tools. ([#&#8203;60407](https://github.com/anomalyco/opencode/pull/60407)) - Added typed OpenRouter `debug`, `models`, `plugins`, `provider`, and `user` options to the Responses route. ([#&#8203;60044](https://github.com/anomalyco/opencode/pull/60044)) - Added `withMediaRefs`, `mediaHashFromUri`, and `MediaRequestOptions` to the Promise client for experimental stored-media references. ([#&#8203;60116](https://github.com/anomalyco/opencode/pull/60116)) ##### Bug fixes - Matched the Promise AI client more closely to the Effect API and accepted typed tools in loops. ([#&#8203;60465](https://github.com/anomalyco/opencode/pull/60465), [#&#8203;60390](https://github.com/anomalyco/opencode/pull/60390)) - Kept tools whose `execute` handler can throw available to the AI client. ([#&#8203;60431](https://github.com/anomalyco/opencode/pull/60431)) - Continued polling queued media generations when providers return unknown intermediate statuses. ([#&#8203;59988](https://github.com/anomalyco/opencode/pull/59988)) - Stopped sending an incompatible `filename` alongside `file_url` on OpenAI Responses requests. ([#&#8203;60382](https://github.com/anomalyco/opencode/pull/60382)) ##### Extensions ##### Improvements - Added persistent-terminal renaming to the process daemon, including capability discovery and user titles that override shell-provided titles until cleared. ([#&#8203;60324](https://github.com/anomalyco/opencode/pull/60324)) ##### Bug fixes - Preserved `null` values in Code Mode text encoding. Thanks [@&#8203;xiajiahang](https://github.com/xiajiahang). ([#&#8203;57639](https://github.com/anomalyco/opencode/pull/57639)) - Tidied nested Extensions menus. ([#&#8203;59468](https://github.com/anomalyco/opencode/pull/59468)) ### [`v2.2.2`](https://github.com/anomalyco/opencode/blob/HEAD/CHANGELOG.md#v222--2026-10-29) [Compare Source](https://github.com/anomalyco/opencode/compare/v2.2.1...v2.2.2) ##### Highlights - **Image Generation by Default**: When a connected provider supports image models, agents can now use `experimental_image_generate` without additional configuration. Set its preferred model through `experimental.image_generate.model`. ([#&#8203;60258](https://github.com/anomalyco/opencode/pull/60258)) - **Faster Worktree Selection**: On the new-session screen, click the current Git branch to open that project’s “Run session in” worktree picker directly. ([#&#8203;60263](https://github.com/anomalyco/opencode/pull/60263)) - **Unified Quotes and Annotations**: Timeline quotes, terminal quotes, and browser annotations now share a compact optional-comment editor, while source highlights remain attached to local drafts. ([#&#8203;60164](https://github.com/anomalyco/opencode/pull/60164)) ##### Core ##### Improvements - Enabled `experimental_image_generate` by default when an image-capable provider is connected. ([#&#8203;60258](https://github.com/anomalyco/opencode/pull/60258)) - Recorded the start time of each session’s latest execution. ##### Bug fixes - Rejected persistent terminal requests whose working directory no longer exists. - Preserved media when sessions are forked or imported. - Associated image-generation notices with the correct background job. ##### TUI ##### Bug fixes - Preserved captured attachments and their original source paths. Thanks [@&#8203;OpeOginni](https://github.com/OpeOginni). ([#&#8203;60222](https://github.com/anomalyco/opencode/pull/60222)) - Prevented middle-truncated paths from overflowing at very narrow terminal widths. - Improved Go usage-limit messages with the reset time and account page link. - Correctly typed and displayed Go and ChatGPT usage-limit errors. ##### Desktop ##### Improvements - Made the Git branch on the new-session screen open the current project’s worktree picker directly. ([#&#8203;60263](https://github.com/anomalyco/opencode/pull/60263)) - Unified timeline quotes, terminal quotes, and browser annotations around one optional-comment workflow. ([#&#8203;60164](https://github.com/anomalyco/opencode/pull/60164)) - Restored classic question cards by default and added **Settings → Experimental → New question UI** for the redesigned keyboard-oriented dock. ([#&#8203;59723](https://github.com/anomalyco/opencode/pull/59723)) - Added a side-panel tab menu and kept close buttons visible when tabs overflow. - Moved user-message actions into a compact menu. - Redesigned the active todo pill to show the current task and concurrent work more clearly. - Added consistent styling for searchable dialogs and composer pills. ##### Bug fixes - Stopped queued prompts from dropping frames as their content grows. - Counted queued quotes and browser annotations as attachments. - Reported failures to persist composer attachments through the normal error UI. - Made Markdown fragment links scroll to the referenced heading. - Kept each tab’s timeline state when switching directories. - Ordered the inbox’s **Working** shelf by execution start time. - Fixed side-panel launchers and automatic closing when the final tab is removed. - Focused the matching navigation arrow while reviewing changes. - Preserved pending model labels only when a queued prompt actually changes models. - Added reset details, an account link, and a composer tray for Go usage limits. ##### SDK ##### Improvements - Added `if` and `until` inputs for `client.experimental.schedule.create`, plus schedule check results and output fields. ([#&#8203;60137](https://github.com/anomalyco/opencode/pull/60137)) - Exposed `SessionInfo.time.busy` for the latest execution’s start time. - Added optional source metadata to prompt file attachments. ##### Extensions ##### Improvements - Added optional `title` and `subtitle` fields to composer notes, source-relative quote positioning, and focus options for composer integrations. ([#&#8203;60164](https://github.com/anomalyco/opencode/pull/60164)) ##### Bug fixes - Corrected visible flowchart edges connected through Merman subgraphs. ### [`v2.2.1`](https://github.com/anomalyco/opencode/blob/HEAD/CHANGELOG.md#v221--2026-10-29) [Compare Source](https://github.com/anomalyco/opencode/compare/v2.2.0...v2.2.1) ##### Highlights - **Keep Working Toward a Goal**: Run `/goal <objective>` in the TUI or Desktop to let the session continue until a reviewer confirms the objective is met. Use `/goal pause`, `/goal resume`, or `/goal clear` to control it. ([#&#8203;59437](https://github.com/anomalyco/opencode/pull/59437)) - **Generate Images**: Enable `experimental.image_generate` to let agents create or edit images with the new `image_generate` tool. You can optionally set its default model with `experimental.image_generate.model`. ([#&#8203;59939](https://github.com/anomalyco/opencode/pull/59939), [#&#8203;60096](https://github.com/anomalyco/opencode/pull/60096)) - **Inspect Background Shells**: Click a running shell in the Desktop activity pill to see its live output and stop it without leaving the menu. ([#&#8203;59496](https://github.com/anomalyco/opencode/pull/59496)) - **New Default Model Picker**: Search favorites, recent models, providers, and variants from the redesigned model picker, which is now the default in Desktop. ([#&#8203;59997](https://github.com/anomalyco/opencode/pull/59997)) ##### Breaking changes ##### `@opencode/ai` provider removals and renames These changes affect code that imports `@opencode/ai` directly. They don't change the CLI, Desktop, or the HTTP API. - The fal, Black Forest Labs, Replicate, and Stability providers are removed, along with their `./providers/fal`, `./providers/black-forest-labs`, `./providers/replicate`, and `./providers/stability` entry points. ([#&#8203;59977](https://github.com/anomalyco/opencode/pull/59977)) - Five legacy entry points are removed. Import the nested paths instead, which 2.2.0 already exports: `./providers/amazon-bedrock-mantle` → `./providers/amazon-bedrock/mantle`, and `./providers/google-vertex-chat`, `-interactions`, `-mistral`, and `-responses` → `./providers/google-vertex/chat`, `/interactions`, `/mistral`, and `/responses`. ([#&#8203;59506](https://github.com/anomalyco/opencode/pull/59506)) - Each provider's `configure()` input type is now named `Config`, for example `Groq.LanguageModelOptions` → `Groq.Config`, and `model()` settings are optional when every setting is optional. ([#&#8203;59765](https://github.com/anomalyco/opencode/pull/59765)) ##### Core ##### Improvements - Add `/goal <objective>` with pause, resume, and clear controls, plus automatic progress review until the objective is met. ([#&#8203;59437](https://github.com/anomalyco/opencode/pull/59437)) - Add opt-in scheduled prompts through `/schedule`, agent tools, and `experimental.schedules`. ([#&#8203;59401](https://github.com/anomalyco/opencode/pull/59401), [#&#8203;59457](https://github.com/anomalyco/opencode/pull/59457)) - Add the opt-in `image_generate` tool for background image creation and editing, with automatic or configured model selection. ([#&#8203;59939](https://github.com/anomalyco/opencode/pull/59939), [#&#8203;60096](https://github.com/anomalyco/opencode/pull/60096)) - Offer GPT Image 2 after Codex sign-in and add MiniMax and Meta Muse image generation support. ([#&#8203;60085](https://github.com/anomalyco/opencode/pull/60085), [#&#8203;59929](https://github.com/anomalyco/opencode/pull/59929), [#&#8203;60081](https://github.com/anomalyco/opencode/pull/60081)) - Add Responses API support for OpenRouter, DigitalOcean, and Venice, including freeform tools. ([#&#8203;59991](https://github.com/anomalyco/opencode/pull/59991), [#&#8203;59963](https://github.com/anomalyco/opencode/pull/59963)) - Improve snapshot performance by coalescing captures and avoiding repeated ignore-file work. ([#&#8203;59419](https://github.com/anomalyco/opencode/pull/59419)) ##### Bug fixes - Preserve more context headroom when fitting tool output into the context window. ([#&#8203;59934](https://github.com/anomalyco/opencode/pull/59934)) - Retry provider throttling correctly instead of reporting it as context overflow. ([#&#8203;59649](https://github.com/anomalyco/opencode/pull/59649)) - Send image-edit references and image sizes in the formats expected by OpenRouter, Google, and Vercel Grok. ([#&#8203;60067](https://github.com/anomalyco/opencode/pull/60067), [#&#8203;59927](https://github.com/anomalyco/opencode/pull/59927)) - Keep credential metadata and prompt-cache settings out of model settings and variants. ([#&#8203;60057](https://github.com/anomalyco/opencode/pull/60057), [#&#8203;59500](https://github.com/anomalyco/opencode/pull/59500)) - Keep Git snapshots working in repositories that use a split index. ([#&#8203;59417](https://github.com/anomalyco/opencode/pull/59417)) - Expose Console web search only when the workspace enables it. ([#&#8203;59592](https://github.com/anomalyco/opencode/pull/59592)) - Improve Code Mode diagnostics for parse errors, stalled awaits, and promise-like search results. ([#&#8203;59834](https://github.com/anomalyco/opencode/pull/59834), [#&#8203;59749](https://github.com/anomalyco/opencode/pull/59749), [#&#8203;59981](https://github.com/anomalyco/opencode/pull/59981)) ##### TUI ##### Improvements - Show `/goal` status below the prompt and provide a dialog for pausing, resuming, or clearing it. ([#&#8203;59437](https://github.com/anomalyco/opencode/pull/59437)) ##### Bug fixes - Show execution failures that occur before the first model step. ([#&#8203;60079](https://github.com/anomalyco/opencode/pull/60079)) - Keep the activity spinner visible while a continued subagent runs. ([#&#8203;59950](https://github.com/anomalyco/opencode/pull/59950)) - Send pasted image and PDF paths correctly when connected to a local server. ([#&#8203;59833](https://github.com/anomalyco/opencode/pull/59833)) - Improve spacing in an empty `/usage` dialog. Thanks [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;59918](https://github.com/anomalyco/opencode/pull/59918)) ##### Desktop ##### Improvements - Add `/reload` to reload configuration without restarting. ([#&#8203;59887](https://github.com/anomalyco/opencode/pull/59887)) - Make the redesigned searchable model picker the default, with dedicated Favorites and Recent sections and keyboard-accessible provider controls. ([#&#8203;59997](https://github.com/anomalyco/opencode/pull/59997)) - Show live output and a Stop action when you select a background shell from the activity pill. ([#&#8203;59496](https://github.com/anomalyco/opencode/pull/59496)) - Show `/goal` state and actions in a composer pill. ([#&#8203;59437](https://github.com/anomalyco/opencode/pull/59437)) - Redesign the integrations dialog and always include OpenCode free models in the model picker. ([#&#8203;59976](https://github.com/anomalyco/opencode/pull/59976), [#&#8203;60047](https://github.com/anomalyco/opencode/pull/60047)) - Add project, worktree, open-in-app, and terminal actions to the session location menu. ([#&#8203;59607](https://github.com/anomalyco/opencode/pull/59607)) - Refine project and worktree selection, command search, prompt-history focus, composer model labels, and artifact preview controls. ([#&#8203;59397](https://github.com/anomalyco/opencode/pull/59397), [#&#8203;59604](https://github.com/anomalyco/opencode/pull/59604), [#&#8203;59626](https://github.com/anomalyco/opencode/pull/59626), [#&#8203;59735](https://github.com/anomalyco/opencode/pull/59735), [#&#8203;59657](https://github.com/anomalyco/opencode/pull/59657)) - Highlight quoted timeline content while you write its first comment. ([#&#8203;59286](https://github.com/anomalyco/opencode/pull/59286)) - Keep draft attachment bytes local when using experimental media URIs. ([#&#8203;59104](https://github.com/anomalyco/opencode/pull/59104)) ##### Bug fixes - Follow each plugin server’s configured endpoint when connecting to its event stream. ([#&#8203;60087](https://github.com/anomalyco/opencode/pull/60087)) - Treat the reachable scroll boundary as the end when Desktop zoom is active. ([#&#8203;60034](https://github.com/anomalyco/opencode/pull/60034)) - Prevent shell text from showing through copy buttons and avoid restyling the transcript when closing a side panel. ([#&#8203;59901](https://github.com/anomalyco/opencode/pull/59901), [#&#8203;59878](https://github.com/anomalyco/opencode/pull/59878)) - Keep rendering malformed tool metadata instead of crashing the timeline. ([#&#8203;59736](https://github.com/anomalyco/opencode/pull/59736)) - Make dropdowns open immediately and keep the new-session location shortcut working after tooltip interactions. ([#&#8203;59268](https://github.com/anomalyco/opencode/pull/59268), [#&#8203;59680](https://github.com/anomalyco/opencode/pull/59680)) - Remove edge halos from macOS application icons. ([#&#8203;59900](https://github.com/anomalyco/opencode/pull/59900)) ##### SDK ##### Improvements - Add `client.experimental.schedule.{create,list,get,pause,resume,delete}` for managing scheduled prompts. ([#&#8203;59457](https://github.com/anomalyco/opencode/pull/59457)) - Group experimental generated-client methods under `client.experimental`; previous locations remain as deprecated aliases until the next minor release. ([#&#8203;59072](https://github.com/anomalyco/opencode/pull/59072)) - Expose compaction through the Promise AI client. ([#&#8203;59987](https://github.com/anomalyco/opencode/pull/59987)) - Add freeform tool support and Responses routes for OpenRouter, DigitalOcean, and Venice. ([#&#8203;59963](https://github.com/anomalyco/opencode/pull/59963), [#&#8203;59991](https://github.com/anomalyco/opencode/pull/59991)) ##### Extensions ##### Improvements - Add the experimental `experimental.idle` Session hook so plugins can continue work before a session goes idle. ([#&#8203;59437](https://github.com/anomalyco/opencode/pull/59437)) - Let Code Mode extension globals return Effects and declare required services. ([#&#8203;59948](https://github.com/anomalyco/opencode/pull/59948)) - Add custom composer-pill popovers for GUI plugins. ([#&#8203;59437](https://github.com/anomalyco/opencode/pull/59437)) ### [`v2.2.0`](https://github.com/anomalyco/opencode/blob/HEAD/CHANGELOG.md#v220--2026-10-27) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.19.5...v2.2.0) ##### Highlights - Create, install and share [Desktop plugins](https://opencode.ai/docs/build/plugins/gui) (experimental) ([#&#8203;55246](https://github.com/anomalyco/opencode/pull/55246), [#&#8203;59469](https://github.com/anomalyco/opencode/pull/59469), [#&#8203;59489](https://github.com/anomalyco/opencode/pull/59489)) - Refreshed the desktop app experience ([#&#8203;56898](https://github.com/anomalyco/opencode/pull/56898), [#&#8203;58865](https://github.com/anomalyco/opencode/pull/58865), [#&#8203;55838](https://github.com/anomalyco/opencode/pull/55838), [#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Add experimental image and decision generation APIs to plugins and sdk, allowing image generation or decision model (think typesafe, clef, etc) workflows. ([#&#8203;59190](https://github.com/anomalyco/opencode/pull/59190), [#&#8203;59380](https://github.com/anomalyco/opencode/pull/59380), [#&#8203;58758](https://github.com/anomalyco/opencode/pull/58758)) - Plugins can now attach and update keyed session instructions with ctx.session.instructions.entry.put/list/remove. Instead of editing the system prompt and busting the prompt cache, each change is added as a small update at the next step. The entries also survive compaction and reverts, and they don't start an extra model turn. ([#&#8203;56550](https://github.com/anomalyco/opencode/pull/56550)) - Restored the Todo tool in desktop via opt-in ([#&#8203;59092](https://github.com/anomalyco/opencode/pull/59092)) - Add configurable prompt cache TTLs per provider/model ([#&#8203;59157](https://github.com/anomalyco/opencode/pull/59157)) ##### Breaking changes ##### `@opencode/ai` root is now the Promise API `@opencode/ai` now works like `@opencode/sdk` and `@opencode/client`: the package root exports the Promise API, and the Effect API moved to `@opencode/ai/effect`. `@opencode/ai/promise` is removed, and the wildcard subpath export is replaced with an explicit list of provider and protocol entry points. ([#&#8203;58847](https://github.com/anomalyco/opencode/pull/58847), [#&#8203;59183](https://github.com/anomalyco/opencode/pull/59183)) ```diff -import { AI } from "@opencode/ai/promise" -import { LLM } from "@opencode/ai" +import { AI } from "@opencode/ai" +import { LLM } from "@opencode/ai/effect" ``` ##### The OpenCode GitHub Action is removed The OpenCode GitHub Action is no longer published. Remove it from your workflows. ([#&#8203;59032](https://github.com/anomalyco/opencode/pull/59032)) ##### TUI plugins require OpenTUI 0.7 `@opencode/plugin` now requires `@opentui/core` and `@opentui/solid` 0.7.0, up from 0.6.8 or later. Plugins that depend on OpenTUI 0.6 fail to install until they upgrade. In OpenTUI 0.7, custom renderables read their hooks from their class at construction: assign `renderBefore`, `renderAfter`, and `onLifecyclePass` in the constructor instead of as class fields, call `refreshHooks()` after adding a hook by reflection, and replace `defineNativeIntegration()` with a `static nativeIntegration` declaration. See the [OpenTUI 0.7.0 release notes](https://opentui.com/docs/releases/0.7.0). ([#&#8203;59295](https://github.com/anomalyco/opencode/pull/59295)) ##### Core ##### Improvements - Add experimental image and decision generation API endpoints. ([#&#8203;59190](https://github.com/anomalyco/opencode/pull/59190)) - Add image and decision entrypoints for catalog providers. ([#&#8203;59380](https://github.com/anomalyco/opencode/pull/59380)) - Improve integration rebuild performance. ([#&#8203;59402](https://github.com/anomalyco/opencode/pull/59402)) - Let custom model configuration set a model type. ([#&#8203;59388](https://github.com/anomalyco/opencode/pull/59388)) - Let model-list API requests filter by type. ([#&#8203;59355](https://github.com/anomalyco/opencode/pull/59355)) - Make external-directory permission checks use the project's filesystem. ([#&#8203;59089](https://github.com/anomalyco/opencode/pull/59089)) - Reduce memory use when code search finds very large lines. ([#&#8203;59205](https://github.com/anomalyco/opencode/pull/59205)) - Let plugins filter event subscriptions by type. ([#&#8203;58864](https://github.com/anomalyco/opencode/pull/58864)) - Add configurable prompt-cache TTLs. ([#&#8203;59157](https://github.com/anomalyco/opencode/pull/59157)) - Move image resizing off the main process and release idle image memory. ([#&#8203;58820](https://github.com/anomalyco/opencode/pull/58820)) - Reduce repeated session-history loading during a step. ([#&#8203;59091](https://github.com/anomalyco/opencode/pull/59091)) - Add an experimental API for session media and opt-in media URI support. ([#&#8203;59103](https://github.com/anomalyco/opencode/pull/59103)) - Add the machine hostname to `/api/info`. ([#&#8203;59090](https://github.com/anomalyco/opencode/pull/59090)) - Add experimental content-addressed blob storage for session media behind `experimental.media_blob`. ([#&#8203;58656](https://github.com/anomalyco/opencode/pull/58656), [#&#8203;58741](https://github.com/anomalyco/opencode/pull/58741)) - Start session history from the latest completed compaction. ([#&#8203;59020](https://github.com/anomalyco/opencode/pull/59020)) - Reduce work encoding durable event payloads that are not persisted. ([#&#8203;58923](https://github.com/anomalyco/opencode/pull/58923)) - Expose MCP server titles from `serverInfo`. ([#&#8203;58950](https://github.com/anomalyco/opencode/pull/58950)) - Apply OpenCode Console workspace configuration as a configuration layer. ([#&#8203;57703](https://github.com/anomalyco/opencode/pull/57703)) - Replace experimental evaluations with Decision APIs in the AI pkg, including OpenAI Decisions, System One, and Cloudflare Run models. ([#&#8203;58758](https://github.com/anomalyco/opencode/pull/58758), [#&#8203;58382](https://github.com/anomalyco/opencode/pull/58382), [#&#8203;58379](https://github.com/anomalyco/opencode/pull/58379), [#&#8203;58381](https://github.com/anomalyco/opencode/pull/58381)) - Convert tool schemas once to speed up tool execution. ([#&#8203;58798](https://github.com/anomalyco/opencode/pull/58798), [#&#8203;58848](https://github.com/anomalyco/opencode/pull/58848)) - Make Git project discovery faster while recognizing repository changes. ([#&#8203;58616](https://github.com/anomalyco/opencode/pull/58616)) - Show OpenCode Console budget limits and Go usage where they block you. ([#&#8203;58694](https://github.com/anomalyco/opencode/pull/58694), [#&#8203;58714](https://github.com/anomalyco/opencode/pull/58714)) - Record provider-reported session costs. ([#&#8203;58562](https://github.com/anomalyco/opencode/pull/58562)) - Find Git more reliably on macOS. ([#&#8203;58602](https://github.com/anomalyco/opencode/pull/58602)) - Resolve model details once per prompt step. ([#&#8203;58601](https://github.com/anomalyco/opencode/pull/58601)) - Let plugins manage session instruction entries for subsequent model requests. ([#&#8203;56550](https://github.com/anomalyco/opencode/pull/56550)) - Add GPT-6.1 Terra and GPT-6.1 Terra Fast to Sign in with ChatGPT. ([#&#8203;59359](https://github.com/anomalyco/opencode/pull/59359)) ##### Bug fixes - Wait for plugins to finish reloading before each session step and tool call. Thanks [@&#8203;kernel-oops](https://github.com/kernel-oops) and [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;51133](https://github.com/anomalyco/opencode/pull/51133)) - Size session compaction from the provider's reported token count to preserve usable context. ([#&#8203;59441](https://github.com/anomalyco/opencode/pull/59441)) - Skip unavailable models.dev API entrypoints instead of failing model catalog updates. ([#&#8203;59475](https://github.com/anomalyco/opencode/pull/59475)) - Return a server error with a reference ID when the server cannot encode a response. ([#&#8203;59459](https://github.com/anomalyco/opencode/pull/59459)) - Avoid warming a session while its model request is running. ([#&#8203;59325](https://github.com/anomalyco/opencode/pull/59325)) - Preserve legacy MCP `codemode` settings during migration. Thanks [@&#8203;tneemo](https://github.com/tneemo). ([#&#8203;59126](https://github.com/anomalyco/opencode/pull/59126)) - Use the correct Vertex AI endpoints for the `eu` and `us` multi-regions. ([#&#8203;59335](https://github.com/anomalyco/opencode/pull/59335)) - Accept Databricks hosts that include `http://` or `https://`. ([#&#8203;59334](https://github.com/anomalyco/opencode/pull/59334)) - Keep files intact when patch edits move a file onto itself. ([#&#8203;59197](https://github.com/anomalyco/opencode/pull/59197)) - Preserve literal `$0` and `$ARGUMENTS` text in custom command input. ([#&#8203;59198](https://github.com/anomalyco/opencode/pull/59198)) - Close project locations concurrently during shutdown. ([#&#8203;59326](https://github.com/anomalyco/opencode/pull/59326)) - Treat equivalent directory paths, including trailing slashes, as one location. ([#&#8203;59327](https://github.com/anomalyco/opencode/pull/59327)) - Send valid tool schemas to Kimi for tuple, default, and keyword-like arguments. ([#&#8203;59207](https://github.com/anomalyco/opencode/pull/59207)) - Expose Code Mode MCP tools directly when the `execute` permission is denied. ([#&#8203;59315](https://github.com/anomalyco/opencode/pull/59315)) - Coordinate OAuth credential refreshes across locations and processes. ([#&#8203;54023](https://github.com/anomalyco/opencode/pull/54023)) - List and search remote Git branches correctly without bare remote names. ([#&#8203;58597](https://github.com/anomalyco/opencode/pull/58597)) - Detect AVIF, HEIC/HEIF, QuickTime, and M4A attachments correctly. ([#&#8203;58480](https://github.com/anomalyco/opencode/pull/58480), [#&#8203;58886](https://github.com/anomalyco/opencode/pull/58886), [#&#8203;58887](https://github.com/anomalyco/opencode/pull/58887)) - Reduce memory retained by long-running tool calls and unchanged hooked model requests. ([#&#8203;58448](https://github.com/anomalyco/opencode/pull/58448), [#&#8203;58449](https://github.com/anomalyco/opencode/pull/58449)) - Load session diffs without reading every message, improving performance for large sessions. ([#&#8203;57686](https://github.com/anomalyco/opencode/pull/57686)) - Keep active locations alive when session events use an equivalent directory path. ([#&#8203;56259](https://github.com/anomalyco/opencode/pull/56259)) - Reload compatibility skills only when their own sources change. ([#&#8203;59086](https://github.com/anomalyco/opencode/pull/59086)) - Avoid publishing redundant catalog updates when configuration is unchanged. ([#&#8203;56267](https://github.com/anomalyco/opencode/pull/56267)) - Avoid booting idle or deleted project locations while polling session forms. ([#&#8203;59083](https://github.com/anomalyco/opencode/pull/59083)) - Wait for plugins before returning agent and provider lists, preventing incomplete catalogs. ([#&#8203;59082](https://github.com/anomalyco/opencode/pull/59082)) - Manage sessions and instruction entries after their project directory is deleted. ([#&#8203;58997](https://github.com/anomalyco/opencode/pull/58997)) - Start fuzzy file search only on first use, reducing project startup work. ([#&#8203;58959](https://github.com/anomalyco/opencode/pull/58959)) - Exit after 10 seconds when shutdown hangs and report pending work. ([#&#8203;58817](https://github.com/anomalyco/opencode/pull/58817)) - Keep the models catalog fresh without redownloading it when unchanged. ([#&#8203;58813](https://github.com/anomalyco/opencode/pull/58813)) - Send xAI Responses `top_k` settings and stop sending unsupported penalties. ([#&#8203;58868](https://github.com/anomalyco/opencode/pull/58868)) - Honor shared parallel tool-call and service-tier settings for Groq. ([#&#8203;58871](https://github.com/anomalyco/opencode/pull/58871)) - Retry throttled requests instead of misreporting them as context overflows. ([#&#8203;58866](https://github.com/anomalyco/opencode/pull/58866)) - Preserve streamed text and reasoning that arrive after an OpenAI Chat finish reason. ([#&#8203;58851](https://github.com/anomalyco/opencode/pull/58851)) - Classify AWS REST JSON errors consistently regardless of where the error type appears. ([#&#8203;58770](https://github.com/anomalyco/opencode/pull/58770)) - Validate large base64 attachments without slowdowns or hangs. ([#&#8203;58811](https://github.com/anomalyco/opencode/pull/58811)) - Retry Bedrock throttling errors as rate limits instead of context overflows. Thanks [@&#8203;Irish-Joseph](https://github.com/Irish-Joseph). ([#&#8203;58759](https://github.com/anomalyco/opencode/pull/58759)) - Keep working MCP tools available when a server returns malformed ones. ([#&#8203;58350](https://github.com/anomalyco/opencode/pull/58350)) - Match absolute instruction-file globs across directories. Thanks [@&#8203;heimoshuiyu](https://github.com/heimoshuiyu). ([#&#8203;58749](https://github.com/anomalyco/opencode/pull/58749)) - Use configured provider regions in Bedrock endpoint URLs. ([#&#8203;58538](https://github.com/anomalyco/opencode/pull/58538)) - Handle unknown OpenAI Chat finish reasons without failing the response. ([#&#8203;58608](https://github.com/anomalyco/opencode/pull/58608)) - Avoid unnecessary Azure model updates when endpoint transforms make no change. ([#&#8203;58600](https://github.com/anomalyco/opencode/pull/58600)) - Prefer JPEG for opaque browser screenshots, reducing attachment size. ([#&#8203;56990](https://github.com/anomalyco/opencode/pull/56990)) - Detect generated image types from their bytes when compatible hosts omit the format. ([#&#8203;58475](https://github.com/anomalyco/opencode/pull/58475)) - Keep project services alive while sessions run long tools or wait for input, with a 24-hour inactivity cap. ([#&#8203;57274](https://github.com/anomalyco/opencode/pull/57274)) - Prevent unrelated configuration changes and compatibility-skill update bursts from repeatedly reloading skills. ([#&#8203;56260](https://github.com/anomalyco/opencode/pull/56260)) ##### TUI ##### Improvements - Reduce CPU use while animated session-tab pulses are visible. ([#&#8203;59235](https://github.com/anomalyco/opencode/pull/59235)) - List OpenCode Console before OpenCode Go in the integration picker. ([#&#8203;59107](https://github.com/anomalyco/opencode/pull/59107)) - Add `/usage`, model-picker, prompt, sidebar, warning, and error details for OpenCode Console usage limits. ([#&#8203;58731](https://github.com/anomalyco/opencode/pull/58731)) - Make CLI service registration more reliable when concurrent processes update its files. ([#&#8203;59105](https://github.com/anomalyco/opencode/pull/59105)) ##### Bug fixes - Return `opencode run --format json` server connection errors as JSON. Thanks [@&#8203;andreivince](https://github.com/andreivince). ([#&#8203;59366](https://github.com/anomalyco/opencode/pull/59366)) - Preserve pasted prompt text when copying it back out. ([#&#8203;59209](https://github.com/anomalyco/opencode/pull/59209)) - Reliably update the background service on Windows when its files are briefly locked. ([#&#8203;59105](https://github.com/anomalyco/opencode/pull/59105)) - Keep the background service state directory out of tool shells and identify processes blocking its port. ([#&#8203;58815](https://github.com/anomalyco/opencode/pull/58815)) - Refresh Git branch details after switching branches. ([#&#8203;58982](https://github.com/anomalyco/opencode/pull/58982)) - Keep the TUI running when a plugin slot or route renders bare text. Thanks [@&#8203;anmol0b](https://github.com/anmol0b) and [@&#8203;Tarquinen](https://github.com/Tarquinen). ([#&#8203;58144](https://github.com/anomalyco/opencode/pull/58144)) - Accept `--server` and `--standalone` anywhere in supported CLI commands. ([#&#8203;58505](https://github.com/anomalyco/opencode/pull/58505)) - Release closed and background session transcripts to prevent memory growth. ([#&#8203;58434](https://github.com/anomalyco/opencode/pull/58434), [#&#8203;57025](https://github.com/anomalyco/opencode/pull/57025)) - Connect remote access tunnels through HTTP proxies. ([#&#8203;58464](https://github.com/anomalyco/opencode/pull/58464)) - Keep development builds on a separate server, database, and port from released builds. ([#&#8203;58331](https://github.com/anomalyco/opencode/pull/58331)) ##### Desktop ##### Improvements - Manage desktop plugins from Settings › Extensions › Plugins. ([#&#8203;59489](https://github.com/anomalyco/opencode/pull/59489)) - Add a persistent desktop zoom setting. ([#&#8203;59277](https://github.com/anomalyco/opencode/pull/59277)) - Capture heap snapshots in desktop debug builds on `SIGUSR2` when explicitly enabled. ([#&#8203;58317](https://github.com/anomalyco/opencode/pull/58317)) - Show the open session title in the browser tab. ([#&#8203;59131](https://github.com/anomalyco/opencode/pull/59131)) - Show todowrite tasks above the composer. ([#&#8203;59092](https://github.com/anomalyco/opencode/pull/59092)) - Load session history once when returning to a session tab. ([#&#8203;59166](https://github.com/anomalyco/opencode/pull/59166)) - Answer questions with number keys and show multi-select choices as checkboxes. ([#&#8203;58595](https://github.com/anomalyco/opencode/pull/58595)) - Add an always-available Add project action to the location picker. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Let you rewind or fork from any message. ([#&#8203;58865](https://github.com/anomalyco/opencode/pull/58865)) - Let you edit line comments and copy shell output. ([#&#8203;58970](https://github.com/anomalyco/opencode/pull/58970), [#&#8203;58974](https://github.com/anomalyco/opencode/pull/58974)) - Render Mermaid diagrams in messages much faster, sized to fit the column. ([#&#8203;57483](https://github.com/anomalyco/opencode/pull/57483), [#&#8203;57004](https://github.com/anomalyco/opencode/pull/57004)) - Add opt-in memory logging and remote debugging for desktop debug builds. ([#&#8203;58315](https://github.com/anomalyco/opencode/pull/58315)) - Show web sources for a turn behind the experimental Sources setting. ([#&#8203;58307](https://github.com/anomalyco/opencode/pull/58307)) - Jump from a completed shell notification to its shell output. ([#&#8203;58663](https://github.com/anomalyco/opencode/pull/58663)) - Keep the composer usable while the voice-call panel floats. ([#&#8203;58587](https://github.com/anomalyco/opencode/pull/58587)) - Use the Soft Radar activity spinner by default and provide experimental variations. ([#&#8203;58010](https://github.com/anomalyco/opencode/pull/58010), [#&#8203;57903](https://github.com/anomalyco/opencode/pull/57903)) - Add an experimental new model picker. ([#&#8203;58413](https://github.com/anomalyco/opencode/pull/58413)) - Add experimental Console voice calls in Desktop beta. ([#&#8203;58249](https://github.com/anomalyco/opencode/pull/58249)) - Add a timeline width setting. ([#&#8203;58308](https://github.com/anomalyco/opencode/pull/58308)) - Improve command, session, and model search lists with sticky sections. ([#&#8203;58222](https://github.com/anomalyco/opencode/pull/58222)) - Add search to recently closed sessions. ([#&#8203;55721](https://github.com/anomalyco/opencode/pull/55721)) - Open extension configuration and skills in side tabs. ([#&#8203;58023](https://github.com/anomalyco/opencode/pull/58023)) - Open session extension lists on hover and follow keyboard navigation. ([#&#8203;58021](https://github.com/anomalyco/opencode/pull/58021)) - Add video previews with zoom controls. ([#&#8203;57924](https://github.com/anomalyco/opencode/pull/57924)) - Add generated project avatars and an experimental avatar-style switcher. ([#&#8203;57871](https://github.com/anomalyco/opencode/pull/57871), [#&#8203;57930](https://github.com/anomalyco/opencode/pull/57930)) - Add recently closed side tabs to the new-tab view. ([#&#8203;57863](https://github.com/anomalyco/opencode/pull/57863)) - Add a searchable prompt history picker. ([#&#8203;57716](https://github.com/anomalyco/opencode/pull/57716)) - Find settings from the command palette. ([#&#8203;57651](https://github.com/anomalyco/opencode/pull/57651)) - Group queued and steered messages, and group consecutive user messages under one metadata line. ([#&#8203;57561](https://github.com/anomalyco/opencode/pull/57561), [#&#8203;57552](https://github.com/anomalyco/opencode/pull/57552)) - Improve file-tree and folder-picker performance. ([#&#8203;57573](https://github.com/anomalyco/opencode/pull/57573), [#&#8203;57557](https://github.com/anomalyco/opencode/pull/57557)) - Keep branch search results visible while new results load. ([#&#8203;57531](https://github.com/anomalyco/opencode/pull/57531)) - Add a session-details menu to the session header. ([#&#8203;57528](https://github.com/anomalyco/opencode/pull/57528)) - Show a subagent's model, status, and elapsed time in its composer area. ([#&#8203;57473](https://github.com/anomalyco/opencode/pull/57473)) - Let you delete sessions from tab menus and rename the current session with Ctrl+R. ([#&#8203;57453](https://github.com/anomalyco/opencode/pull/57453), [#&#8203;57423](https://github.com/anomalyco/opencode/pull/57423)) - Restore session summary and project menu actions. ([#&#8203;57781](https://github.com/anomalyco/opencode/pull/57781)) - Let you place the background-activity capsule at the left, center, right, or hide it. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Show project and worktree details in the session header and location menu. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Add text-rendering controls to the debug bar. ([#&#8203;57326](https://github.com/anomalyco/opencode/pull/57326)) - Show elapsed time for background work. ([#&#8203;57218](https://github.com/anomalyco/opencode/pull/57218)) - Improve streamed Markdown rendering reliability and performance. ([#&#8203;57016](https://github.com/anomalyco/opencode/pull/57016)) - Split the side pane and add a draggable bottom pane with tabs. ([#&#8203;56960](https://github.com/anomalyco/opencode/pull/56960)) - Add consistent MCP sign-in and error-status links across connection, session, and Settings views. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Open multiple file tabs at once and open side-panel content in tabs. ([#&#8203;57182](https://github.com/anomalyco/opencode/pull/57182), [#&#8203;57094](https://github.com/anomalyco/opencode/pull/57094)) - Move running work to the background when you steer a session. ([#&#8203;57142](https://github.com/anomalyco/opencode/pull/57142)) - Let the timeline scroll beneath the composer while keeping its content visible. ([#&#8203;57141](https://github.com/anomalyco/opencode/pull/57141)) - Simplify Settings into a flat list with a per-server switcher. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Quote selected timeline or terminal text into the composer. ([#&#8203;55664](https://github.com/anomalyco/opencode/pull/55664), [#&#8203;58420](https://github.com/anomalyco/opencode/pull/58420)) - Search sessions across online servers from the title bar. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Add a Reduce motion appearance setting. ([#&#8203;57103](https://github.com/anomalyco/opencode/pull/57103)) - Show projects from all servers in the new-session location picker. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Pick models from a searchable dialog with favorites and recent models. ([#&#8203;55838](https://github.com/anomalyco/opencode/pull/55838)) - Attach the new-session location picker below the composer. ([#&#8203;56952](https://github.com/anomalyco/opencode/pull/56952)) - Open image previews directly from message and composer thumbnails. ([#&#8203;56896](https://github.com/anomalyco/opencode/pull/56896)) - Start new worktrees from the current branch in the simplified location picker. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Manage running subagents and shells from the composer activity capsule. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Sync projects from each server and prioritize projects you use on Home. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Choose between Focus and Pro interface layouts in Settings. ([#&#8203;56898](https://github.com/anomalyco/opencode/pull/56898)) - Open terminals as side-panel tabs. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Choose a project and worktree from one new-session location dialog. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Show subagents as separate timeline rows by default. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Add a sidebar toggle for vertical tabs. ([#&#8203;55646](https://github.com/anomalyco/opencode/pull/55646)) - Add ⌘1–9 and ⇧⌘\[ / ⇧⌘] shortcuts for side-panel tabs. ([#&#8203;57301](https://github.com/anomalyco/opencode/pull/57301)) - Let you choose a new directory or worktree when a session location is unavailable. ([#&#8203;56087](https://github.com/anomalyco/opencode/pull/56087)) - Refresh the Manage models, MCP, and fork dialogs with compact searchable lists. ([#&#8203;56029](https://github.com/anomalyco/opencode/pull/56029), [#&#8203;56028](https://github.com/anomalyco/opencode/pull/56028)) - Install future Windows desktop updates in about a second. ([#&#8203;55933](https://github.com/anomalyco/opencode/pull/55933)) - Show individual Code Mode tool calls in Execute rows. ([#&#8203;55649](https://github.com/anomalyco/opencode/pull/55649)) - Add a Commentary timeline category and display setting. ([#&#8203;55248](https://github.com/anomalyco/opencode/pull/55248)) - Support `@` links to other sessions in messages. ([#&#8203;57480](https://github.com/anomalyco/opencode/pull/57480)) - Polish spacing, alignment, borders, and typography across the session header, titlebar, composer, file tree, browser pane, timeline, and Settings. ([#&#8203;58195](https://github.com/anomalyco/opencode/pull/58195), [#&#8203;57776](https://github.com/anomalyco/opencode/pull/57776), [#&#8203;57570](https://github.com/anomalyco/opencode/pull/57570), [#&#8203;57782](https://github.com/anomalyco/opencode/pull/57782), [#&#8203;57336](https://github.com/anomalyco/opencode/pull/57336), [#&#8203;57363](https://github.com/anomalyco/opencode/pull/57363), [#&#8203;58100](https://github.com/anomalyco/opencode/pull/58100), [#&#8203;58979](https://github.com/anomalyco/opencode/pull/58979)) ##### Bug fixes - Prevent duplicate tab shortcuts and remove uninstalled plugin commands from Shortcuts. ([#&#8203;59499](https://github.com/anomalyco/opencode/pull/59499)) - Keep todo items from shrinking in the todo panel. ([#&#8203;59430](https://github.com/anomalyco/opencode/pull/59430)) - Keep question-dock answers and controls positioned correctly when changing questions. ([#&#8203;59383](https://github.com/anomalyco/opencode/pull/59383)) - Keep the @&#8203; menu open while it searches. ([#&#8203;59425](https://github.com/anomalyco/opencode/pull/59425)) - Finish quitting after Cmd+Q on macOS. Thanks [@&#8203;anmol0b](https://github.com/anmol0b). ([#&#8203;59144](https://github.com/anomalyco/opencode/pull/59144)) - Toggle MCP servers for the current session location from Settings. ([#&#8203;59132](https://github.com/anomalyco/opencode/pull/59132)) - Deliver steering messages when an earlier move was missed. ([#&#8203;58984](https://github.com/anomalyco/opencode/pull/58984)) - Keep session and command-palette search results stable while searching. ([#&#8203;58908](https://github.com/anomalyco/opencode/pull/58908), [#&#8203;57479](https://github.com/anomalyco/opencode/pull/57479)) - Restrict Search projects to the project list. ([#&#8203;58978](https://github.com/anomalyco/opencode/pull/58978)) - Let custom Close tab shortcuts close terminal and browser tabs. ([#&#8203;58945](https://github.com/anomalyco/opencode/pull/58945)) - Prevent live status rows from jumping or leaving gaps above the composer. ([#&#8203;58691](https://github.com/anomalyco/opencode/pull/58691), [#&#8203;58697](https://github.com/anomalyco/opencode/pull/58697)) - Keep browser tabs still behind open dialogs. ([#&#8203;58958](https://github.com/anomalyco/opencode/pull/58958)) - Keep side-panel content and browser pages visible while the sidebar or panel moves. ([#&#8203;58202](https://github.com/anomalyco/opencode/pull/58202), [#&#8203;58185](https://github.com/anomalyco/opencode/pull/58185)) - Render session diffs reliably. - Keep keyboard focus in terminals, side panels, dialogs, and the composer when appropriate. ([#&#8203;57980](https://github.com/anomalyco/opencode/pull/57980), [#&#8203;57297](https://github.com/anomalyco/opencode/pull/57297), [#&#8203;56273](https://github.com/anomalyco/opencode/pull/56273)) - Preserve empty browser and side-panel tabs instead of closing them automatically. ([#&#8203;58440](https://github.com/anomalyco/opencode/pull/58440)) - Reduce desktop memory use by releasing closed transcripts, discarded tool-result images, retained UI batches, and aborted timeline work. ([#&#8203;57025](https://github.com/anomalyco/opencode/pull/57025), [#&#8203;58434](https://github.com/anomalyco/opencode/pull/58434), [#&#8203;58427](https://github.com/anomalyco/opencode/pull/58427), [#&#8203;58560](https://github.com/anomalyco/opencode/pull/58560), [#&#8203;58447](https://github.com/anomalyco/opencode/pull/58447), [#&#8203;58439](https://github.com/anomalyco/opencode/pull/58439), [#&#8203;58432](https://github.com/anomalyco/opencode/pull/58432)) - Restore horizontal scrolling and sticky change badges in the file tree. ([#&#8203;58117](https://github.com/anomalyco/opencode/pull/58117)) - Show live Thinking for reasoning-only turns. ([#&#8203;58299](https://github.com/anomalyco/opencode/pull/58299)) - Stop loading older history after completing the initially visible turn and prioritize the first transcript page. ([#&#8203;57700](https://github.com/anomalyco/opencode/pull/57700), [#&#8203;57741](https://github.com/anomalyco/opencode/pull/57741)) - Keep Home project and session lists reliable during refreshes. - Keep deleted sessions from reappearing on Home. ([#&#8203;55349](https://github.com/anomalyco/opencode/pull/55349)) - Find sessions immediately in @&#8203; mentions, including multi-word titles. ([#&#8203;57683](https://github.com/anomalyco/opencode/pull/57683)) - Keep queued messages editable while changes sync with the server. ([#&#8203;57569](https://github.com/anomalyco/opencode/pull/57569)) - Open image and video URLs in the browser pane. ([#&#8203;57562](https://github.com/anomalyco/opencode/pull/57562)) - Mark submitted generated forms as complete and send each response only once. ([#&#8203;57537](https://github.com/anomalyco/opencode/pull/57537)) - Improve file-view performance with reused views, virtualized medium files, and cached diffs. ([#&#8203;57551](https://github.com/anomalyco/opencode/pull/57551)) - Group untracked folders into one expandable review row. ([#&#8203;57527](https://github.com/anomalyco/opencode/pull/57527)) - Let you paste into the composer from the session view. ([#&#8203;57545](https://github.com/anomalyco/opencode/pull/57545)) - Recover failed beta background servers and preserve their required CLI versions. ([#&#8203;57321](https://github.com/anomalyco/opencode/pull/57321)) - Restore branch selection when starting a new worktree session. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Keep the running server available while beta updates install. ([#&#8203;57309](https://github.com/anomalyco/opencode/pull/57309)) - Make links in user messages, shell output, and Code Mode output clickable. ([#&#8203;57211](https://github.com/anomalyco/opencode/pull/57211), [#&#8203;57303](https://github.com/anomalyco/opencode/pull/57303)) - Make Check for Updates always report its result. ([#&#8203;57296](https://github.com/anomalyco/opencode/pull/57296)) - Reopen the last closed side-panel tab with ⇧⌘T and open a browser tab with ⌘T. ([#&#8203;57269](https://github.com/anomalyco/opencode/pull/57269), [#&#8203;57156](https://github.com/anomalyco/opencode/pull/57156)) - Keep OpenCode keyboard shortcuts working in the browser pane. ([#&#8203;56697](https://github.com/anomalyco/opencode/pull/56697), [#&#8203;55240](https://github.com/anomalyco/opencode/pull/55240)) - Preview image attachments supplied by file path. ([#&#8203;57249](https://github.com/anomalyco/opencode/pull/57249)) - Apply configured code and UI fonts consistently. ([#&#8203;57242](https://github.com/anomalyco/opencode/pull/57242)) - Keep activity and busy indicators steady while switching sessions. ([#&#8203;57196](https://github.com/anomalyco/opencode/pull/57196)) - Reserve ⇧⌘W for closing the window so ⌘W does not. ([#&#8203;57150](https://github.com/anomalyco/opencode/pull/57150)) - Make image preview transitions resize smoothly without clipping or blocking clicks. ([#&#8203;56997](https://github.com/anomalyco/opencode/pull/56997), [#&#8203;57324](https://github.com/anomalyco/opencode/pull/57324)) - Keep in-session search reliable alongside titlebar session search. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Return focus to the prompt after keyboard model selection. - Open searchable pickers at the top with search focused. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Keep tables visible beneath sticky headers. ([#&#8203;57050](https://github.com/anomalyco/opencode/pull/57050)) - Fit provider connection steps without shifting a dialog's top edge. ([#&#8203;57006](https://github.com/anomalyco/opencode/pull/57006)) - Give unavailable-server panels clear error styling. ([#&#8203;57003](https://github.com/anomalyco/opencode/pull/57003)) - Make mouse-wheel and keyboard scrolling respond immediately on Linux. ([#&#8203;57962](https://github.com/anomalyco/opencode/pull/57962)) - Keep long Execute tool code contained and show successful Code Mode output. ([#&#8203;56915](https://github.com/anomalyco/opencode/pull/56915)) - Focus the most useful control when dialogs open, including Cancel in delete confirmations. ([#&#8203;57453](https://github.com/anomalyco/opencode/pull/57453)) - Install Windows beta, stable, and nightly builds into separate directories. ([#&#8203;56904](https://github.com/anomalyco/opencode/pull/56904)) - Keep session tabs recoverable when their server becomes unreachable. ([#&#8203;56248](https://github.com/anomalyco/opencode/pull/56248)) - Keep the composer model's provider and session-model resolution consistent with the TUI. ([#&#8203;56225](https://github.com/anomalyco/opencode/pull/56225)) - Reread open files without resetting their scroll position. ([#&#8203;55899](https://github.com/anomalyco/opencode/pull/55899)) - Hide agent names when agents are disabled. ([#&#8203;57525](https://github.com/anomalyco/opencode/pull/57525)) - Polish sidebar, panel, composer, activity, question-dock, loading, and motion behavior across light and dark themes. ([#&#8203;57449](https://github.com/anomalyco/opencode/pull/57449), [#&#8203;58013](https://github.com/anomalyco/opencode/pull/58013), [#&#8203;58577](https://github.com/anomalyco/opencode/pull/58577), [#&#8203;57944](https://github.com/anomalyco/opencode/pull/57944), [#&#8203;58052](https://github.com/anomalyco/opencode/pull/58052), [#&#8203;58494](https://github.com/anomalyco/opencode/pull/58494), [#&#8203;58073](https://github.com/anomalyco/opencode/pull/58073), [#&#8203;58114](https://github.com/anomalyco/opencode/pull/58114)) - Polish hover states, cursors, tooltips, focus rings, scrollbars, and transitions across desktop controls. ([#&#8203;57653](https://github.com/anomalyco/opencode/pull/57653), [#&#8203;57787](https://github.com/anomalyco/opencode/pull/57787), [#&#8203;57304](https://github.com/anomalyco/opencode/pull/57304), [#&#8203;58971](https://github.com/anomalyco/opencode/pull/58971), [#&#8203;57221](https://github.com/anomalyco/opencode/pull/57221), [#&#8203;57192](https://github.com/anomalyco/opencode/pull/57192), [#&#8203;58575](https://github.com/anomalyco/opencode/pull/58575), [#&#8203;58580](https://github.com/anomalyco/opencode/pull/58580)) ##### SDK ##### Improvements - Add GUI plugin APIs for toasts, dialogs, notifications, tabs, composer controls, and custom UI. ([#&#8203;59469](https://github.com/anomalyco/opencode/pull/59469)) ##### Bug fixes - Fix generated Promise client input types for TypeScript consumers. ([#&#8203;58875](https://github.com/anomalyco/opencode/pull/58875)) - Let SDK clients discard inline tool-result file payloads to reduce memory use. ([#&#8203;59101](https://github.com/anomalyco/opencode/pull/59101)) - Avoid unnecessary catalog refreshes for locations an SDK client has not loaded. ([#&#8203;55237](https://github.com/anomalyco/opencode/pull/55237), [#&#8203;59099](https://github.com/anomalyco/opencode/pull/59099)) - Restore running sessions created while an SDK client was disconnected. ([#&#8203;53012](https://github.com/anomalyco/opencode/pull/53012)) - Release omitted tool-image payloads from memory instead of retaining their base64 data. ([#&#8203;58560](https://github.com/anomalyco/opencode/pull/58560)) ### [`v1.19.5`](https://github.com/anomalyco/opencode/releases/tag/v1.19.5) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.19.4...v1.19.5) ##### Core ##### Bugfixes - Failed TUI worker requests now return an error instead of leaving the caller hanging. ([@&#8203;Nowaker](https://github.com/Nowaker)) **Thank you to 1 community contributor:** - [@&#8203;Nowaker](https://github.com/Nowaker): - fix(opencode): answer a failed TUI worker request instead of hanging ([#&#8203;54936](https://github.com/anomalyco/opencode/issues/54936)) ### [`v1.19.4`](https://github.com/anomalyco/opencode/releases/tag/v1.19.4) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.19.3...v1.19.4) ##### Core ##### Improvements - Upgraded the bundled Bun runtime to 1.4.4, which includes [security fixes](https://bun.com/blog/bun-v1.4.4#security) for Brotli, TLS, HTTP/1.1, HTTP/2, HTTP/3, WebSocket, and `fetch`, and updates root certificates to NSS 3.131.1. ### [`v1.19.3`](https://github.com/anomalyco/opencode/releases/tag/v1.19.3) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.19.2...v1.19.3) ##### Core ##### Improvements - Configure model reasoning options to generate reasoning variants, replacing catalog variants while preserving your configured variant overrides. ### [`v1.19.2`](https://github.com/anomalyco/opencode/releases/tag/v1.19.2) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.19.1...v1.19.2) ##### Core ##### Bugfixes - OpenCode 1 now stays on the 1.x release line: update checks use only the npm `opencode-ai` latest version, so 1.x installs are never offered a 2.x build as a regular update. - Upgrading to OpenCode 2 remains a separate, explicit choice through the 2.0 offer in `/update` or `opencode upgrade --major`. - Fix upgrades for installs managed by yarn. - Skip 1.x updates for Homebrew Core installs, which now track OpenCode 2, and check tap and Chocolatey availability before offering an update. - The install script refuses to install 2.x versions. ### [`v1.19.1`](https://github.com/anomalyco/opencode/releases/tag/v1.19.1) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.19.0...v1.19.1) ##### Core ##### Bugfixes - Session sharing has been discontinued. Existing share links and session-sharing commands are no longer available, and importing sessions from share URLs is unsupported. ### [`v1.19.0`](https://github.com/anomalyco/opencode/releases/tag/v1.19.0) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.18.35...v1.19.0) ##### Core ##### Improvements - Run `opencode upgrade --major` to upgrade to OpenCode 2. ##### Bugfixes - Allow the OpenAI `ultrafast` service tier. - Validate PTY connection origins and tickets before checking whether a PTY exists. ##### TUI ##### Improvements - Use `/update` to install OpenCode updates or upgrade to OpenCode 2; updates are no longer installed automatically. **Thank you to 1 community contributor:** - [@&#8203;dc85](https://github.com/dc85): - docs(web): add Exo Free to Zen docs ([#&#8203;53622](https://github.com/anomalyco/opencode/issues/53622)) - fix(stats): attribute exo usage to an unknown provider ([#&#8203;53621](https://github.com/anomalyco/opencode/issues/53621)) - docs(web): remove Fledge Alpha Free from Zen docs ([#&#8203;53984](https://github.com/anomalyco/opencode/issues/53984)) ### [`v1.18.35`](https://github.com/anomalyco/opencode/releases/tag/v1.18.35) [Compare Source](https://github.com/anomalyco/opencode/compare/v1.18.34...v1.18.35) ##### Core ##### Improvements - Added canonical redirects and JSON and Markdown data formats for agent-readable stats. ##### Bugfixes - xAI tool results now include supported images, while unsupported image formats are skipped. ([@&#8203;Jaaneek](https://github.com/Jaaneek)) **Thank you to 3 community contributors:** - [@&#8203;dc85](https://github.com/dc85): - docs(web): add Fledge Alpha Free to Zen docs ([#&#8203;52895](https://github.com/anomalyco/opencode/issues/52895)) - [@&#8203;jm0ney337](https://github.com/jm0ney337): - docs(ecosystem): add opencode-supabase to ecosystem plugins ([#&#8203;49848](https://github.com/anomalyco/opencode/issues/49848)) - [@&#8203;Jaaneek](https://github.com/Jaaneek): - fix(opencode): bump [@&#8203;ai-sdk/xai](https://github.com/ai-sdk/xai) to 3.0.139 so tool-result images reach xAI ([#&#8203;53549](https://github.com/anomalyco/opencode/issues/53549)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). The local configuration can be found in the [SI Renovate Bot repository](https://git.shivering-isles.com/shivering-isles/infrastructure-gitops/src/branch/main/apps/k8s01/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNjcuNSIsInVwZGF0ZWRJblZlciI6IjQ0LjE5OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
botaniker force-pushed renovate/anomalyco-opencode-2.x from 49660b5833 to 4e6d7270b6 2026-10-29 06:12:17 +00:00 Compare
botaniker force-pushed renovate/anomalyco-opencode-2.x from 4e6d7270b6 to e60bbc3eb6
Some checks are pending
go-lint Go pipeline started
gitops-images Image build started
gitops-pr-validation Pipeline started
2026-10-30 06:17:59 +00:00
Compare
botaniker force-pushed renovate/anomalyco-opencode-2.x from e60bbc3eb6
Some checks are pending
go-lint Go pipeline started
gitops-images Image build started
gitops-pr-validation Pipeline started
to e0ac5300a3
All checks were successful
go-lint Pipeline completed successfully
gitops-pr-validation Pipeline completed successfully
gitops-images Pipeline completed successfully
2026-10-30 13:02:18 +00:00
Compare
botaniker force-pushed renovate/anomalyco-opencode-2.x from e0ac5300a3
All checks were successful
go-lint Pipeline completed successfully
gitops-pr-validation Pipeline completed successfully
gitops-images Pipeline completed successfully
to ca71d8a2ee 2026-10-31 06:14:42 +00:00
Compare
botaniker force-pushed renovate/anomalyco-opencode-2.x from ca71d8a2ee to 49a50a197f 2026-11-07 06:17:25 +00:00 Compare
Some required checks are missing.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin 'renovate/anomalyco-opencode-2.x:renovate/anomalyco-opencode-2.x'
git switch 'renovate/anomalyco-opencode-2.x'
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
shivering-isles/infrastructure-gitops!472
No description provided.