github diegosouzapw/OmniRoute v3.8.1

2 hours ago

[3.8.1] — 2026-05-21

✨ New Features

  • feat(settings): Feature Flags Settings Page (Card Grid + DB overrides) — fully implements the feature flags UI dashboard using Variant A (Card Grid) with Glassmorphism, complete with global GET/PUT/DELETE API routes, Zod validation, debounced search, category filters, and full 30+ locale i18n support. Resolves priority hierarchy to DB > ENV > Defaults. (#2457)
  • feat(db): multi-driver SQLite abstraction layer — new SqliteAdapter interface with 3 concrete adapters (betterSqliteAdapter, nodeSqliteAdapter, sqljsAdapter) and a driverFactory that cascades better-sqlite3node:sqlitesql.js (WASM). Enables OmniRoute to run on any JavaScript runtime (Node.js, Bun, Deno, Cloudflare Workers) without native binary dependencies. better-sqlite3 moved to optionalDependencies. (#2447)
  • feat(settings): Claude Fast Mode toggle in Settings › AI — opt-in toggle that forwards X-CPA-Force-Fast-Mode header so a paired CLIProxyAPI build can reach Anthropic Fast Mode (speed:"fast"). Model-gated to Opus models matching Anthropic's binary KT() check. (#2449 — thanks @NomenAK)
  • feat(settings): Codex Fast Tier — tier dropdown (default/priority/flex) + per-model gate preventing 400 errors from OpenAI when the tier toggle was on for non-Fast-eligible models. (#2451 — thanks @NomenAK)
  • feat: align Antigravity 2.0.1 support — updated client profile, upstream headers, and model aliases. (#2443 — thanks @dhaern)
  • feat: enhance extractBearer to support x-api-key for Anthropic API style auth. (#2436 — thanks @thedtvn)
  • feat(memory): wire createMemory to upsertSemanticMemoryPoint (Qdrant). (#2439 — thanks @NomenAK)

🔧 Bug Fixes & Refactors

  • fix(deepseek-web): rewrite auth to userToken Bearer + WASM PoW solver. (#2452 — thanks @ovehbe)
  • chore: update node dependencies and runtime support. (#2453 — thanks @backryun)
  • fix(translator): fix 3 Kiro tool_result defects causing 400 on follow-up turns — missing tool_use_id mapping, orphan result blocks, and conversation ID collision on assistant-first turns. (#2447)
  • fix(translator): treat developer role as system in OpenAI → Claude translation — openAIToClaude now extracts developer-role messages into systemParts (same as system) and filters them from the non-system message list, preventing identity context injected via the Responses API developer role from silently becoming an assistant turn when routing to a Claude-format provider. (#2407)
  • fix(antigravity): deduplicate removeHeaderCaseInsensitive — export canonical implementation from antigravityClientProfile.ts and remove the local copy in antigravity.ts; export AntigravityCredentialsLike type for cross-module use. (#2433 — thanks @Gi99lin)
  • refactor(docs): enhance frontmatter handling in DocPage — gray-matter Date object parsing bug fix. (#2448 — thanks @ovehbe)
  • fix(jules): Jules API parity and cloud-agent provider registration. (#2438)
  • fix(i18n): harden diff key extraction tag sanitization in extract-keys-from-diff.mjs.
  • chore(i18n): refresh fr/es/de locales + add missing settings.update key. (#2437)
  • fix(dashboard): allow bracketed combo names — align dashboard combo-name validator regex with the shared/server schema updated in PR #2354; names like Claude [1m] are now accepted in the create/edit form. (#2458 — thanks @congvc-dev)

🔒 Security Fixes

  • fix(security): replace execSync string-template with spawnSync arg-array in plugin.mjs — eliminates shell command injection via malicious plugin names.
  • fix(security): gate Electron CSP unsafe-eval on !app.isPackaged instead of URL substring match — was leaking unsafe-eval into production builds; merged duplicate connect-src directives.
  • fix(api): add requireManagementAuth to /api/usage/budget/bulk and /api/resilience/reset — both endpoints exposed spend data and circuit-breaker controls without auth.
  • fix(security): route catch-block error messages through sanitizeErrorMessage() in gemini-web, claude-web, copilot-web executors, oauth route, and cloud-agent task routes — prevents stack traces and internal paths leaking into HTTP responses.
  • fix(codex): refreshCredentials returns null (not error-object) on token refresh failure — prevents base executor from spreading {error} onto active credentials.
  • fix(tokenRefresh): safe unknown-error access in catch block (error instanceof Error ? error.message : String(error)).
  • fix(combo): reset exhaustedProviders set at start of each set-retry iteration — providers excluded in a failing pass now get a second chance on retry.
  • fix(circuitBreaker): persist and restore lastFailureKind via the options JSON column — kind-based cooldown overrides (cooldownByKind) now survive server restarts.

What's Changed

  • Release/v3.7.9 by @diegosouzapw in #1988
  • chore(providers): prune redundant provider icon assets by @backryun in #1992
  • feat(gemini-cli): add custom projectId support (UI, DB, executor) by @nickwizard in #1991
  • chore: Remove Deprecated Models by @backryun in #2033
  • docs(env): add GITLAB_DUO_OAUTH_CLIENT_ID to .env.example by @wucm667 in #2031
  • fix(catalog): auto-calculate combo context_length from target model limits by @herjarsa in #2030
  • Update claude md and update glm-cn max context to 200k by @bypanghu in #2027
  • fix(chatgpt-web): plumb proxy through to native tls-client (#2022) by @xssdem in #2023
  • fix(codex): expose native model ids in catalog by @Tr0sT in #2012
  • feat(sse): refresh Claude OAuth wire image to claude-cli/2.1.131 by @Tentoxa in #2011
  • fix: add fuzzy auto-combo routing for 'auto/*' model prefix by @oyi77 in #2010
  • Fix API key identity in usage analytics by @AveryanAlex in #2008
  • fix(docker): include OpenAPI spec in runtime image by @tatsster in #2007
  • fix: allow Unicode letters in API key name validation by @rodrigogbbr-stack in #1996
  • Add KIE.AI media provider support by @wauputr4 in #2009
  • fix(dashboard): resolve Unknown plan display in Provider Limits by @congvc-dev in #2004
  • fix(mitm): add Linux cert install and skip sudo password when root by @NekoMonci12 in #1999
  • deps: bump hono from 4.12.14 to 4.12.18 by @dependabot[bot] in #2065
  • fix(sse): send Antigravity Claude requests as Gemini schema by @ivan-mezentsev in #2063
  • feat(chat): dynamic tool limit detection with proactive truncation by @oyi77 in #2061
  • Fix bare GPT-5.5 routing for Codex-only installations by @guanbear in #2054
  • fix(antigravity): align identity protocol and fix streaming duplex by @Gi99lin in #2055
  • fix: clean up proxy page redundancy and fix 1proxy sync empty body error by @oyi77 in #2052
  • fix(auth): restore onboarding bootstrap when no password is configured by @tces1 in #2048
  • feat(combo): add context_length input field to combo edit form by @ddarkr in #2047
  • [cli omniroute] Add modular CLI setup and provider commands by @wauputr4 in #2046
  • fix: Follow OpenAI specification, handle throttling in batch and fix UI by @hartmark in #2045
  • fix(db): resolve migration renumbering CRITICAL warnings for compression migrations by @oyi77 in #2041
  • fix(db): reduce hot-path persistence overhead by @dhaern in #2039
  • fix(compression): support Responses input and expand Spanish rules by @dhaern in #2028
  • feat(multi): manifest-aware tier routing — W1-W4 complete by @oyi77 in #2014
  • feat(api): allow configuration via API calls - open management routes to Bearer keys with manage scope - by @gleber in #2103
  • fix(antigravity): sanitize Claude Cloud Code payloads by @dhaern in #2090
  • fix(kiro): normalize tool-use payloads by @rilham97 in #2104
  • feat(providers): batch delete provider connections via checkbox multi-select by @oyi77 in #2094
  • feat(providers): add 9 new free AI providers (LLM7, Lepton, Kluster, UncloseAI, BazaarLink, Completions, Enally, FreeTheAi) by @oyi77 in #2096
  • fix(api): usage and keys by @yoviarpauzi in #2092
  • fix(kiro): merge adjacent user history turns after role normalization by @Gioxaa in #2105
  • Refresh providers, model catalogs, and docs for v3.8.0 by @backryun in #2088
  • feat(cursor): full OpenAI parity (tool calls, streaming, sessions) by @payne0420 in #2082
  • deps: bump hono from 4.12.14 to 4.12.18 by @dependabot[bot] in #2079
  • deps: bump fast-uri from 3.1.0 to 3.1.2 by @dependabot[bot] in #2078
  • fix(glm): add dedicated coding transport by @dhaern in #2087
  • Feat/qdrant embedding model discovery by @rafacpti23 in #2086
  • Release v3.8.0 by @diegosouzapw in #2073
  • feat(auth): per-session sticky routing for codex by @smartenok-ops in #1887
  • fix(sse): prevent Claude OAuth multi-account correlation via metadata.user_id by @Tentoxa in #2053
  • feat(cli): Comprehensive CLI Enhancement Suite - 20+ new commands by @oyi77 in #2074
  • Enhance reset-aware routing and support for Z.AI provider by @JxnLexn in #2019
  • README SEO/AEO/GEO + Competitive Marketing by @oyi77 in #2091
  • feat(circuit-breaker): classify 429 errors and apply per-kind cooldowns (#2100) by @hernaninverso in #2116
  • feat(github): add targetFormat openai-responses to all GitHub models by @abhinavjnu in #2122
  • fix(sse): classify hour quota errors as QUOTA_EXHAUSTED by @clousky2020 in #2119
  • Fix CC-compatible streaming bridge by @rdself in #2118
  • fix(i18n): complete Simplified Chinese translations by @boa-z in #2115
  • feat(mcp): add DeepSeek quota and limit feature by @HoaPham98 in #2089
  • chore: enhance Inworld TTS support by @backryun in #2123
  • feat(resilience): useUpstream429BreakerHints toggle (#2100 follow-up to #2116) by @hernaninverso in #2133
  • feat(auto): complete zero-config auto-routing with dashboard, settings, analytics, docs by @oyi77 in #2131
  • feat(1proxy): add dedicated settings tab with proxy rotation support by @oyi77 in #2135
  • Feat/dynamic linux cert paths by @flyingmongoose in #2134
  • (Urgent) fix: restore cloud agent provider exports and logger import by @backryun in #2138
  • fix: remove docs from .dockerignore #2120 by @hartmark in #2137
  • fix(catalog): ensure individual models get context_length via getTokenLimit fallback by @herjarsa in #2136
  • fix(sanitizer): preserve reasoning_content on assistant messages with tool_calls by @DavyMassoneto in #2140
  • Add claude GitHub actions 1778466254012 by @diegosouzapw in #2142
  • fix: remove duplicate cloud agent provider constants by @backryun in #2141
  • fix(kiro): avoid treating high-traffic 429s as quota exhaustion by @Gioxaa in #2153
  • fix(kiro): synthesize tools schema when history references tool_calls without body.tools by @Gioxaa in #2149
  • fix(openai-responses): propagate include so chat clients stream reasoning summaries by @Gioxaa in #2154
  • chore(models): tidy up alibaba-coding-plan and cursor provider by @backryun in #2150
  • fix: Added in debug mode, support for storing raw data in json by @bypanghu in #2156
  • fix(openai-responses): emit reasoning summary as delta.reasoning_content by @Gioxaa in #2159
  • refactor(catalog): remove .ts imports, as any casts, normalize alias resolution by @herjarsa in #2152
  • fix(providers): allow optional-key providers to pass connection test by @andrewmunsell in #2169
  • fix(translator): inject thinking placeholder for all Claude-shape upstreams by @NomenAK in #2161
  • fix(executors): sanitize reasoning_effort for non-supporting providers by @NomenAK in #2162
  • feat(responses): degrade background mode to synchronous execution by @NomenAK in #2164
  • chore(registry): refresh per-model contextLength/maxOutputTokens for active providers by @NomenAK in #2163
  • Add metadata aggregation for combo models in /v1/models by @ddarkr in #2166
  • fix(cliproxyapi): Anthropic-shape body routing and gate compatibility by @NomenAK in #2165
  • deps: bump mermaid from 11.14.0 to 11.15.0 by @dependabot[bot] in #2178
  • feat(resilience): expose model cooldown list with manual re-enable by @rafacpti23 in #2146
  • feat(oauth): complete Windsurf / Devin CLI OAuth + API-token flows by @Zhaba1337228 in #2168
  • feat(search): add Ollama Search as a web search provider by @andrewmunsell in #2176
  • fix(cliproxyapi): detect Anthropic shape on minimal Capy bodies by @NomenAK in #2192
  • fix(reasoning-cache): include xiaomi-mimo in replay provider/model detection by @NomenAK in #2198
  • fix(modelSpecs): cap thinking budget for Claude Opus 4.6 / 4.7 / Sonnet 4.6 by @NomenAK in #2197
  • fix(claudeHelper): emit data field on redacted_thinking, drop bogus signature by @NomenAK in #2191
  • fix(stream): skip [DONE] terminator for Claude SSE clients by @NomenAK in #2190
  • fix(cliproxyapi): probe /v1/models for health (CPA 6.x has no /health) by @NomenAK in #2189
  • chore(providers): improve BazaarLink and Completions.me support by @backryun in #2177
  • Feat/provider models by @nickwizard in #2196
  • feat: add ModelScope provider-specific 429 handling and retry logic by @InkshadeWoods in #2202
  • feat(providers): add Command Code provider by @ddarkr in #2199
  • Add Brazilian WhatsApp group link to README by @rafacpti23 in #2201
  • deps: bump electron-builder from 26.9.1 to 26.10.0 in /electron by @dependabot[bot] in #2183
  • deps: bump the development group with 6 updates by @dependabot[bot] in #2184
  • deps: bump the production group with 2 updates by @dependabot[bot] in #2180
  • deps: bump node from 24.15.0-trixie-slim to 26.1.0-trixie-slim by @dependabot[bot] in #2181
  • deps: bump electron from 41.5.1 to 42.0.1 in /electron by @dependabot[bot] in #2182
  • security: sanitize error messages in API routes (CodeQL js/stack-trace-exposure) by @diegosouzapw in #2209
  • fix(requestLogger): exempt tools field from array truncation for full debug visibility by @NomenAK in #2234
  • fix(proxyFetch): retry once on undici dispatcher failure before native fallback by @NomenAK in #2222
  • fix(antigravity): bootstrap project via loadCodeAssist + fetchAvailableModels fallback by @NomenAK in #2219
  • fix(model): local aliases override cross-proxy provider inference by @NomenAK in #2223
  • fix(antigravity): strip generationConfig.thinkingConfig for Claude models by @NomenAK in #2217
  • fix(ModelSync): shared loopback readiness gate + IPv4 force by @NomenAK in #2221
  • fix(rateLimit): never .stop() during runtime reset, evict cache instead by @NomenAK in #2218
  • fix(sse-heartbeat): shape-aware keepalives keep streams alive through stricter proxies by @NomenAK in #2233
  • Feat/antigravity project by @nickwizard in #2227
  • feat(search): add Z.AI Coding Plan Search via MCP protocol by @andrewmunsell in #2238
  • Fix Azure AI Foundry provider connection handling by @one-vs in #2236
  • fix(providers/command-code): fix validation request format for Command Code API by @ddarkr in #2243
  • fix(translator): coerce submit_pr_review functionalChanges/findings to arrays by @NomenAK in #2242
  • build(deps): regenerate package-lock.json to match http-proxy-middleware bump by @NomenAK in #2228
  • fix(claudeHelper): preserve latest assistant thinking blocks verbatim by @NomenAK in #2224
  • feat: CLI Integration Suite for issue #2016 by @oyi77 in #2240
  • Release v3.8.0 by @diegosouzapw in #2111
  • fix: sync managed model aliases with visibility by @InkshadeWoods in #2250
  • fix(kiro): harden OpenAI-to-Kiro translator for API compliance by @8mbe in #2251
  • fix: strip streaming compression headers by @Rikonorus in #2253
  • fix: keep Claude tool remap metadata off wire by @Rikonorus in #2254
  • fix(deepseek): preserve reasoning_content through full pipeline for DeepSeek V4 models by @kang-heewon in #2231
  • fix: align managed model cleanup for imported models by @InkshadeWoods in #2261
  • fix(sse): strip stale Content-Encoding/Content-Length on non-stream forward by @gleber in #2264
  • feat(authz): managementPolicy accepts API keys with manage scope by @gleber in #2265
  • feat(api-keys): configurable default rate limits via DEFAULT_RATE_LIMIT_PER_DAY by @gleber in #2266
  • feat(limits): per-window quota cutoffs across all providers with usage data by @payne0420 in #2267
  • node dependency updates by @backryun in #2259
  • Feat/v3.8.0 features by @diegosouzapw in #2272
  • feat(skills): add 3 operational SKILL.md manifests + AI Skills dashbo… by @diegosouzapw in #2276
  • chore: tidy up deprecated models from windsurf provider by @backryun in #2279
  • feat(cli): CLI v4 — Commander.js, 50+ comandos, TUI, i18n, plugins (Fases 0–9) by @diegosouzapw in #2280
  • feat(skills): add 5 CLI skills + AgentSkills / OmniSkills dashboard pages by @diegosouzapw in #2284
  • feat(claude-web): implement session-based executor with auto-refresh by @oyi77 in #2283
  • feat(cli): suporte i18n completo — 42 locales, --lang flag, config lang get/set/list by @diegosouzapw in #2285
  • fix(sse): strip stale content-encoding/length/transfer-encoding from upstream responses by @thepigdestroyer in #2291
  • fix(sse): remove dead-code flag leak in claudeCodeToolRemapper by @thepigdestroyer in #2290
  • feat(cc-bridge): config-driven per-provider system-block transform DSL (closes #2260) by @mrmm in #2286
  • fix(migrations): resolve version collisions and add schema repair for quota thresholds by @hartmark in #2294
  • feat(deepseek-web): full DeepSeek web API executor with PoW solver by @oyi77 in #2295
  • fix(ui): v3.8.0 polish — connections border, sticky tabs, EN translations, save toasts, auto-combo catalog by @mrmm in #2305
  • fix: remove implicit API key request caps by @josephvoxone in #2289
  • fix(auth+build): Bearer manage scope on management routes + lazy-load deepseek PoW solver by @mrmm in #2308
  • chore: Improve cohere provider support by @backryun in #2313
  • fix(claude): guard orphan tool_use/tool_result pairs before upstream send by @mrmm in #2312
  • fix: remove count from batch removal by @hartmark in #2309
  • fix: harden stream readiness and build output by @dhaern in #2317
  • chore(providers): refresh provider metadata and ordering by @backryun in #2318
  • alibaba provider consolidation by @backryun in #2319
  • refactor(dashboard): pages overhaul, providers UX, OAuth token refresh fixes [deferred in develop] by @diegosouzapw in #2315
  • feat(ui): simple/advanced mode for Caveman & RTK pages by @oyi77 in #2316
  • feat(provider): add Gitlawb Opengateway provider by @oyi77 in #2314
  • Release v3.8.0 by @diegosouzapw in #2248
  • fix(providers): fix missing i18n keys and add 'Add Provider' button to empty state by @diegosouzapw in #2333
  • feat(codex-auth): rename export + gate Apply Local behind confirmation modal by @diegosouzapw in #2332
  • feat(codex): import single Codex auth.json as OAuth connection by @diegosouzapw in #2336
  • feat(codex): bulk import Codex auth.json — multi-file, paste, ZIP by @diegosouzapw in #2343
  • fix(providers): fix missing i18n keys and add 'Add Provider' button to empty state by @diegosouzapw in #2337
  • fix(v1/messages): default to non-stream for Claude format when ambiguous by @thepigdestroyer in #2326
  • fix(claude): cap-aware thinking budget fit for max_tokens (alt to #2324) by @thepigdestroyer in #2327
  • fix: honor Codex reasoning suffix aliases by @terence71-glitch in #2335
  • fix(translator): use reasoning cache before empty string fallback for DeepSeek tool_calls by @herjarsa in #2349
  • feat(providers): add GitHub Models as free provider by @oyi77 in #2344
  • feat(providers): add Hackclub AI as free provider by @oyi77 in #2339
  • chore: improve huggingface provider support by @backryun in #2322
  • feat(routing): LGKP remembers last good account per provider by @oyi77 in #2338
  • feat(providers): add Microsoft Copilot Web wrapper by @oyi77 in #2340
  • [Feature] Preserve Claude Code /v1/messages payload semantics by @terence71-glitch in #2351
  • fix: extract flat cached_tokens/reasoning_tokens from OpenAI-compatible usage objects by @TF0rd in #2350
  • fix: allow bracketed combo names by @congvc-dev in #2354
  • fix: emit stream errors in the client protocol by @dhaern in #2355
  • fix: avoid redundant Claude Code message clone by @terence71-glitch in #2362
  • feat(providers): add Replicate as free provider by @oyi77 in #2364
  • feat(providers): add Veo AI Free as web wrapper provider by @oyi77 in #2366
  • feat(content): extend providers with video, audio, TTS, music capabilities by @oyi77 in #2369
  • feat(@omniroute/opencode-provider): expand config helpers, MCP entry, live model fetch, combo builder by @mrmm in #2375
  • feat(content): add Haiper, Leonardo, Ideogram, Suno, Udio providers by @oyi77 in #2377
  • fix(claude-oauth): enable system-transforms pipeline for native claude executor (closes 400 billing-gate) by @thepigdestroyer in #2370
  • refactor(dashboard): nav, providers, endpoint, runtime, quota, pricing, budget redesign + quota sharing preview by @diegosouzapw in #2384
  • fix(dashboard): PR #2384 follow-up review fixes by @diegosouzapw in #2389
  • fix: tool_use without adjacent tool_result causes Claude 400 by @oyi77 in #2383
  • model: Add Composer 2.5 to Cursor Provider by @backryun in #2381
  • feat(providers): add Gemini Web cookie-based provider by @oyi77 in #2380
  • Release v3.8.0 — next development cycle by @diegosouzapw in #2323
  • fix(security): resolve CodeQL alerts #243/#244/#245 by @diegosouzapw in #2391
  • docs(readme): restore 9router acknowledgment by @diegosouzapw in #2393
  • fix(kiro): enable Google OAuth login option by @congvc-dev in #2392
  • fix(security): switch sessionPoolKey to HMAC to clear CodeQL #246 by @diegosouzapw in #2394
  • fix(security): drop hashing in sessionPoolKey to clear CodeQL #247 by @diegosouzapw in #2396
  • deps: bump electron from 42.0.1 to 42.1.0 in /electron by @dependabot[bot] in #2397
  • deps: bump the production group with 4 updates by @dependabot[bot] in #2398
  • deps: bump the development group with 4 updates by @dependabot[bot] in #2399
  • feat: gamification & leaderboard system by @oyi77 in #2405
  • feat: Support Gemini API keys for Gemini CLI executor (#3381) by @benzntech in #2408
  • feat(T07): API Key health tracking with A3 guard, dashboard notification, and toast navigation fixes by @clousky2020 in #2412
  • Release v3.8.0 — post-release hotfixes by @diegosouzapw in #2402
  • docs: add AgentRouter setup guide by @leninejunior in #2422
  • feat: add new feature on combos - falloverBeforeRetry by @hartmark in #2417
  • feat(batch): implement 10 feature requests harvested by @diegosouzapw in #2414
  • fix(gamification): resolve SQL bug, auth gap, pagination, and anomaly scoring by @oyi77 in #2421
  • Release/v3.8.0 — full changelog with 660+ commits by @diegosouzapw in #2419
  • fix(mitm): drop .js extension on manager.runtime re-export for webpack build by @NomenAK in #2425
  • fix: persist STORAGE_ENCRYPTION_KEY across upgrades (closes #1622) by @Chewji9875 in #2428
  • fix: auto-reset apiKeyHealth on successful connection test by @clousky2020 in #2427
  • fix: support Antigravity image generation, Add Gemini 3.5 Flash by @backryun in #2423
  • docs(agentrouter): recommend native provider as the simple path by @leninejunior in #2429
  • Release/v3.8.0 by @diegosouzapw in #2430
  • Feat/features batch v3.8.0 by @diegosouzapw in #2431
  • Release/v3.8.0 by @diegosouzapw in #2432
  • fix(antigravity): IDE vs SDK client profile fingerprint parity by @Gi99lin in #2433
  • feat(memory): wire createMemory to upsertSemanticMemoryPoint (Qdrant) by @NomenAK in #2439
  • feat: Enhance extractBearer to support x-api-key for anthropic api style auth by @thedtvn in #2436
  • chore(i18n): refresh fr/es/de locales to 100% coverage + add settings.update key by @NomenAK in #2437
  • fix(jules): Jules API parity and cloud-agent provider registration by @Gi99lin in #2438
  • feat(settings): surface Codex Fast Tier toggle in Settings > AI by @NomenAK in #2440
  • feat: align Antigravity 2.0.1 support by @dhaern in #2443
  • fix(translator): fix Kiro 400 on follow-up turns carrying tool_result by @diegosouzapw in #2447
  • feat(settings): Codex Fast Tier — tier dropdown + per-model gate by @NomenAK in #2451
  • feat(settings): surface Claude Fast Mode toggle in Settings > AI by @NomenAK in #2449
  • chore: update node dependencies and runtime support by @backryun in #2453
  • fix(deepseek-web): rewrite auth to userToken Bearer + WASM PoW solver by @ovehbe in #2452
  • feat: Feature Flags Settings Page (Card Grid + DB overrides) by @diegosouzapw in #2457
  • fix(dashboard): allow bracketed combo names by @congvc-dev in #2458

New Contributors

Full Changelog: v3.7.9...v3.8.1

Don't miss a new OmniRoute release

NewReleases is sending notifications on new releases.