You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
2.2.11 - 2026-10-20
Fix — Go accounts on OpenCode v2 reach the legacy transport again. models.dev
added a first-class commandcode catalog entry on 2026-10-16, and the v2 host's
built-in catalog plugin applies it before user plugins: the provider draft
arrives with package: "@ai-sdk/openai-compatible" and settings.baseURL: "https://api.commandcode.ai/provider/v1". registerProvider only claimed a
provider whose package was still the empty seed, so the plugin silently
stepped out of the request path — the aisdk: specifier was never installed and
every turn went through the host's own OpenAI-compatible client against the
Provider API, which refuses the Go plan with a raw 403 "Your Go plan doesn't include API access. Upgrade to Provider or higher …". The plan-gate flip to the
legacy /alpha/generate transport — the only route that serves Go — could not
run either, because the plugin was no longer in the path. A catalog entry is not
an owner: the claim now gates on the aisdk: prefix, takes over the catalog's baseURL, and strips the model-level Anthropic packages it adds
(#304, #305). The
release also lands the catalog refreshed on 2026-10-20: membership is unchanged
at 92 models on command-code@1.84.0, and the deals catalog drops stealth/cat-jam:free's row and cuts z-ai/glm-5.3-flash's allowance.
Fixes
The provider is claimed when models.dev pre-seeds it, so Go accounts reach
the legacy transport again
(#304, #305): the
empty-seed check (provider.package === "") cannot tell a first-run draft
from a catalog entry that already carries a package, and the catalog's @ai-sdk/openai-compatible is not a claim on the SDK — only an aisdk:
specifier is. registerProvider now claims any provider that is not already aisdk:, rewrites settings.baseURL from the catalog's Provider API root
(…/provider/v1, which the transport would otherwise append to again) back to
the bare host, and clears the catalog's model-level @ai-sdk/anthropic
package so Claude models route through the plugin too. A user-declared aisdk: package still wins, and tests/plugin-v2.test.ts pins the
catalog-seeded draft, the baseURL takeover, and the package stripping.
Model catalog
Membership unchanged at 92 models on command-code@1.84.0; no cost, effort or
modality changes. Only the FACTS_LAST_REFRESHED stamp moved to 2026-10-20.
minimax/minimax-m3.1-flash and minimax/minimax-m3.1-flash:free appear on
the docs pages and the listing API but not in the package's models.md, so
both stay docs-ahead and unpinned; the models-page slug map reports 16 pending
rows (up from 14). reflection/beam:free remains a listing-API-only
divergence note.
Reasoning classification
92 entries, unchanged; the CLASSIFICATION_LAST_REFRESHED stamp moved to
2026-10-20.
Deals catalog
stealth/cat-jam:free left the pricing table while remaining in package
membership: its deal row is dropped and the model now ships core-only with a
pending report (91/92 snapshot models covered).
z-ai/glm-5.3-flash allowance cut from goat 100 / pro 100 to goat 80 / pro 90;
tier, benchmark and rates unchanged.
deepseek/deepseek-v4.1-flash and deepseek/deepseek-v4.1-flash-fast carry an
announced goat 100 / pro 110 budget window from 2026-10-20T01:00Z to
2026-10-21T01:00Z; the row-level allowance is unchanged, so the catalog does
not move.
Deals and RSC fixtures re-captured from the live docs pages.
This commit was created on GitHub.com and signed with GitHub’s verified signature.
2.2.9 - 2026-10-16
Fix — the catalog refresh parses command-code@1.82.3 and later again.
1.82.3 added a catalog response parser that rebuilds model records from
local bindings ({model:{id:n,contextWindow:r,inputModalities:l}}). The
CLI modalities parser's scope-blind constant lookup resolved the minified n to an unrelated top-level "auto", so refresh-snapshot failed with inputModalities for auto must be an array of strings and the scheduled
catalog refresh went red on 2026-10-15 and 2026-10-16. Objects whose inputModalities is an identifier or member expression are now skipped
as runtime records before their contextWindow is recorded; every
catalog entry carries an array literal, and a non-array literal still
fails loudly
(#298).
Model catalog
FACTS_PACKAGE_VERSION: 1.82.0 → 1.82.5
Membership 89 → 92: upstream added Qwen/Qwen3.8-Max-Prime, nvidia/nemotron-3.5-super-vl, meta/muse-spark-open and stealth/cat-jam:free, and removed inclusionai/ling-3.0-flash-sante:free.
inclusionai/ling-3.1-flash:free is now the paid inclusionai/ling-3.1-flash (input $0.3 / output $0.9 per 1M tokens,
cache read $0.06).
The pinned slug map reports ling-3-0-flash-sante-free, pixel-canary and space-bunny-alpha as pending (pinned ids no longer
in the Snapshot); 14 docs-ahead page slugs stay unpinned.
Model
Change
Before
After
Qwen/Qwen3.8-Max-Prime
added
—
1M ctx, $4 / $12, efforts low/medium/xhigh, text + image
nvidia/nemotron-3.5-super-vl
added
—
262K ctx, $0.2 / $0.5, efforts low/medium/high, text + image
meta/muse-spark-open
added
—
1.05M ctx, $1.25 / $4.25, efforts low/medium/high, text + image
The four new models and inclusionai/ling-3.1-flash enter as
reasoning-capable; classification writes 92 entries (no pending bucket).
Deals catalog
New rows: Qwen/Qwen3.8-Max-Prime, nvidia/nemotron-3.5-super-vl and meta/muse-spark-open (opensource, goat 20 / pro 30), stealth/cat-jam:free (opensource, free), and inclusionai/ling-3.1-flash (opensource, paid, goat 100 / pro 110).
This commit was created on GitHub.com and signed with GitHub’s verified signature.
2.2.8 - 2026-10-14
Model catalog
FACTS_PACKAGE_VERSION: 1.81.0 → 1.82.0
Membership 88 → 89: upstream added google/gemini-4-argon (Gemini 4
Argon) — 1M context, efforts low/medium/high, input $2 / output $10 per
1M tokens (cache read $0.1, cache write $0), text + image input. No
other record changes.
gemini-4-argon is a docs-ahead page slug the pinned models-page map
does not carry; it stays unpinned (models.md is the membership
authority). The pinned slug map is otherwise unchanged.
Model
Change
Before
After
google/gemini-4-argon
added
—
Snapshot + facts + classification + deals rows
Reasoning classification
google/gemini-4-argon enters as reasoning-capable; classification
writes 89 entries (no pending bucket).
Deals catalog
google/gemini-4-argon lands with the premium tier and a goat 20 /
pro 20 allowance.
Fix — usage reporting splits the reasoning share out of the completion
total. Both transports billed the reasoning share inside the completion
total and read it from nowhere, so every reasoning-bearing turn stored reasoning: 0 with the whole billed completion counted as visible output —
reasoning-inflated figures in session rows, opencode stats and the stored
per-message/session usage
(#289, #291, closes #290). The
release also lands the catalog refreshed on 2026-10-13 to command-code@1.81.0 — meta/muse-wonder-1.0 joins the Snapshot, facts,
classification and deals, and the modality parser accepts upstream's new file value — plus the npm minor/patch dependency group and the actions/setup-node bump.
Fixes
The usage split reports reasoning separately from visible text, on both
transports
(#289, #291,
closes #290):
neither dialect's reasoning field was read — OpenAI-compatible payloads
carry the share in completion_tokens_details.reasoning_tokens, Anthropic
ones in usage.output_tokens_details.thinking_tokens — so the mappers
reported the whole billed completion as text with reasoning: 0. reasoningFrom() now reads both spellings (plus the camelCase spelling totalUsage normalises to, and a numeric string), consulting every detail
container rather than only the first present; text becomes the exclusive
remainder (max(0, total − reasoning)) and total stays the billed total,
so nothing is double-charged. A negative total clamps at 0, normalizeUsageSplit() repairs a split that does not sum to its total at
the model boundary, and the zeroed-usage fallbacks (#171) keep marking
synthesized usage unchanged. Transport-level tests carry both dialects end
to end through providerRunStream; docs/TECHNICAL.md describes the split.
The modality parser accepts upstream's file input value
(#292): command-code@1.81.0 reports inputModalities: ["text","image","file"] for meta/muse-wonder-1.0, which the whitelist rejected, failing the refresh
loudly. file is accepted as upstream vocabulary and normalized out of the
parsed arrays — the runtime forwards text + image parts only — so the
generated facts stay typed ("text" | "image")[].
Model catalog
FACTS_PACKAGE_VERSION: 1.79.2 → 1.81.0
FACTS_LAST_REFRESHED: 2026-10-08 → 2026-10-13
Membership 87 → 88: upstream added meta/muse-wonder-1.0 (Muse Wonder) —
1,050,000 context, efforts low/medium/high/xhigh, input $4 / output $20 per
1M tokens (cache read $0.2, cache write $0). No other record changes; the
2026-10-12 re-capture (at 1.79.2) was a date-stamp-only refresh.
muse-wonder-1-0 joins the pinned models-page slug map, so the page's
Context/rates/Caps evidence feeds the refresh; the eight docs-ahead slugs
stay unpinned (models.md is the membership authority).
Regenerated byte-identical: 87 entries, no pending bucket.
Deals catalog
claude-haiku-5-5: pro allowance 20 → 30 (goat 20 unchanged). The docs plan pages now list it as opensource, while the pricing-limits availability array still says premium; the shipped tier stays premium (availability wins the merge).
Membership 85 → 87: upstream added claude-haiku-5-5 and stealth/glyph-cluster:free. Slug pins for pixel-canary and space-bunny-alpha no longer resolve to Snapshot ids; reported as slug map drift, not pinned.
Membership 85 → 84: upstream dropped stealth/space-bunny-alpha; its efforts, cost, and modalities rows retire with the Snapshot row. The listing-API divergence note is clean.