Skip to content

feat(providers): add Claude Fable 5 support - #3524

Merged
diegosouzapw merged 5 commits into
cheaper-inference:release/v3.8.20from
ggiak:feat/claude-fable-5
Jun 10, 2026
Merged

diegosouzapw merged 5 commits into
cheaper-inference:release/v3.8.20from
ggiak:feat/claude-fable-5

Conversation

@ggiak

@ggiak ggiak commented Jun 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Wires `claude-fable-5` across the full model pipeline so it is available as a first-class model in OmniRoute.

  • Provider registry (`open-sse/config/providerRegistry.ts`) — adds `claude-fable-5` to the `cc` (Claude Code OAuth) and `kiro` model lists with 1M context / 128k output tokens
  • Pricing (`src/shared/constants/pricing.ts`) — adds `CLAUDE_FABLE_5_PRICING` constant ($15/$75 per 1M tokens, same tier as Opus 4.8); wired into `cc`, `kiro`, and the shared `anthropic` blocks
  • Model spec (`src/shared/constants/modelSpecs.ts`) — adds spec entry: 1M context, 128k output, thinking support (same adaptive-thinking constraints as Opus 4.8)
  • Static models (`src/lib/providers/staticModels.ts`) — adds to `claude` provider list
  • Fast mode (`src/lib/providers/claudeFastMode.ts`) — adds to default fast-mode model list
  • Settings default (`src/lib/db/settings.ts`) — adds to default `claudeFastMode.supportedModels`
  • 1M context (`open-sse/services/claudeCodeCompatible.ts`) — adds to `CONTEXT_1M_SUPPORTED_MODELS`
  • Fallback chain (`open-sse/services/modelFamilyFallback.ts`) — `claude-fable-5 → claude-opus-4-8 → claude-opus-4-7 → claude-sonnet-4-6`
  • Cost data (`open-sse/services/providerCostData.ts`) — adds cost entry at $15/$75 per 1M
  • CHANGELOG — added entry under `[Unreleased]`

Test plan

  • New test in `tests/unit/catalog-updates-v3x.test.ts` — verifies `claude-fable-5` appears in both `cc` and `kiro` catalogs with correct `contextLength`, `maxOutputTokens`, and pricing entries in both channels
  • Targeted test passes: `npx tsx --test tests/unit/catalog-updates-v3x.test.ts` → 5/5 pass
  • `npm run lint` passes
  • Full `npm run test:unit` — pre-existing failures unrelated to this PR:
    • `kiro-multi-account-isolation` — assertion flake present on `main` before this commit
    • Several `claude-*` tests fail due to missing `uuid` package in dev environment (also pre-existing on `main`)
    • No new failures introduced by this PR

Wire claude-fable-5 across the full model pipeline: provider registry
(cc + kiro), pricing constants, model specs, fast mode, 1M context
support, fallback chain, and cost data. Adds a catalog test confirming
the model is exposed with correct context/output limits and pricing.
@ggiak
ggiak requested a review from diegosouzapw as a code owner June 9, 2026 19:40

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request integrates the new claude-fable-5 model across the application, updating provider registries, pricing structures, model specifications, fast mode configurations, and fallback definitions, as well as adding unit tests. The review feedback points out two important issues: a notation mismatch in model family fallbacks that could cause fallback failures for dot-notation providers, and a missing Bedrock alias in the model specifications that would cause Bedrock-routed requests to fall back to default token limits.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread src/shared/constants/modelSpecs.ts Resolved
ggiak added 2 commits June 9, 2026 22:42
- Move claude-fable-5 to its own Mythos family in MODEL_FAMILIES
  (was incorrectly grouped under Claude Opus)
- Fix notation mismatch in getNextFamilyFallback: normalize dot→hyphen
  for MODEL_FAMILIES lookup and resolve candidates against the provider's
  registered model IDs (dot-notation for kiro/github, hyphen for cc/vertex)
- Add BEDROCK_CLAUDE_ALIASES to claude-fable-5 spec so Bedrock-routed
  requests resolve 128k output limit instead of falling back to 8k default
- Import getRegistryEntry from providerRegistry for notation resolution
@ggiak

ggiak commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

Addressed both review comments in 50af497:

[High] Notation mismatch in modelFamilyFallback.ts

  • getNextFamilyFallback now normalizes dots→hyphens on the lookup key so kiro/claude-opus-4.8 correctly finds its MODEL_FAMILIES entry
  • Candidates are resolved against the provider's registered model IDs via getRegistryEntry — dot-notation providers (kiro, github) receive dot-notation fallbacks; hyphen-notation providers (cc, vertex) receive hyphen-notation. No more mismatched IDs being passed to the executor.
  • claude-fable-5 moved out of the Claude Opus family into its own Mythos family with fallback chain: claude-fable-5 → claude-sonnet-4-6 → claude-opus-4-8

[Medium] Missing Bedrock aliases in modelSpecs.ts

  • Added BEDROCK_CLAUDE_ALIASES("claude-fable-5") to the spec entry — Bedrock-routed requests now resolve the correct 128k max output tokens instead of falling back to the 8k default.

@diegosouzapw
diegosouzapw changed the base branch from main to release/v3.8.20 June 10, 2026 06:15
diegosouzapw and others added 2 commits June 10, 2026 09:12
…olver

Fallback chain was [sonnet-4-6, opus-4-8] (flagship dropping to the cheaper
Sonnet before Opus, contradicting the changelog). Reorder to
[opus-4-8, opus-4-7, sonnet-4-6] to match the Opus family. Add tests for
getNextFamilyFallback covering the new dot-vs-hyphen notation resolution
(kiro/claude-fable-5 → kiro/claude-opus-4.8, cc→claude normalization).

Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
@diegosouzapw

Copy link
Copy Markdown
Collaborator

Thanks @ggiak! Wiring claude-fable-5 across the full pipeline (cc+kiro registries, model spec, pricing, fast mode, 1M-context header, fallback family) is exactly what a new flagship needs, and the catalog test covers the registration. I pushed two adjustments: (1) reordered the fallback chain from [sonnet-4-6, opus-4-8] to [opus-4-8, opus-4-7, sonnet-4-6] — a flagship should fall to the next-best Opus before the cheaper Sonnet (and it now matches your CHANGELOG line); (2) added tests for getNextFamilyFallback's new dot-vs-hyphen notation resolver (the hunk that affects all families) — kiro/claude-fable-5 → kiro/claude-opus-4.8, plus the cc→claude alias normalization. Typecheck clean, tests green. Shipping in the next release. 🙌

@diegosouzapw
diegosouzapw merged commit 0297f10 into cheaper-inference:release/v3.8.20 Jun 10, 2026
1 of 2 checks passed
@kilo-code-bot

kilo-code-bot Bot commented Jun 10, 2026

Copy link
Copy Markdown

Kilo Code Review could not run — your account is out of credits.

Add credits or switch to a free model to enable reviews on this change.

@diegosouzapw diegosouzapw mentioned this pull request Jun 10, 2026
diegosouzapw added a commit that referenced this pull request Jun 10, 2026
* chore(release): open v3.8.20 development cycle

* fix(images): prefer bare combos over image aliases (#3527)

Integrated into release/v3.8.20

* fix(translator): map Codex local_shell tool (#3534)

Integrated into release/v3.8.20

* fix(usage): make opencode-go quota fetcher fail-open instead of throwing 500 (#3522)

Integrated into release/v3.8.20

* Fix Runtime page breaker state rendering (#3533)

Integrated into release/v3.8.20

* Expose provider breaker degradation threshold setting (#3535)

Integrated into release/v3.8.20

* fix(executor): strip provider prefix from versioned built-in tool model field (#3532)

Integrated into release/v3.8.20

* feat(providers): add Claude Fable 5 support (#3524)

Integrated into release/v3.8.20

* feat(resilience): add global provider cooldown tracking to prevent combo re-walking (#3556)

Integrated into release/v3.8.20 (default OFF, opt-in)

* fix(translator): scope thoughtSignature bypass to Antigravity/CLI only (#3560)

Integrated into release/v3.8.20. Co-authored-by: Six7Day <six7day@gmail.com>

* fix(routing): normalize thinking:disabled for combo-substituted models that reject it (#3554) (#3563)

Integrated into release/v3.8.20

* fix(usage): accept 0/empty budget limits so the dashboard can save and clear (#3537) (#3564)

Integrated into release/v3.8.20

* docs(changelog): credit @Six7Day for #3560 thoughtSignature fix (#3414)

The #3560 squash co-author trailer landed inline (unparsed by GitHub), so add
an explicit CHANGELOG credit ensuring @Six7Day (original #3414) and @oyi77 are
on the public record for the Gemini thoughtSignature fix.

* fix(gamification): dedup badge unlock via user_badges so events don't re-fire every request (#3472) (#3565)

Integrated into release/v3.8.20

* fix(routing): pass through 'auto' keyword on codex /v1/responses instead of rewriting to codex/auto (#3509) (#3566)

Integrated into release/v3.8.20

* fix(cli-tools): normalize apiKey null in guide-settings schema so cloud-mode config saves (#3552) (#3567)

Integrated into release/v3.8.20

* fix(catalog): reclassify PublicAI from keyless to one-time-initial (requires API key) (#3558) (#3568)

Integrated into release/v3.8.20

* fix(gemini-web): surface missing Playwright browser as actionable 503 + cooldown hint, not a retryable 500 loop (#3516) (#3570)

Integrated into release/v3.8.20

* fix(security): sanitize raw err.message in web executors + embeddings/search response bodies (Rule #12) (#3494, #3495) (#3573)

Integrated into release/v3.8.20

* fix(dashboard): point CustomHostsManager + FeatureFlagsGrid at real routes (#3486, #3487) (#3574)

Integrated into release/v3.8.20

* chore(providers): remove dead krutrim entry (#3483) + docs(api): fix agent-bridge per-agent state route (#3489) (#3575)

Integrated into release/v3.8.20

* docs(api): correct API_REFERENCE.md paths for skills/plugins/admin/cache/acp/system-info (#3497) (#3577)

Integrated into release/v3.8.20

* fix(proxy): drive SOCKS5 UI option from runtime ENABLE_SOCKS5_PROXY, not build-time NEXT_PUBLIC (#3508) (#3579)

Integrated into release/v3.8.20

* fix(playground): filter playground models by node prefix so custom-endpoint models appear (#3505) (#3581)

Integrated into release/v3.8.20

* fix(usage): show an informative message instead of a blank Kiro quota card when no usage breakdown (#3506) (#3582)

Integrated into release/v3.8.20

* docs(changelog): add the #3506 Kiro quota entry (missed in #3582 due to a stale-base CHANGELOG anchor) (#3583)

Integrated into release/v3.8.20

* fix(auto-update): use stable PROJECT_ROOT walker, not frozen process.cwd() (#3561)

Integrated into release/v3.8.20. Auto-update PROJECT_ROOT now uses a stable __dirname-anchored upward walker instead of the no-op process.cwd() resolver.

* fix: address PR #3518 review comments (lifecycle hooks, regex, indentation, route params) (#3562)

Integrated into release/v3.8.20. Addresses #3518 review: regex literals, logs/[id] route params (Next 16), indentation, and wires plugin lifecycle hooks (onInstall/onActivate/onDeactivate/onUninstall) in the loader so manager.ts can register them. Adds Rule #18 regression test.

* docs(changelog): credit @ViFigueiredo (#3423) for PROJECT_ROOT + log #3561/#3562 (v3.8.20)

* fix: openai to gemini incorrectly translates historical tool calls into text (#3569)

Integrated into release/v3.8.20. Standard Gemini direct path now maps historical tool calls to native functionCall/functionResponse parts (signaturelessToolCallMode: native) instead of inert text — validated against the real Gemini API (gemini-2.5-flash returns 200 for signatureless native functionCall, even with tools+thinking; Hard Rule #18). Eliminates the text-serialization leak. Antigravity/CLI sentinel path (#3560) untouched.

* docs(changelog)+test: reconcile standard-Gemini native mode (#3569) — update round-2 rationale comment + log VPS validation

* docs(changelog): reconcile v3.8.20 — add 9 missing bullets + move [Unreleased] to versioned section

* docs(changelog): complete v3.8.20 reconciliation — 27 bullets, 11 contributors

---------

Co-authored-by: Alexander Averyanov <alex@averyan.ru>
Co-authored-by: Hakan Kurşun <bykamaka@gmail.com>
Co-authored-by: Wilson <pedbookmed@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Giorgos Giakoumettis <giorgos@yiakoumettis.gr>
Co-authored-by: PizzaV <103120356+pizzav-xyz@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Markus Hartung <mail@hartmark.se>
rafacpti23 pushed a commit to rafacpti23/OmniRoute that referenced this pull request Jun 10, 2026
* chore(release): open v3.8.20 development cycle

* fix(images): prefer bare combos over image aliases (cheaper-inference#3527)

Integrated into release/v3.8.20

* fix(translator): map Codex local_shell tool (cheaper-inference#3534)

Integrated into release/v3.8.20

* fix(usage): make opencode-go quota fetcher fail-open instead of throwing 500 (cheaper-inference#3522)

Integrated into release/v3.8.20

* Fix Runtime page breaker state rendering (cheaper-inference#3533)

Integrated into release/v3.8.20

* Expose provider breaker degradation threshold setting (cheaper-inference#3535)

Integrated into release/v3.8.20

* fix(executor): strip provider prefix from versioned built-in tool model field (cheaper-inference#3532)

Integrated into release/v3.8.20

* feat(providers): add Claude Fable 5 support (cheaper-inference#3524)

Integrated into release/v3.8.20

* feat(resilience): add global provider cooldown tracking to prevent combo re-walking (cheaper-inference#3556)

Integrated into release/v3.8.20 (default OFF, opt-in)

* fix(translator): scope thoughtSignature bypass to Antigravity/CLI only (cheaper-inference#3560)

Integrated into release/v3.8.20. Co-authored-by: Six7Day <six7day@gmail.com>

* fix(routing): normalize thinking:disabled for combo-substituted models that reject it (cheaper-inference#3554) (cheaper-inference#3563)

Integrated into release/v3.8.20

* fix(usage): accept 0/empty budget limits so the dashboard can save and clear (cheaper-inference#3537) (cheaper-inference#3564)

Integrated into release/v3.8.20

* docs(changelog): credit @Six7Day for cheaper-inference#3560 thoughtSignature fix (cheaper-inference#3414)

The cheaper-inference#3560 squash co-author trailer landed inline (unparsed by GitHub), so add
an explicit CHANGELOG credit ensuring @Six7Day (original cheaper-inference#3414) and @oyi77 are
on the public record for the Gemini thoughtSignature fix.

* fix(gamification): dedup badge unlock via user_badges so events don't re-fire every request (cheaper-inference#3472) (cheaper-inference#3565)

Integrated into release/v3.8.20

* fix(routing): pass through 'auto' keyword on codex /v1/responses instead of rewriting to codex/auto (cheaper-inference#3509) (cheaper-inference#3566)

Integrated into release/v3.8.20

* fix(cli-tools): normalize apiKey null in guide-settings schema so cloud-mode config saves (cheaper-inference#3552) (cheaper-inference#3567)

Integrated into release/v3.8.20

* fix(catalog): reclassify PublicAI from keyless to one-time-initial (requires API key) (cheaper-inference#3558) (cheaper-inference#3568)

Integrated into release/v3.8.20

* fix(gemini-web): surface missing Playwright browser as actionable 503 + cooldown hint, not a retryable 500 loop (cheaper-inference#3516) (cheaper-inference#3570)

Integrated into release/v3.8.20

* fix(security): sanitize raw err.message in web executors + embeddings/search response bodies (Rule cheaper-inference#12) (cheaper-inference#3494, cheaper-inference#3495) (cheaper-inference#3573)

Integrated into release/v3.8.20

* fix(dashboard): point CustomHostsManager + FeatureFlagsGrid at real routes (cheaper-inference#3486, cheaper-inference#3487) (cheaper-inference#3574)

Integrated into release/v3.8.20

* chore(providers): remove dead krutrim entry (cheaper-inference#3483) + docs(api): fix agent-bridge per-agent state route (cheaper-inference#3489) (cheaper-inference#3575)

Integrated into release/v3.8.20

* docs(api): correct API_REFERENCE.md paths for skills/plugins/admin/cache/acp/system-info (cheaper-inference#3497) (cheaper-inference#3577)

Integrated into release/v3.8.20

* fix(proxy): drive SOCKS5 UI option from runtime ENABLE_SOCKS5_PROXY, not build-time NEXT_PUBLIC (cheaper-inference#3508) (cheaper-inference#3579)

Integrated into release/v3.8.20

* fix(playground): filter playground models by node prefix so custom-endpoint models appear (cheaper-inference#3505) (cheaper-inference#3581)

Integrated into release/v3.8.20

* fix(usage): show an informative message instead of a blank Kiro quota card when no usage breakdown (cheaper-inference#3506) (cheaper-inference#3582)

Integrated into release/v3.8.20

* docs(changelog): add the cheaper-inference#3506 Kiro quota entry (missed in cheaper-inference#3582 due to a stale-base CHANGELOG anchor) (cheaper-inference#3583)

Integrated into release/v3.8.20

* fix(auto-update): use stable PROJECT_ROOT walker, not frozen process.cwd() (cheaper-inference#3561)

Integrated into release/v3.8.20. Auto-update PROJECT_ROOT now uses a stable __dirname-anchored upward walker instead of the no-op process.cwd() resolver.

* fix: address PR cheaper-inference#3518 review comments (lifecycle hooks, regex, indentation, route params) (cheaper-inference#3562)

Integrated into release/v3.8.20. Addresses cheaper-inference#3518 review: regex literals, logs/[id] route params (Next 16), indentation, and wires plugin lifecycle hooks (onInstall/onActivate/onDeactivate/onUninstall) in the loader so manager.ts can register them. Adds Rule cheaper-inference#18 regression test.

* docs(changelog): credit @ViFigueiredo (cheaper-inference#3423) for PROJECT_ROOT + log cheaper-inference#3561/cheaper-inference#3562 (v3.8.20)

* fix: openai to gemini incorrectly translates historical tool calls into text (cheaper-inference#3569)

Integrated into release/v3.8.20. Standard Gemini direct path now maps historical tool calls to native functionCall/functionResponse parts (signaturelessToolCallMode: native) instead of inert text — validated against the real Gemini API (gemini-2.5-flash returns 200 for signatureless native functionCall, even with tools+thinking; Hard Rule cheaper-inference#18). Eliminates the text-serialization leak. Antigravity/CLI sentinel path (cheaper-inference#3560) untouched.

* docs(changelog)+test: reconcile standard-Gemini native mode (cheaper-inference#3569) — update round-2 rationale comment + log VPS validation

* docs(changelog): reconcile v3.8.20 — add 9 missing bullets + move [Unreleased] to versioned section

* docs(changelog): complete v3.8.20 reconciliation — 27 bullets, 11 contributors

---------

Co-authored-by: Alexander Averyanov <alex@averyan.ru>
Co-authored-by: Hakan Kurşun <bykamaka@gmail.com>
Co-authored-by: Wilson <pedbookmed@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Giorgos Giakoumettis <giorgos@yiakoumettis.gr>
Co-authored-by: PizzaV <103120356+pizzav-xyz@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Markus Hartung <mail@hartmark.se>

@chirag127 chirag127 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why we have duplication of the info like context lenght output token limit in many places

HouMinXi pushed a commit to HouMinXi/OmniRoute that referenced this pull request Aug 2, 2026
* chore(release): open v3.8.20 development cycle

* fix(images): prefer bare combos over image aliases (cheaper-inference#3527)

Integrated into release/v3.8.20

* fix(translator): map Codex local_shell tool (cheaper-inference#3534)

Integrated into release/v3.8.20

* fix(usage): make opencode-go quota fetcher fail-open instead of throwing 500 (cheaper-inference#3522)

Integrated into release/v3.8.20

* Fix Runtime page breaker state rendering (cheaper-inference#3533)

Integrated into release/v3.8.20

* Expose provider breaker degradation threshold setting (cheaper-inference#3535)

Integrated into release/v3.8.20

* fix(executor): strip provider prefix from versioned built-in tool model field (cheaper-inference#3532)

Integrated into release/v3.8.20

* feat(providers): add Claude Fable 5 support (cheaper-inference#3524)

Integrated into release/v3.8.20

* feat(resilience): add global provider cooldown tracking to prevent combo re-walking (cheaper-inference#3556)

Integrated into release/v3.8.20 (default OFF, opt-in)

* fix(translator): scope thoughtSignature bypass to Antigravity/CLI only (cheaper-inference#3560)

Integrated into release/v3.8.20. Co-authored-by: Six7Day <six7day@gmail.com>

* fix(routing): normalize thinking:disabled for combo-substituted models that reject it (cheaper-inference#3554) (cheaper-inference#3563)

Integrated into release/v3.8.20

* fix(usage): accept 0/empty budget limits so the dashboard can save and clear (cheaper-inference#3537) (cheaper-inference#3564)

Integrated into release/v3.8.20

* docs(changelog): credit @Six7Day for cheaper-inference#3560 thoughtSignature fix (cheaper-inference#3414)

The cheaper-inference#3560 squash co-author trailer landed inline (unparsed by GitHub), so add
an explicit CHANGELOG credit ensuring @Six7Day (original cheaper-inference#3414) and @oyi77 are
on the public record for the Gemini thoughtSignature fix.

* fix(gamification): dedup badge unlock via user_badges so events don't re-fire every request (cheaper-inference#3472) (cheaper-inference#3565)

Integrated into release/v3.8.20

* fix(routing): pass through 'auto' keyword on codex /v1/responses instead of rewriting to codex/auto (cheaper-inference#3509) (cheaper-inference#3566)

Integrated into release/v3.8.20

* fix(cli-tools): normalize apiKey null in guide-settings schema so cloud-mode config saves (cheaper-inference#3552) (cheaper-inference#3567)

Integrated into release/v3.8.20

* fix(catalog): reclassify PublicAI from keyless to one-time-initial (requires API key) (cheaper-inference#3558) (cheaper-inference#3568)

Integrated into release/v3.8.20

* fix(gemini-web): surface missing Playwright browser as actionable 503 + cooldown hint, not a retryable 500 loop (cheaper-inference#3516) (cheaper-inference#3570)

Integrated into release/v3.8.20

* fix(security): sanitize raw err.message in web executors + embeddings/search response bodies (Rule cheaper-inference#12) (cheaper-inference#3494, cheaper-inference#3495) (cheaper-inference#3573)

Integrated into release/v3.8.20

* fix(dashboard): point CustomHostsManager + FeatureFlagsGrid at real routes (cheaper-inference#3486, cheaper-inference#3487) (cheaper-inference#3574)

Integrated into release/v3.8.20

* chore(providers): remove dead krutrim entry (cheaper-inference#3483) + docs(api): fix agent-bridge per-agent state route (cheaper-inference#3489) (cheaper-inference#3575)

Integrated into release/v3.8.20

* docs(api): correct API_REFERENCE.md paths for skills/plugins/admin/cache/acp/system-info (cheaper-inference#3497) (cheaper-inference#3577)

Integrated into release/v3.8.20

* fix(proxy): drive SOCKS5 UI option from runtime ENABLE_SOCKS5_PROXY, not build-time NEXT_PUBLIC (cheaper-inference#3508) (cheaper-inference#3579)

Integrated into release/v3.8.20

* fix(playground): filter playground models by node prefix so custom-endpoint models appear (cheaper-inference#3505) (cheaper-inference#3581)

Integrated into release/v3.8.20

* fix(usage): show an informative message instead of a blank Kiro quota card when no usage breakdown (cheaper-inference#3506) (cheaper-inference#3582)

Integrated into release/v3.8.20

* docs(changelog): add the cheaper-inference#3506 Kiro quota entry (missed in cheaper-inference#3582 due to a stale-base CHANGELOG anchor) (cheaper-inference#3583)

Integrated into release/v3.8.20

* fix(auto-update): use stable PROJECT_ROOT walker, not frozen process.cwd() (cheaper-inference#3561)

Integrated into release/v3.8.20. Auto-update PROJECT_ROOT now uses a stable __dirname-anchored upward walker instead of the no-op process.cwd() resolver.

* fix: address PR cheaper-inference#3518 review comments (lifecycle hooks, regex, indentation, route params) (cheaper-inference#3562)

Integrated into release/v3.8.20. Addresses cheaper-inference#3518 review: regex literals, logs/[id] route params (Next 16), indentation, and wires plugin lifecycle hooks (onInstall/onActivate/onDeactivate/onUninstall) in the loader so manager.ts can register them. Adds Rule cheaper-inference#18 regression test.

* docs(changelog): credit @ViFigueiredo (cheaper-inference#3423) for PROJECT_ROOT + log cheaper-inference#3561/cheaper-inference#3562 (v3.8.20)

* fix: openai to gemini incorrectly translates historical tool calls into text (cheaper-inference#3569)

Integrated into release/v3.8.20. Standard Gemini direct path now maps historical tool calls to native functionCall/functionResponse parts (signaturelessToolCallMode: native) instead of inert text — validated against the real Gemini API (gemini-2.5-flash returns 200 for signatureless native functionCall, even with tools+thinking; Hard Rule cheaper-inference#18). Eliminates the text-serialization leak. Antigravity/CLI sentinel path (cheaper-inference#3560) untouched.

* docs(changelog)+test: reconcile standard-Gemini native mode (cheaper-inference#3569) — update round-2 rationale comment + log VPS validation

* docs(changelog): reconcile v3.8.20 — add 9 missing bullets + move [Unreleased] to versioned section

* docs(changelog): complete v3.8.20 reconciliation — 27 bullets, 11 contributors

---------

Co-authored-by: Alexander Averyanov <alex@averyan.ru>
Co-authored-by: Hakan Kurşun <bykamaka@gmail.com>
Co-authored-by: Wilson <pedbookmed@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Giorgos Giakoumettis <giorgos@yiakoumettis.gr>
Co-authored-by: PizzaV <103120356+pizzav-xyz@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Markus Hartung <mail@hartmark.se>
Poid-ZA pushed a commit to Poid-ZA/OmniRoute that referenced this pull request Aug 5, 2026
* chore(release): open v3.8.20 development cycle

* fix(images): prefer bare combos over image aliases (cheaper-inference#3527)

Integrated into release/v3.8.20

* fix(translator): map Codex local_shell tool (cheaper-inference#3534)

Integrated into release/v3.8.20

* fix(usage): make opencode-go quota fetcher fail-open instead of throwing 500 (cheaper-inference#3522)

Integrated into release/v3.8.20

* Fix Runtime page breaker state rendering (cheaper-inference#3533)

Integrated into release/v3.8.20

* Expose provider breaker degradation threshold setting (cheaper-inference#3535)

Integrated into release/v3.8.20

* fix(executor): strip provider prefix from versioned built-in tool model field (cheaper-inference#3532)

Integrated into release/v3.8.20

* feat(providers): add Claude Fable 5 support (cheaper-inference#3524)

Integrated into release/v3.8.20

* feat(resilience): add global provider cooldown tracking to prevent combo re-walking (cheaper-inference#3556)

Integrated into release/v3.8.20 (default OFF, opt-in)

* fix(translator): scope thoughtSignature bypass to Antigravity/CLI only (cheaper-inference#3560)

Integrated into release/v3.8.20. Co-authored-by: Six7Day <six7day@gmail.com>

* fix(routing): normalize thinking:disabled for combo-substituted models that reject it (cheaper-inference#3554) (cheaper-inference#3563)

Integrated into release/v3.8.20

* fix(usage): accept 0/empty budget limits so the dashboard can save and clear (cheaper-inference#3537) (cheaper-inference#3564)

Integrated into release/v3.8.20

* docs(changelog): credit @Six7Day for cheaper-inference#3560 thoughtSignature fix (cheaper-inference#3414)

The cheaper-inference#3560 squash co-author trailer landed inline (unparsed by GitHub), so add
an explicit CHANGELOG credit ensuring @Six7Day (original cheaper-inference#3414) and @oyi77 are
on the public record for the Gemini thoughtSignature fix.

* fix(gamification): dedup badge unlock via user_badges so events don't re-fire every request (cheaper-inference#3472) (cheaper-inference#3565)

Integrated into release/v3.8.20

* fix(routing): pass through 'auto' keyword on codex /v1/responses instead of rewriting to codex/auto (cheaper-inference#3509) (cheaper-inference#3566)

Integrated into release/v3.8.20

* fix(cli-tools): normalize apiKey null in guide-settings schema so cloud-mode config saves (cheaper-inference#3552) (cheaper-inference#3567)

Integrated into release/v3.8.20

* fix(catalog): reclassify PublicAI from keyless to one-time-initial (requires API key) (cheaper-inference#3558) (cheaper-inference#3568)

Integrated into release/v3.8.20

* fix(gemini-web): surface missing Playwright browser as actionable 503 + cooldown hint, not a retryable 500 loop (cheaper-inference#3516) (cheaper-inference#3570)

Integrated into release/v3.8.20

* fix(security): sanitize raw err.message in web executors + embeddings/search response bodies (Rule cheaper-inference#12) (cheaper-inference#3494, cheaper-inference#3495) (cheaper-inference#3573)

Integrated into release/v3.8.20

* fix(dashboard): point CustomHostsManager + FeatureFlagsGrid at real routes (cheaper-inference#3486, cheaper-inference#3487) (cheaper-inference#3574)

Integrated into release/v3.8.20

* chore(providers): remove dead krutrim entry (cheaper-inference#3483) + docs(api): fix agent-bridge per-agent state route (cheaper-inference#3489) (cheaper-inference#3575)

Integrated into release/v3.8.20

* docs(api): correct API_REFERENCE.md paths for skills/plugins/admin/cache/acp/system-info (cheaper-inference#3497) (cheaper-inference#3577)

Integrated into release/v3.8.20

* fix(proxy): drive SOCKS5 UI option from runtime ENABLE_SOCKS5_PROXY, not build-time NEXT_PUBLIC (cheaper-inference#3508) (cheaper-inference#3579)

Integrated into release/v3.8.20

* fix(playground): filter playground models by node prefix so custom-endpoint models appear (cheaper-inference#3505) (cheaper-inference#3581)

Integrated into release/v3.8.20

* fix(usage): show an informative message instead of a blank Kiro quota card when no usage breakdown (cheaper-inference#3506) (cheaper-inference#3582)

Integrated into release/v3.8.20

* docs(changelog): add the cheaper-inference#3506 Kiro quota entry (missed in cheaper-inference#3582 due to a stale-base CHANGELOG anchor) (cheaper-inference#3583)

Integrated into release/v3.8.20

* fix(auto-update): use stable PROJECT_ROOT walker, not frozen process.cwd() (cheaper-inference#3561)

Integrated into release/v3.8.20. Auto-update PROJECT_ROOT now uses a stable __dirname-anchored upward walker instead of the no-op process.cwd() resolver.

* fix: address PR cheaper-inference#3518 review comments (lifecycle hooks, regex, indentation, route params) (cheaper-inference#3562)

Integrated into release/v3.8.20. Addresses cheaper-inference#3518 review: regex literals, logs/[id] route params (Next 16), indentation, and wires plugin lifecycle hooks (onInstall/onActivate/onDeactivate/onUninstall) in the loader so manager.ts can register them. Adds Rule cheaper-inference#18 regression test.

* docs(changelog): credit @ViFigueiredo (cheaper-inference#3423) for PROJECT_ROOT + log cheaper-inference#3561/cheaper-inference#3562 (v3.8.20)

* fix: openai to gemini incorrectly translates historical tool calls into text (cheaper-inference#3569)

Integrated into release/v3.8.20. Standard Gemini direct path now maps historical tool calls to native functionCall/functionResponse parts (signaturelessToolCallMode: native) instead of inert text — validated against the real Gemini API (gemini-2.5-flash returns 200 for signatureless native functionCall, even with tools+thinking; Hard Rule cheaper-inference#18). Eliminates the text-serialization leak. Antigravity/CLI sentinel path (cheaper-inference#3560) untouched.

* docs(changelog)+test: reconcile standard-Gemini native mode (cheaper-inference#3569) — update round-2 rationale comment + log VPS validation

* docs(changelog): reconcile v3.8.20 — add 9 missing bullets + move [Unreleased] to versioned section

* docs(changelog): complete v3.8.20 reconciliation — 27 bullets, 11 contributors

---------

Co-authored-by: Alexander Averyanov <alex@averyan.ru>
Co-authored-by: Hakan Kurşun <bykamaka@gmail.com>
Co-authored-by: Wilson <pedbookmed@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Giorgos Giakoumettis <giorgos@yiakoumettis.gr>
Co-authored-by: PizzaV <103120356+pizzav-xyz@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Markus Hartung <mail@hartmark.se>
ggiak added a commit to ggiak/OmniRoute that referenced this pull request Sep 1, 2026
Wire claude-fable-5-1 across the full first-party model pipeline,
mirroring the Fable 5 rollout (cheaper-inference#3524): model spec (1M context, 128k
output, adaptive-only thinking, rejects thinking.type:"disabled" per
cheaper-inference#3554), pricing (native $15/$75, cc OAuth $10/$50), fallback chain
(fable-5-1 -> fable-5 -> opus-4-8 -> opus-4-7 -> sonnet-5), 1M-context
beta header, fast mode, cost data, and the cc/claude, claude-web,
anthropic, vertex, vertex-partner, ghe-copilot and github registries.

Fable 5.1 is listed first in each Claude catalog, so it becomes the
default resolved Fable tier (ANTHROPIC_DEFAULT_FABLE_MODEL). Kiro stays
excluded (its upstream serves no Fable tier, cheaper-inference#6170). Effort variants
(low/medium/high/xhigh) synthesize automatically from the spec.

Adds regression tests (catalog exposure + pricing, fable-5-1 -> fable-5
fallback, cheaper-inference#3554 adaptive-thinking guard, adaptive-sampling parity) and
updates the claude-web exact-set and "flagship first" assertions to the
new tier.
tkgo11 pushed a commit to tkgo11/OmniRoute that referenced this pull request Sep 23, 2026
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
* chore(release): open v3.8.20 development cycle

* fix(images): prefer bare combos over image aliases (cheaper-inference#3527)

Integrated into release/v3.8.20

* fix(translator): map Codex local_shell tool (cheaper-inference#3534)

Integrated into release/v3.8.20

* fix(usage): make opencode-go quota fetcher fail-open instead of throwing 500 (cheaper-inference#3522)

Integrated into release/v3.8.20

* Fix Runtime page breaker state rendering (cheaper-inference#3533)

Integrated into release/v3.8.20

* Expose provider breaker degradation threshold setting (cheaper-inference#3535)

Integrated into release/v3.8.20

* fix(executor): strip provider prefix from versioned built-in tool model field (cheaper-inference#3532)

Integrated into release/v3.8.20

* feat(providers): add Claude Fable 5 support (cheaper-inference#3524)

Integrated into release/v3.8.20

* feat(resilience): add global provider cooldown tracking to prevent combo re-walking (cheaper-inference#3556)

Integrated into release/v3.8.20 (default OFF, opt-in)

* fix(translator): scope thoughtSignature bypass to Antigravity/CLI only (cheaper-inference#3560)

Integrated into release/v3.8.20. Co-authored-by: Six7Day <six7day@gmail.com>

* fix(routing): normalize thinking:disabled for combo-substituted models that reject it (cheaper-inference#3554) (cheaper-inference#3563)

Integrated into release/v3.8.20

* fix(usage): accept 0/empty budget limits so the dashboard can save and clear (cheaper-inference#3537) (cheaper-inference#3564)

Integrated into release/v3.8.20

* docs(changelog): credit @Six7Day for cheaper-inference#3560 thoughtSignature fix (cheaper-inference#3414)

The cheaper-inference#3560 squash co-author trailer landed inline (unparsed by GitHub), so add
an explicit CHANGELOG credit ensuring @Six7Day (original cheaper-inference#3414) and @oyi77 are
on the public record for the Gemini thoughtSignature fix.

* fix(gamification): dedup badge unlock via user_badges so events don't re-fire every request (cheaper-inference#3472) (cheaper-inference#3565)

Integrated into release/v3.8.20

* fix(routing): pass through 'auto' keyword on codex /v1/responses instead of rewriting to codex/auto (cheaper-inference#3509) (cheaper-inference#3566)

Integrated into release/v3.8.20

* fix(cli-tools): normalize apiKey null in guide-settings schema so cloud-mode config saves (cheaper-inference#3552) (cheaper-inference#3567)

Integrated into release/v3.8.20

* fix(catalog): reclassify PublicAI from keyless to one-time-initial (requires API key) (cheaper-inference#3558) (cheaper-inference#3568)

Integrated into release/v3.8.20

* fix(gemini-web): surface missing Playwright browser as actionable 503 + cooldown hint, not a retryable 500 loop (cheaper-inference#3516) (cheaper-inference#3570)

Integrated into release/v3.8.20

* fix(security): sanitize raw err.message in web executors + embeddings/search response bodies (Rule cheaper-inference#12) (cheaper-inference#3494, cheaper-inference#3495) (cheaper-inference#3573)

Integrated into release/v3.8.20

* fix(dashboard): point CustomHostsManager + FeatureFlagsGrid at real routes (cheaper-inference#3486, cheaper-inference#3487) (cheaper-inference#3574)

Integrated into release/v3.8.20

* chore(providers): remove dead krutrim entry (cheaper-inference#3483) + docs(api): fix agent-bridge per-agent state route (cheaper-inference#3489) (cheaper-inference#3575)

Integrated into release/v3.8.20

* docs(api): correct API_REFERENCE.md paths for skills/plugins/admin/cache/acp/system-info (cheaper-inference#3497) (cheaper-inference#3577)

Integrated into release/v3.8.20

* fix(proxy): drive SOCKS5 UI option from runtime ENABLE_SOCKS5_PROXY, not build-time NEXT_PUBLIC (cheaper-inference#3508) (cheaper-inference#3579)

Integrated into release/v3.8.20

* fix(playground): filter playground models by node prefix so custom-endpoint models appear (cheaper-inference#3505) (cheaper-inference#3581)

Integrated into release/v3.8.20

* fix(usage): show an informative message instead of a blank Kiro quota card when no usage breakdown (cheaper-inference#3506) (cheaper-inference#3582)

Integrated into release/v3.8.20

* docs(changelog): add the cheaper-inference#3506 Kiro quota entry (missed in cheaper-inference#3582 due to a stale-base CHANGELOG anchor) (cheaper-inference#3583)

Integrated into release/v3.8.20

* fix(auto-update): use stable PROJECT_ROOT walker, not frozen process.cwd() (cheaper-inference#3561)

Integrated into release/v3.8.20. Auto-update PROJECT_ROOT now uses a stable __dirname-anchored upward walker instead of the no-op process.cwd() resolver.

* fix: address PR cheaper-inference#3518 review comments (lifecycle hooks, regex, indentation, route params) (cheaper-inference#3562)

Integrated into release/v3.8.20. Addresses cheaper-inference#3518 review: regex literals, logs/[id] route params (Next 16), indentation, and wires plugin lifecycle hooks (onInstall/onActivate/onDeactivate/onUninstall) in the loader so manager.ts can register them. Adds Rule cheaper-inference#18 regression test.

* docs(changelog): credit @ViFigueiredo (cheaper-inference#3423) for PROJECT_ROOT + log cheaper-inference#3561/cheaper-inference#3562 (v3.8.20)

* fix: openai to gemini incorrectly translates historical tool calls into text (cheaper-inference#3569)

Integrated into release/v3.8.20. Standard Gemini direct path now maps historical tool calls to native functionCall/functionResponse parts (signaturelessToolCallMode: native) instead of inert text — validated against the real Gemini API (gemini-2.5-flash returns 200 for signatureless native functionCall, even with tools+thinking; Hard Rule cheaper-inference#18). Eliminates the text-serialization leak. Antigravity/CLI sentinel path (cheaper-inference#3560) untouched.

* docs(changelog)+test: reconcile standard-Gemini native mode (cheaper-inference#3569) — update round-2 rationale comment + log VPS validation

* docs(changelog): reconcile v3.8.20 — add 9 missing bullets + move [Unreleased] to versioned section

* docs(changelog): complete v3.8.20 reconciliation — 27 bullets, 11 contributors

---------

Co-authored-by: Alexander Averyanov <alex@averyan.ru>
Co-authored-by: Hakan Kurşun <bykamaka@gmail.com>
Co-authored-by: Wilson <pedbookmed@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Giorgos Giakoumettis <giorgos@yiakoumettis.gr>
Co-authored-by: PizzaV <103120356+pizzav-xyz@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Markus Hartung <mail@hartmark.se>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants