Download Latest Version OmniRoute.3.8.50.exe (526.3 MB)
Email in envelope

Get an email when there's a new version of OmniRoute

Home / v3.8.49
Name Modified Size InfoDownloads / Week
Parent folder
sbom-npm.cdx.json 2026-07-30 4.8 MB
omniroute-desktop_3.8.49_arm64.deb 2026-07-30 229.3 MB
latest.yml 2026-07-30 350 Bytes
omniroute-desktop_3.8.49_amd64.deb 2026-07-30 235.1 MB
latest-linux.yml 2026-07-30 538 Bytes
latest-mac.yml 2026-07-30 495 Bytes
latest-linux-arm64.yml 2026-07-30 550 Bytes
OmniRoute.exe 2026-07-30 340.2 MB
OmniRoute-v3.8.49.source.zip 2026-07-30 61.4 MB
OmniRoute-3.8.49.dmg 2026-07-30 392.7 MB
OmniRoute-v3.8.49.source.tar.gz 2026-07-30 55.1 MB
OmniRoute-3.8.49-arm64.AppImage 2026-07-30 365.8 MB
OmniRoute-3.8.49-arm64.dmg 2026-07-30 390.6 MB
OmniRoute-3.8.49.AppImage 2026-07-30 366.1 MB
OmniRoute.3.8.49.exe 2026-07-30 340.2 MB
OmniRoute.Setup.3.8.49.exe 2026-07-30 340.4 MB
README.md 2026-07-30 126.6 kB
v3.8.49 source code.tar.gz 2026-07-30 55.1 MB
v3.8.49 source code.zip 2026-07-30 61.7 MB
Totals: 19 Items   3.2 GB 12

All 1383 entries from this cycle are listed below, one line each — descriptions are trimmed to fit GitHub's 125,000-character release body. Full wording, context and links: [CHANGELOG.md](https://github.com/diegosouzapw/OmniRoute/blob/main/CHANGELOG.md#3849. Living section — regenerated 2026-07-19 from all 306 cycle commits (bump 2c62333b0 → tip). Bullets carry the merged PR and its author; direct pushes listed separately. Finalized at the v3.8.49 release.

✨ New Features

  • feat: generalize ensureThinkingBudget to all providers +… (#6979) — @rafaumeu
  • feat(6922): effort-tier aliases for glm-5.2 & mimo-v2.5 on… (#6987) — @rafaumeu
  • feat(providers): curated OpenRouter embeddings catalog + specialty merge… (#6994)
  • feat(quota): opt-in auto-ping to keep Codex quota windows warm (#6995)
  • feat(providers): add Agnes AI native provider support (#7035) — @HouMinXi
  • feat(sse): allow disabling : comment heartbeats via… (#7036) — @xier2012
  • feat(perf): add performance.mark/measure to SSE pipeline +… (#7045) — @oyi77
  • feat(providers): add Dahl free inference provider (#7062) — @growab
  • feat(ci): boot-smoke the packed npm tarball (check:pack-boot,… (#7086)
  • feat(ci): hotfix fast-lane + tests-only E2E skip (WS3.1) (#7088)
  • feat(ci): continuous release-green — on-push quick gate + 3x/day… (#7089)
  • feat(ci): duration-balanced E2E shards via LPT bin-packing (WS4.1) (#7090)
  • feat(ci): TypeScript 7 native shadow for typecheck:core (WS4.2,… (#7091)
  • feat(release): npm staged publishing + pre-publish boot-smoke (WS1.3) (#7092)
  • feat(release): post-publish verifier — clean-container install + boot… (#7109)
  • feat(ci): Mergify merge queue + manual-train fallback runbook… (#7112)
  • feat(ci): Windows leg for Electron prepare smoke (WS1.5) (#7113)
  • feat(ci): Codecov patch coverage (informational) + fix missing… (#7114)
  • feat(sidecar): support conditional provider manifest refresh (#7130) — @KooshaPari
  • feat(homolog): real-environment E2E homologation suite (npm run… (#7133)
  • feat(usage): add Codex reset credit picker (#7154) — @JxnLexn
  • feat(ci): Trunk Flaky Tests uploads for vitest + Playwright E2E… (#7175)
  • feat(ci): Trunk Flaky Tests upload on the fast-path vitest job… (#7205)
  • feat(kiro): register GPT-5.6 Sol/Terra/Luna model family (#7209)
  • feat(dashboard): show Codex plan label in provider and quota views (#7210)
  • feat(dashboard): add reorder connections by availability button (#7211)
  • feat(dashboard): add 180D and 365D usage/cost analytics periods (#7213)
  • feat(api): add Vary: Accept-Encoding to token-authenticated /v1*… (#7217)
  • feat(api): expose GET /api/usage/model-latency-stats (#7218)
  • feat(dashboard): add compression-mode selector to Context & Cache combos… (#7219)
  • feat(sse): route GitHub Copilot Claude models through native… (#7223)
  • feat(mitm): add Antigravity reasoning-effort overrides (#7228)
  • feat: replace free-text model inputs with hidePaid-aware… (#7229)
  • feat: editable ComfyUI base-URL field + per-connection… (#7232)
  • feat(sse): add optional-enum null-omission idiom for codex… (#7233)
  • feat(sse): preserve tools/tool_choice for tool-bearing requests… (#7235)
  • feat(api): accept x-goog-api-key header for client-facing auth (#7236)
  • feat(sse): add native xAI Grok Imagine video generation provider (#7238)
  • feat: add Type filter and easiest-first sort to Free Provider… (#7240)
  • feat(cli): add Grok Build CLI tool setup (~/.grok/config.toml) (#7241)
  • feat(provider): add Chenzk API OpenAI-compatible gateway (#7246)
  • feat(providers): let custom connections opt into prompt-cache capability (#7257)
  • feat(db): include xp_audit_log in automatic retention/prune (#7260)
  • feat(api): structured X-Routing-Fallback-Reason header for relay… (#7262)
  • feat(compression): support RTK TOML schema v1 filters (#7281) — @JxnLexn
  • feat: add principal-scoped CCR MCP lifecycle (#7282) — @JxnLexn
  • feat(morph): refresh curated models (#7314) — @backryun
  • feat(issue-agent): surface RecordedTriageTimeoutError as 504 (#7315) — @KooshaPari
  • feat(incident-response): structured incident response templates (#7334) — @KooshaPari
  • feat(providers): add xAI OAuth PKCE provider (#7399) — @fenix007
  • feat(models): advertise Claude reasoning-effort variants in /v1/models (#7497) — @thepigdestroyer
  • feat(kimi): sync Code, Web, and Moonshot providers (#7531) — @backryun
  • feat(resilience): guard OmniRoute peer routing loops (#7555) — @isiahw1
  • feat: add Mixedbread AI as embeddings provider (#7595)
  • feat(providers): add Rev AI speech-to-text provider (#7596)
  • feat: add Freepik (Magnific Mystic) image generation provider (#7597)
  • feat(sse): add DeepInfra as a video-generation provider (#7598)
  • feat(providers): add Felo chat-aggregator provider (#7599)
  • feat(sse): add Notion AI Web (Unofficial/Experimental) provider (#7600)
  • feat: add FreeTheAi as OpenAI-compatible gateway provider (#7602)
  • feat: add Gladia as an async speech-to-text provider (#7603)
  • feat: add EdgeTTS audio-tts provider (#7605)
  • feat(video): add Novita AI as video-generation provider (#7606)
  • feat: add Segmind image+video provider (#7608)
  • feat: add Microsoft Designer as image provider (#7609)
  • feat: per-model default reasoning_effort + no-think none on… (#7631)
  • feat(sse): per-model upstream header-response timeout override (#7632)
  • feat(dashboard): in-product guidance for prompt compression engines (#7634)
  • feat(usage): add TTFT/E2E-latency/tokens-per-second to model latency… (#7635)
  • feat: import providers from CSV/JSON file (#7636)
  • feat: confirm before removing a single connection (#7640)
  • feat(sse): honor excluded models in no-auth auto-combo candidate… (#7646)
  • feat(providers): add g4f.space no-key gateway… (#7647)
  • feat: rate-limit queue admission control (maxQueueDepth + 15s… (#7649)
  • feat(sse): generalize session affinity TTL to all providers (#7650)
  • feat: OpenRouter quota tracking (key/credits + free-window… (#7651)
  • feat(sse): quota tracking for AgentRouter, v0 (Vercel), FreeModel… (#7653)
  • feat(providers): Speechmatics STT, gTTS, VibeProxy preset (#6659, [#6667],… (#7655)
  • feat(api): route Google AI Studio Imagen through… (#7656) — @danscMax

  • feat(auth): OIDC as optional dashboard admin login gate (password… (#6973) — @mikolaj92

  • feat(api): add pagination params to 8 DB modules + recharts… (#7046) — @oyi77
  • feat(proxy): operator-level proxy subscriptions (Karing-style) —… (#7299) — @xier2012
  • feat(grok-cli): align with official Grok Build client (#7358) — @backryun
  • feat(providers): Complete GHE Copilot OAuth provider implementation (#7546) — @hppsc1215
  • feat(guardrails): add CredentialMaskerGuardrail for API key/secret… (#7683) — @Securiteru
  • feat(perplexity): refresh provider integrations (#7687) — @backryun
  • feat(providers): notion-web live model discovery via getAvailableModels (#7696) — @artickc
  • feat(providers): add proactive cf_clearance/User-Agent hint to grok-web… (#7713)
  • feat: add live gRPC-web quota fetcher for grok-cli (#7714)
  • feat(api): add opt-in auto-sync scheduler for free-proxy sources (#7716)
  • feat(dashboard): show proxy name in badge, sort saved-proxy picker,… (#7720)
  • feat(cli): add auth export command for decrypted provider… (#7724)
  • feat(oauth): accept full ChatGPT session JSON for Codex manual import (#7725)
  • feat(sse): add nvidia NIM local RPM budget + concurrency cap (#7726)
  • feat(gemini-web): emulate OpenAI tool calling via the webTools prompt shim (#7727)
  • feat(services): introduce pluggable service-provider contract, migrate… (#7730)
  • feat(mitm): root-CA + per-host leaf certs for AgentBridge static… (#7731)
  • feat(providers): add hailuo-web (MiniMax web) chat provider (#7734)
  • feat: browser login for Grok Build provider (#7735)
  • feat(routing): wire interceptFetch tool interception into the chat… (#7736)
  • feat(sse): add X-OmniRoute-Decision routing trace header (#7765)
  • feat(providers): zai-web live model discovery with local-catalog fallback (#7766)
  • feat(api): sync upstream reasoning.supported_efforts into… (#7767)
  • feat(dashboard): pin Kimi providers first in category + official… (#7775)
  • feat(chaos+ponytail): parallel chaos-mode dispatch + ponytail output … (#7781) — @Moseyuh333
  • feat(perf): IC2 — cache provider connections by ID + lazy-decrypt… (#7787) — @oyi77
  • feat(quality): gate the free-tier headline so it can never silently… (#7798)
  • feat(providers): expose an explicit tier override for any provider… (#7838)
  • feat(routing): read-only auto/* candidate transparency + per-API-key… (#7839)
  • feat(catalog): map unmapped free tiers, add navy + aihorde, surface… (#7840)
  • feat(providers): add OpenRouter speech-to-text (audio transcription)… (#7861) — @Tasogarre
  • feat(qwen): add Qwen3.8 Max Preview catalogs [Part 2/3] (#7874) — @backryun
  • feat: support Bun bundled SQLite runtime (#7878) — @Arul-
  • feat(providers): add 5 free-tier providers (ainative, aion, sealion,… (#7887)
  • feat(vnc-session): persistent noVNC browser login for web-cookie providers (#7892) — @Capslockb
  • feat(sse): add PromptQL playground provider (unofficial) (#7911) — @artickc
  • feat(cline): align ClinePass catalog and request protocol (#7914) — @backryun
  • feat: narrow mcp:connect scope + per-key HTTP tool-scope… (#7967)
  • feat: provider tab account search + mirrored top pagination (#7968)
  • feat: canonical numeric helpers + tier-1 (analytics) migration (#7969)
  • feat(sse): add HyperAgent (hyperagent.com) unofficial web provider (#7994) — @artickc
  • feat: copilot-m365-web tone-selected model variants (#7997)
  • feat(media): Adobe Firefly image + video generation provider (#8006) — @artickc
  • feat(routing): add prompt-cache affinity (#8008) — @JxnLexn
  • feat(compression): select model-aware tokenizers (#8009) — @JxnLexn
  • feat(compression): add Responses tool-output engine (#8010) — @JxnLexn
  • feat(dashboard): Kimi sponsor banner, Kimi Coding preset, official… (#8039)
  • feat(dashboard): make Codex quota card windows reflect reality (#8054) — @insoln
  • feat(compression): teach the model the CCR retrieve protocol on first… (#8063)
  • feat(compression): per-model/endpoint compression exclusion filter (#8064)
  • feat(providers): add CLOVA Studio, InternLM and Ant Ling API-key… (#8077) — @alvaretto
  • feat(codex): support reference image edits (#8122) — @xiaoyaner0201
  • feat(providers): add weekly quota tracking for grok-web (#8127) — @apoapostolov
  • feat(providers): add Sarvam AI, Writer Palmyra and PLaMo API-key… (#8161) — @alvaretto
  • feat: native Fish Audio TTS provider on /v1/audio/speech (#8164)
  • feat: zh-CN terminology glossary + consistency gate +… (#8166)
  • feat(providers): add Typhoon (Thailand) and Inception Mercury diffusion… (#8170) — @alvaretto
  • feat(sse): restrict auto-combo no-auth pool to allowlist… (#8183)
  • feat(sre): add tcp-close-analyzer.py for debugging… (#8208) — @hartmark
  • feat(settings): configurable model catalog cache TTL (#8219) — @oyi77
  • feat(github-models): refresh catalog and compatibility (#8225) — @backryun
  • feat(github): refresh Copilot model catalog (#8226) — @backryun
  • feat: classify grok-web Cloudflare anti-bot blocks + gated… (#8241)
  • feat(providers): weekly quota for xAI OAuth (Grok) (xai-oauth / xao)… (#8471) — @allanvb
  • feat(sse): every completion response now carries an… — @chirag127
  • feat(ws): the live-dashboard WebSocket server now auto-starts… — @ianriizky
  • feat(sse): configurable per-model upstream… (#6354)
  • feat(dashboard): Replace free-text model inputs in the Routing (web… (#6540)
  • feat(compression): new omniglyph engine (context-as-image) — renders… (#6556 [#6661])
  • feat(sse): rate-limit request queue admission control —… — @chirag127
  • feat(sandbox): the skill sandbox gained a container-provider… — @KooshaPari
  • feat(oauth): accept the full ChatGPT session JSON (not… (#6636)
  • feat(sse): add 5 no-key g4f.space gateway providers —… — @chirag127
  • feat(sse): add DeepInfra as a video-generation provider… (#6653)
  • feat(providers): add Freepik (Magnific Mystic) API-key… (#6654)
  • feat(providers): add Rev AI speech-to-text provider… (#6655)
  • feat(providers): add Segmind as an image + video generation provider… (#6656)
  • feat(providers): add Gladia as an async speech-to-text… (#6657)
  • feat(video): add Novita AI as a video-generation… (#6658)
  • feat(providers): add Speechmatics as an STT provider — async batch… (#6659)
  • feat(providers): add Mixedbread AI as an embeddings… (#6660)
  • feat(providers): add Felo (felo.ai) as a free, no-signup, no-API-key… (#6666)
  • feat(providers): add gTTS (Google Translate TTS) as a free, no-signup… (#6667)
  • feat(sse): add EdgeTTS (Microsoft Edge "Read Aloud") as a free,… (#6668)
  • feat(providers): add FreeTheAi as an OpenAI-compatible… (#6670)
  • feat(sse): add Microsoft Designer as an unofficial… (#6672)
  • feat(providers): add Hailuo Web (hailuo-web) — a free, _token-based… (#6673)
  • feat(cli): new omniroute auth export command dumps DECRYPTED… (#6683)
  • feat(mitm): the AgentBridge static MITM server (server.cjs) can… (#6684)
  • fix(sse): skip thinkingConfig for Gemma models on the… — @chy1211
  • feat(xai): route xAI clients to Grok's native /v1/responses… — @ryanngit
  • feat(models): add a Settings → AI "Model Overrides" UI plus… — @xz-dev
  • feat(api): add Vary: Accept-Encoding to token-authenticated… — @chirag127
  • feat(sse): add Notion AI Web (Unofficial/Experimental)… (#6758)
  • feat(dashboard): add per-routing-combo compression-mode override to the… (#6760)
  • feat(resilience): operator-configurable account rotation policy — a new… — @artickc
  • feat(sse): preserve tools/tool_choice for tool-bearing… — @chirag127
  • chore(cursor): add Grok 4.5 effort/fast model IDs: (#6774 ). — @andrewmunsell
  • feat(codex): Codex provider model discovery now fetches the live… — @JxnLexn
  • feat(cursor): register the Opus 4.8, Fable 5, and Sonnet 5 model… — @andrewmunsell
  • Changelog fragments (changelog.d/): PRs now add their changelog entry as a new fragment…
  • feat(proxy): add a latency-optimized proxy rotation strategy that… — @iamraydoan
  • feat(db): include xp_audit_log in the automatic… (#6801)
  • feat(fusion): the fusion judge may now draw on its own knowledge and… — @chirag127
  • feat(dashboard): search box on the Playground's raw model <select> —… (#6811)
  • feat(usage): Antigravity/agy quota widget now surfaces the… (#4017 [#6818])
  • feat(codex): Codex CLI compatibility shim — the Responses API… (#3697 [#6820])
  • Z.ai Web (free web-session provider): new zai-web web-cookie provider drives the free… (#6823)
  • feat(dashboard): import multiple, possibly different… (#6836)
  • feat(compression): update the vendored GCF codec behind the… (#6837)
  • feat(sse): OpenRouter quota tracking — a dedicated fetcher polls… (#6842)
  • feat(sse): live gRPC-web quota fetcher for Grok Build (grok-cli)… (#6844)
  • feat(sse): add dual-window quota tracking for the… (#6845)
  • feat(sse): add a static local RPM budget (default… (#6846)
  • feat(sse): add quota tracking for the agentrouter… (#6850)
  • feat(providers): Add GPT-5.6 support across OpenAI API, Codex, and… (#6862) — @backryun
  • chore(providers): Align emitted Claude Code identity headers, bridge… (#6862) — @backryun
  • feat(api): add a structured X-Routing-Fallback-Reason… (#6872)
  • feat(api): new GET /api/usage/model-latency-stats management… (#6873)
  • feat(providers): add a vibeproxy-openai provider-node preset to `POST…
  • feat(usage): add… (#6875)
  • feat(sse): per-model default reasoning_effort… (#6879)
  • feat(providers): let a custom/openai-compatible connection opt into… — @andrea-kingautomation
  • feat(dashboard): add a Type filter (No Signup / OAuth Login / API Key)… (#6915)
  • feat(providers): expose an editable base-URL field on the ComfyUI… (#6928)
  • feat(providers): refresh the curated OpenRouter embeddings catalog… (#6976)
  • feat(quota): Add opt-in auto-ping to keep Codex quota windows warm —… (#6977)
  • feat(oauth): Add a one-click browser (PKCE) login for Grok Build… (#7013)
  • feat(sse): Add optional-enum null-omission idiom for… (#7023)
  • feat(auth): accept the x-goog-api-key header for client-facing… — @QRcode1337
  • feat(sse): add a local dual-window (5h + 7d,…
  • feat(api): opt-in scheduled auto-sync for free-proxy sources… — @chirag127
  • feat(kiro): register the GPT-5.6 Sol/Terra/Luna model family (272k… — @SemonCat
  • feat(dashboard): show the Codex subscription plan label in provider… — @CarmeloCampos
  • feat(dashboard): add a "Reorder" button to provider connections that… — @fzrilsh
  • feat(dashboard): add 180D and 365D periods to the Cost Explorer range… (#7213)
  • feat(sse): GitHub Copilot Claude models now route through… — @yidecode
  • feat(mitm): Antigravity MITM model mappings now support an optional… — @trfi
  • feat(sse): add native xAI Grok Imagine video generation provider —… — @anndev-69
  • feat(cli): add Grok Build CLI tool setup — writes a… — @rixzkiye
  • feat(provider): add Chenzk API OpenAI-compatible gateway. (thanks… — @CahyokPutraDev99
  • feat(dashboard): add a per-operator "hide this quota row" toggle to the… — @nguyenha935
  • feat(sse): session affinity (X-Session-Id / x-codex-session-id… — @tenshiak
  • feat(sse): gemini-web now honors the OpenAI tools array by… (#7286)
  • feat(eval): added a router-eval harness (npm run eval:router,… — @KooshaPari
  • feat(services): introduce a ServiceProviderPlugin contract… (#7333)
  • feat(routing): wire interceptFetch into the chat…
  • feat(dashboard): confirm before removing a single… (#7361)
  • feat(providers): Add a first-class xAI OAuth PKCE provider for… (#7399) — @fenix007
  • feat(dashboard): surface in-product guidance for the Settings → Prompt… (#7530)
  • feat(providers): Complete GHE Copilot OAuth provider implementation with… (#7546)
  • feat(providers): grok-web's add-connection dialog now… (#7567)
  • feat(providers): register lmstudio in the embedding provider registry… (#7601) — @ekinnee
  • feat(sse): honor a no-auth provider connection's… (#7622)
  • feat(dashboard): proxy-assignment UX quality-of-life fixes — the… — @tenshiak
  • feat(providers): zai-web (chat.z.ai) now wires live… — @andrea-kingautomation
  • feat(perplexity): Refresh Perplexity Web model mappings and Search API… (#7687) — @backryun
  • Generic OpenAI-compatible model sync now captures a… (#6879)
  • feat(dashboard): Kimi (Moonshot AI) official-partnership highlight on… (#7775)
  • feat(providers): let any provider connection — built-in… (#7818)
  • feat(routing): add a read-only `GET… (#7819)
  • feat(providers): copilot-m365-web tone-selected model… (#7872)
  • feat(shared): Add canonical numeric coercion helpers (toNumber,… (#7879)
  • feat(mcp): add a narrow mcp:connect API-key scope for… (#7895)
  • feat(dashboard): provider tab account search… (#7937)
  • feat(sse): classify grok-web Cloudflare anti-bot blocks… (#8019)
  • Teach the model the CCR retrieve protocol (marker →… (#8033)
  • Add a per-model/endpoint compression exclusion filter:… (#8034)
  • feat(i18n): zh-CN terminology glossary + consistency gate + 提供商→提供者… (#8038)
  • feat(dashboard): The Codex quota card no longer shows latent, never-used… (#8051)
  • feat(providers): native Fish Audio TTS provider on… (#8099)
  • feat(codex): add bounded multi-reference PNG/JPEG/WebP image editing… (#8122) — @xiaoyaner0201
  • refactor(sse): classify SSE critical-path empty catches… (#8142)
  • feat(db): persist caller session tag into call_logs for… (#8249)
  • feat(api): quota-aware fallback routing for web-fetch… (#8297)
  • feat(providers): map upstream reasoning-level metadata… (#8347)
  • feat(providers): weekly quota for xAI OAuth (Grok) (xai-oauth / xao)… (#8471) — @allanvb
  • feat(jobs): backup auto enable schedule is now… (#8513)
  • feat(ci): automate ratchet shrink-banking so file-size/complexity… (#8612) — @MumuTW
  • feat(providers): live monthly credit quota for Firecrawl (`GET… (#8759) — @allanvb
  • feat(search): add Firecrawl to POST /v1/search supported providers… (#8814) — @allanvb
  • feat(adobe-firefly): reference-image attach for generate + OpenAI…
  • Homologation suite: new npm run homolog runs the full…
  • feat(mcp): add a read-only Local Corpus context source with…
  • feat(providers): notion-web live model discovery via…
  • Provider connections can now be shown or hidden…
  • docs(i18n): rewrite Russian README as a full native…
  • Providers: adds the Xiaomi MiMo Token Plan provider and a… (#8861)
  • feat(opencode-plugin): auto-discover models while running + force sync (#8101) — @RaviTharuma
  • feat(combo): enforce provider and model family invariants (#8304) — @RaviTharuma
  • feat(cli): replace ANTHROPIC_SMALL_FAST_MODEL with Fable default (#8343) — @leszek3737
  • feat: read INITIAL_PASSWORD env var during setup (#8439) — @linhdmn
  • feat(providers): add missing opencode-go reasoning effort variants (#8441) — @Prudhvivuda
  • feat: add Claude Opus 5 support (#8464) — @backryun
  • feat(combos): add select all / unselect all in Browse Catalog (#8526) — @JoshimOfficial
  • feat(cli-tools): add all Hermes Agent auxiliary model roles (#8543) — @leszek3737
  • feat(ci): block stale UI translations when an English value is… (#8574)
  • feat(providers): flatten multi-turn history for gemini-web (#8607) — @Prudhvivuda
  • feat(sse): relay upstream 4xx error bodies verbatim on the… (#8622)
  • feat: Claude Code discovery aliases (surface non-Claude… (#8666)
  • feat(dashboard): copy-paste settings.json block for Claude Code discovery (#8722)
  • feat(quality): temporary relax of complexity/file-size ratchets for… (#8767)
  • feat(db): let the migration runner scan extra namespaced… (#8770)
  • feat(api): prompt-cache health summary endpoint and analytics tab (#8827)

⚡ Performance

  • perf(db): project columns + composite index in… (#6918) — @oyi77
  • perf(db): add jitter to stagger due-on-restart connections (#6919) — @oyi77
  • perf(startup): warm model catalog cache at module init (#6920) — @oyi77
  • perf(db): add temp_store=MEMORY pragma to SQLite init (#6921) — @oyi77
  • perf(db): cap modelLockouts eviction at 1000 entries (#6923) — @oyi77
  • perf: wrap ComboCard, HeroSection in React.memo (#7070) — @oyi77

  • perf: Date.now hoist, hasActiveDeltaValue hoist, buffer.split… (#7066) — @oyi77

  • perf(memory): mitigate event-loop starvation under 3000+ provider… (#7719) — @oyi77
  • perf: reduce long-context request copies (#7862) — @RaviTharuma
  • perf: lazy provider init, P2C quota cache, structuredClone… (#7893) — @oyi77
  • perf(api): singleflight version lookups (#8301) — @RaviTharuma
  • perf(api): skip the full catalog build for quota-exclusive keys (#8771)

🐛 Bug Fixes

  • fix: add re-entrancy guard to token health check sweep (#6917) — @oyi77
  • fix(grok): strip reasoningEffort for grok cli models (#6938) — @CitrusIce
  • fix(6954,6953): preserve system role + strip empty-signature thinking… (#6982) — @rafaumeu
  • fix(6980): classify Cloudflare AI neuron exhaustion as… (#6983) — @rafaumeu
  • fix(dashboard): hide disabled provider connections from combo builder (#6984)
  • fix(providers): cap grok-cli tools at 200 for cli-chat-proxy (#6986)
  • fix(6848): auto-cleanup for telemetry tables causing OOM (#6988) — @rafaumeu
  • fix(models): preserve direct-model combo metadata (#6993) — @JxnLexn
  • fix: DDG circuit breaker + null content validation (#7001) — @rafaumeu
  • fix(models): preserve chat-capable image model rows (#7004) — @xz-dev
  • fix(codex): preserve GPT-5.6 reasoning contract (#7012) — @xz-dev
  • fix(base-red): align least-used combo tests with executionKey usage… (#7015)
  • fix: infer bare models from active synced catalogs (#7028) — @guanbear
  • fix(auggie): update model registry to match v0.32.0 CLI model IDs (#7032) — @oyi77
  • fix(sse): register ollama-cloud in USAGE_FETCHER_PROVIDERS (#7041) — @alltomatos
  • fix(quality): read cognitiveComplexity= machine line in… (#7042) — @alltomatos
  • fix(providers): sanitize Claude native output_config.effort (#7050) — @xier2012
  • fix(combo): treat maxInputTokens as an input-only cap in the… (#7052) — @xier2012
  • fix(antigravity): collect native part.functionCall into tool calls (#7053) — @xier2012
  • fix(responses): map mid-conversation system turns to developer role (#7056) — @xier2012
  • fix(combo): least-used sorts by per-account executionKey (#7059) — @xier2012
  • fix(providers): AgentRouter model import applies Claude Code wire image… (#7060) — @xier2012
  • fix(translator): preserve thinking.budget_tokens: 0 in Claude->Gemini (#7061) — @xier2012
  • fix(cloudflare-relay): avoid invalid regex syntax in generated worker (#7063) — @SeaXen
  • fix(dashboard): strip browser-extension attrs before hydration (#7073) — @MrFadiAi
  • fix(relay): bound Bifrost stream lifetime (#7093) — @KooshaPari
  • fix(sse): recognize xiaomi-tokenplan mimo as a thinking-mode model (#7098)
  • fix(codex): strip regex lookaround from tool schema patterns (#7100)
  • fix(openai): strip reasoning_effort when GPT-5.x models carry… (#7101)
  • fix(compression): Headroom SmartCrusher skips developer-role messages… (#7102)
  • fix(providers): surface a warning on 404 model_not_found in… (#7103)
  • fix(executors): forward X-Session-ID/X-Title agent metadata headers (#7104)
  • fix(cli): verify better-sqlite3 native binary is actually loadable (#7105)
  • fix(sse): sanitize non-ok Antigravity streaming error body (port… (#7106)
  • fix(providers): add MiniMax image-generation provider (#7108)
  • fix(sse): handle space-separated arg name/value in Composer tool… (#7116)
  • fix(cli): remove MITM DNS spoof entries before killing server… (#7117)
  • fix(dashboard): include never-tested connections in combo builder… (#7118)
  • fix(api): check Vercel SSO-protection PATCH response on relay… (#7119)
  • fix(combos): reject oversized fusion panels before fan-out (port… (#7120)
  • fix(combo): detect empty content_block in streaming SSE peek (#7121)
  • fix(oauth): resolve Kiro AWS SSO cache client credentials by… (#7122)
  • fix(tests): vitest UI suite back to green (69 fails triaged — WS6.1) (#7127)
  • fix(auto): use p95 fallback in speed factors (#7128) — @KooshaPari
  • fix(models): update Anthropic model contextLength to 1M (#7129) — @HouMinXi
  • fix(ci): raise dast-smoke timeout 12->25min (build alone eats up… (#7139)
  • fix(compression): lazy-load typescript in RTK codeStripper so prod-lean… (#7164) — @alltomatos
  • fix(providers): accept m365.cloud.microsoft for copilot-m365-web token (#7166) — @xier2012
  • fix(executors): disable parallel tools for Codex Responses Lite (#7171) — @fenix007
  • fix(tests+providers): env-dependent tests exposed by GH-hosted runners (#6634… (#7174)
  • fix(combo): reject known context overflow without exhausting… (#7177) — @JxnLexn
  • fix: add static.cloudflareinsights.com to CSP script-src (#7178) — @oyi77
  • fix: extend turbopack ignoreIssue suppression to compression… (#7180)
  • fix: recognize Ollama Cloud session usage-limit 429 as… (#7181)
  • fix: preserve relayAuth for pool-referenced relay proxies (#7182)
  • fix: wire adaptive context-budget dial into settings schema… (#7183)
  • fix(providers): DuckDuckGo VQD 429 misclassified as 503 (#7185)
  • fix(db): cap OOM probe-failure cycle in getDbInstance() (#7186)
  • fix: stop opencode-go quota lookup defaulting to Z.AI… (#7187)
  • fix(providers): refresh OpenCode (oc) free-tier model catalog (#7188)
  • fix: include proxyId when testing a saved registry proxy (#7189)
  • fix: sanitize non-Latin1 chars in combo diagnostic headers (#7190)
  • fix: raise main server keepAliveTimeout/headersTimeout above… (#7191)
  • fix: route zai-web (and other registry-entry web-cookie… (#7192)
  • fix(providers): reject chat requests for cloud-agent-only jules provider (#7193)
  • fix: restore mobile grid-cols-1 fallback on quota page card… (#7194)
  • fix: wire modelAliases fetch into HermesAgentToolCard (#7195)
  • fix: surface real claude-web error body for non-SSE 400s (#7196)
  • fix(dashboard): agent bridge dns toggle uses POST, not PUT (#7197)
  • fix: stop duplicating text in Gemini Web streamed responses (#7198)
  • fix: filter hidden custom models out of legacy combo model… (#7199)
  • fix(dashboard): implement missing handleToggleSource on Free Pool tab (#7200)
  • fix: honor combo-level proxy assignments from the registry (#7201)
  • fix(ci): run quality gates on Mergify merge-queue draft PRs… (#7202)
  • fix: add dashboard-scoped typecheck gate covering… (#7203)
  • fix(guardrails/chat): stop Vision Bridge hijacking credentialed models to… (#7204) — @artickc
  • fix(translator): preserve Gemini thought parts as reasoning_content on… (#7206)
  • fix(translator): register openai response projection for gemini clients (#7207)
  • fix(cli): fast-path --version to skip full CLI bootstrap (#7208)
  • fix: honor PROVIDER_LIMITS_SYNC_SPACING_MS for local/API-key… (#7214)
  • fix(api): bulk-add API keys no longer overwrite existing… (#7234)
  • fix(sse): route the public OpenAI GPT-5.6 family through the… (#7242)
  • fix(providers): honor configured proxy on Grok Build egress (#7244)
  • fix(nvidia): expand NIM chat model catalog (#7247)
  • fix(sse): reconstruct Claude-format content in synthetic bypass… (#7248)
  • fix(build): isolate Windows HOME/AppData during next build (#7249)
  • fix(cli): omniroute dashboard respects PORT env when --port is… (#7252)
  • fix(sse): project non-streaming JSON back to the… (#7255)
  • fix(combo): fall back on Responses SSE failures (#7256) — @rushsinging
  • fix(routing): resolve nested combo-ref panel members in fusion… (#7259)
  • fix(usage): reset logs and show provider names in analytics (#7264) — @SeaXen
  • fix(sse): silence noisy proxy-failure log on caller-initiated… (#7266)
  • fix(codex): normalize nested Responses output content (#7269) — @JxnLexn
  • fix(combo): derive session stickiness key from Responses API… (#7277) — @alltomatos
  • fix(antigravity): wrap Pro fallback chain in try/catch for timeout… (#7290) — @HouMinXi
  • fix(logs): show saved provider names in request/provider log views (#7294) — @SeaXen
  • fix(stream): reconcile encrypted Codex reasoning visibility without… (#7304)
  • fix(build): packed tarball boot crash — server-ws timeout import… (#7308)
  • fix(skills): register cli-skill-collector in the agent-skills… (#7310)
  • fix(db): tolerate unavailable virtual table modules in stats (#7313) — @megamen32
  • fix(router-eval): retained-optimization gate cleanup (#7318) — @KooshaPari
  • fix(ci): Coverage job timeout 10->20min (lcov reporter pushed it… (#7342)
  • fix(electron): normalize hashed standalone externals (#7353) — @tianrking
  • fix(db): stop a 'latest' path segment from disabling backups and… (#7359) — @danscMax
  • fix(branding): regenerate raster favicons — white mark was shipped… (#7390) — @vzts
  • fix(test): skip real DNS writes in MITM dynamic-import test (#7398) — @HouMinXi
  • fix(antigravity): streaming passthrough for non-streaming clients (#7408) — @HouMinXi
  • fix(build): align engines.node with SUPPORTED_NODE_RANGE (#7490) — @alltomatos
  • fix(api): await params in Agent Bridge DNS route (Next.js 16) (#7492) — @alltomatos
  • fix(dashboard): show Obsidian context source card (#7500) — @DKotsyuba
  • fix(ci): fetch full base history in pr-test-policy (shallow… (#7501)
  • fix(sse): preserve chat quota across mixed windows (#7504) — @webmasterarbez
  • fix(oauth): surface sanitized device-code error instead of a… (#7511) — @danscMax
  • fix(oauth): repair qwen + codebuddy-cn device-code endpoints (#7517) — @danscMax
  • fix(mitm): strip trailing assistant prefill to prevent upstream… (#7520) — @chirag127
  • fix(codex): Test probe uses a ChatGPT-account-supported model (#7524)
  • fix(codex): validate refresh_token on import before persisting (#7525)
  • fix(codex): non-stream chat 502 'Response body is already used'… (#7526)
  • fix(oauth): surface tunnel hint when Codex OAuth runs on a remote… (#7527)
  • fix(sse): preserve custom tool output images (#7540) — @loulanyue
  • fix(combo): failover when upstream SSE is truncated mid-lifecycle (#7545) — @Chewji9875
  • fix(dashboard): prefer public endpoint URLs (#7547) — @nguyenha935
  • fix(cli): refresh runtime detection accurately (#7552) — @nguyenha935
  • fix(ui): improve React Flow dark theme (#7553) — @nguyenha935
  • fix(i18n): treat MISSING sync placeholders as absent in EN… (#7556)
  • fix(cli): Windows cert check/uninstall key off the real CA… (#7557)
  • fix(sse): feed compression pipeline the authoritative vision… (#7560)
  • fix(dashboard): providers model-name filter matches live/synced catalog (#7561)
  • fix(db): pre-init sql.js WASM ahead of any getDbInstance()… (#7562)
  • fix(dashboard): resolve costs page 500 from out-of-scope t() in… (#7564)
  • fix(dashboard): surface rate-limit warning on 429 chat-probe (#7565)
  • fix(sse): lazy-load playwright in claudeTurnstileSolver (#7566)
  • fix(sse): combo failover for OpenAI streams truncated without… (#7568)
  • fix(cli): reuse win32-aware locateCommand in tool-detector (#7569)
  • fix(codex): [#7536] check content-type before touching response.body… (#7570)
  • fix(sse): stop dropping tool_search and leaking OpenAI-only… (#7571)
  • fix(api): resolve provider display name and dedup byModel on… (#7573)
  • fix(mitm): route Claude Code standalone MITM traffic (#7574) — @dongwook-chan
  • fix(sse): stop per-byte enumeration of binary image bytes in log… (#7576)
  • fix(sse): split effort/reasoning suffix off pinned cursor model… (#7577)
  • fix(chatgpt-web): recognize update_content.messages[] celsius WS frames (#7578)
  • fix(sse): 401 model-not-supported lockout + sticky… (#7580)
  • fix(antigravity): allow cloudcode envelope through messages guard (#7582) — @dongwook-chan
  • fix(sse): sanitize empty-signature thinking blocks + hoist… (#7583)
  • fix(sse): honor per-model targetFormat override for… (#7584)
  • fix(sse): clamp glm-4.6v max_tokens to the 32768 ceiling (#7585)
  • fix(cli): log Codex Responses WebSocket history/usage per logical… (#7588)
  • fix(providers): derive static model catalogs for search providers from… (#7589)
  • fix(stream-readiness): bump timeout for heavy Claude-format reasoning replicas (#7612) — @herjarsa
  • fix(translator): synthesize tool call chunks from response.completed… (#7613) — @ekinnee
  • fix(embeddings): add lmstudio to embedding provider registry (#7614) — @ekinnee
  • fix(combo): auto-clear stale session pins and emit recovery hints… (#7625) — @herjarsa
  • fix(providers): unify connection and routing flows (#7629) — @nguyenha935
  • fix(db): dedupe bulk-imported proxies by full credential tuple (#7644) — @alltomatos
  • fix(api): allow text-to-image on dual-modality models + revive… (#7648) — @danscMax
  • fix(stryker): add Microsoft Designer test to tap.testFiles (#7659)
  • fix(dashboard): cut UI import chain from connection persist module (CI… (#7677)

  • fix(perplexity-web): stop empty-content responses from live schematized SSE (#6955) — @artickc

  • fix(dashboard): make quota cards container responsive (#7027) — @xz-dev
  • fix(nvidia): restore GLM-5.2 reasoning on NIM (#7296) — @backryun
  • fix(i18n): complete Vietnamese dashboard localization and runtime… (#7493) — @nguyenha935
  • fix(providers): migrate muse-spark-web from GraphQL to WebSocket… (#7528) — @Ajeesh25353646
  • fix(combo): expose computed context_length via /api/combos for… (#7633) — @herjarsa
  • fix(api): enumerate tiered auto combo endpoints in… (#7662) — @ekinnee
  • fix(dashboard): topology reflects connection health + clears finished… (#7672) — @danscMax
  • fix(kimi-coding): capture and replay reasoning for thinking-mode turns (#7673) — @xz-dev
  • fix(ci): merge-train --fast mirrors test:unit subdir allowlist (#7688)
  • fix(sse): start credential-health sweep at boot so stale web… (#7689) — @danscMax
  • fix(cursor): discover models via official CLI command (#7692) — @makcimbx
  • fix(quota): fix antigravity/agy multi-model quota skipping in combos (#7695) — @irvandikky
  • fix(usage): preserve account identity history (#7700) — @xz-dev
  • fix(db): update proxies on password rotation (#7707) — @floze-the-genius
  • fix(providers): correct Chutes registry baseUrl (#7708)
  • fix(routing): strip prompt_cache_key for NVIDIA NIM (#7709)
  • fix(providers): degrade Arena (lmarena) cookie validation redirect to… (#7710)
  • fix(claude-web): unify Turnstile/executor/fast-path User-Agents behind… (#7711)
  • fix(sse): authenticate CLIProxyAPI fallback/passthrough legs with… (#7712)
  • fix(sse): proactively refresh Grok Build OAuth token before… (#7715)
  • fix(providers): classify ambiguous Mistral 401 instead of hard auth… (#7718)
  • fix(security): bump adm-zip >=0.6.0 + exact host matching in mitm DNS… (#7732)
  • fix(icons): fall back to Stepfun Mono when Color component is… (#7743) — @Dan-ex-hub
  • fix(stream): suppress </think> close marker for Responses API… (#7747) — @xz-dev
  • fix(sse): wire settings.wildcardAliases into model resolution (#7748)
  • fix(authz): classify forge/jcode CLI settings routes as LOCAL_ONLY (#7749)
  • fix(routing): honor eye-icon hidden models for no-auth providers in… (#7750)
  • fix(sse): persist rotated Gemini web-session cookies via… (#7751)
  • fix(docs): heal release-green docs drift + eslint any-suppression… (#7755)
  • fix(mcp): copy undici into dist/node_modules to prevent… (#7756)
  • fix(packaging): move fumadocs-mdx to devDependencies (#7757)
  • fix(ci): build API-only smoke workflows backend-only to fix… (#7758)
  • fix(cli): load DATA_DIR/server.env as fallback for .env on… (#7759)
  • fix(cli): split outboundUrlGuard's DB helpers so setup-opencode… (#7760)
  • fix(notion-web): production-ready labels, multi-workspace, inference,… (#7768) — @artickc
  • fix(kimi): expose K3 reasoning effort levels (#7776) — @xz-dev
  • fix(compression): apply compression combo assignments to routing combos (#7779) — @ekinnee
  • fix(i18n): regenerate Polish UI locale from English (#7782) — @leszek3737
  • fix(combo): retry transient errors in pipeline strategy (#7794) — @AndrianBalanescu
  • fix(quality): register nvidia-quota-phase1 and… (#7796)
  • fix(stream): synthesize terminal finish_reason chunk when upstream… (#7804) — @AndrianBalanescu
  • fix(plugins): 5 bugs on the plugin path (3 Windows-only, 2… (#7806) — @tmone
  • fix(cli): register ESM alias resolver for @/ paths under global… (#7808) — @rafaumeu
  • fix(auth): gate invalid-key check on isRequireApiKeyEnabled for… (#7810) — @AndrianBalanescu
  • fix(ci): repair release regressions exposed by clean runs (#7812) — @backryun
  • fix(rerank): add voyage format adapter for request/response… (#7813) — @AndrianBalanescu
  • fix(antigravity): attempt onboarding when projectId is empty (#5193… (#7815) — @rafaumeu
  • fix(stream): emit terminal SSE frames on mid-stream upstream failure (#7816) — @AndrianBalanescu
  • fix(sse): strip orphaned tool_use before antigravity/Vertex… (#7822)
  • fix(translator): sanitize tool_result.tool_use_id symmetrically with… (#7823)
  • fix(oauth): require chatgptUserId agreement for Codex account dedup (#7825)
  • fix(db): purge in-memory key-health state when a provider… (#7826)
  • fix(compression): keep a retrievable preamble instead of a bare CCR marker (#7827)
  • fix(db): log fatal boot-time SQLite driver-cascade failure… (#7828)
  • fix(docker): repair tls-client-node native binary after… (#7829)
  • fix(auth): restore TICK_MS in tokenHealthCheck (ReferenceError on… (#7830)
  • fix(cli): fix Windows CLI detection false negatives (#7753, [#7774]) (#7831)
  • fix(docs): document CREDENTIAL_REDACTION_ENABLED and… (#7833)
  • fix(dashboard): fix collapsed quota card session/weekly order (#7834)
  • fix(dashboard): mirror connection-row action-icon spacing under RTL (#7835)
  • fix: avoid cmd.exe spawn on Windows by using os.hostname()… (#7841) — @tientien17
  • fix(usage): harden account identity reconciliation (#7843) — @xz-dev
  • fix(cli): use rundll32 instead of cmd.exe for Windows browser… (#7844) — @tientien17
  • fix: add native lifecycle-aware health endpoint (#7852) — @RaviTharuma
  • fix: reserve chat admission before body parsing (#7853) — @RaviTharuma
  • fix: bound quadratic session-dedup memory growth (#7855) — @RaviTharuma
  • fix(compression): enable OmniGlyph for Claude Fable 5 (#7863) — @enjoyer-hub
  • fix(notion-web): add browser fingerprint headers to reduce Cloudflare… (#7864) — @HassiyYT
  • fix(mitm): gate Agent Bridge Repair on sudo password (#7865) — @skutanjir
  • fix(rerank): honor the connection's pinned proxy on rerank calls (#7867)
  • fix(compression): skip CCR on tool outputs to preserve agent loop (#7869) — @herjarsa
  • fix(vision-bridge): reroute auto/ prefix to vision model when images present (#7871) — @herjarsa
  • fix(opencode-plugin): support separate management read token (#7885) — @RaviTharuma
  • fix(sse): CC bridge loses OpenAI-format image input… (#7888)
  • fix(combo): strip boolean reasoning field for opencode-go providers (#7891) — @AndrianBalanescu
  • fix(notion-web): accept OpenAI content-parts arrays in transcript (#7896) — @artickc
  • fix(notion-web): reuse threadId across OpenAI multi-turn (no new chat… (#7900) — @artickc
  • fix(gemini): strip OpenAI "strict" tool-schema keyword for… (#7901) — @Witroch4
  • fix(antigravity): collect native functionCall parts in SSE collector (#7902) — @Witroch4
  • fix(sse): recover invalid Anthropic thinking signatures once (#7906) — @insoln
  • fix(resilience): don't cool down accounts or trip the breaker on client… (#7908) — @insoln
  • fix(dashboard): preserve quota cutoff drafts (#7909) — @hydraxman
  • fix(providers): treat public-host 302 as valid in Gemini Web connection… (#7917)
  • fix(providers): read reasoning_text in Claude-format response translator (#7919)
  • fix(dashboard): safely render structured error objects in Request Logs… (#7920)
  • fix(dashboard): repair monaco deep import broken by 0.56 exports map (#7922)
  • fix(autostart): adopt 9Router VBS startup to suppress console flash on… (#7925) — @tientien17
  • fix(translators): normalize TitleCase tool names for non-Anthropic models (#7926) — @nramabad
  • fix(api): resolve local provider models via dashboard catalog… (#7927) — @ekinnee
  • fix(auto): pool accounts by provider model (#7928) — @adrianaryaputra
  • fix(perplexity-web): multi-step empty content + advanced-quota cooldown (#7930) — @artickc
  • fix(ccr): resolve principal via OMNIROUTE_API_KEY env var on… (#7932) — @ekinnee
  • fix(combo): context-aware fallback ignores model_context_override (#7933) — @tmone
  • fix(i18n): preserve remaining Vietnamese localization (#7935) — @nguyenha935
  • fix(mitm): gate Agent Bridge DNS and Trust Cert on sudo password (#7939) — @skutanjir
  • fix(providers): route iflytek/sparkdesk to Spark's OpenAI-compatible… (#7942) — @FenjuFu
  • fix(sse): preserve parallel_tool_calls for GPT-5.6 delegation… (#7957)
  • fix(providers): copilot-m365-web fails loudly on empty turns +… (#7958)
  • fix(providers): treat unreliable web-cookie /models probe status as… (#7959)
  • fix(api): add amazon-q to the static model catalog (#7960)
  • fix: parse Gemini 429 RetryInfo.retryDelay for model lockout (#7961)
  • fix(quality): tolerate ESLint's trailing unpruned-suppressions text… (#7962)
  • fix(cli): translate missing sqlite bindings error into actionable… (#7963)
  • fix(cli): spawn opencode.cmd shim with shell:true on win32 (#7964)
  • fix(dashboard): correct block-extra-Claude-usage toggle copy to match… (#7965)
  • fix(api): classify /api/acp/agents as loopback-only (#7966)
  • fix(auth): restore configurable HEALTHCHECK_BATCH_SIZE dropped by… (#7970)
  • fix(test): widen ratelimit-admission pollUntil deadline to 10s (#7971)
  • fix(pricing): clarify disabled automatic sync status (#7972) — @RaviTharuma
  • fix(combo): exempt content_filter from empty-content detection (#7973) — @HouMinXi
  • fix(embeddings): support secure multimodal inputs (#7978) — @RaviTharuma
  • fix(resilience): cap exactCooldownMs against maxCooldownMs (#7980) — @ekinnee
  • fix(electron): derive macOS Helper name from execPath to remove 2nd… (#8002)
  • fix(chatcore): report string-reason client aborts as 499, not 502 (#8011) — @Long-Feeds
  • fix(models): drop generic catalog siblings of specialty surfaces (#8021) — @RaviTharuma
  • fix(models): stop inventing chat capabilities for specialty surfaces (#8022) — @RaviTharuma
  • fix(capabilities): resolve models.dev specialty rows across provider keys (#8023) — @RaviTharuma
  • fix(models): attach models.dev pricing to GET /v1/models entries (#8025) — @RaviTharuma
  • fix(grok-cli): require full auth.json on OAuth paste import (#8027) — @RaviTharuma
  • fix(grok-cli): sanitize function_call_output before Grok Build dispatch (#8030) — @RaviTharuma
  • fix(sse): bound forwarded response headers (#8041) — @insoln
  • fix(sse): replace spoofable .includes() PromptQL issuer check… (#8042)
  • fix(sse): bound Codex SSE peek read with per-read timeout (#8043)
  • fix(cli): stop double-prefixing combo model ids in opencode… (#8047)
  • fix(antigravity): scope 404 model-not-found lockout to exact model +… (#8050) — @AndrianBalanescu
  • fix: repair pre-existing red gates on the release/v3.8.49 tip (#8055)
  • fix(oauth): honor connectionId on token refresh so email-less… (#8062) — @insoln
  • fix: classify Google quota exhaustion responses (#8071) — @rafaumeu
  • fix(providers): refresh duckduckgo-web catalog to current Duck.ai wire… (#8079)
  • fix(security): decouple request PII redaction from injection mode (#8102) — @RaviTharuma
  • fix(providers): discover live AGY models (#8123) — @adevwithpurpose
  • fix(guardrails): align INPUT_SANITIZER request masking gate (#8124) — @RaviTharuma
  • fix(providers): refresh Baidu ERNIE and Qianfan website URLs (#8128) — @TrackCrewGalore
  • fix(stream): add logging to empty catch blocks in stream error… (#8143) — @chirag127
  • fix(sse): stop Codex/Responses sanitizer turning system image_url… (#8147)
  • fix(db): register SIGHUP handler and stop force-killing server… (#8148)
  • fix(providers): add missing poe registry baseUrl entry (#8149)
  • fix(routing): anchor quota cache on globalThis for cross-chunk… (#8150)
  • fix(responses): close namespace round-trip for Responses-Chat… (#8151) — @RCrushMe
  • fix(oauth): warn instead of silently opening unreachable localhost… (#8152)
  • fix(db): stop closing the sql.js singleton in getDbInstance()… (#8153)
  • fix(sse): run compression pipeline per turn in Codex Responses WS… (#8154)
  • fix(cli): merge node bin dir into CLI healthcheck PATH for codex… (#8156)
  • fix(sse): anonymous fingerprint fallback for keyless Pollinations… (#8157)
  • fix(cli): surface the real spawn error in process supervisor (#8158)
  • fix: strip internal reasoning placeholder from user-visible… (#8162) — @Dingding-leo
  • fix(combos): expose synced reasoning-effort variants in Combo… (#8165) — @Dingding-leo
  • fix(windows): add windowsHide to all child process spawns (#8167) — @Dingding-leo
  • fix(cursor): bridge native tools to client calls (#8171) — @makcimbx
  • fix(security): bound JWT-extraction regexes to prevent polynomial… (#8173)
  • fix: log pending request counter decrement failures (#8179) — @rafaumeu
  • fix: suppress sql.js build warning via non-analyzable… (#8184) — @rafaumeu
  • fix: align INPUT_SANITIZER_ENABLED default to true across… (#8185) — @rafaumeu
  • fix(combo): skip remaining same-provider targets on 401/403 auth… (#8195) — @rafaumeu
  • fix(compression): make memo key model-independent for non-vision engines (#8196) — @rafaumeu
  • fix(resilience): add max/step to NumberField for provider cooldown inputs (#8203) — @rafaumeu
  • fix(providers): fix Azure AI Foundry multi-model discovery and… (#8206) — @not-knope
  • fix(logs): stop the async-EPIPE log-flood loop at its ignition… (#8207) — @Tasogarre
  • fix(sse): surface OpenRouter mid-stream error chunks instead of a… (#8210) — @hartmark
  • fix(sse): Gemini malformed function-call handling + tool_choice… (#8211) — @hartmark
  • fix(sse): tool-incapable provider handling (AI Horde + Responses… (#8212) — @hartmark
  • fix(sse): Gemini TPM/RPD quota classification + combo… (#8213) — @hartmark
  • fix(services): resolve and record a real pid when adopting a service (#8218) — @seanford
  • fix(memory): resolve remote embedding dimensions for reindex (#8220) — @Prudhvivuda
  • fix(dashboard): correct machine-translated Korean UI strings in ko.json (#8224) — @MichaelYcJo
  • fix(devin-cli): refresh shared model catalog (#8227) — @backryun
  • fix(claude-web): align session transport and fallback (#8230) — @backryun
  • fix: restore OAuth auto-refresh for gemini-cli connections (#8232) — @seanford
  • fix: normalize Codex URLs and dashboard regressions (#8233) — @nguyenha935
  • fix(api): narrow claudeClassifierCompat auto trigger so… (#8236)
  • fix(gemini): drop HARM_CATEGORY_CIVIC_INTEGRITY from the default… (#8238)
  • fix(backend): word-boundary-safe tool-result truncation in lite… (#8239)
  • fix(providers): filter unsupported family-fallback candidates against… (#8240)
  • fix(translator): synthesize tool call chunks from response.completed… (#180 [#3980])
  • fix(api): Vercel Relay deploy now checks the Deployment… (#1037) — @ricatix
  • fix(oauth): resolve Kiro AWS SSO cache client credentials by… — @XCrag
  • fix(combo): streaming Claude responses whose content block opens… (#1382) — @heishen6
  • fix(codex): strip regex pattern lookaround (lookahead/lookbehind)… (#7100) — @evinjohnn
  • fix(cli): stopMitm() now removes /etc/hosts DNS-spoof entries… — @dionisius95
  • fix(sse): Cursor Composer/Auto tool calls that separate the arg… — @way-art
  • fix(dashboard): the "Custom Models" add/edit form now has a "Vision… — @nguyenphi37
  • fix(combos): fusion combos now reject an oversized panel (>40 models… — @fontvu
  • fix(providers): the OpenAI-compatible "Check" validation flow now… — @advane204f
  • fix(dashboard): include never-tested custom provider connections in the… — @fajarbossit
  • fix(executors): forward agent-supplied X-Session-ID/X-Title… (#7104) — @chitholian
  • fix(sse): Antigravity streaming requests that hit a non-ok… — @Duongkhanhtool
  • fix(providers): MiniMax Text-to-Image now works — a minimax… — @felipeleite
  • fix(cli): the runtime self-heal now verifies a cached… (#2493) — @mrprohack
  • fix(openai): strip reasoning_effort/reasoning for GPT-5.x models… — @techsolutionmta
  • fix(providers): preserve relayAuth for… (#5716)
  • fix(providers): wire the Devin cloud-agent provider… (#6142)
  • fix(providers): refresh Baidu ERNIE + Qianfan provider website URLs to… (#6271) — @TrackCrewGalore
  • fix(providers): honor a provider-level proxy assigned… (#6272)
  • fix(api): merge tool_call continuation deltas that… (#6276)
  • fix(providers): modernize the lmarena provider for the Arena.ai… (#6280) — @backryun
  • fix(providers): web-provider model discovery updated — qwen-web uses… — @janeza2
  • fix(logs): the request-log detail modal no longer reopens by… — @xz-dev
  • fix(providers): update SenseNova Token Plan support — register the… — @xz-dev
  • fix(providers): give v0-vercel-web its own alias so its… (#6343)
  • fix(providers): route AgentRouter key validation… (#6377)
  • fix(db): stop legacy log-archive migration from…
  • fix(docs): document Turbopack build memory tradeoff and… (#6409)
  • fix(compression): surface silently-dropped…
  • fix(providers): honor the max_token capability… (#6524)
  • fix(dashboard): the onboarding tier-flow diagram rendered broken — its… — @ianriizky
  • fix(routing): the auto combo's no-auth candidate pool now honors a… (#6557)
  • fix(sse): server-tool literal names (e.g. web_search) are… — @MikeTuev
  • fix(sse): sanitize non-Latin1 characters before… (#6612)
  • fix(api): recognize OpenRouter… (#6623)
  • fix(db): share one in-flight sql.js load across… (#6628)
  • fix(db): unwrap lone named-parameter objects before… (#6802)
  • fix(db): break probe-failed/restore loop on large storage.sqlite: (#6632 ). — @KooshaPari
  • fix(ci): exclude check-test-masking.test.ts's own… (#6634)
  • fix(routing): recognize Kimi-style "exceeded model… (#6637)
  • fix(cli): Claude Code installed via WinGet is now detected on… — @enjoyer-hub
  • fix(providers): removed obsolete/defunct providers from the catalog… — @backryun
  • fix(sse): requests rejected before handleChatCore… (#6698)
  • fix(providers): reject chat-completions requests for… (#6699)
  • fix(sse): unwrap bare {function:{…}} tools so OpenAI-shape… — @samir-abis
  • fix(oauth): stop merging distinct Codex OAuth logins that share an… — @lucasjustinudin
  • fix(codex): detect "model at capacity"/overloaded errors embedded… — @ryanngit
  • fix(volcengine): clamp max_tokens to the VolcEngine Ark endpoint cap… — @whale9820
  • fix(antigravity): surface aborted/malformed Gemini tool calls (e.g.… — @anhdiepmmk
  • fix(routing): the reasoning-token headroom buffer clamps to the… (#6714) — @xz-dev
  • fix(api): omniroute health (and health components/`health… (#6677 [#6717])
  • fix(startup): webpack build broke on case-insensitive filesystems… (#6718)
  • fix(build): Turbopack production build emitted an "Overly broad… (#6582 [#6720])
  • fix(providers): Codex Desktop requests to gpt-5.3-codex-spark failed… (#6651 [#6721]) — @alltomatos
  • fix(providers): the provider quota card's weekly/session bars re-sorted… (#6687 [#6722])
  • fix(i18n): pt-BR was missing 194 UI keys present in en.json — a… (#6695 [#6723])
  • fix(startup): omniroute --mcp crashed at Node ESM link time with… (#6559 [#6725])
  • fix(providers): Kiro sent the adaptive-thinking… (#6576 [#6726])
  • fix(translator): Cursor's local Subagent tool call is no longer… — @like3213934360-lab
  • fix(translator): GLM 5.2 (and other OpenAI-compatible upstreams that… — @itiwant
  • fix(resilience): OmniRoute didn't respect an exhausted Ollama Cloud (or… (#6638 [#6731])
  • fix(resilience): a combo step "pinned" to one fingerprint account… (#6696 [#6732])
  • fix(api): Responses passthrough emitted event-only SSE frames (no… (#6561 [#6735])
  • fix(compression): /api/compression/preview's top-level… (#6488 [#6741])
  • fix(resilience): account selection could pick an account already out of… (#6686 [#6742])
  • fix(api): reasoning_content (extended-thinking text) was… (#6662 [#6743])
  • fix(api): the compression config PUT schema now accepts… — @alltomatos
  • fix(api): raised the provider apiKey length cap for… — @alltomatos
  • fix(routing): fusion combos no longer silently drop combo-ref panel… (#6764)
  • fix(ci): publish electron-updater latest*.yml… (#6766)
  • fix(i18n): translate hardcoded Portuguese dashboard strings to English (#6761, [#6768]): (#6769 ). — @chirag127
  • fix(providers): strip redundant node prefix when… (#6772)
  • fix(providers): scope nvidia NIM 404s to the single… (#6773)
  • fix(codex): bump the default Codex CLI client identity from… (#6780) — @quanturbo
  • fix(ci): the blocking "Impacted unit tests (TIA)" step… (#6788)
  • fix(translator): read PDF/video file_data attachments on the… — @Witroch4
  • fix(providers): ensure DeepSeek Web SSE emits [DONE] after FINISHED: (#6791 ). — @Pitchfork-and-Torch
  • fix(api): the compression config PUT schema… — @Pitchfork-and-Torch
  • fix(electron): materialize Turbopack hashed-module symlinks during packaging (#6724, [#6594]): (#6794 ). — @huohua-dev
  • fix(cursor): send the Agent CLI build id as… — @andrewmunsell
  • fix(cli): waitForServer() no longer reports ready from… (#6800)
  • fix(sse): de-flake timing-sensitive combo… (#6803)
  • fix(codex): strip include from compact responses requests: (#6805 ). — @yinaoxiong
  • fix(dashboard): surface Claude extraUsage credits in… (#6806)
  • Request count by provider & date: Dashboard → Analytics now shows a dedicated table of… (#6812) — @tjengbudi
  • fix(resilience): an Ollama Cloud (or any apikey-category provider)… (#3709 [#6817])
  • fix(providers): an explicit thinking.budget_tokens: 0 is now honored… — @alltomatos
  • fix(bootstrap): filter empty process.env values before spawning… — @AndrianBalanescu
  • fix(providers): classify upstream 404 responses as MODEL_NOT_FOUND… — @AndrianBalanescu
  • fix(db): cap the sql.js OOM-during-probe path in… (#6632 [#6835])
  • fix(mcp): de-duplicate TOTAL_MCP_TOOL_COUNT by tool… (#6854)
  • fix(usage): xAI's exact provider-reported cost_in_usd_ticks no… (#6856) — @KooshaPari
  • fix(plugin): the @omniroute/opencode-plugin dynamic provider hook… (#6859)
  • fix(sse): apply cliproxyapiModelMapping at CLIProxyAPI… (#6876)
  • fix(sse): defer response.completed until a trailing… (#6906)
  • fix(cli): ship head-response-guard.cjs into the standalone… (#6908)
  • fix(sse): wire the shared quota-fetch throttle into… (#6911)
  • fix(sse): rename client-sent max_completion_tokens to… (#6912)
  • fix(providers): PROVIDER_LIMITS_SYNC_SPACING_MS now… (#6916)
  • fix(sse): classify LAN embeddings providers (10/8,… (#6925)
  • fix(sse): Qwen Web executor no longer sends `[object… (#6927)
  • perf(api): relay chat-completions routes now thread the… (#6930)
  • fix(sse): normalizeCodexMessageContentPart now… (#6932)
  • fix(sse): omit removed attachments field from Muse… (#6935)
  • fix(dashboard): label audio/embeddings/image compatible… (#6936)
  • fix(api): model-list discovery for LAN-local… (#6939)
  • fix(providers): openai->gemini transform now maps… (#4170) — @rafaumeu
  • fix(sse): escape backslash before brackets in ChatGPT-web… (#6944) — @brick30llc-ctrl
  • fix(oauth): tokenHealthCheck now lowercase-normalizes… (#6947)
  • fix(sse): make Codex Responses tool-arg normalization… (#6951)
  • fix(sse): drop internal commentary-phase Responses… (#6952)
  • fix(sse): stop forwarding empty-signature thinking… (#6953)
  • fix(sse): perplexity-web's default pplx-auto/pplx-sonar… — @artickc
  • fix(combos): embeddings-only and rerank-only models (e.g. JinaAI,… (#6975)
  • fix(combos): when 2+ distinct model ids from the same provider would… (#6957)
  • fix(dashboard): the combos builder now hides provider connections the… — @attid
  • fix(providers): cap grok-cli tools at 200 per request, matching xAI's… — @gitcommit90
  • fix(providers): DuckDuckGo AI Chat executor propagates… (#6996)
  • fix(providers): refresh OpenCode (oc) free-tier model… (#6998)
  • fix(api): raise the main server's… (#7003)
  • fix(compression): wire the adaptive context-budget… (#7005)
  • fix(usage): stop opencode-go quota lookup from… (#7022)
  • fix(providers): Auggie (Augment CLI) model registry updated to the real… — @oyi77
  • fix(ci): add a dashboard-scoped typecheck gate covering… (#7033)
  • fix(cli): omniroute dashboard (no --port flag) now respects… — @kaon0388v1
  • fix(build): extend the Turbopack ignoreIssue… (#7051)
  • fix(providers): web-cookie… (#7058)
  • fix(resilience): recognize Ollama Cloud's 5-hour… (#7071)
  • fix(dashboard): restore mobile single-column fallback… (#7072)
  • fix(dashboard): include proxyId when testing a saved… (#7080)
  • fix(sse): xiaomi-tokenplan mimo models (e.g. mimo-v2.5-pro)… (#7098) — @xxue-z
  • fix(dashboard): align onboarding tier descriptions and localize the… (#7125) — @Wibias
  • fix(sse): claude-web now surfaces the real upstream error body… (#7134)
  • fix(db): honor combo-level proxy assignments from the… (#7149)
  • fix(dashboard): wire modelAliases fetch into… (#7151)
  • fix(dashboard): filter hidden custom models out of the… (#7156)
  • fix(dashboard): Agent Bridge DNS toggle now sends POST… (#7157)
  • fix(dashboard): implement missing handleToggleSource… (#7161)
  • fix(sse): stop duplicating text in Gemini Web streamed… (#7163)
  • fix(executors): Codex Responses Lite requests force serial tool calls… (#7171) — @fenix007
  • fix(translator): preserve Gemini thinking-mode thought:true parts as… — @warelik
  • fix(translator): register the missing OpenAI→Gemini response projection… — @warelik
  • fix(cli): omniroute --version now fast-paths before the tsx/esm… — @Jordannst
  • fix(ci): build dast-smoke and nightly API-only smoke… (#7226)
  • api: bulk-add API keys no longer overwrite existing provider… — @asynx6
  • fix(sse): feed the compression pipeline the… (#7237)
  • fix(sse): route the public OpenAI GPT-5.6 family (gpt-5.6,… — @Jordannst
  • fix(providers): honor a configured proxy on Grok Build egress — the… — @ryanngit
  • fix(nvidia): expand NIM chat model catalog with newly-observed… — @spacesky-cell
  • fix(sse): synthetic bypass responses for Claude-format clients no… — @KunN-21
  • fix(build): isolate Windows HOME/AppData during next build. (thanks… — @KunN-21
  • fix(dashboard): providers model-name filter now matches… (#7250)
  • fix(docs): correct stale /api/version and… (#7253)
  • fix(sse): project non-streaming JSON responses back to… (#7255) — @warelik
  • fix(i18n): treat __MISSING__: sync-script… (#7258)
  • fix(authz): classify /api/cli-tools/forge-settings and… (#7263)
  • fix(sse): lazy-load playwright in claudeTurnstileSolver… (#7265)
  • fix(sse): stop logging a caller-initiated request abort/timeout… — @TuyulSpam
  • fix(sse): classify 401 "model X is not supported" as… (#7268)
  • fix(dashboard): resolve `ReferenceError: t is not… (#7272)
  • fix(cli): Windows MITM root-CA check/uninstall keyed… (#7275)
  • fix(cli): reuse cliRuntime's win32-aware… (#7279)
  • fix(dashboard): connection Test surfaces a rate-limit… (#7284)
  • fix(sse): combo failover now detects OpenAI-shape… (#7285)
  • fix(db): getDbInstance() now guarantees sql.js WASM has…
  • fix(sse): split effort/reasoning suffix off pinned… (#7289)
  • fix(sse): hoist client-injected system messages to… (#7293)
  • fix(sse): treat Uint8Array/Buffer as opaque binary in… (#7297)
  • fix(cli): load DATA_DIR/server.env as a fallback for… (#7302)
  • fix(rerank): Honor the connection's pinned proxy on rerank calls, so… (#7350) — @kamenkadmitry
  • fix(electron): Normalize hashed Turbopack external imports in packaged… (#7353) — @tianrking
  • fix(chatgpt-web): recognize update_content.messages[]… (#7357)
  • fix(sse): clamp glm-4.6v max_tokens to the 32768… (#7364)
  • fix(sse): honor per-model targetFormat override for… (#7364)
  • fix(sse): combo session stickiness now releases a… (#7387)
  • fix(cli): log Codex Responses WebSocket history/usage… (#7388)
  • fix(embeddings): remove the non-existent… — @kamenkadmitry
  • fix(providers): expose a base-URL override for… (#7447)
  • fix(build): align engines.node supported range… (#7446)
  • fix(i18n): replace machine-bulk-filled Vietnamese UI… (#7493)
  • fix(db): stop closing the single sql.js singleton… (#7494)
  • fix(sse): stop stream readiness from treating a… (#7503)
  • Fixed the Codex connection Test button always… (#7521)
  • The Codex account import (`POST… (#7522)
  • The PKCE OAuth start… (#7523)
  • fix(providers): search providers now expose a static… (#7529)
  • fix(sse): map tool_search to a Chat function tool… (#7532)
  • fix(sse): gate verbosity/prompt_cache_key on OpenAI… (#7533)
  • fix(api): Usage page "by provider" table now shows the… (#7534)
  • fix(api): Usage page "model usage" table no longer… (#7535)
  • fix(codex): non-stream Codex (ChatGPT-account) chat no… (#7536)
  • fix(sse): preserve input_image parts in array-valued Codex… (#7540) — @loulanyue
  • fix(providers): stop reporting Arena (lmarena) cookie… (#7542)
  • fix(combo): streaming combo failover now fails over when an… (#7545) — @Chewji9875
  • fix(dashboard): Public and managed tunnel endpoints now take precedence… (#7547) — @nguyenha935
  • fix(claude-web): unify Turnstile solver, executor and… (#7548)
  • fix(cli): fall back to the node:sqlite driver cascade… (#7586)
  • fix(api): expose Responses-API-format (OpenAI/Codex)… (#7587)
  • grok-cli: OAuth paste-import now requires the full… (#7610)
  • fix(sse): proactively refresh Grok Build's expiring… (#7610)
  • grok-cli: sanitize Responses function_call_output.output values… (#7611)
  • fix(translator): guard against double-emission when response.completed
  • fix(routing): strip prompt_cache_key for NVIDIA NIM —… (#7617)
  • fix(routing): honor eye-icon hidden models for no-auth… (#7620)
  • fix(providers): correct Chutes registry baseUrl from… (#7621)
  • fix(providers): unify connection status across… (#7629)
  • fix(providers): classify Mistral ambiguous 401 (quota… (#7638)
  • fix(sse): route CLIProxyAPI fallback/passthrough legs… (#7645)
  • fix(packaging): move fumadocs-mdx from dependencies to… (#7661)
  • GET /api/combos/auto now enumerates template variants…
  • fix(sse): persist rotated Gemini web-session cookies… (#7676)
  • fix(dashboard): mirror connection-row action-icon… (#7680)
  • fix(cli): split outboundUrlGuard.ts's DB/feature-flag… (#7682)
  • fix(sse): wire settings.wildcardAliases into model… (#7693)
  • fix(mcp): copy undici into dist/node_modules to prevent… (#7701)
  • fix(translator): sanitize tool_result.tool_use_id symmetrically with… (#7705)
  • fix(db): bulk proxy imports now update an existing proxy when… (#7707) — @floze-the-genius
  • fix(oauth): stop Codex OAuth completion from collapsing… (#7737)
  • fix(db): purge in-memory API-key health/rotation state… (#7740)
  • perf(db): the 5 provider-connection/node call sites 's IC2… (#7787 [#7744]) — @oyi77
  • fix(compression): CCR no longer collapses a whole… (#7746)
  • fix(sse): strip orphaned tool_use blocks before… (#7752)
  • fix(cli): resolve Windows CLI detection false negatives…
  • fix(dashboard): keep session/weekly quota rows in a… (#7764)
  • fix(db): log the fatal boot-time SQLite driver-cascade… (#7773)
  • fix(sse): Claude-Code-compatible bridge (AgentRouter and any CC… (#7777) — @beingshafin
  • perf(db): getProviderConnections now reads from a shared… (#7787) — @oyi77
  • fix(docs): document CREDENTIAL_REDACTION_ENABLED and… (#7793)
  • fix(combo): retry intermediate pipeline-strategy steps… — @AndrianBalanescu
  • fix(docker): repair tls-client-node native binary after… (#7802)
  • fix(runtime): Apply refreshed request-queue settings, restore… (#7812)
  • fix(oauth): attempt Antigravity onboarding inline when… (#7814)
  • fix(api): add amazon-q to the static model catalog so… (#7820)
  • fix(sse): preserve parallel_tool_calls for GPT-5.6… (#7821)
  • fix(quality): tolerate ESLint's trailing… (#7837)
  • fix(test): widen ratelimit-admission pollUntil deadline… (#7842)
  • fix(cli): Windows omniroute dashboard browser fallback uses… (#7844)
  • fix(dashboard): Request Logs detail modal no longer… (#7845)
  • fix(backend): stop buildClientRawRequest deep-cloning… (#7847)
  • fix(sse): copy the combo attempt body shallowly instead… (#7847)
  • fix(sse): estimate the combo fallback-compression… (#7847)
  • fix(providers): Copilot reasoning_text now surfaces in… (#7856)
  • fix(providers): treat a non-401/403 response from the… (#7857)
  • fix(providers): copilot-m365-web now fails loudly on a…
  • fix(providers): Gemini Web connection test now accepts… (#7859)
  • fix(cli): translate missing better-sqlite3 native… (#7868)
  • fix(auth): restore HEALTHCHECK_BATCH_SIZE env-var… (#7875)
  • fix(opencode-plugin): the official @omniroute/opencode-plugin now accepts… (#7884) — @RaviTharuma
  • fix(dashboard): Provider Quota cutoff inputs preserve unsaved values… (#7889)
  • fix(sse): Anthropic requests that reject a completed historical… (#7906)
  • Chat Core: client aborts that reject the upstream fetch with a raw…
  • fix(resilience): Client-aborted requests are now treated as client… (#7907)
  • fix(cli): spawn the win32 opencode.cmd shim with… (#7913)
  • fix(dashboard): correct "Block extra Claude usage"… (#7918)
  • fix(autostart): Windows auto-start no longer flashes a console window —… (#7925)
  • fix(providers): perplexity-web now detects the… (#7930) — @artickc
  • fix(sse): parse Gemini 429 RetryInfo.retryDelay /… (#7940)
  • fix(electron): resolve macOS Helper by binary name to… (#7941)
  • fix(providers): iFlytek Spark (iflytek, sparkdesk) now target the… (#7942) — @FenjuFu
  • fix(api): classify /api/acp/agents as loopback-only… (#7948)
  • fix(cli): stop double-prefixing combo model ids in the… (#7976)
  • fix(providers): route noauth opencode-zen connections… (#7993)
  • fix(providers): refresh duckduckgo-web free model… (#8000)
  • fix(providers): repoint the zai-web executor at… (#8014)
  • fix(sse): bound the Codex SSE peek/passthrough body… (#8020)
  • fix(sse): replace spoofable .includes() PromptQL… (#8029)
  • fix(providers): path-shaped multimodal model ids (e.g.… (#8032) — @Prudhvivuda
  • fix(cli): merge Node's own bin dir into the CLI… (#8036)
  • fix(sse): Bound forwarded upstream response headers so large… (#8041) — @insoln
  • fix(db): register SIGHUP handler and stop force-killing… (#8045)
  • fix(oauth): warn instead of silently opening an… (#8046)
  • fix(sse): run the prompt-compression pipeline per turn in the… (#8052)
  • fix(oauth): Refreshing the token on an email-less OAuth connection… (#8059)
  • fix(routing): anchor quota routing cache on globalThis… (#8065)
  • fix(providers): add the missing poe REGISTRY entry so built-in Poe… (#8082)
  • fix(translator): set status: "completed" on… (#8083)
  • fix(sse): give keyless Pollinations image requests the… (#8085)
  • fix(sse): stop Codex/Responses sanitizer from turning… (#8089)
  • fix(cli): surface the real spawn error… (#8091)
  • fix(antigravity): preserve request/tool fidelity, make credits modes… (#8098) — @nguyenha935
  • fix(dashboard): clamp provider-cooldown min/max ms to… (#8107)
  • fix(providers): filter unsupported family-fallback… (#8134)
  • fix(providers): classify HTTP 400 model-unavailable as… (#8136)
  • fix(backend): word-boundary-safe tool-result truncation… (#8169)
  • fix(api): narrow claudeClassifierCompat auto trigger so… (#8189)
  • fix(providers): carve cookie-auth providers out of… (#8200)
  • fix(gemini): drop HARM_CATEGORY_CIVIC_INTEGRITY from… (#8231)
  • fix(dashboard): Normalize Codex client URLs, restore the analytics… (#8233) — @nguyenha935
  • fix(providers): classify per-model-quota 403 and…
  • fix(providers): reconcile Kimi K3 vision metadata when synced… (#8250) — @Prudhvivuda
  • fix(providers): the Providers page Learn more button now opens the… (#8284) — @KaynXu
  • fix(api): fold namespace into the flattened Chat tool… (#8295)
  • fix(runtime): sanitize Muse Spark fetch failures before logging and… (#8298) — @backryun
  • fix(sse): Combo middleware preserves OpenAI Responses request… (#8310) — @ridho9
  • fix(api): accept the current compatible-provider… (#8326)
  • fix(api): stop leaking the internal provider UUID in… (#8327)
  • fix(dashboard): show custom provider_nodes providers in… (#8328)
  • fix(api): stop the 2000-token safety buffer from… (#8331)
  • fix(backend): keep combo routing from dispatching image… (#8332)
  • fix(sse): strip third-party-agent signals from the… (#8350)
  • fix(i18n): Restore brand/model proper nouns (Claude, OpenAI,… — @ikelvingo
  • fix(api): estimate inline base64 image tokens instead… (#8368)
  • fix(backend): stop prompt-cache affinity from silently… (#8370)
  • fix(api): accept a missing status query-param on GET… (#8374)
  • fix(resilience): treat an unreachable-proxy… (#8376)
  • fix(backend): make disabling the global per-key proxy… (#8385)
  • fix(dashboard): persist compression engine detail… (#8388)
  • fix(plugins): fire registered+active plugin hooks… (#8395)
  • fix(resilience): cap the connection cooldown after a… (#8396)
  • fix(api): reach synced model_capabilities rows for… (#8429)
  • fix(providers): stop marking a multi-quota-window… (#8431)
  • fix(backend): compute AgentBridge diagnose… (#8466)
  • fix(providers): OpencodeExecutor honors Extra API Keys rotation via… (#8467) — @Prudhvivuda
  • fix(sse): stop combo's "all targets failed" response… (#8486)
  • fix(backend): capability filters fail closed when every combo target… (#8488) — @Prudhvivuda
  • fix(providers): persist a runtime-discovered… (#8491)
  • fix(cli): backup create / backup auto enable —… (#8512)
  • fix(dashboard): Endpoint/API base URL display honors… (#8514) — @rqzbeh
  • fix(client): Absolute fetch("/api/...") and… (#8515) — @rqzbeh
  • fix(cli): create ~/.cache (and set XDG_CACHE_HOME)… (#8519)
  • fix(api): surface a non-blocking warning + startup scan… (#8530)
  • fix(kiro): support profileless Builder ID quota, preserve CLI auth… (#8565) — @nguyenha935
  • fix(test): isolate context-manager unit tests on a… (#8568)
  • fix(quality): check:file-size --update now removes baseline entries… (#8589) — @MumuTW
  • fix(sse): restore Task-Aware Routing config from… (#8604) — @MumuTW
  • fix(sse): task-aware routing defaults use auto/* intents… (#8605) — @MumuTW
  • fix(providers): keep registered OpenCode Go effort aliases in the… (#8610)
  • fix(resilience): report local request-queue expirations as… (#8613)
  • fix(docker): Honor OMNIROUTE_BASE_PATH behind reverse-proxy… (#8615) — @DinonowDev
  • fix(resilience): recover a wedged local request limiter after an… (#8616)
  • fix(providers): Kimi Coding billing-cycle quota errors now recover… (#8632) — @glazec
  • fix(oauth): show GitLab Duo OAuth app / env setup instructions in… (#8688)
  • fix(sse): combo compression-limit resolution falls back to… (#8716) — @DinonowDev
  • fix(db): fall back to Node's built-in SQLite driver when… (#8724) — @epsilonode
  • fix(resilience): keep missing request resources such as Files API ids… (#8756) — @wilsonicdev
  • fix(api): GET /v1/models no longer rebuilds the whole catalog… (#6408 [#8833])
  • GHE Copilot: OpenAI-native models now route to <gheUrl>/responses… (#8835) — @hppsc1215
  • CLI: omniroute launch no longer truncates pass-through… (#8837) — @sumanxg
  • Providers: Codex GPT-5.6 Sol/Terra/Luna report the current… (#8838) — @TitoTFP
  • Antigravity: a token refresh now recovers a missing projectId… (#8842) — @HouMinXi
  • CI: check:tracked-artifacts raises the git ls-files… (#8844)
  • OAuth: ANTIGRAVITY_OAUTH_CLIENT_TYPE=web lets a remote… (#8845) — @HouMinXi
  • fix(executors): Vertex AI now routes current-generation Claude models… (#8852) — @wgordon17
  • CLI: omniroute launch-codex no longer corrupts the codex… (#8856) — @sumanxg
  • Providers: AGY model sync now discovers newly announced chat…
  • fix(security): bound JWT-extraction regexes in…
  • Fixed every non-streaming Codex (ChatGPT-account) chat…
  • Logging: a broken stdout/stderr pipe no longer drives a… (#8181)
  • docs: correct three stale references caught by the…
  • Fix the Turbopack next build breaking with "Module…
  • Fix mitm-dnsConfig unit tests failing when the suite… (#6122)
  • muse-spark-web: the WebSocket 401 auth-failure message…
  • Harden the Notion web provider thread-session cache…
  • fix(security): OIDC login gate now requires…
  • Build: the packed tarball boots again — [#7191]'s…
  • Packaging: new check:pack-boot gate packs the real npm tarball,…
  • Packaging: pack-artifact closure tests now cover EVERY npm-shipped…
  • fix(cli): CLI detection now refreshes stale cached results,…
  • fix(docker): Podman deployment guidance now distinguishes local… (#8497)
  • fix(ui): Theme React Flow controls correctly in dark mode,…
  • fix(plugins): the generated plugin host script is now deleted…
  • fix(compression): the Headroom SmartCrusher tabular-compaction guard now… — @SingCJ
  • Skills: register cli-skill-collector in the agent-skills…
  • fix(responses): Make Responses API to Chat Completions downgrades…
  • fix(stream): Responses API clients (/v1/responses) no longer… (#4633)
  • fix(security): bump adm-zip to ^0.6.0 (dev transitive…
  • chore(deps): bump fast-uri≥3.1.3, hono≥4.12.27,…
  • chore(deps): bump dompurify≥3.4.12,…
  • fix(quality): register the two covering unit tests…
  • fix(auth): restore the TICK_MS constant dropped by…
  • fix(guardrails/chat): do not whole-request-reroute…
  • Providers: yuanbao-web no longer forwards a foreign single cookie…
  • Antigravity: the shared token-refresh service now recovers a missing… (#8860) — @HouMinXi
  • Adobe Firefly: gpt-image requests now default detailLevel to… (#8863) — @artickc
  • Combos: deleting a provider connection now clears the combo… (#8865) — @HouMinXi
  • Auto routing: auto/<family> combos (auto/glm, auto/gemini,… (#8866) — @rafaeldrincon
  • fix(oauth): wire Test Connection for xAI OAuth (xai-oauth /… (#8862) — @allanvb
  • Logs: a failed auto/<family> request no longer writes every… (#8867) — @rafaeldrincon
  • fix(usage): correct token/request counting for 30D/90D/YTD/ALL… (#7300) — @growab
  • fix(notion-web): use Chrome TLS impersonation for runInferenceTranscript (#8159) — @artickc
  • fix(bifrost): send v-prefixed transport version, not bare semver (#8194) — @seanford
  • fix(resilience,translator): three release/v3.8.49 base-red regressions + eslint… (#8254)
  • fix(sse): export PROVIDER_BREAKER_FAILURE_STATUSES — fix… (#8258)
  • fix(providers): limit Gemini CLI to legacy OAuth refresh (#8275) — @backryun
  • fix(cli): resolve claude.cmd on Windows in omniroute launch (#8283) — @Dingding-leo
  • fix(resilience): skip terminal connections in token health check sweep (#8286) — @Dingding-leo
  • fix(sanitizer): strip zero-width chars from Anthropic-native streaming… (#8287) — @Dingding-leo
  • fix(i18n): re-sync and complete es-ES translations with latest… (#8289) — @Dragost
  • fix(antigravity): add missing gemini-3.6-flash pricing rows to ag OAuth… (#8290) — @HouMinXi
  • fix(dashboard): stop sidebar RSC prefetch storms (#8292) — @RaviTharuma
  • fix(backend): add structure-aware chat admission (#8296) — @RaviTharuma
  • fix(providers): adapt Kimi nonstream requests internally (#8302) — @RaviTharuma
  • fix(mcp): keep POST SSE responses uncompressed (#8303) — @RaviTharuma
  • fix(api): enforce image generation API key auth (#8306) — @fenix007
  • fix(cpa): isolate credential-pool failures (#8308) — @RaviTharuma
  • fix(sse): suppress by default on Chat Completions (#8309) — @Prudhvivuda
  • fix(translator): cap thinking budget on explicit budget_tokens path (#8312) — @HouMinXi
  • fix(providers): classify HTTP 400 model-unavailable as MODEL_NOT_FOUND… (#8319)
  • fix(providers): carve cookie-auth providers out of terminal 401… (#8321)
  • fix(api): fold namespace into the flattened Chat tool name so… (#8322)
  • fix(providers): route noauth opencode-zen connections through their… (#8324)
  • fix(security): remove quadratic trailing-slash trim in Alibaba… (#8333)
  • fix(memory): self-heal upsertVector/deleteVector from a raced… (#8337) — @hartmark
  • fix(sse): stop stripInternalReasoningPlaceholder from eating… (#8341) — @hartmark
  • fix(compression): rank codex-responses in adaptive-ladder maps (#8381)
  • fix(sse): gate reasoning-placeholder strip to chunks that contain… (#8382)
  • fix(resilience): terminal-skip spares the recoverable GitHub Copilot… (#8389)
  • fix(sse): re-export PROVIDER_BREAKER_FAILURE_STATUSES for the… (#8390)
  • fix(sse): family auto-combos include any backend that serves the… (#8391)
  • fix(sse): cap exact cooldowns only when synthetic — verified… (#8393)
  • fix(devin-cli): update ACP JSON-RPC protocol for Devin CLI 3000.2.x… (#8425) — @MumuTW
  • fix(auth): exclude local CLI providers from tokenHealthCheck… (#8426) — @MumuTW
  • fix(oauth): add devin-cli and agy entries to OAUTH_TEST_CONFIG (#8427) — @MumuTW
  • fix(dashboard): preserve connection health visual on last routed… (#8428) — @MumuTW
  • fix(cursor): bridge native TodoWrite completions (#8432) — @makcimbx
  • fix(guardrails): Vision Bridge describe-fallback ignores unreachable… (#8433) — @guhcostan
  • fix(sse): record tool calls into shared state for… (#8462) — @hartmark
  • fix(oauth): actionable guidance for LAN-origin loopback mismatches… (#8463)
  • fix(hyperagent): sticky thread for agentic tool loops (Claude Code) (#8470) — @artickc
  • fix: combo input-bound, Responses->Chat image strip,… (#8476) — @herjarsa
  • fix(sse): call the real abort-signal helper in the Gemini… (#8485) — @backryun
  • fix(providers): honor Extra API Keys rotation in OpencodeExecutor (#8493) — @Prudhvivuda
  • fix(backend): fail closed when capability filters empty the combo pool (#8494) — @Prudhvivuda
  • fix(providers): resolve native vision for path-shaped multimodal model… (#8495) — @Prudhvivuda
  • fix(hyperagent): default 1M context for fable/opus/sonnet (#8496) — @artickc
  • fix(notion-web): mint fresh thread for new OpenAI sessions with same… (#8511) — @artickc
  • fix(db): classify compressionDetailNormalizers as db-internal in… (#8534) — @MumuTW
  • fix(sse): label HTTP 499 disconnects as client_disconnected (#8552) — @DinonowDev
  • fix(resilience): honor comboCooldownWait for every combo strategy (#8559) — @DinonowDev
  • fix(backend): add error.code to synthOpenAIErrorChunk for guard… (#8570) — @marceli1404
  • fix(video): validate Veo AI Free artifacts before success (#8581) — @brunnolouzada
  • fix(routing): exclude locked-out models from auto-combo candidates (#8586) — @Prudhvivuda
  • fix(api): prevent silent lost updates on concurrent settings… (#8587) — @Prudhvivuda
  • fix(auto-combo): short-circuit expandAutoComboCandidatePool when… (#8598) — @mikeiagents
  • fix(auth): tag internal/loopback-origin failed logins in the audit… (#8606) — @Prudhvivuda
  • fix(providers): declare explicit OpenCode plugin feature-flag defaults (#8608) — @Prudhvivuda
  • fix(ci): use webpack fallback for Node 26 compat build to stop… (#8611) — @Prudhvivuda
  • fix(claude): classify native subscription quota 429 (#8628) — @costaeder
  • fix(windows): request shell when spawning bare qoder binary name on… (#8633) — @Dingding-leo
  • fix(middleware): declare withInjectionGuard's context parameter optional (#8644) — @backryun
  • fix(providers): handle space-separated search queries via… (#8660) — @maxmad64bis
  • fix(dashboard): broken icon allignment in SegmentedControl.tsx (#8679) — @0x2f0
  • fix(providers): deprecate Monster API provider (fixes [#8676]) (#8691) — @Dingding-leo
  • fix(quality): register the [#8494] covering test in stryker… (#8692)
  • fix(sse): clamp max_tokens to the model output cap on every path (#8698)
  • fix(executors): pass TimeoutError reason to controller.abort() in 7… (#8699)
  • fix(api): serve /v1/models stale-first and sanitize its error… (#8703)
  • fix(sse): stop thrashing the provider prompt cache for… (#8705)
  • fix: repair five base-red failures on release/v3.8.49 (#8706)
  • fix(oauth): show GitLab Duo setup before authorize error (#8710) — @DinonowDev
  • fix: hydration mismatch, duplicate React keys, and missing… (#8723) — @Mananz90
  • fix(sse): hide synthetic OpenAI startup reasoning (#8729) — @rinseaid
  • fix(guardrails): check feature flag helper in PIIMasker to honor DB… (#8730) — @Dingding-leo
  • fix(sse): report a stream that completes without any content (#8732) — @backryun
  • fix(plugins): delete the generated host script synchronously so… (#8749) — @MumuTW
  • fix(sse): update ANTHROPIC_PING heartbeat data payload to… (#8762) — @Dingding-leo
  • fix(cloudflare-ai): sync missing free catalog models (fixes [#8725]) (#8763) — @Dingding-leo
  • fix(bedrock): preserve additionalModelRequestFields in converse… (#8764) — @Dingding-leo
  • fix(docs): use correct kebab-case CLI flags in OpenCode guide… (#8766) — @swingtempo
  • fix(db): repair the extra-migration-dirs test and env contract… (#8773)
  • fix(electron): use NEXT_DIST_DIR when stripping stale native modules (#8794) — @NBN-N3
  • fix(resilience): add UND_ERR_SOCKET to PROXY_UNREACHABLE_ERROR_CODES (#8795) — @Dingding-leo
  • fix(combo): fail open when strict context filter empties… (#8798) — @DinonowDev
  • fix(resilience): honor Cloudflare 1010 retryable:false — skip… (#8800) — @DinonowDev
  • fix(dashboard): restore Usage Model Breakdown column sorting (#8802) — @DinonowDev
  • fix(api): treat cx/ and codex/ as equivalent API-key model… (#8805) — @Prudhvivuda
  • fix(sse): pass real response payload into plugin onResponse hooks (#8806) — @Prudhvivuda
  • fix(types): export web executor types from their module (#8810) — @backryun
  • fix(types): preserve reasoning policy record shapes (#8811) — @backryun
  • fix(types): preserve compression detail config shapes (#8812) — @backryun
  • fix(types): declare virtual chaos combo config (#8815) — @backryun
  • fix(types): type memory skills injection logger (#8816) — @backryun
  • fix(types): align web fallback contracts (#8819) — @backryun
  • fix(types): declare idempotency input contracts (#8820) — @backryun
  • fix(reasoning): sanitize streamed K3 think tags (#8821) — @rinseaid
  • fix(types): normalize Kie transcription results (#8824) — @backryun
  • fix(dashboard): surface quota pool delete failures instead of failing… (#8829)
  • fix(autoCombo): normalize -free suffix in task fitness lookups (#8636) — @Dingding-leo
  • fix(sse): split the reasoning-decision guards so the error arm… (#8641) — @backryun
  • fix(openai-to-claude): skip empty reasoning_content string deltas (#8642) — @Dingding-leo
  • fix(autoCombo): match longest pattern first in lookupStaticFitnessTable (#8651) — @Dingding-leo
  • fix(providers): sync search query to URL query param (#8652) — @Dingding-leo
  • fix(maritalk): refresh supported model catalog (#8663) — @backryun
  • fix(agentSkills): scope command slice before nested subcommands to… (#8667) — @Dingding-leo
  • fix(guardrails): ensure request PII masking respects DB feature flag… (#8715) — @Dingding-leo
  • fix(reasoning): sanitize Kimi Code K3 think tags (#8721) — @rinseaid
  • fix(sse): clamp out-of-range Gemini thinking_budget and learn the… (#8726) — @fuko2935
  • fix(providers): support multi-token search in provider filter (#8731) — @Dingding-leo
  • fix(api): stop JSON.stringify-ing messages before estimateTokens… (#8740)
  • fix(quality): let --update remove baseline entries that already fit… (#8741) — @MumuTW
  • fix: escape angle brackets in i18n messages to prevent… (#8747) — @SteeleHu
  • fix(dashboard): the /home quick-start cards no longer prefetch — [#8292]…
  • fix(dashboard): Request Logs detail no longer crashes on a structured…
  • fix(dashboard): the logs detail modal stops reopening on first close…

📚 Docs

  • docs(quality): codify retry policy per runner + release-level drift… (#7107)
  • docs(troubleshooting): document Avast/AVG README.md false positive (#7295)
  • docs(perf): add per-endpoint p50/p95/p99 latency + cost budget… (#7336) — @KooshaPari
  • docs: refresh revoked Discord invite + WhatsApp Brasil link (#7604)
  • docs(readme): animated SVG for the 4-tier auto-fallback cascade (#7615)
  • docs: sync provider count to 259 (unblocks docs-counts strict… (#7616)
  • docs(readme): animate pool + combo ASCII blocks as SMIL SVG diagrams (#7626)
  • docs(readme): animate CLI command list + compression flow as SMIL SVGs (#7637)
  • docs(readme): replace free-tier budget mockup with animated SMIL card (#7665)
  • docs(readme): standardize all README tables to full content width (#7666)

  • docs: fix three stale references failing the fabricated-docs… (#7728)

  • docs(readme): unified animated card system — audited v3.8.49 numbers,… (#7769)
  • docs(readme): add Kimi (Moonshot AI) official supporter section (#7770)
  • docs(getting-started): reorder Verify It Works before IDE/CLI setup + add… (#7790) — @swingtempo
  • docs(readme): audit every number against the live code + refresh… (#7795)
  • docs(readme): evolve supporter section into sub2api-style Sponsors… (#7799)
  • docs(readme): contributors 360+ -> 350+ (audited) (#7803)
  • docs(i18n): refresh Polish README and fix relative links (#7807) — @leszek3737
  • docs: add general Web Cookie provider setup guide (#7881) — @arpit-jaiswal-dev
  • docs(guides): document Kaspersky PDM behavioral false positive on the… (#7923)
  • docs: document npm install ERESOLVE/peer/deprecated warnings… (#7988) — @Dingding-leo
  • docs: fix Docker IPv6 connection reset with -p 127.0.0.1 bind… (#7989) — @Dingding-leo
  • docs(readme): Kimi partner tracking links (aff=omniroute) +… (#8028)
  • docs: add AgentRouter multi-provider routing troubleshooting (#8049) — @leninejunior
  • docs(security): correct prompt-injection severity table +… (#8113) — @rafaumeu
  • docs(ops): publish public branching and release model (#8129) — @c4usal
  • docs(i18n): full Russian README rewrite (#8217) — @MonteNegroX
  • docs(readme): re-audit numbers, fix table scroll, refresh contributors (#8243)
  • docs(db): propose pluggable persistence boundary (#8261) — @xiaoyaner0201
  • docs(db): add reproducible SQLite coupling inventory (#8262) — @xiaoyaner0201
  • docs: add public ROADMAP (3.8.5x rail -> 3.9.0 LTS -> 4.0… (#8348)
  • docs: sync env-var contract (chaos panel, notion TLS, grok… (#8362)
  • docs: one golden path across PR template, CONTRIBUTING,… (#8380)
  • docs(claude-code): document unprefixed model IDs and the Ambiguous model… (#8410) — @dvirarad
  • docs(podman): clarify Podman Machine deployment (#8569) — @shixi-li
  • docs(env): document NEXT_PUBLIC_OMNIROUTE_BASE_PATH and… (#8690) — @MumuTW
  • docs(codex): document session affinity and stream idle for long tasks (#8709) — @DinonowDev
  • docs: replace outdated Polish docs with translation from… (#8823) — @leszek3737
  • docs: restore the Polish API_REFERENCE removed by [#8823] (#8831)

🧪 Tests & Quality

  • test(build): derive pack-artifact closures for all npm-shipped… (#7081)
  • test(dashboard): dedicated regression guard for [#6815] density guarantee (#7291)
  • test(ci): make [#6634] selfref guard hermetic — read file from… (#7327)
  • test(ci): mock route bridge surfaces error message, not raw stack (#7354)
  • test(ci): static body in codex e2e mock route bridge (CodeQL [#737]) (#7558)
  • test(ci): exact-line assert in grok-build config test (CodeQL… (#7628)

  • test(codex): cover image tool output replay (#7704) — @dongwook-chan

  • test(security): exact SAN-entry match in mitm leaf-cert test (CodeQL… (#7824)
  • test: verify keepalive interval cleanup on disconnect,… (#8190) — @rafaumeu
  • test: realign catalog snapshot tests to current deliberate… (#8386)
  • test: hermetic notion thread-session mocks + drop duplicated… (#8392)
  • test(e2e): contract test for the full provider journey (#8444) — @HoneyTyagii
  • test(sse): repair two base-red gates on release/v3.8.49 (#8490) — @backryun
  • test(context): isolate context-manager suite from local DATA_DIR (#8596) — @DinonowDev

🔧 Chores / CI

  • chore(release): gate the sync-back push on release-green --quick (WS0.3) (#7083)
  • chore(ci): gate hygiene — secrets baseline 0, semgrep drop,… (#7099)
  • chore(ops): runner-box janitor + operations runbook (WS3.3) (#7115)
  • chore(ci): promote test:vitest:ui to blocking (suite green after… (#7147)
  • chore(ci): stop dependabot proposing typescript majors —… (#7306)
  • chore(release): script the 0a.0b PR re-home with a verified read-back (#7312)
  • chore(quality): tighten the coverage ratchet to the CI's real numbers (#7326)
  • chore(ci): make the Electron Windows leg advisory with bash stderr… (#7340)
  • chore(deps): bump actions/setup-node from 6 to 7 (#7348)
  • chore(deps): bump codecov/codecov-action (#7350)
  • ci(release-green): add a main-green arm to detect when main goes red (#7355)
  • chore(deps): bump github/codeql-action/analyze from 4.37.0 to 4.37.1 (#7641)
  • chore(deps): bump github/codeql-action/init from 4.37.0 to 4.37.1 (#7642)
  • chore(quality): register [#6672] test in stryker tap.testFiles (base-red… (#7652)
  • chore(release): merge-train box-speed suite + --fast mode (#7670)

  • chore: [defer] fix embedded CLIProxyAPI config handling (#6877) — @professional-ALFIE

  • chore: [defer] fix(grok): align responses tool-call shape for… (#6937) — @CitrusIce
  • chore: [needs-vps] feat(dashboard): add per-operator quota row… (#7251)
  • chore: [defer] feat(combo): universal cooldown-aware retry &… (#7301) — @ViFigueiredo
  • chore: Completing Arabic language (#7686) — @mustafa-phd
  • chore: IC2: Cache provider connections by ID + provider nodes (#7744) — @oyi77
  • chore: [Emergency Fix] fix(build): repair release build… (#7772) — @backryun
  • chore: [Part 1/3]refactor(qwen): replace legacy Qwen Code and… (#7866) — @backryun
  • chore: [Part 3/3] feat(qwen): add regional Alibaba and Qwen… (#7882) — @backryun
  • chore: Preserve supported Responses behavior in Chat… (#7894) — @JxnLexn
  • chore: Restore Responses API custom tool calls (#7905) — @JxnLexn
  • chore: Hide internal reasoning replay placeholders (#7912) — @JxnLexn
  • chore(deps): bump js-yaml, brace-expansion, shell-quote, tar… (#7915)
  • chore: i18n(zh-TW): complete Traditional Chinese (Taiwan)… (#8024) — @lunkerchen
  • chore: i18n: bring 40 locales to full parity with en.json (#8031) — @nguyenha935
  • chore(deps): resolve 7 open Dependabot alerts via npm overrides (#8066)
  • chore(deps): resolve 3 more Dependabot alerts (dompurify,… (#8069)
  • chore(dashboard): reframe Kimi partnership as "Open Source Friends" (#8117)
  • chore(quality): fix 2 pre-existing lint/suppression drift issues (#8209) — @hartmark
  • chore: add K3banner-1.png banner asset (#8242)
  • chore(quality): rebaseline accountFallback+combo for [#8252] own-growth… (#8252) — @RaviTharuma
  • optimize(chaos+ponytail): i18n ponytail, dedupl dispatch, provider diversity (#8264) — @Moseyuh333
  • chore(deps): bump next to 16.2.11 (9 security advisories) (#8265)
  • chore: Add Alibaba-family media model support (#8266) — @backryun
  • chore: Clicking a provider card hitting back loses scroll… (#8349) — @swingtempo
  • chore: feat(log): Added new visual scrolling log page (#8354) — @hartmark
  • chore: [BUG] enforceOutputTokenBudget ignores combo-resolved… (#8378) — @RCrushMe
  • chore(ci): cancel superseded runs, skip DAST on docs-only PRs,… (#8379)
  • chore(quality): drop stale muse-spark-web allowlist entry + sync… (#8383)
  • chore: i18n(zh-TW): translate missing Reasoning Routing strings (#8423) — @MumuTW
  • chore(deps): bump codecov/codecov-action from 5.5.5 to 7.0.0 (#8452)
  • chore(deps): bump github/codeql-action/analyze from 4.37.1 to 4.37.3 (#8453)
  • chore(deps): bump ossf/scorecard-action from 2.4.3 to 2.4.4 (#8454)
  • chore(deps): bump github/codeql-action/init from 4.37.1 to 4.37.3 (#8455)
  • chore(deps): bump actions/setup-python from 6 to 7 (#8456)
  • chore(sse): drop deprecated baseUrl from open-sse tsconfig for TS… (#8473) — @backryun
  • refactor(sse): resolve open-sse utils/translator type diagnostics for… (#8483) — @backryun
  • refactor(sse): declare the executor execute() result contract (#8489) — @backryun
  • refactor(sse): stop three executors shadowing BaseExecutor.buildHeaders (#8498) — @backryun
  • refactor(sse): narrow three result unions via type predicates (#8499) — @backryun
  • refactor(sse): restore three executor types the runtime already relied… (#8520) — @backryun
  • refactor(dashboard): clear file-size base-red by extracting provider-card… (#8524) — @MumuTW
  • refactor(guardrails): narrow the documented void return at the dispatch site (#8525) — @backryun
  • refactor(sse): type the rerank response adapter's options parameter (#8528) — @backryun
  • refactor(sse): retag the designer-web result unions with string… (#8531) — @backryun
  • refactor(sse): declare the multipart/gRPC frame bodies as… (#8533) — @backryun
  • chore(ci): resync stale no-explicit-any suppression count for… (#8544) — @MumuTW
  • chore(usage): decompose services/usage.ts into per-provider usage/*… (#8545) — @MumuTW
  • chore(validation): decompose providers/validation.ts into validation/*… (#8546) — @MumuTW
  • chore(token-refresh): decompose services/tokenRefresh.ts into tokenRefresh/*… (#8547) — @MumuTW
  • chore(combo): extract pure error predicates and quota status helpers… (#8548) — @MumuTW
  • chore(i18n): normalize zh-TW terminology and sync stale README… (#8554) — @MumuTW
  • refactor(sse): stop isClaudeEventPayload claiming a narrowing it never… (#8557) — @backryun
  • chore(quality): rebaseline file-size for inherited base growth (#8561) — @fenix007
  • chore(deps): patch js-yaml + postcss for 2 high Dependabot alerts (#8572)
  • refactor(tls): update TLSClient instantiation to use… (#8583) — @DinonowDev
  • refactor(sse): peel the bare Response off handleChatCore's union in… (#8647) — @backryun
  • refactor(sse): guard the KIE task-id and callback-url reads at their… (#8661) — @backryun
  • refactor(sse): declare the ArrayBuffer backing on media byte producers (#8665) — @backryun
  • merge: resolve conflicts for [#7904] local corpus context… (#8685) — @terrafirmbot-source
  • chore(quality): update baselines after v3.8.49 merge-train (#8686)
  • chore: Dependabot updates (#8695) — @justdoGIT
  • chore: Create AMIT (#8727) — @amitgolan60-coder
  • chore(ci): add release PR build gate (#8735) — @ekinnee
  • chore: Stabilize Notion web sessions and JSON output (#8751) — @0xheycat
  • deps: bump electron from 43.1.1 to 43.2.0 in /electron (#8782)
  • deps: bump the production group across 1 directory with 18… (#8793)
  • refactor(sse): retag the Adobe Firefly IMS token-check union (#8638) — @backryun
  • refactor(db): let the provider-nodes cache keep the row type it… (#8639) — @backryun
  • refactor(sse): use the shared ApiKeyMetadata in reasoningRouting… (#8643) — @backryun
  • refactor(sse): narrow three media-generation result unions (#8645) — @backryun
  • refactor(sse): declare the semantic-cache read path's parameters (#8646) — @backryun

🔀 Other

  • [needs-vps] fix(electron): materialize Turbopack… (#6794) — @huohua-dev
  • [codex] Keep mode-pack weights consistent in auto… (#7008) — @KooshaPari
  • Explain effective auto-combo scoring weights (#7087) — @KooshaPari
  • [needs-vps] fix(dashboard): add vision-capability… (#7124)
  • [needs-vps] fix(dashboard): align onboarding tier… (#7125) — @Wibias
  • Use OpenAI chunks for early chat keepalives (#7136) — @KooshaPari
  • Fix Codex Responses compression analytics (#7273) — @JxnLexn
  • Add cache-aligned Live Zone compression (#7280) — @JxnLexn
  • Fix routed target request parameters (#7323) — @JxnLexn
  • deps: bump electron from 43.1.0 to 43.1.1 in /electron (#7349)
  • deps: bump the development group with 8 updates (#7351)
  • deps: bump the production group across 1 directory with… (#7352)
  • Add per-connection Provider Quota visibility (#7360) — @JxnLexn
  • Stream model health probes for slow providers (#7377) — @JxnLexn
  • Refresh NVIDIA free metadata and detect catalog drift (#7378) — @JxnLexn
  • Reject invalid output token budgets (#7379) — @JxnLexn
  • Honor provider proxies for The Old LLM Vercel blocks (#7380) — @JxnLexn
  • Restore proxy navigation and sidebar accordion state (#7381) — @JxnLexn
  • Expose proxy controls for no-auth providers (#7419) — @JxnLexn
  • Add reasoning-based model and effort routing (#7607) — @JxnLexn

  • refactor(sse): extract per-provider token-refresh functions from… (#7817)

  • deps: bump the production group with 8 updates [bot] (#7897) — @dependabot
  • deps: bump the development group with 5 updates [bot] (#7898) — @dependabot
  • refactor(antigravity): align official clients and callable catalog (#8013) — @backryun
  • refactor(compression): extract resolveHeadroomDetail to keep… (#8058)
  • deps: bump next from 16.2.10 to 16.2.11 [bot] (#8235) — @dependabot

🩹 Direct release-branch fixes (no PR — authorized base-red sweep, 2026-07-18)

  • fix(base-red): full-suite realignment after the 102-PR merge campaign:…
  • chore(release-branch): cycle maintenance pushed directly to release/v3.8.49
  • test(ui): the vitest:ui suite was red across the whole cycle…

📝 Maintenance

  • Merge-train script: (scripts/release/merge-train.sh): batch-validates N… (#6784)
  • release: list-uncovered-commits.mjs now unions the CHANGELOG… (#6857 [#6878])
  • chore(ci): stop dependabot from proposing typescript majors —…
  • maintenance(quality): re-baseline file-size for two legitimately-grown…
  • fix(i18n): backfill the four usage.* quota-visibility keys [#7251]…
  • docs(codex): document session affinity (sessionAffinityTtlMs) and… (#7287)
  • test(dashboard): restore dedicated regression coverage for [#6815]'s… (#7291)
  • Antivirus false-positive note: (docs/guides/TROUBLESHOOTING.md): documents why…
  • chore(release): add scripts/release/rehome-open-prs.mjs — the Phase… (#7307)
  • Add an advisory production build to the PR-to-release…
  • docs: Add docs/INCIDENT_RESPONSE.md — a non-security… (#7334) — @KooshaPari
  • docs: Add docs/PERF_BUDGETS.md — per-endpoint p50/p95/p99… (#7336) — @KooshaPari
  • README tier-cascade diagram animated: (docs/diagrams/tier-cascade.svg): the ASCII 4-tier… (#7615)
  • Docs provider-count sync: (README.md, AGENTS.md, CLAUDE.md): provider-count… (#7616)
  • README animated diagrams: (docs/diagrams/pool-fair-share.svg,… (#7615)
  • docs(ops): publish public branching/release model (release/* =… (#7627) — @c4usal
  • README animated diagrams, round 3: (docs/diagrams/cli-terminal.svg,…
  • README: replaced the free-tier budget preview mockup… (#7665)
  • README: standardized all 28 tables to the same full… (#7666)
  • Realigned 13 test files that had drifted red on the… (#7690)
  • README: unified animated card system — numbers audited… (#7769)
  • chore(quality): fix two release-tip base-reds blocking every fresh PR…
  • fix(i18n): backfill the six providers.tierOverride* keys [#7838]…
  • chore(quality): regenerate the provider translate-path golden snapshot…
  • chore(quality): prune a stale ESLint suppression for…
  • Extract resolveHeadroomDetail() from the…
  • chore(quality): rebaseline complexity (2130→2183) and… (#3501 [#8566]) — @MisileLab
  • refactor(sse): extract combo dispatch prelude… (#8582) — @MumuTW
  • chore(quality): bank completed file-size shrinks into… (#8585) — @MumuTW
  • refactor(sse): extract combo target resolution into… (#8592) — @MumuTW
  • Source-scanner negative guards: (tests/unit/source-scanner-guards.test.ts): hard gate… (#8619) — @MumuTW
  • chore(skills): regenerate skills/cli-backup-sync/SKILL.md so it… (#8657) — @MumuTW
  • chore(quality): extract pure provider input parsers to…
  • Realign the Antigravity non-streaming 429-retry test…
  • chore(quality): restore no-explicit-any severity to…
  • chore(base): pt-BR/en i18n keys for [#6909]…
  • chore(base): re-export relayProbeStats from localDb…
  • fix(tests): realign the disabled-compression combo…
  • CI: pr-test-policy fetches the base branch with full…
  • ci: unit fast-path sharding doubled 2→4 (halves the… (#6781 [#6691] [#6693])
  • CI: Codecov patch-coverage on every PR diff (informational…
  • Classify upstream dispatches by host instead of URL…
  • chore(combo): extract 8 pure error predicates and quota status…
  • CI: raise the Coverage job timeout 10→20min — the lcov… (#7114)
  • CI: raise the dast-smoke job timeout 12→25min — the CLI…
  • chore(validation): decompose…
  • chore(token-refresh): decompose…
  • chore(usage): decompose open-sse/services/usage.ts
  • docs: routing-strategy count reconciled to 18 across… (#6663) — @chirag127
  • CI: E2E matrix shards are now duration-balanced (LPT…
  • CI: the new Electron Windows prepare-bundle leg (WS1.5) is…
  • CI: the Electron Package Smoke job now runs a Windows leg…
  • Quality gates hygiene (WS6/D3 + WS1.7): gitleaks baseline zeroed — the 3 frozen…
  • fix(oauth): register ghe-copilot in the OAuth…
  • fix(dashboard): add the ghe-copilot entry to the…
  • chore(perf): add npm run bench:heap-body — a…
  • CI: hotfix fast-lane — PRs labeled hotfix (owner-applied,…
  • chore(ci): resync the stale no-explicit-any
  • chore(release): merge-train runs the box-tuned…
  • chore(release): merge-train --fast now classifies changed tests with…
  • CI: quality.yml draft guards now also match Mergify…
  • Merge queue (D5): reviewed PRs now merge through the Mergify queue…
  • Release: npm publishing is now STAGED by default — the workflow…
  • chore(release): v3.8.47 pre-flight — relocate [#6943]…
  • Docs: QUALITY_GATES.md now codifies the per-runner test…
  • chore(quality): owner-approved ratchet rebaseline for…
  • docs(readme): fix stale counts — 18 routing strategies (adds the…
  • Rebaseline the cyclomatic-complexity ceiling (2059 →…
  • CI: release-green validation is now continuous — every code…
  • chore(ci): fix two shared base-reds on the release tip that…
  • docs: refresh llm.txt to the current project state (248…
  • Strengthen the compareRouterEvalRuns regression test…
  • Ops: scripts/ops/runner-janitor.sh +…
  • chore(security): scrub hardcoded live-instance credentials (API key +…
  • Tests: the [#6634] self-reference test now fetches origin/main
  • Register 5 covering unit tests (account-fallback…
  • chore(quality): register microsoft-designer-web-6672…
  • Release tooling: sync-next-cycle.mjs now runs `validate-release-green…
  • Rebaseline testFrozen for…
  • chore(quality): tighten the coverage ratchet to the CI's real numbers…
  • chore(quality): split open-sse/services/tokenRefresh.ts (2249 lines,…
  • chore(quality): re-pin the file-size ceilings touched…
  • chore(quality): re-pin the chatCore.ts file-size…
  • chore(quality): align the pack-artifact expected-path…
  • chore(quality): re-pin the apiKeys.ts and…
  • CI: Playwright E2E and both vitest suites now emit JUnit…
  • CI: the fast-path Vitest job (every PR) now also emits…
  • CI: TypeScript 7 (native compiler, GA 2026-07-08) now runs…
  • maintenance(quality): clear v3.8.49 owner-PR-campaign base-reds on…
  • Release tooling: new scripts/release/verify-published.mjs <version> —…
  • CI: promote test:vitest:ui to a blocking gate — the suite… (#7127)
  • chore(tests): fix all 70 failing test:vitest:ui tests…

🙌 Contributors

Contributor PRs / Issues
@0x2f0 [#8679]
@0xheycat [#8751]
@adevwithpurpose [#8123]
@adrianaryaputra [#7928]
@advane204f direct commit / report
@Ajeesh25353646 [#7528]
@allanvb [#8471], [#8759], [#8814], [#8862]
@alltomatos [#6703], [#6715], [#6756], [#6757], [#6759], [#6813], [#6819], [#6821], [#7041], [#7042], [#7164], [#7277], [#7490], [#7492], [#7644]
@alvaretto [#8077], [#8161], [#8170]
@amitgolan60-coder [#8727]
@andrea-kingautomation [#7678]
@andrewmunsell [#6774], [#6779], [#6795]
@AndrianBalanescu [#6828], [#6829], [#7794], [#7804], [#7810], [#7813], [#7816], [#7891], [#8050]
@anhdiepmmk direct commit / report
@anndev-69 direct commit / report
@apoapostolov [#8127]
@arpit-jaiswal-dev [#7881]
@artickc [#6763], [#6955], [#7204], [#7696], [#7768], [#7896], [#7900], [#7911], [#7930], [#7994], [#8006], [#8159], [#8470], [#8496], [#8511], [#8863]
@Arul- [#7878]
@asynx6 direct commit / report
@attid [#6984]
@backryun [#6280], [#6675], [#6862], [#7296], [#7314], [#7358], [#7531], [#7687], [#7772], [#7812], [#7866], [#7874], [#7882], [#7914], [#8013], [#8225], [#8226], [#8227], [#8230], [#8266], [#8275], [#8298], [#8464], [#8473], [#8483], [#8485], [#8489], [#8490], [#8498], [#8499], [#8520], [#8525], [#8528], [#8531], [#8533], [#8557], [#8638], [#8639], [#8641], [#8643], [#8644], [#8645], [#8646], [#8647], [#8661], [#8663], [#8665], [#8732], [#8810], [#8811], [#8812], [#8815], [#8816], [#8819], [#8820], [#8824]
@beingshafin direct commit / report
@brick30llc-ctrl [#6944]
@brunnolouzada [#8581]
@c4usal [#7627], [#8129]
@CahyokPutraDev99 direct commit / report
@Capslockb [#7892]
@CarmeloCampos direct commit / report
@Chewji9875 [#7545]
@chirag127 [#6022], [#6593], [#6643], [#6644], [#6646], [#6650], [#6769], [#6771], [#6804], [#7079], [#7520], [#8143]
@chitholian direct commit / report
@chy1211 direct commit / report
@CitrusIce [#6937], [#6938]
@costaeder [#8628]
@Dan-ex-hub [#7743]
@danscMax [#7359], [#7511], [#7517], [#7648], [#7656], [#7672], [#7689]
@dependabot [#7897], [#7898], [#8235]
@Dingding-leo [#7988], [#7989], [#8162], [#8165], [#8167], [#8283], [#8286], [#8287], [#8633], [#8636], [#8642], [#8651], [#8652], [#8667], [#8691], [#8715], [#8730], [#8731], [#8762], [#8763], [#8764], [#8795]
@DinonowDev [#8552], [#8559], [#8583], [#8596], [#8615], [#8709], [#8710], [#8716], [#8798], [#8800], [#8802]
@dionisius95 direct commit / report
@DKotsyuba [#7500]
@dongwook-chan [#7574], [#7582], [#7704]
@Dragost [#8289]
@Duongkhanhtool direct commit / report
@dvirarad [#8410]
@ekinnee [#7601], [#7613], [#7614], [#7662], [#7779], [#7927], [#7932], [#7980], [#8735]
@enjoyer-hub [#6647], [#7863]
@epsilonode [#8724]
@evinjohnn direct commit / report
@fajarbossit direct commit / report
@felipeleite direct commit / report
@fenix007 [#7171], [#7399], [#8306], [#8561]
@FenjuFu [#7942]
@floze-the-genius [#7707]
@fontvu direct commit / report
@fuko2935 [#8726]
@fzrilsh direct commit / report
@gitcommit90 [#6986]
@glazec [#8632]
@growab [#7062], [#7300]
@guanbear [#7028]
@guhcostan [#8433]
@hartmark [#8208], [#8209], [#8210], [#8211], [#8212], [#8213], [#8337], [#8341], [#8354], [#8462]
@HassiyYT [#7864]
@heishen6 direct commit / report
@herjarsa [#7612], [#7625], [#7633], [#7869], [#7871], [#8476]
@HoneyTyagii [#8444]
@HouMinXi [#7035], [#7129], [#7290], [#7398], [#7408], [#7973], [#8290], [#8312], [#8842], [#8845], [#8860], [#8865]
@hppsc1215 [#7546], [#8835]
@huohua-dev [#6794]
@hydraxman [#7909]
@iamraydoan [#6798]
@ianriizky [#6072], [#6538]
@ikelvingo [#8355]
@insoln [#7906], [#7908], [#8041], [#8054], [#8062]
@irvandikky [#7695]
@isiahw1 [#7555]
@itiwant direct commit / report
@janeza2 [#6308]
@Jordannst direct commit / report
@JoshimOfficial [#8526]
@justdoGIT [#8695]
@JxnLexn [#6776], [#6993], [#7154], [#7177], [#7269], [#7273], [#7280], [#7281], [#7282], [#7323], [#7360], [#7377], [#7378], [#7379], [#7380], [#7381], [#7419], [#7607], [#7894], [#7905], [#7912], [#8008], [#8009], [#8010]
@kamenkadmitry [#7350], [#7425]
@kaon0388v1 [#7049]
@KaynXu [#8284]
@KooshaPari [#6611], [#6632], [#6856], [#7008], [#7087], [#7093], [#7128], [#7130], [#7136], [#7315], [#7318], [#7334], [#7336]
@KunN-21 direct commit / report
@leninejunior [#8049]
@leszek3737 [#7782], [#7807], [#8343], [#8543], [#8823]
@like3213934360-lab direct commit / report
@linhdmn [#8439]
@Long-Feeds [#8011]
@loulanyue [#7540]
@lucasjustinudin direct commit / report
@lunkerchen [#8024]
@makcimbx [#7692], [#8171], [#8432]
@Mananz90 [#8723]
@marceli1404 [#8570]
@maxmad64bis [#8660]
@megamen32 [#7313]
@MichaelYcJo [#8224]
@mikeiagents [#8598]
@MikeTuev [#6586]
@mikolaj92 [#6973]
@MisileLab [#8566]
@MonteNegroX [#8217]
@Moseyuh333 [#7781], [#8264]
@MrFadiAi [#7073]
@mrprohack direct commit / report
@MumuTW [#8423], [#8425], [#8426], [#8427], [#8428], [#8524], [#8534], [#8544], [#8545], [#8546], [#8547], [#8548], [#8554], [#8582], [#8585], [#8589], [#8592], [#8604], [#8605], [#8612], [#8619], [#8657], [#8690], [#8741], [#8749]
@mustafa-phd [#7686]
@NBN-N3 [#8794]
@nguyenha935 [#7493], [#7547], [#7552], [#7553], [#7629], [#7935], [#8031], [#8098], [#8233], [#8565]
@nguyenphi37 direct commit / report
@not-knope [#8206]
@nramabad [#7926]
@oyi77 [#6917], [#6918], [#6919], [#6920], [#6921], [#6923], [#7032], [#7045], [#7046], [#7066], [#7070], [#7178], [#7719], [#7744], [#7787], [#7893], [#8219]
@Pitchfork-and-Torch [#6747], [#6791]
@professional-ALFIE [#6877]
@Prudhvivuda [#8032], [#8220], [#8250], [#8309], [#8441], [#8467], [#8488], [#8493], [#8494], [#8495], [#8586], [#8587], [#8606], [#8607], [#8608], [#8611], [#8805], [#8806]
@QRcode1337 [#7034]
@quanturbo [#6780]
@rafaeldrincon [#8866], [#8867]
@rafaumeu [#6813], [#6979], [#6982], [#6983], [#6987], [#6988], [#7001], [#7808], [#7815], [#8071], [#8113], [#8179], [#8184], [#8185], [#8190], [#8195], [#8196], [#8203]
@RaviTharuma [#7852], [#7853], [#7855], [#7862], [#7885], [#7972], [#7978], [#8021], [#8022], [#8023], [#8025], [#8027], [#8030], [#8101], [#8102], [#8124], [#8252], [#8292], [#8296], [#8301], [#8302], [#8303], [#8304], [#8308]
@RCrushMe [#8151], [#8378]
@ricatix direct commit / report
@ridho9 [#8310]
@rinseaid [#8721], [#8729], [#8821]
@rixzkiye direct commit / report
@rqzbeh [#8514], [#8515]
@rushsinging [#7256]
@ryanngit direct commit / report
@samir-abis direct commit / report
@seanford [#8194], [#8218], [#8232]
@SeaXen [#7063], [#7264], [#7294]
@Securiteru [#7683]
@SemonCat direct commit / report
@shixi-li [#8569]
@SingCJ direct commit / report
@skutanjir [#7865], [#7939]
@spacesky-cell direct commit / report
@SteeleHu [#8747]
@sumanxg [#8837], [#8856]
@swingtempo [#7790], [#8349], [#8766]
@Tasogarre [#7861], [#8207]
@techsolutionmta direct commit / report
@tenshiak [#7274], [#7643]
@terrafirmbot-source [#8685]
@thepigdestroyer [#7497]
@tianrking [#7353]
@tientien17 [#7841], [#7844], [#7925]
@TitoTFP [#8838]
@tjengbudi [#4009]
@tmone [#7806], [#7933]
@TrackCrewGalore [#6271], [#8128]
@trfi direct commit / report
@TuyulSpam direct commit / report
@ViFigueiredo [#7301]
@vzts [#7390]
@warelik direct commit / report
@way-art direct commit / report
@webmasterarbez [#7504]
@wgordon17 [#8852]
@whale9820 direct commit / report
@Wibias [#7125]
@wilsonicdev direct commit / report
@Witroch4 [#6753], [#6762], [#6790], [#7901], [#7902]
@XCrag direct commit / report
@xiaoyaner0201 [#8122], [#8261], [#8262]
@xier2012 [#7036], [#7050], [#7052], [#7053], [#7056], [#7059], [#7060], [#7061], [#7166], [#7299]
@xxue-z [#7098]
@xz-dev [#6323], [#6330], [#6714], [#6727], [#7004], [#7012], [#7027], [#7673], [#7700], [#7747], [#7776], [#7843]
@yidecode direct commit / report
@yinaoxiong [#6805]
@diegosouzapw maintainer
Source: README.md, updated 2026-07-30