Repository navigation
v3.1.0 — Bug fixes, new features, i18n updates
✨ New Features
-
feat(docs): integrate multi-page documentation into OmniRoute dashboard (#1969)
-
feat(settings): add request body limit setting (#1968)
-
feat(auth): add Gemini CLI OAuth client secret default (#1974)
-
feat(models): expose models.dev context windows in /v1/models (#1972)
-
fix(db): resolve legacy encryption fallback causing re-encryption loops (#1941)
-
fix(auth): fix Codex assistant final_answer response sanitization (#1965)
-
feat(providers): Implement Image Generation and Editing capabilities for ChatGPT Web, including in-band chat image generation and caching (#1606).
-
feat(ui): Integrate OpenCode Zen/Go API tool logo SVG and polish API key copy-to-clipboard interactions (#1607).
-
feat(providers): Integrate AgentRouter as a new OpenAI-compatible passthrough provider with $200 free credits via sign-up (Issue #1572).
-
feat(ui): Implement on-demand per-model testing in the provider dashboard, allowing single-token diagnostic checks without triggering rate-limits (Issue #1532).
-
GitHub Issue Templates: Added standardized bug report, feature request, and config/proxy issue templates (#641)
-
Clear All Models: Added a "Clear All Models" button to the provider detail page with i18n support in 29 languages (#634)
🐛 Bug Fixes
-
fix(mitm): Compile MITM utilities as NodeNext ESM during prepublish, copy the CommonJS MITM server into the standalone artifact, and resolve MITM data paths without relying on Next.js aliases in packaged runtime.
-
fix(build): Move the local
.tmp/wine32Wine prefix out of the isolated Next.js build path so Windows Electron packaging artifacts cannot triggerEACCESscans during Node 24 builds. -
fix(build): Copy the
wreq-jsnative runtime directory into the isolated Next.js standalone output so packaged Playwright/E2E starts can load the instrumentation hook on Linux. -
fix(api): Validate the Codex Responses websocket bridge and
/v1/batchesJSON payloads with Zod before use, keepingrequest.json()route validation green and returning explicit 400 responses for invalid bodies. -
fix(providers): Add explicit typing to provider alias and category helpers so the strict
typecheck:noimplicit:coreCI gate passes. -
fix(ui): Keep the upstream proxy provider detail page labeled with a fallback "Managed via Upstream Proxy Settings" management surface when translations are unavailable.
-
fix(electron): Harden the production desktop CSP by removing
unsafe-evaloutside development and adding object, base URI, form action, frame ancestor, and worker restrictions. -
fix(cli): Replace shell-interpolated setup and privileged command execution paths with argument-based
spawn/execFilehelpers for database setup, Tailscale sudo commands, MITM DNS edits, and certificate install/uninstall flows. -
fix(ui): Keep provider icons resilient by using direct
@lobehub/iconscomponents first, then local PNG/SVG fallbacks, avoiding the@lobehub/uipeer runtime in the dashboard. -
Locale Conflict (
in.json): Renamed the Hindi locale file fromin.json(Indonesian ISO code) tohi.jsonto fix translation conflicts in Weblate (#642) -
Codex Empty Tool Names: Moved tool name sanitization before the native Codex passthrough, fixing 400 errors from upstream providers when tools had empty names (#637)
-
Streaming Newline Artifacts: Added
collapseExcessiveNewlinesto the response sanitizer, collapsing runs of 3+ consecutive newlines from thinking models into a standard double newline (#638) -
Claude Reasoning Effort: Converted OpenAI
reasoning_effortparam to Claude's nativethinkingbudget block across all request paths, including automaticmax_tokensadjustment (#627) -
Qwen Token Refresh: Implemented proactive pre-expiry OAuth token refreshes (5-minute buffer) to prevent requests from failing when using short-lived tokens (#631)
🧪 Tests
- 936 tests, 0 failures (+10 tests since 3.0.9)