From d587a4b43fa930a74d4519e26dd0398a85d115b3 Mon Sep 17 00:00:00 2001 From: chilung Date: Sat, 22 Aug 2026 07:51:56 +0000 Subject: [PATCH 1/3] fix(catalog): exclude uncallable OpenCode Go and Zen models (closes #2330) --- src/codex/catalog/parsing.ts | 5 +++++ tests/codex-catalog.test.ts | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/src/codex/catalog/parsing.ts b/src/codex/catalog/parsing.ts index a2a1c86c7c..325625ab9c 100644 --- a/src/codex/catalog/parsing.ts +++ b/src/codex/catalog/parsing.ts @@ -149,6 +149,11 @@ export const JAWCODE_CATALOG_AUGMENT_PROVIDERS = new Set(["opencode-go", "deepse export const ROUTED_MODEL_COMPATIBILITY_EXCLUSIONS = new Set([ // Issue #82: Zen Go /models advertises HY3, but Console Go rejects it as outside the lite list. "opencode-go/hy3-preview", + // Issue #2330: OpenCode Go/Zen models absent from current documentation or returning terminal HTTP 400/401 errors. + "opencode-go/grok-4.6", + "opencode-go/mimo-v2-omni", + "opencode-go/mimo-v2-pro", + "opencode-free/deepseek-v4-flash-free", ]); export function isRoutedModelCompatibilityExcluded(slug: string): boolean { diff --git a/tests/codex-catalog.test.ts b/tests/codex-catalog.test.ts index d41daa58ad..e5cde0e40f 100644 --- a/tests/codex-catalog.test.ts +++ b/tests/codex-catalog.test.ts @@ -5319,6 +5319,13 @@ describe("shouldExposeRoutedModel — Gemini image-capable exemption", () => { test("still filters compatibility-excluded slugs", () => { expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "hy3-preview" })).toBe(false); + // Issue #2330: uncallable or stale OpenCode Go/Zen models + expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "grok-4.6" })).toBe(false); + expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "mimo-v2-omni" })).toBe(false); + expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "mimo-v2-pro" })).toBe(false); + expect(shouldExposeRoutedModel({ provider: "opencode-free", id: "deepseek-v4-flash-free" })).toBe(false); + // Control: valid models are exposed + expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "glm-5.2" })).toBe(true); }); }); From e5c83067dbcfa84ee0e41e0ac97cc7c1d649d436 Mon Sep 17 00:00:00 2001 From: chilung Date: Sat, 22 Aug 2026 08:42:13 +0000 Subject: [PATCH 2/3] fix(catalog): retain opencode-go/grok-4.6 in exposed models (#2330) --- src/codex/catalog/parsing.ts | 3 +-- tests/codex-catalog.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/codex/catalog/parsing.ts b/src/codex/catalog/parsing.ts index 325625ab9c..f539afa4db 100644 --- a/src/codex/catalog/parsing.ts +++ b/src/codex/catalog/parsing.ts @@ -149,8 +149,7 @@ export const JAWCODE_CATALOG_AUGMENT_PROVIDERS = new Set(["opencode-go", "deepse export const ROUTED_MODEL_COMPATIBILITY_EXCLUSIONS = new Set([ // Issue #82: Zen Go /models advertises HY3, but Console Go rejects it as outside the lite list. "opencode-go/hy3-preview", - // Issue #2330: OpenCode Go/Zen models absent from current documentation or returning terminal HTTP 400/401 errors. - "opencode-go/grok-4.6", + // Issue #2330: OpenCode Go/Zen models absent from current documentation or returning terminal HTTP 400 errors. "opencode-go/mimo-v2-omni", "opencode-go/mimo-v2-pro", "opencode-free/deepseek-v4-flash-free", diff --git a/tests/codex-catalog.test.ts b/tests/codex-catalog.test.ts index e5cde0e40f..a2fd01e29f 100644 --- a/tests/codex-catalog.test.ts +++ b/tests/codex-catalog.test.ts @@ -5320,11 +5320,11 @@ describe("shouldExposeRoutedModel — Gemini image-capable exemption", () => { test("still filters compatibility-excluded slugs", () => { expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "hy3-preview" })).toBe(false); // Issue #2330: uncallable or stale OpenCode Go/Zen models - expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "grok-4.6" })).toBe(false); expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "mimo-v2-omni" })).toBe(false); expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "mimo-v2-pro" })).toBe(false); expect(shouldExposeRoutedModel({ provider: "opencode-free", id: "deepseek-v4-flash-free" })).toBe(false); - // Control: valid models are exposed + // Control / live models are exposed (grok-4.6 remains live) + expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "grok-4.6" })).toBe(true); expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "glm-5.2" })).toBe(true); }); }); From e2424f33cc92f9d21c902ab612e6563996eb1a85 Mon Sep 17 00:00:00 2001 From: chilung Date: Sat, 22 Aug 2026 09:50:45 +0000 Subject: [PATCH 3/3] fix(catalog): keep opencode-free/deepseek-v4-flash-free exposed and prune stale thinking toggle models (#2330) --- src/codex/catalog/parsing.ts | 3 +-- src/providers/registry.ts | 2 +- tests/codex-catalog.test.ts | 6 +++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/codex/catalog/parsing.ts b/src/codex/catalog/parsing.ts index f539afa4db..74353197f7 100644 --- a/src/codex/catalog/parsing.ts +++ b/src/codex/catalog/parsing.ts @@ -149,10 +149,9 @@ export const JAWCODE_CATALOG_AUGMENT_PROVIDERS = new Set(["opencode-go", "deepse export const ROUTED_MODEL_COMPATIBILITY_EXCLUSIONS = new Set([ // Issue #82: Zen Go /models advertises HY3, but Console Go rejects it as outside the lite list. "opencode-go/hy3-preview", - // Issue #2330: OpenCode Go/Zen models absent from current documentation or returning terminal HTTP 400 errors. + // Issue #2330: OpenCode Go models absent from current documentation or returning terminal HTTP 400 errors. "opencode-go/mimo-v2-omni", "opencode-go/mimo-v2-pro", - "opencode-free/deepseek-v4-flash-free", ]); export function isRoutedModelCompatibilityExcluded(slug: string): boolean { diff --git a/src/providers/registry.ts b/src/providers/registry.ts index 3fa208456f..9fda85ba63 100644 --- a/src/providers/registry.ts +++ b/src/providers/registry.ts @@ -442,7 +442,7 @@ const THINKING_TOGGLE_MAP: Record = { max: "enabled", }; const OPENCODE_GO_THINKING_TOGGLE_MODELS = [ - "mimo-v2.5", "mimo-v2.5-pro", "mimo-v2-omni", "mimo-v2-pro", "glm-5", "glm-5.1", + "mimo-v2.5", "mimo-v2.5-pro", "glm-5", "glm-5.1", ]; /** * Zhipu's domestic BigModel platform. Text families first, then the vision member: modalities are diff --git a/tests/codex-catalog.test.ts b/tests/codex-catalog.test.ts index a2fd01e29f..f4e8bca863 100644 --- a/tests/codex-catalog.test.ts +++ b/tests/codex-catalog.test.ts @@ -5319,11 +5319,11 @@ describe("shouldExposeRoutedModel — Gemini image-capable exemption", () => { test("still filters compatibility-excluded slugs", () => { expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "hy3-preview" })).toBe(false); - // Issue #2330: uncallable or stale OpenCode Go/Zen models + // Issue #2330: uncallable or stale OpenCode Go models expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "mimo-v2-omni" })).toBe(false); expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "mimo-v2-pro" })).toBe(false); - expect(shouldExposeRoutedModel({ provider: "opencode-free", id: "deepseek-v4-flash-free" })).toBe(false); - // Control / live models are exposed (grok-4.6 remains live) + // Control / live models are exposed + expect(shouldExposeRoutedModel({ provider: "opencode-free", id: "deepseek-v4-flash-free" })).toBe(true); expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "grok-4.6" })).toBe(true); expect(shouldExposeRoutedModel({ provider: "opencode-go", id: "glm-5.2" })).toBe(true); });