From b04df6c0d2575a7f1242f7029dbb27bb424345a2 Mon Sep 17 00:00:00 2001 From: opencode Date: Fri, 19 Sep 2025 21:22:00 +0000 Subject: [PATCH 1/6] release: v0.10.3 --- bun.lock | 18 +++++++++--------- packages/app/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/scripts/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 12 files changed, 20 insertions(+), 20 deletions(-) diff --git a/bun.lock b/bun.lock index 4d03c250af..a8c11ce0bc 100644 --- a/bun.lock +++ b/bun.lock @@ -14,7 +14,7 @@ }, "packages/app": { "name": "@opencode/app", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@kobalte/core": "0.13.11", "@opencode-ai/sdk": "workspace:*", @@ -61,7 +61,7 @@ }, "packages/console/core": { "name": "@opencode/console-core", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@opencode/console-resource": "workspace:*", @@ -78,7 +78,7 @@ }, "packages/console/function": { "name": "@opencode/console-function", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@ai-sdk/anthropic": "2.0.0", "@ai-sdk/openai": "2.0.2", @@ -104,7 +104,7 @@ }, "packages/console/scripts": { "name": "@opencode/console-scripts", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@opencode/console-core": "workspace:*", "tsx": "4.20.5", @@ -116,7 +116,7 @@ }, "packages/function": { "name": "@opencode/function", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "22.0.0", @@ -131,7 +131,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "0.10.2", + "version": "0.10.3", "bin": { "opencode": "./bin/opencode", }, @@ -182,7 +182,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@opencode-ai/sdk": "workspace:*", "zod": "catalog:", @@ -194,7 +194,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@hey-api/openapi-ts": "0.81.0", }, @@ -206,7 +206,7 @@ }, "packages/web": { "name": "@opencode/web", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index 2c12734333..e4f95559f8 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/app", - "version": "0.10.2", + "version": "0.10.3", "description": "", "type": "module", "scripts": { diff --git a/packages/console/app/package.json b/packages/console/app/package.json index d5454c117e..a98e41ed32 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -7,7 +7,7 @@ "dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev", "build": "vinxi build && ../../opencode/script/schema.ts ./.output/public/config.json", "start": "vinxi start", - "version": "0.10.2" + "version": "0.10.3" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/packages/console/core/package.json b/packages/console/core/package.json index d9930ab16d..28e09aff93 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/console-core", - "version": "0.10.2", + "version": "0.10.3", "private": true, "type": "module", "dependencies": { diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 16cd685a4c..6bcb3267d7 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/console-function", - "version": "0.10.2", + "version": "0.10.3", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/scripts/package.json b/packages/console/scripts/package.json index a0cfc9f249..02efee6a13 100644 --- a/packages/console/scripts/package.json +++ b/packages/console/scripts/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/console-scripts", - "version": "0.10.2", + "version": "0.10.3", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index b00d3d91dc..cbc233ad47 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.10.2", + "version": "0.10.3", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 0f6c8f7a61..899f14a91c 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.10.2", + "version": "0.10.3", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 86122e6f37..6d124b1e2e 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.10.2", + "version": "0.10.3", "type": "module", "scripts": { "typecheck": "tsc --noEmit", diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 0323db28d0..3f3cd001e5 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.10.2", + "version": "0.10.3", "type": "module", "scripts": { "typecheck": "tsc --noEmit", diff --git a/packages/web/package.json b/packages/web/package.json index d20d76e261..ae60792bf6 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.10.2", + "version": "0.10.3", "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 262435494f..f063af26a7 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": "0.10.2", + "version": "0.10.3", "publisher": "sst-dev", "repository": { "type": "git", From 5acdd7058793f09dea4281a696359dd9281c7a63 Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 19 Sep 2025 20:13:55 -0400 Subject: [PATCH 2/6] docs: zen --- packages/web/src/content/docs/zen.mdx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index b43801b5a5..461751f394 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -81,7 +81,8 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Model | Input | Output | Cached Read | Cached Write | | ------------------------------- | ------ | ------ | ----------- | ------------ | | Qwen3 Coder 480B | $0.45 | $1.50 | - | - | -| Grok Code Fast 1 | Free | Free | Free | - | +| Grok Code Fast 1 | Free | Free | - | - | +| Code Supernova | Free | Free | - | - | | Claude Sonnet 4 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 | @@ -93,7 +94,10 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. Credit card fees are passed along at cost; we don’t charge anything beyond that. ::: -Grok Code Fast 1 is currently free on opencode for a limited time. The xAI team is using this time to collect feedback and improve Grok Code. +The free models: + +- Grok Code Fast 1 is currently free on opencode for a limited time. The xAI team is using this time to collect feedback and improve Grok Code. +- Code Supernova is a stealth model that's free on opencode for a limited time. The team is using this time to collect feedback and improve the model. :::tip Subscription plans and a free tier are coming soon. @@ -108,6 +112,8 @@ Subscription plans and a free tier are coming soon. All our models are hosted in the US. Our providers follow a zero-retention policy and do not use your data for model training, with the following exceptions: - Grok Code Fast 1: During its free period, collected data may be used to improve Grok Code. +- Code Supernova: During its free period, collected data may be used to improve + the model. - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: Requests are retained for 30 days in accordance with [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). From d63ce40af27194dd584e6499dbad5b17c9d7cab3 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sat, 20 Sep 2025 03:15:44 -0500 Subject: [PATCH 3/6] fix: no payment method (#2706) --- .../console/app/src/routes/zen/handler.ts | 47 ++++++++++++------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/packages/console/app/src/routes/zen/handler.ts b/packages/console/app/src/routes/zen/handler.ts index a60abeb70c..09b5ca06ae 100644 --- a/packages/console/app/src/routes/zen/handler.ts +++ b/packages/console/app/src/routes/zen/handler.ts @@ -88,6 +88,7 @@ export async function handler( const authInfo = await authenticate() const modelInfo = validateModel(body.model, authInfo) const providerInfo = selectProvider(modelInfo, authInfo) + if (authInfo && !providerInfo.allowAnonymous) validateBilling(authInfo) logger.metric({ provider: providerInfo.id }) // Request to model provider @@ -250,33 +251,43 @@ export async function handler( }) const isFree = FREE_WORKSPACES.includes(data.workspaceID) - if (!isFree) { - if (!data.paymentMethodID) throw new CreditsError("No payment method") - if (data.balance <= 0) throw new CreditsError("Insufficient balance") - if ( - data.monthlyLimit && - data.monthlyUsage && - data.timeMonthlyUsageUpdated && - data.monthlyUsage >= centsToMicroCents(data.monthlyLimit * 100) - ) { - const now = new Date() - const currentYear = now.getUTCFullYear() - const currentMonth = now.getUTCMonth() - const dateYear = data.timeMonthlyUsageUpdated.getUTCFullYear() - const dateMonth = data.timeMonthlyUsageUpdated.getUTCMonth() - if (currentYear === dateYear && currentMonth === dateMonth) - throw new MonthlyLimitError(`You have reached your monthly spending limit of $${data.monthlyLimit}.`) - } - } return { apiKeyId: data.apiKey, workspaceID: data.workspaceID, dataShare: data.dataShare, + billing: { + paymentMethodID: data.paymentMethodID, + balance: data.balance, + monthlyLimit: data.monthlyLimit, + monthlyUsage: data.monthlyUsage, + timeMonthlyUsageUpdated: data.timeMonthlyUsageUpdated, + }, isFree, } } + function validateBilling(authInfo: Awaited>) { + if (!authInfo || authInfo.isFree) return + const billing = authInfo.billing + if (!billing.paymentMethodID) throw new CreditsError("No payment method") + if (billing.balance <= 0) throw new CreditsError("Insufficient balance") + if ( + billing.monthlyLimit && + billing.monthlyUsage && + billing.timeMonthlyUsageUpdated && + billing.monthlyUsage >= centsToMicroCents(billing.monthlyLimit * 100) + ) { + const now = new Date() + const currentYear = now.getUTCFullYear() + const currentMonth = now.getUTCMonth() + const dateYear = billing.timeMonthlyUsageUpdated.getUTCFullYear() + const dateMonth = billing.timeMonthlyUsageUpdated.getUTCMonth() + if (currentYear === dateYear && currentMonth === dateMonth) + throw new MonthlyLimitError(`You have reached your monthly spending limit of $${billing.monthlyLimit}.`) + } + } + function validateModel(reqModel: string, authInfo: Awaited>) { const json = JSON.parse(Resource.ZEN_MODELS.value) From f8528c52d90312386d1909c8f9536dc1c8e734c8 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 20 Sep 2025 12:04:03 +0000 Subject: [PATCH 4/6] ignore: update download stats 2025-09-20 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index ba028e5a33..60bc9b7008 100644 --- a/STATS.md +++ b/STATS.md @@ -84,3 +84,4 @@ | 2025-09-17 | 351,117 (+8,508) | 260,970 (+5,706) | 612,087 (+14,214) | | 2025-09-18 | 358,717 (+7,600) | 266,922 (+5,952) | 625,639 (+13,552) | | 2025-09-19 | 365,401 (+6,684) | 271,859 (+4,937) | 637,260 (+11,621) | +| 2025-09-20 | 372,092 (+6,691) | 276,917 (+5,058) | 649,009 (+11,749) | From 9223b6ed8fb3022fec51720dd55cfadd0b484bfd Mon Sep 17 00:00:00 2001 From: Osinachi Okpara Date: Sat, 20 Sep 2025 17:25:12 +0100 Subject: [PATCH 5/6] Enhance theme documentation with links (#2707) Co-authored-by: rekram1-node --- packages/web/src/content/docs/themes.mdx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/web/src/content/docs/themes.mdx b/packages/web/src/content/docs/themes.mdx index 3defceaeae..0a2a62517e 100644 --- a/packages/web/src/content/docs/themes.mdx +++ b/packages/web/src/content/docs/themes.mdx @@ -25,18 +25,18 @@ Without truecolor support, themes may appear with reduced color accuracy or fall opencode comes with several built-in themes. -| Name | Description | -| ------------ | ------------------------------------------ | -| `system` | Adapts to your terminal's background color | -| `tokyonight` | Based on the Tokyonight theme | -| `everforest` | Based on the Everforest theme | -| `ayu` | Based on the Ayu dark theme | -| `catppuccin` | Based on the Catppuccin theme | -| `gruvbox` | Based on the Gruvbox theme | -| `kanagawa` | Based on the Kanagawa theme | -| `nord` | Based on the Nord theme | -| `matrix` | Hacker-style green on black theme | -| `one-dark` | Based on the Atom One Dark theme | +| Name | Description | +| ------------ | ---------------------------------------------------------------------------- | +| `system` | Adapts to your terminal's background color | +| `tokyonight` | Based on the [Tokyonight](https://github.com/folke/tokyonight.nvim) theme | +| `everforest` | Based on the [Everforest](https://github.com/sainnhe/everforest) theme | +| `ayu` | Based on the [Ayu](https://github.com/ayu-theme) dark theme | +| `catppuccin` | Based on the [Catppuccin](https://github.com/catppuccin) theme | +| `gruvbox` | Based on the [Gruvbox](https://github.com/morhetz/gruvbox) theme | +| `kanagawa` | Based on the [Kanagawa](https://github.com/rebelot/kanagawa.nvim) theme | +| `nord` | Based on the [Nord](https://github.com/nordtheme/nord) theme | +| `matrix` | Hacker-style green on black theme | +| `one-dark` | Based on the [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark theme | And more, we are constantly adding new themes. From 38ea0fc051abf5c55eb11778bc4e76667247a836 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 20 Sep 2025 18:52:30 -0400 Subject: [PATCH 6/6] turn back on compaction summaries --- packages/tui/internal/components/chat/messages.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index 0ef0169f20..6352dbc747 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -478,9 +478,6 @@ func (m *messagesComponent) renderView() tea.Cmd { } case opencode.AssistantMessage: - if casted.Summary { - continue - } if casted.ID == m.app.Session.Revert.MessageID { reverted = true revertedMessageCount = 1