Skip to content

v3.1.0 — Bug fixes, new features, i18n updates

Choose a tag to compare

@diegosouzapw diegosouzapw released this 26 Mar 18:21
· 10844 commits to release/v3.8.53 since this release
d117839

✨ 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/wine32 Wine prefix out of the isolated Next.js build path so Windows Electron packaging artifacts cannot trigger EACCES scans during Node 24 builds.

  • fix(build): Copy the wreq-js native 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/batches JSON payloads with Zod before use, keeping request.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:core CI 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-eval outside 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/execFile helpers for database setup, Tailscale sudo commands, MITM DNS edits, and certificate install/uninstall flows.

  • fix(ui): Keep provider icons resilient by using direct @lobehub/icons components first, then local PNG/SVG fallbacks, avoiding the @lobehub/ui peer runtime in the dashboard.

  • Locale Conflict (in.json): Renamed the Hindi locale file from in.json (Indonesian ISO code) to hi.json to 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 collapseExcessiveNewlines to the response sanitizer, collapsing runs of 3+ consecutive newlines from thinking models into a standard double newline (#638)

  • Claude Reasoning Effort: Converted OpenAI reasoning_effort param to Claude's native thinking budget block across all request paths, including automatic max_tokens adjustment (#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)