github anomalyco/opencode v2.2.1

4 hours ago

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)

Don't miss a new opencode release

NewReleases is sending notifications on new releases.