diff --git a/CHANGELOG.md b/CHANGELOG.md index 69b05c60d02..e46b86ac889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,37 @@ Release notes for OpenCode V2, newest first. +## v2.0.32 — 2026-10-16 + +### Highlights + +- **Copy the Latest Reply**: Run `/copy` in the TUI to copy the latest assistant message or completed compaction summary instead of the full transcript. ([#56053](https://github.com/anomalyco/opencode/pull/56053), [#56055](https://github.com/anomalyco/opencode/pull/56055)) +- **Auth Login in Headless Environments**: `opencode auth login` no longer crashes in a container or other headless environment that cannot open a browser; use the URL already printed in the terminal to continue. ([#56082](https://github.com/anomalyco/opencode/pull/56082)) + +### Core + +#### Bug fixes + +- Prevented `opencode auth login` from crashing when no browser opener such as `xdg-open` is available. ([#56082](https://github.com/anomalyco/opencode/pull/56082)) +- Gemini sessions now retry or continue after intermittent `MALFORMED_RESPONSE` finishes instead of immediately failing. ([#56232](https://github.com/anomalyco/opencode/pull/56232)) +- Made snapshot capture resilient to concurrent Git object writes on Windows. ([#56190](https://github.com/anomalyco/opencode/pull/56190)) + +### TUI + +#### Improvements + +- Changed `/copy` to copy the latest assistant message; the full transcript remains available from the command palette or `/export`. ([#56053](https://github.com/anomalyco/opencode/pull/56053)) + +#### Bug fixes + +- `/copy` now copies a completed compaction summary when it is the latest response. ([#56055](https://github.com/anomalyco/opencode/pull/56055)) + +### SDK + +#### Improvements + +- Added the experimental `client.voice.session(...)` API for server-brokered OpenAI GPT-Live and Realtime WebRTC sessions, OpenAI Realtime WebSocket sessions, and xAI Grok Voice WebSocket sessions. It uses an API key stored on the server or `OPENAI_API_KEY`/`XAI_API_KEY`; ChatGPT sign-in credentials are not used. ([#55951](https://github.com/anomalyco/opencode/pull/55951)) + ## v2.0.30 — 2026-10-15 ### Highlights diff --git a/bun.lock b/bun.lock index e3c2fd264fd..dc78725ae7b 100644 --- a/bun.lock +++ b/bun.lock @@ -33,7 +33,7 @@ }, "packages/ai": { "name": "@opencode/ai", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@aws-sdk/credential-providers": "3.1057.0", "@opencode/schema": "workspace:*", @@ -55,7 +55,7 @@ }, "packages/app": { "name": "@opencode/app", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -112,7 +112,7 @@ }, "packages/cli": { "name": "@opencode/cli", - "version": "2.0.31", + "version": "2.0.32", "bin": { "opencode": "./bin/opencode.cjs", "opencode2": "./bin/opencode2.cjs", @@ -180,7 +180,7 @@ }, "packages/client": { "name": "@opencode/client", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/protocol": "workspace:*", "@opencode/schema": "workspace:*", @@ -205,7 +205,7 @@ }, "packages/codemode": { "name": "@opencode/codemode", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -218,7 +218,7 @@ }, "packages/console/app": { "name": "@opencode/console-app", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -246,7 +246,7 @@ }, "packages/console/function": { "name": "@opencode/console-function", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/console-resource": "workspace:*", }, @@ -273,7 +273,7 @@ }, "packages/core": { "name": "@opencode/core", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@ai-sdk/cohere": "3.0.27", "@ai-sdk/perplexity": "3.0.26", @@ -339,7 +339,7 @@ }, "packages/desktop": { "name": "@opencode/desktop", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@zip.js/zip.js": "2.7.62", "electron-context-menu": "5.0.0", @@ -385,7 +385,7 @@ }, "packages/function": { "name": "@opencode/function", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -401,7 +401,7 @@ }, "packages/gui-extensions": { "name": "@opencode/gui-extensions", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@betteroffice/docx": "0.4.3", "@betteroffice/fonts": "0.4.0", @@ -450,7 +450,7 @@ }, "packages/http-recorder": { "name": "@opencode/http-recorder", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@effect/platform-node-shared": "catalog:", }, @@ -469,7 +469,7 @@ }, "packages/httpapi-codegen": { "name": "@opencode/httpapi-codegen", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "effect": "catalog:", "prettier": "3.6.2", @@ -482,7 +482,7 @@ }, "packages/latex": { "name": "@opencode/latex", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/plugin": "workspace:*", "@opentui/core": "catalog:", @@ -496,7 +496,7 @@ }, "packages/merman": { "name": "@opencode/merman", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/plugin": "workspace:*", "@opentui/core": "catalog:", @@ -511,7 +511,7 @@ }, "packages/plugin": { "name": "@opencode/plugin", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode/ai": "workspace:*", @@ -548,7 +548,7 @@ }, "packages/plugin-browser": { "name": "@opencode/plugin-browser", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/plugin": "workspace:*", "@opencode/schema": "workspace:*", @@ -563,7 +563,7 @@ }, "packages/plugins/figma": { "name": "@opencode/plugin-figma", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "gray-matter": "4.0.3", }, @@ -593,7 +593,7 @@ }, "packages/protocol": { "name": "@opencode/protocol", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/schema": "workspace:*", "effect": "catalog:", @@ -608,7 +608,7 @@ }, "packages/schema": { "name": "@opencode/schema", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@standard-schema/spec": "catalog:", "effect": "catalog:", @@ -632,7 +632,7 @@ }, "packages/sdk": { "name": "@opencode/sdk", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/client": "workspace:*", "@opencode/core": "workspace:*", @@ -653,7 +653,7 @@ }, "packages/server": { "name": "@opencode/server", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@effect/platform-node": "catalog:", "@effect/platform-node-shared": "catalog:", @@ -676,7 +676,7 @@ }, "packages/session-ui": { "name": "@opencode/session-ui", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@kobalte/core": "catalog:", "@opencode/client": "workspace:*", @@ -711,7 +711,7 @@ }, "packages/simulation": { "name": "@opencode/simulation", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/ai": "workspace:*", "@opencode/core": "workspace:*", @@ -731,7 +731,7 @@ }, "packages/stats/app": { "name": "@opencode/stats-app", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -758,7 +758,7 @@ }, "packages/stats/core": { "name": "@opencode/stats-core", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@planetscale/database": "1.19.0", "drizzle-orm": "catalog:", @@ -776,7 +776,7 @@ }, "packages/stats/server": { "name": "@opencode/stats-server", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@effect/platform-node": "catalog:", "@opencode/stats-core": "workspace:*", @@ -822,7 +822,7 @@ }, "packages/theme": { "name": "@opencode/theme", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opentui/core": "catalog:", "effect": "catalog:", @@ -836,7 +836,7 @@ }, "packages/tui": { "name": "@opencode/tui", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@opencode/client": "workspace:*", "@opencode/core": "workspace:*", @@ -870,7 +870,7 @@ }, "packages/ui": { "name": "@opencode/ui", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@kitlangton/solid-motion": "0.2.2", "@kobalte/core": "catalog:", @@ -906,7 +906,7 @@ }, "packages/util": { "name": "@opencode/util", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@effect/opentelemetry": "catalog:", "@effect/platform-node": "catalog:", @@ -944,7 +944,7 @@ }, "packages/web": { "name": "@opencode/web", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", @@ -998,7 +998,7 @@ }, "services/update": { "name": "@opencode/update", - "version": "2.0.31", + "version": "2.0.32", "dependencies": { "jose": "6.0.11", "semver": "catalog:", diff --git a/package.json b/package.json index ccda10b12fa..9e2f0a159ba 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/package.json", "name": "opencode", "description": "AI-powered development tool", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "packageManager": "bun@1.4.2", diff --git a/packages/ai/package.json b/packages/ai/package.json index 0938735c938..82cd6cd02ba 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "2.0.31", + "version": "2.0.32", "name": "@opencode/ai", "type": "module", "license": "MIT", diff --git a/packages/app/package.json b/packages/app/package.json index 8b10dec4155..bd84f414960 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/app", - "version": "2.0.31", + "version": "2.0.32", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index cd80f6ba311..fa062f5389a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cli", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 75c06a4d4c2..00b4303399c 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/client", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index e832def01a7..e2d01746fd0 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/codemode", - "version": "2.0.31", + "version": "2.0.32", "description": "Effect-native confined code execution over schema-described tools", "type": "module", "license": "MIT", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index 9baf2949ef0..3949b331d74 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/console-app", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 172a3481817..059a9cf8227 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/console-function", - "version": "2.0.31", + "version": "2.0.32", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/core/package.json b/packages/core/package.json index e79bcfa8029..f33c3c75eb5 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "2.0.31", + "version": "2.0.32", "name": "@opencode/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index f6ad833237a..096b558b2f3 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/desktop", "private": true, - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/function/package.json b/packages/function/package.json index 9d282546b1d..f3cc9c11806 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "2.0.31", + "version": "2.0.32", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/gui-extensions/package.json b/packages/gui-extensions/package.json index 2b1a3ad1e5c..1e78a79330f 100644 --- a/packages/gui-extensions/package.json +++ b/packages/gui-extensions/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/gui-extensions", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "license": "MIT", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index ae7192a8573..f8ea4031397 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "2.0.31", + "version": "2.0.32", "name": "@opencode/http-recorder", "description": "Record and replay Effect HTTP and WebSocket traffic with deterministic cassettes", "type": "module", diff --git a/packages/httpapi-codegen/package.json b/packages/httpapi-codegen/package.json index 7151dc96df2..55e7f2d9ead 100644 --- a/packages/httpapi-codegen/package.json +++ b/packages/httpapi-codegen/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/httpapi-codegen", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "exports": { diff --git a/packages/latex/package.json b/packages/latex/package.json index 366e4b4a4ec..1e0bea24daf 100644 --- a/packages/latex/package.json +++ b/packages/latex/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/latex", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "exports": { diff --git a/packages/merman/package.json b/packages/merman/package.json index d062ee21e2d..ec6f3fed01b 100644 --- a/packages/merman/package.json +++ b/packages/merman/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/merman", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "exports": { diff --git a/packages/plugin-browser/package.json b/packages/plugin-browser/package.json index 1a84ecf1775..c165f1493f1 100644 --- a/packages/plugin-browser/package.json +++ b/packages/plugin-browser/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/plugin-browser", - "version": "2.0.31", + "version": "2.0.32", "description": "OpenCode's desktop browser plugin", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 4b04e36d5b2..405824376f1 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/plugin", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/plugins/figma/package.json b/packages/plugins/figma/package.json index 45f5e793465..13b2a8bdfd4 100644 --- a/packages/plugins/figma/package.json +++ b/packages/plugins/figma/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/plugin-figma", - "version": "2.0.31", + "version": "2.0.32", "description": "Figma MCP integration and official Figma skills for OpenCode", "type": "module", "license": "MIT", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 13ccf080d1c..cd9c442c3e8 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/protocol", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/schema/package.json b/packages/schema/package.json index 191ec3e44fd..9e04984b2a4 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/schema", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e97d0e20732..456981c7870 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "2.0.31", + "version": "2.0.32", "name": "@opencode/sdk", "type": "module", "license": "MIT", diff --git a/packages/server/package.json b/packages/server/package.json index 42ce071e644..46446ee8a54 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/server", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 2152f7092db..6a7d4f65938 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/session-ui", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "license": "MIT", diff --git a/packages/simulation/package.json b/packages/simulation/package.json index 7c6b9194ac1..e7cc5d173ed 100644 --- a/packages/simulation/package.json +++ b/packages/simulation/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/simulation", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index 1f9fe5c66be..ad7ce3c6371 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/stats-app", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index d9a46561958..dd95176507f 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/stats-core", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index e4c7ab99b91..0a29c2f552b 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/stats-server", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "license": "MIT", diff --git a/packages/theme/package.json b/packages/theme/package.json index 345107a4354..c6ffdd993b5 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/theme", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/tui/package.json b/packages/tui/package.json index 032bb9ba864..951e21e1c7e 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/tui", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index 527b059f024..aee1b21851c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/ui", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/util/package.json b/packages/util/package.json index 3bc87ee2ce3..3127241fe3b 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/util", - "version": "2.0.31", + "version": "2.0.32", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index 5d92413e10b..783911cccba 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode/web", "type": "module", "license": "MIT", - "version": "2.0.31", + "version": "2.0.32", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 2bb4f47a483..c1c8f263ddb 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "2.0.31", + "version": "2.0.32", "publisher": "sst-dev", "repository": { "type": "git", diff --git a/services/update/package.json b/services/update/package.json index 802707f064d..e784b04b5b3 100644 --- a/services/update/package.json +++ b/services/update/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/update", - "version": "2.0.31", + "version": "2.0.32", "private": true, "type": "module", "scripts": {