From 80d1c628181ecf0254d1b60d2930b0ac007eb333 Mon Sep 17 00:00:00 2001
From: arc-source-coder <241987201+arc-source-coder@users.noreply.github.com>
Date: Wed, 10 Dec 2025 16:27:59 +0000
Subject: [PATCH 01/13] tui: only show active MCP server count (#5327)
---
packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx
index e889373e6f..69082c870b 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx
@@ -10,7 +10,7 @@ export function Footer() {
const { theme } = useTheme()
const sync = useSync()
const route = useRoute()
- const mcp = createMemo(() => Object.keys(sync.data.mcp))
+ const mcp = createMemo(() => Object.values(sync.data.mcp).filter((x) => x.status === "connected").length)
const mcpError = createMemo(() => Object.values(sync.data.mcp).some((x) => x.status === "failed"))
const lsp = createMemo(() => Object.keys(sync.data.lsp))
const permissions = createMemo(() => {
@@ -66,7 +66,7 @@ export function Footer() {
• {lsp().length} LSP
-
+
@@ -76,7 +76,7 @@ export function Footer() {
⊙
- {mcp().length} MCP
+ {mcp()} MCP
/status
From 744a7159e47a62924fb0dd64ecc2f95dfe804fc6 Mon Sep 17 00:00:00 2001
From: Frank
Date: Wed, 10 Dec 2025 11:44:37 -0500
Subject: [PATCH 02/13] zen: sync
---
packages/console/app/src/routes/zen/util/handler.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index e34704f98e..7d7767b8df 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -588,7 +588,7 @@ export async function handler(
tx
.update(KeyTable)
.set({ timeUsed: sql`now()` })
- .where(eq(KeyTable.id, authInfo.apiKeyId)),
+ .where(and(eq(KeyTable.workspaceID, authInfo.workspaceID), eq(KeyTable.id, authInfo.apiKeyId))),
)
}
From cfa13df3466cf03d9211e97e687de497c1858fd0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?No=C3=A8?=
Date: Wed, 10 Dec 2025 16:50:12 +0000
Subject: [PATCH 03/13] docs: Added opencode-antigravity-auth to ecosystem
documentation (#5303)
---
packages/web/src/content/docs/ecosystem.mdx | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/web/src/content/docs/ecosystem.mdx b/packages/web/src/content/docs/ecosystem.mdx
index c73d53fe2e..9fc8362cd3 100644
--- a/packages/web/src/content/docs/ecosystem.mdx
+++ b/packages/web/src/content/docs/ecosystem.mdx
@@ -20,6 +20,7 @@ You can also check out [awesome-opencode](https://github.com/awesome-opencode/aw
| [opencode-skills](https://github.com/malhashemi/opencode-skills) | Manage and organize OpenCode skills and capabilities |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Use your ChatGPT Plus/Pro subscription instead of API credits |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Use your existing Gemini plan instead of API billing |
+| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
---
From 6b93d23642b409caf6ac073845c24acea3397bc9 Mon Sep 17 00:00:00 2001
From: GitHub Action
Date: Wed, 10 Dec 2025 16:50:49 +0000
Subject: [PATCH 04/13] chore: format code
---
packages/web/src/content/docs/ecosystem.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/web/src/content/docs/ecosystem.mdx b/packages/web/src/content/docs/ecosystem.mdx
index 9fc8362cd3..d665fb220d 100644
--- a/packages/web/src/content/docs/ecosystem.mdx
+++ b/packages/web/src/content/docs/ecosystem.mdx
@@ -20,7 +20,7 @@ You can also check out [awesome-opencode](https://github.com/awesome-opencode/aw
| [opencode-skills](https://github.com/malhashemi/opencode-skills) | Manage and organize OpenCode skills and capabilities |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Use your ChatGPT Plus/Pro subscription instead of API credits |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Use your existing Gemini plan instead of API billing |
-| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
+| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
---
From ae60f41adf00c568153b08511725fbd92a9e6f53 Mon Sep 17 00:00:00 2001
From: Matt Silverlock
Date: Wed, 10 Dec 2025 11:52:58 -0500
Subject: [PATCH 05/13] themes: update orng theme (#5329)
---
.../src/cli/cmd/tui/context/theme/orng.json | 32 +++++++++----------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/packages/opencode/src/cli/cmd/tui/context/theme/orng.json b/packages/opencode/src/cli/cmd/tui/context/theme/orng.json
index 407016ac5b..1228f102f3 100644
--- a/packages/opencode/src/cli/cmd/tui/context/theme/orng.json
+++ b/packages/opencode/src/cli/cmd/tui/context/theme/orng.json
@@ -17,7 +17,7 @@
"darkAccent": "#FFF7F1",
"darkRed": "#e06c75",
"darkOrange": "#EC5B2B",
- "darkGreen": "#7fd88f",
+ "darkBlue": "#6ba1e6",
"darkCyan": "#56b6c2",
"darkYellow": "#e5c07b",
"lightStep1": "#ffffff",
@@ -36,7 +36,7 @@
"lightAccent": "#c94d24",
"lightRed": "#d1383d",
"lightOrange": "#EC5B2B",
- "lightGreen": "#3d9a57",
+ "lightBlue": "#0062d1",
"lightCyan": "#318795",
"lightYellow": "#b0851f"
},
@@ -62,8 +62,8 @@
"light": "lightOrange"
},
"success": {
- "dark": "darkGreen",
- "light": "lightGreen"
+ "dark": "darkBlue",
+ "light": "lightBlue"
},
"info": {
"dark": "darkCyan",
@@ -102,8 +102,8 @@
"light": "lightStep6"
},
"diffAdded": {
- "dark": "#4fd6be",
- "light": "#1e725c"
+ "dark": "#6ba1e6",
+ "light": "#0062d1"
},
"diffRemoved": {
"dark": "#c53b53",
@@ -118,16 +118,16 @@
"light": "#7086b5"
},
"diffHighlightAdded": {
- "dark": "#b8db87",
- "light": "#4db380"
+ "dark": "#6ba1e6",
+ "light": "#0062d1"
},
"diffHighlightRemoved": {
"dark": "#e26a75",
"light": "#f52a65"
},
"diffAddedBg": {
- "dark": "#20303b",
- "light": "#d5e5d5"
+ "dark": "#1a2a3d",
+ "light": "#e0edfa"
},
"diffRemovedBg": {
"dark": "#37222c",
@@ -142,8 +142,8 @@
"light": "lightStep3"
},
"diffAddedLineNumberBg": {
- "dark": "#1b2b34",
- "light": "#c5d5c5"
+ "dark": "#162535",
+ "light": "#d0e5f5"
},
"diffRemovedLineNumberBg": {
"dark": "#2d1f26",
@@ -166,8 +166,8 @@
"light": "lightCyan"
},
"markdownCode": {
- "dark": "darkGreen",
- "light": "lightGreen"
+ "dark": "darkBlue",
+ "light": "lightBlue"
},
"markdownBlockQuote": {
"dark": "#FFF7F1",
@@ -222,8 +222,8 @@
"light": "lightRed"
},
"syntaxString": {
- "dark": "darkGreen",
- "light": "lightGreen"
+ "dark": "darkBlue",
+ "light": "lightBlue"
},
"syntaxNumber": {
"dark": "#FFF7F1",
From 946e4f0a610ed873050bdc8a4ebad068240c943b Mon Sep 17 00:00:00 2001
From: Stanislas
Date: Wed, 10 Dec 2025 17:54:45 +0100
Subject: [PATCH 06/13] docs: add wakatime plugin to ecosystem page (#5326)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
packages/web/src/content/docs/ecosystem.mdx | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/web/src/content/docs/ecosystem.mdx b/packages/web/src/content/docs/ecosystem.mdx
index d665fb220d..44c9f4cce2 100644
--- a/packages/web/src/content/docs/ecosystem.mdx
+++ b/packages/web/src/content/docs/ecosystem.mdx
@@ -22,6 +22,7 @@ You can also check out [awesome-opencode](https://github.com/awesome-opencode/aw
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Use your existing Gemini plan instead of API billing |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
+| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Track OpenCode usage with Wakatime |
---
From 1835d7526fba897ab00a32574189bb54e3d8f831 Mon Sep 17 00:00:00 2001
From: GitHub Action
Date: Wed, 10 Dec 2025 16:55:19 +0000
Subject: [PATCH 07/13] chore: format code
---
packages/web/src/content/docs/ecosystem.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/web/src/content/docs/ecosystem.mdx b/packages/web/src/content/docs/ecosystem.mdx
index 44c9f4cce2..24fbc7b012 100644
--- a/packages/web/src/content/docs/ecosystem.mdx
+++ b/packages/web/src/content/docs/ecosystem.mdx
@@ -22,7 +22,7 @@ You can also check out [awesome-opencode](https://github.com/awesome-opencode/aw
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Use your existing Gemini plan instead of API billing |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
-| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Track OpenCode usage with Wakatime |
+| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Track OpenCode usage with Wakatime |
---
From 36a9be040bd29887e7b0f330cd380393489d8872 Mon Sep 17 00:00:00 2001
From: Nick <105120312+nick-vi@users.noreply.github.com>
Date: Wed, 10 Dec 2025 20:31:44 +0200
Subject: [PATCH 08/13] docs: add opencode-type-inject to ecosystem plugins
(#5331)
---
packages/web/src/content/docs/ecosystem.mdx | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/web/src/content/docs/ecosystem.mdx b/packages/web/src/content/docs/ecosystem.mdx
index 24fbc7b012..9304229b2c 100644
--- a/packages/web/src/content/docs/ecosystem.mdx
+++ b/packages/web/src/content/docs/ecosystem.mdx
@@ -18,6 +18,7 @@ You can also check out [awesome-opencode](https://github.com/awesome-opencode/aw
| Name | Description |
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [opencode-skills](https://github.com/malhashemi/opencode-skills) | Manage and organize OpenCode skills and capabilities |
+| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Auto-inject TypeScript/Svelte types into file reads with lookup tools |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Use your ChatGPT Plus/Pro subscription instead of API credits |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Use your existing Gemini plan instead of API billing |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
From faf443132f815109297f00160c11a72365cb3d63 Mon Sep 17 00:00:00 2001
From: GitHub Action
Date: Wed, 10 Dec 2025 18:32:21 +0000
Subject: [PATCH 09/13] chore: format code
---
packages/web/src/content/docs/ecosystem.mdx | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/packages/web/src/content/docs/ecosystem.mdx b/packages/web/src/content/docs/ecosystem.mdx
index 9304229b2c..845ac63330 100644
--- a/packages/web/src/content/docs/ecosystem.mdx
+++ b/packages/web/src/content/docs/ecosystem.mdx
@@ -15,15 +15,15 @@ You can also check out [awesome-opencode](https://github.com/awesome-opencode/aw
## Plugins
-| Name | Description |
-| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
-| [opencode-skills](https://github.com/malhashemi/opencode-skills) | Manage and organize OpenCode skills and capabilities |
+| Name | Description |
+| ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
+| [opencode-skills](https://github.com/malhashemi/opencode-skills) | Manage and organize OpenCode skills and capabilities |
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Auto-inject TypeScript/Svelte types into file reads with lookup tools |
-| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Use your ChatGPT Plus/Pro subscription instead of API credits |
-| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Use your existing Gemini plan instead of API billing |
-| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
-| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
-| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Track OpenCode usage with Wakatime |
+| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Use your ChatGPT Plus/Pro subscription instead of API credits |
+| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Use your existing Gemini plan instead of API billing |
+| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Use Antigravity's free models instead of API billing |
+| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
+| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Track OpenCode usage with Wakatime |
---
From 388156704a73cc1467741cd6cf8cd65752528f1b Mon Sep 17 00:00:00 2001
From: Dax Raad
Date: Wed, 10 Dec 2025 13:49:45 -0500
Subject: [PATCH 10/13] fix /provider endpoint to return loaded providers
---
packages/opencode/src/server/server.ts | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts
index e1e3367c6b..6af1b49032 100644
--- a/packages/opencode/src/server/server.ts
+++ b/packages/opencode/src/server/server.ts
@@ -1460,12 +1460,15 @@ export namespace Server {
}
}
- const providers = mapValues(filteredProviders, (x) => Provider.fromModelsDevProvider(x))
- const connected = await Provider.list().then((x) => Object.keys(x))
+ const connected = await Provider.list()
+ const providers = Object.assign(
+ mapValues(filteredProviders, (x) => Provider.fromModelsDevProvider(x)),
+ connected,
+ )
return c.json({
all: Object.values(providers),
default: mapValues(providers, (item) => Provider.sort(Object.values(item.models))[0].id),
- connected,
+ connected: Object.keys(connected),
})
},
)
From 117de64f399164880c734ffde52bc3ef54381918 Mon Sep 17 00:00:00 2001
From: Tom Aylott
Date: Wed, 10 Dec 2025 14:02:26 -0500
Subject: [PATCH 11/13] fix: upgrade OpenRouter sdk pkg (#5302)
Co-authored-by: Aiden Cline
---
bun.lock | 4 ++--
packages/opencode/package.json | 2 +-
packages/opencode/src/provider/transform.ts | 8 ++++----
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/bun.lock b/bun.lock
index 84b406039f..1652adb3ee 100644
--- a/bun.lock
+++ b/bun.lock
@@ -241,7 +241,7 @@
"@opencode-ai/script": "workspace:*",
"@opencode-ai/sdk": "workspace:*",
"@opencode-ai/util": "workspace:*",
- "@openrouter/ai-sdk-provider": "1.2.8",
+ "@openrouter/ai-sdk-provider": "1.5.2",
"@opentui/core": "0.1.60",
"@opentui/solid": "0.1.60",
"@parcel/watcher": "2.5.1",
@@ -1141,7 +1141,7 @@
"@opencode-ai/web": ["@opencode-ai/web@workspace:packages/web"],
- "@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@1.2.8", "", { "dependencies": { "@openrouter/sdk": "^0.1.8" }, "peerDependencies": { "ai": "^5.0.0", "zod": "^3.24.1 || ^v4" } }, "sha512-pQT8AzZBKg9f4bkt4doF486ZlhK0XjKkevrLkiqYgfh1Jplovieu28nK4Y+xy3sF18/mxjqh9/2y6jh01qzLrA=="],
+ "@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@1.5.2", "", { "dependencies": { "@openrouter/sdk": "^0.1.27" }, "peerDependencies": { "@toon-format/toon": "^2.0.0", "ai": "^5.0.0", "zod": "^3.24.1 || ^v4" }, "optionalPeers": ["@toon-format/toon"] }, "sha512-3Th0vmJ9pjnwcPc2H1f59Mb0LFvwaREZAScfOQIpUxAHjZ7ZawVKDP27qgsteZPmMYqccNMy4r4Y3kgUnNcKAg=="],
"@openrouter/sdk": ["@openrouter/sdk@0.1.27", "", { "dependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-RH//L10bSmc81q25zAZudiI4kNkLgxF2E+WU42vghp3N6TEvZ6F0jK7uT3tOxkEn91gzmMw9YVmDENy7SJsajQ=="],
diff --git a/packages/opencode/package.json b/packages/opencode/package.json
index 302d8fc9f3..ae6df98c18 100644
--- a/packages/opencode/package.json
+++ b/packages/opencode/package.json
@@ -70,7 +70,7 @@
"@opencode-ai/script": "workspace:*",
"@opencode-ai/sdk": "workspace:*",
"@opencode-ai/util": "workspace:*",
- "@openrouter/ai-sdk-provider": "1.2.8",
+ "@openrouter/ai-sdk-provider": "1.5.2",
"@opentui/core": "0.1.60",
"@opentui/solid": "0.1.60",
"@parcel/watcher": "2.5.1",
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts
index 891025cde4..78a05e104c 100644
--- a/packages/opencode/src/provider/transform.ts
+++ b/packages/opencode/src/provider/transform.ts
@@ -223,10 +223,10 @@ export namespace ProviderTransform {
result["promptCacheKey"] = sessionID
}
- if (
- model.providerID === "google" ||
- (model.providerID.startsWith("opencode") && model.api.id.includes("gemini-3"))
- ) {
+ if (model.api.npm === "@openrouter/ai-sdk-provider" && model.api.id.includes("gemini-3")) {
+ result["reasoning"] = { effort: "high" }
+ }
+ if (model.api.npm === "@ai-sdk/google" || model.api.npm === "@ai-sdk/google-vertex") {
result["thinkingConfig"] = {
includeThoughts: true,
}
From 15880195a2b3828732417076cc8ddfc24ec6830c Mon Sep 17 00:00:00 2001
From: Github Action
Date: Wed, 10 Dec 2025 19:04:03 +0000
Subject: [PATCH 12/13] Update Nix flake.lock and hashes
---
nix/hashes.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nix/hashes.json b/nix/hashes.json
index a6a28f5a71..a9117fa856 100644
--- a/nix/hashes.json
+++ b/nix/hashes.json
@@ -1,3 +1,3 @@
{
- "nodeModules": "sha256-pwjePZClFKDhDr5xrTNCBlO0xTwxLQYiQYaIEd0FdQQ="
+ "nodeModules": "sha256-JT8J+Nd2kk0x46BcyotmBbM39tuKOW7VzXfOV3R3sqQ="
}
From 59c5da9b6c0503bb157de32ee0e8091afaaed399 Mon Sep 17 00:00:00 2001
From: Aiden Cline
Date: Wed, 10 Dec 2025 13:09:27 -0600
Subject: [PATCH 13/13] tweak: set gemini thinkingLevel to high by default
---
packages/opencode/src/provider/transform.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts
index 78a05e104c..6ad033a2c3 100644
--- a/packages/opencode/src/provider/transform.ts
+++ b/packages/opencode/src/provider/transform.ts
@@ -228,6 +228,7 @@ export namespace ProviderTransform {
}
if (model.api.npm === "@ai-sdk/google" || model.api.npm === "@ai-sdk/google-vertex") {
result["thinkingConfig"] = {
+ thinkingLevel: "high",
includeThoughts: true,
}
}