Skip to content

Commit b44b716

Browse files
release: v2.2.3 (#60564)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent cfdb9da commit b44b716

37 files changed

Lines changed: 180 additions & 68 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,118 @@
22

33
Release notes for OpenCode V2, newest first.
44

5+
## v2.2.3 — 2026-10-30
6+
7+
### Highlights
8+
9+
- **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](https://github.com/anomalyco/opencode/pull/58782))
10+
- **Faster Long Sessions in Desktop**: Streaming replies and long conversations now do much less rendering work. ([#60489](https://github.com/anomalyco/opencode/pull/60489), [#60521](https://github.com/anomalyco/opencode/pull/60521), [#60513](https://github.com/anomalyco/opencode/pull/60513), [#60481](https://github.com/anomalyco/opencode/pull/60481))
11+
- **Desktop Stability Fixes**: Fixes side-panel tabs, repeated "Session not found" toasts, and **Open file** over HTTP. ([#60430](https://github.com/anomalyco/opencode/pull/60430), [#60436](https://github.com/anomalyco/opencode/pull/60436), [#60459](https://github.com/anomalyco/opencode/pull/60459), [#60462](https://github.com/anomalyco/opencode/pull/60462))
12+
13+
### Breaking changes
14+
15+
#### `@opencode/ai` experimental media and one `tool()`
16+
17+
These changes affect code that imports `@opencode/ai` directly. They don't change the CLI, Desktop, or the HTTP API.
18+
19+
- Speech, transcription, video, and their clients and types moved from `@opencode/ai/effect` to `@opencode/ai/experimental`. On the Promise client, use `ai.experimental.speech`, `ai.experimental.transcription`, and `ai.experimental.video`. `TestSpeech`, `TestTranscription`, and `TestVideo` moved to `@opencode/ai/experimental/testing`. ([#60484](https://github.com/anomalyco/opencode/pull/60484))
20+
- Both clients build tools with `tool(...)`, which replaces `AI.tool` and `Tool.make`, and `testing.tool` is now `testing.toolCall`. ([#60407](https://github.com/anomalyco/opencode/pull/60407))
21+
22+
#### TUI plugins require OpenTUI 0.8
23+
24+
`@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). ([#60385](https://github.com/anomalyco/opencode/pull/60385))
25+
26+
#### Managed policy: `integration.use` covers integrations only
27+
28+
`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](https://github.com/anomalyco/opencode/pull/60315))
29+
30+
### Core
31+
32+
#### Improvements
33+
34+
- 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](https://github.com/Tarquinen). ([#58782](https://github.com/anomalyco/opencode/pull/58782))
35+
- Added Code Mode JavaScript checks to experimental schedules, including statically authorized tool calls, persistent state, and custom wake messages. ([#60140](https://github.com/anomalyco/opencode/pull/60140))
36+
- Added separate managed-policy actions for connecting to integrations and using integrations, MCP servers, skills, and plugins. ([#60315](https://github.com/anomalyco/opencode/pull/60315))
37+
38+
#### Bug fixes
39+
40+
- Preserved plugin-provided model variants and delayed dynamic provider fallback until external SDK hooks have run. ([#60097](https://github.com/anomalyco/opencode/pull/60097), [#60380](https://github.com/anomalyco/opencode/pull/60380))
41+
- Preserved permission reasons and feedback in MCP failures, and made Code Mode failures match direct tool-call failures. ([#60102](https://github.com/anomalyco/opencode/pull/60102), [#60109](https://github.com/anomalyco/opencode/pull/60109))
42+
- Fixed invalid Code Mode schedule checks so creation fails immediately and existing invalid checks pause without repeated execution. ([#60349](https://github.com/anomalyco/opencode/pull/60349))
43+
- Removed a session’s persistent terminals when the session is deleted. ([#60322](https://github.com/anomalyco/opencode/pull/60322))
44+
- Kept nested tool progress from replacing the parent `execute` call rows. ([#60480](https://github.com/anomalyco/opencode/pull/60480))
45+
46+
### TUI
47+
48+
#### Improvements
49+
50+
- 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](https://github.com/anomalyco/opencode/pull/60116))
51+
- Added a distinct marker for the selected composer suggestion in the new designs. ([#60393](https://github.com/anomalyco/opencode/pull/60393))
52+
53+
#### Bug fixes
54+
55+
- Fixed PHP syntax highlighting for code blocks without an opening `<?php` tag. ([#60359](https://github.com/anomalyco/opencode/pull/60359))
56+
- Preserved `#` in file-search paths unless it introduces a valid line range. ([#60336](https://github.com/anomalyco/opencode/pull/60336))
57+
- Kept the configured default cursor style after config reloads. ([#60302](https://github.com/anomalyco/opencode/pull/60302))
58+
- Matched the search cursor to the highlighted row when a selection dialog has no query. ([#60310](https://github.com/anomalyco/opencode/pull/60310))
59+
60+
### Desktop
61+
62+
#### Improvements
63+
64+
- Added a Desktop spellcheck toggle under **Settings → General** and system-language dictionary selection on Windows and Linux. ([#59129](https://github.com/anomalyco/opencode/pull/59129))
65+
- Added `PageUp` and `PageDown` timeline paging from the composer without moving the draft cursor or focus. ([#59426](https://github.com/anomalyco/opencode/pull/59426))
66+
- Added independently configurable question notifications and sounds under **Settings → Notifications → Questions**. Thanks [@YuriNek0](https://github.com/YuriNek0). ([#60358](https://github.com/anomalyco/opencode/pull/60358))
67+
- Added separate project and worktree actions to the new-session control. ([#60486](https://github.com/anomalyco/opencode/pull/60486))
68+
- Added one-click version copying in **Settings → About**. ([#52356](https://github.com/anomalyco/opencode/pull/52356))
69+
- Grouped added projects in workspace settings. ([#60221](https://github.com/anomalyco/opencode/pull/60221))
70+
- Made question-answer text selectable. ([#60372](https://github.com/anomalyco/opencode/pull/60372))
71+
- Adapted the session header to narrow timeline widths. ([#59512](https://github.com/anomalyco/opencode/pull/59512))
72+
73+
#### Bug fixes
74+
75+
- Side-panel tabs close again and New tab launchers respond to clicks, fixing a 2.2.2 regression. ([#60430](https://github.com/anomalyco/opencode/pull/60430), [#60436](https://github.com/anomalyco/opencode/pull/60436))
76+
- **Open file** in the side panel works again in the web app over HTTP. ([#60462](https://github.com/anomalyco/opencode/pull/60462))
77+
- Kept question options and submit controls reachable on mobile. ([#60335](https://github.com/anomalyco/opencode/pull/60335))
78+
- Preserved simultaneous request notifications and inbox scroll position when opening sessions. ([#60378](https://github.com/anomalyco/opencode/pull/60378), [#60356](https://github.com/anomalyco/opencode/pull/60356))
79+
- Fixed consecutive dropped files so every file mention is inserted into the composer. ([#60463](https://github.com/anomalyco/opencode/pull/60463))
80+
- Kept the current `@` and command-menu selection stable while results update under a stationary pointer. ([#59434](https://github.com/anomalyco/opencode/pull/59434), [#60368](https://github.com/anomalyco/opencode/pull/60368))
81+
- Fixed `⌘W` side-panel closing and focus restoration when no closable tabs remain. ([#59002](https://github.com/anomalyco/opencode/pull/59002), [#60435](https://github.com/anomalyco/opencode/pull/60435))
82+
- Kept the mobile session drawer open while a session loads. ([#59427](https://github.com/anomalyco/opencode/pull/59427))
83+
- Restored maximized windows on their saved display and retained renderer permissions across shared-session windows. ([#60482](https://github.com/anomalyco/opencode/pull/60482), [#60458](https://github.com/anomalyco/opencode/pull/60458))
84+
- Fixed timeline growth, zoom-end scrolling, highlighting, and DOM-observer performance issues in long sessions. ([#60489](https://github.com/anomalyco/opencode/pull/60489), [#60481](https://github.com/anomalyco/opencode/pull/60481), [#60488](https://github.com/anomalyco/opencode/pull/60488), [#60513](https://github.com/anomalyco/opencode/pull/60513), [#60521](https://github.com/anomalyco/opencode/pull/60521))
85+
- Kept models with unknown release dates visible. Thanks [@joe-ieta](https://github.com/joe-ieta). ([#60496](https://github.com/anomalyco/opencode/pull/60496))
86+
- Fixed reasoning-capability detection for models that expose reasoning through variants or compatibility metadata. ([#60457](https://github.com/anomalyco/opencode/pull/60457))
87+
- Evicted deleted sessions after a `404` instead of retrying or showing repeated errors. ([#60459](https://github.com/anomalyco/opencode/pull/60459))
88+
- Fixed the macOS application icon and added the required folder-access description to the app bundle. ([#60020](https://github.com/anomalyco/opencode/pull/60020), [#60503](https://github.com/anomalyco/opencode/pull/60503))
89+
90+
### SDK
91+
92+
#### Improvements
93+
94+
- Preserved partial `LLMResponse` output on `AIError.partial` when generation, object generation, or a tool loop fails. ([#60477](https://github.com/anomalyco/opencode/pull/60477))
95+
- Unified Effect and Promise tool declarations around `tool(...)`, with optional output schemas and executable or declaration-only tools. ([#60407](https://github.com/anomalyco/opencode/pull/60407))
96+
- Added typed OpenRouter `debug`, `models`, `plugins`, `provider`, and `user` options to the Responses route. ([#60044](https://github.com/anomalyco/opencode/pull/60044))
97+
- Added `withMediaRefs`, `mediaHashFromUri`, and `MediaRequestOptions` to the Promise client for experimental stored-media references. ([#60116](https://github.com/anomalyco/opencode/pull/60116))
98+
99+
#### Bug fixes
100+
101+
- Matched the Promise AI client more closely to the Effect API and accepted typed tools in loops. ([#60465](https://github.com/anomalyco/opencode/pull/60465), [#60390](https://github.com/anomalyco/opencode/pull/60390))
102+
- Kept tools whose `execute` handler can throw available to the AI client. ([#60431](https://github.com/anomalyco/opencode/pull/60431))
103+
- Continued polling queued media generations when providers return unknown intermediate statuses. ([#59988](https://github.com/anomalyco/opencode/pull/59988))
104+
- Stopped sending an incompatible `filename` alongside `file_url` on OpenAI Responses requests. ([#60382](https://github.com/anomalyco/opencode/pull/60382))
105+
106+
### Extensions
107+
108+
#### Improvements
109+
110+
- Added persistent-terminal renaming to the process daemon, including capability discovery and user titles that override shell-provided titles until cleared. ([#60324](https://github.com/anomalyco/opencode/pull/60324))
111+
112+
#### Bug fixes
113+
114+
- Preserved `null` values in Code Mode text encoding. Thanks [@xiajiahang](https://github.com/xiajiahang). ([#57639](https://github.com/anomalyco/opencode/pull/57639))
115+
- Tidied nested Extensions menus. ([#59468](https://github.com/anomalyco/opencode/pull/59468))
116+
5117
## v2.2.2 — 2026-10-29
6118

7119
### Highlights

0 commit comments

Comments
 (0)