# OmniRoute v3.8.48 - Product: OmniRoute (https://whatsnew.fyi/product/omniroute) - Vendor: diegosouzapw - Date: 2026-07-13 - Version: v3.8.48 - Original notes: https://github.com/diegosouzapw/OmniRoute/releases/tag/v3.8.48 - Permalink: https://whatsnew.fyi/product/omniroute/releases/v3.8.48 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — Ship dist/head-response-guard.cjs in the npm tarball to prevent ERR_MODULE_NOT_FOUND crashes on every omniroute boot - **fixed** — Fix Electron Windows packaging by spawning npx.cmd through a shell for better-sqlite3 ABI rebuilds - **fixed** — Fix Sonar quality gate by ensuring coverage lcov reaches the scanner at coverage/lcov.info - **fixed** — Await async isCloudEnabled() gate in Kiro auto-import route so cloud sync respects disabled state - **fixed** — Replace dead structuredClone fallback with real JSON fallback in reasoning-split clone - **fixed** — Handle async reader.cancel() rejection in codex executor - **fixed** — Use deterministic localeCompare for sorting - **fixed** — Add path-traversal guard in classify-pr-changes.mjs - **fixed** — Use npm's bundled node-gyp instead of npx --yes for Docker better-sqlite3 rebuild - **changed** — Codex bulk-import endpoint now accepts 9router's camelCase account export (accessToken/refreshToken/idToken/expiresAt) alongside snake_case format - **added** — Langfuse observability plugin - **added** — Context requirements config for per-target filtering in combos - **added** — Icons for 46 providers that were missing images - **added** — Vendored GCF (Headroom) codec updated to spec v3.2 with nested flattening - **added** — Shorthand proxy formats and protocol header mode for bulk import - **added** — OpenVecta AI inference gateway provider - **added** — Traditional Chinese (zh-TW) localization for frontend and CLI - **added** — Route xAI clients to Grok's native /v1/responses endpoint - **added** — Per-model web-search and web-fetch interception rules - **added** — Sidebar quick-filter search input to filter nav sections and items client-side by label > ⚠️ **Hotfix release.** The published npm package for 3.8.47 crashed on every boot ([#7065](https://github.com/diegosouzapw/OmniRoute/issues/7065)) and was deprecated — **3.8.48 is the first installable release of the v3.8.47 cycle**, so everything listed under [3.8.47] below ships here. ###### 🐛 Bug Fixes - **fix(build):** ship `dist/head-response-guard.cjs` in the npm tarball — the prepublish prune allowlist lacked it, so every `omniroute` boot of the published 3.8.47 crashed with `ERR_MODULE_NOT_FOUND` (3rd occurrence of this class after tls-options/3.8.41); now allowlisted, enforced by `check:pack-artifact`, and guarded by a closure test that derives every `server-ws.mjs` sibling import ([#7065](https://github.com/diegosouzapw/OmniRoute/issues/7065), [#7040](https://github.com/diegosouzapw/OmniRoute/issues/7040)) - **fix(build):** Electron Windows packaging — the better-sqlite3 Electron-ABI rebuild now spawns `npx.cmd` through a shell (Node's CVE-2024-27980 hardening made the shell-less spawn fail with `status null` on Windows runners, breaking the v3.8.47 desktop build) - **fix(ci):** Sonar quality gate zeroed on new code — the coverage lcov now reaches the scanner at `coverage/lcov.info` (it read 0% on every scan), the async `isCloudEnabled()` gate in the Kiro auto-import route is awaited (cloud sync ran even when disabled), the dead `structuredClone` fallback in the reasoning-split clone is a real JSON fallback, the codex executor handles the async `reader.cancel()` rejection, deterministic `localeCompare` sorts, a path-traversal guard in `classify-pr-changes.mjs`, and the Docker better-sqlite3 rebuild uses npm's bundled node-gyp instead of `npx --yes` - **chore(ci):** the Sonar quality gate is informational (`sonar.qualitygate.wait=false`) while the org's SonarCloud plan cannot associate the tuned "OmniRoute way" gate (coverage ≥60 aligned with the repo floor) --- #### 📦 Everything from the v3.8.47 cycle ships here _The 3.8.47 npm package was never installable (#7065), so **3.8.48 is the release that actually delivers the whole v3.8.47 cycle** — full notes below:_ - **9router Codex import**: the Codex bulk-import endpoint (`POST /api/oauth/codex/import`) now accepts 9router's camelCase account export (`accessToken`/`refreshToken`/`idToken`/`expiresAt` + nested `providerSpecificData`), not just snake_case — `normalizeCodexImportRecord` maps the camelCase aliases onto the existing snake_case keys, filling each only when absent so snake_case/mixed exports keep working unchanged ([#6665](https://github.com/diegosouzapw/OmniRoute/issues/6665)) — thanks @deadcoder0904. Regression guard: `tests/unit/codexBulkImport.test.ts` (9router camelCase record, pre-supplied `providerSpecificData` without an id_token, snake_case-not-overridden, and a full `{accounts:[...]}` flatten). ###### ✨ New Features - **feat(plugins):** Langfuse observability plugin. ([#6577](https://github.com/diegosouzapw/OmniRoute/pull/6577) — thanks @chirag127) - **feat(combo):** context requirements config for per-target filtering in combos. ([#6907](https://github.com/diegosouzapw/OmniRoute/pull/6907) — thanks @oyi77) - **feat(providers):** icons for 46 providers that were missing images. ([#6926](https://github.com/diegosouzapw/OmniRoute/pull/6926) — thanks @oyi77) - **feat(compression):** vendored GCF (Headroom) codec updated to spec v3.2 (nested flattening). ([#6838](https://github.com/diegosouzapw/OmniRoute/pull/6838) — thanks @blackwell-systems) - **feat(proxy):** shorthand proxy formats + protocol header mode for bulk import. ([#6867](https://github.com/diegosouzapw/OmniRoute/pull/6867) — thanks @growab) - **feat(provider):** OpenVecta AI inference gateway. ([#6833](https://github.com/diegosouzapw/OmniRoute/pull/6833) — thanks @hajilok) - **feat(i18n):** Traditional Chinese (zh-TW) localization for frontend and CLI. ([#6320](https://github.com/diegosouzapw/OmniRoute/pull/6320) — thanks @lunkerchen) - **feat(xai):** route xAI clients to Gr _[Truncated at 4000 characters — full notes: https://github.com/diegosouzapw/OmniRoute/releases/tag/v3.8.48]_