From 333f0b9f2d19e61cc3108cd66bd1f30622a25c2a Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sun, 19 Apr 2026 22:07:51 -0300 Subject: [PATCH] =?UTF-8?q?chore(release):=20v3.7.0=20=E2=80=94=20all=20ch?= =?UTF-8?q?anges=20in=20ONE=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 15 +++++++ README.md | 6 ++- docs/i18n/ar/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/ar/README.md | 7 ++- docs/i18n/bg/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/bg/README.md | 7 ++- docs/i18n/cs/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/cs/README.md | 7 ++- docs/i18n/da/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/da/README.md | 7 ++- docs/i18n/de/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/de/README.md | 7 ++- docs/i18n/es/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/es/README.md | 7 ++- docs/i18n/fi/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/fi/README.md | 7 ++- docs/i18n/fr/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/fr/README.md | 7 ++- docs/i18n/he/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/he/README.md | 7 ++- docs/i18n/hi/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/hi/README.md | 7 ++- docs/i18n/hu/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/hu/README.md | 7 ++- docs/i18n/id/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/id/README.md | 7 ++- docs/i18n/in/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/in/README.md | 7 ++- docs/i18n/it/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/it/README.md | 7 ++- docs/i18n/ja/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/ja/README.md | 7 ++- docs/i18n/ko/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/ko/README.md | 7 ++- docs/i18n/ms/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/ms/README.md | 7 ++- docs/i18n/nl/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/nl/README.md | 7 ++- docs/i18n/no/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/no/README.md | 7 ++- docs/i18n/phi/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/phi/README.md | 7 ++- docs/i18n/pl/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/pl/README.md | 7 ++- docs/i18n/pt-BR/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/pt-BR/README.md | 7 ++- docs/i18n/pt/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/pt/README.md | 7 ++- docs/i18n/ro/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/ro/README.md | 7 ++- docs/i18n/ru/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/ru/README.md | 7 ++- docs/i18n/sk/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/sk/README.md | 7 ++- docs/i18n/sv/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/sv/README.md | 7 ++- docs/i18n/th/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/th/README.md | 7 ++- docs/i18n/tr/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/tr/README.md | 7 ++- docs/i18n/uk-UA/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/uk-UA/README.md | 7 ++- docs/i18n/vi/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/vi/README.md | 7 ++- docs/i18n/zh-CN/CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++ docs/i18n/zh-CN/README.md | 7 ++- docs/openapi.yaml | 2 +- electron/package.json | 2 +- open-sse/package.json | 2 +- open-sse/services/combo.ts | 2 +- package-lock.json | 2 +- 71 files changed, 2904 insertions(+), 71 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e7189ab30..a27bd40733 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,21 @@ --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + ## [3.6.9] โ€” 2026-04-19 ### โœจ New Features diff --git a/README.md b/README.md index 7f45c559c0..ef77b9f4d7 100644 --- a/README.md +++ b/README.md @@ -1448,7 +1448,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1474,7 +1475,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/ar/CHANGELOG.md b/docs/i18n/ar/CHANGELOG.md index 6a4371a236..9bd18ff6ae 100644 --- a/docs/i18n/ar/CHANGELOG.md +++ b/docs/i18n/ar/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/ar/README.md b/docs/i18n/ar/README.md index 4526b5e067..baaaf5464d 100644 --- a/docs/i18n/ar/README.md +++ b/docs/i18n/ar/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/bg/CHANGELOG.md b/docs/i18n/bg/CHANGELOG.md index aac87fb713..3ef0721203 100644 --- a/docs/i18n/bg/CHANGELOG.md +++ b/docs/i18n/bg/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/bg/README.md b/docs/i18n/bg/README.md index d71ddae240..9528880ace 100644 --- a/docs/i18n/bg/README.md +++ b/docs/i18n/bg/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/cs/CHANGELOG.md b/docs/i18n/cs/CHANGELOG.md index 8ae321a1b8..9a555b65f9 100644 --- a/docs/i18n/cs/CHANGELOG.md +++ b/docs/i18n/cs/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/cs/README.md b/docs/i18n/cs/README.md index 7354aaac51..9439d1d76b 100644 --- a/docs/i18n/cs/README.md +++ b/docs/i18n/cs/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/da/CHANGELOG.md b/docs/i18n/da/CHANGELOG.md index 0217255bc7..b3d7a4a466 100644 --- a/docs/i18n/da/CHANGELOG.md +++ b/docs/i18n/da/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/da/README.md b/docs/i18n/da/README.md index b8f451b6a4..5b038a6094 100644 --- a/docs/i18n/da/README.md +++ b/docs/i18n/da/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/de/CHANGELOG.md b/docs/i18n/de/CHANGELOG.md index 35fd5cd31a..90e440c3d6 100644 --- a/docs/i18n/de/CHANGELOG.md +++ b/docs/i18n/de/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/de/README.md b/docs/i18n/de/README.md index ea2bf00953..0f2dad27b6 100644 --- a/docs/i18n/de/README.md +++ b/docs/i18n/de/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/es/CHANGELOG.md b/docs/i18n/es/CHANGELOG.md index c72ad7b37d..4c3c8f1489 100644 --- a/docs/i18n/es/CHANGELOG.md +++ b/docs/i18n/es/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/es/README.md b/docs/i18n/es/README.md index 3182236a1d..908bf01a34 100644 --- a/docs/i18n/es/README.md +++ b/docs/i18n/es/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/fi/CHANGELOG.md b/docs/i18n/fi/CHANGELOG.md index 6ba4b4c04d..636314a38a 100644 --- a/docs/i18n/fi/CHANGELOG.md +++ b/docs/i18n/fi/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/fi/README.md b/docs/i18n/fi/README.md index cf3309061d..b33a84626c 100644 --- a/docs/i18n/fi/README.md +++ b/docs/i18n/fi/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/fr/CHANGELOG.md b/docs/i18n/fr/CHANGELOG.md index d05b6edc81..816c139f24 100644 --- a/docs/i18n/fr/CHANGELOG.md +++ b/docs/i18n/fr/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/fr/README.md b/docs/i18n/fr/README.md index 802f3981f6..144c5f2cf0 100644 --- a/docs/i18n/fr/README.md +++ b/docs/i18n/fr/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/he/CHANGELOG.md b/docs/i18n/he/CHANGELOG.md index 45f9035a05..daaa8cd6af 100644 --- a/docs/i18n/he/CHANGELOG.md +++ b/docs/i18n/he/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/he/README.md b/docs/i18n/he/README.md index 1739d0b60c..6f90d00042 100644 --- a/docs/i18n/he/README.md +++ b/docs/i18n/he/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/hi/CHANGELOG.md b/docs/i18n/hi/CHANGELOG.md index 21da9b5cb4..fe97d984b6 100644 --- a/docs/i18n/hi/CHANGELOG.md +++ b/docs/i18n/hi/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/hi/README.md b/docs/i18n/hi/README.md index b4816fd70b..cb9a08e7d8 100644 --- a/docs/i18n/hi/README.md +++ b/docs/i18n/hi/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/hu/CHANGELOG.md b/docs/i18n/hu/CHANGELOG.md index 056b2ff49f..d96ad0d021 100644 --- a/docs/i18n/hu/CHANGELOG.md +++ b/docs/i18n/hu/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/hu/README.md b/docs/i18n/hu/README.md index cf45ce4aff..230b4fdd6f 100644 --- a/docs/i18n/hu/README.md +++ b/docs/i18n/hu/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/id/CHANGELOG.md b/docs/i18n/id/CHANGELOG.md index eb5354a9de..227eb4e8cb 100644 --- a/docs/i18n/id/CHANGELOG.md +++ b/docs/i18n/id/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/id/README.md b/docs/i18n/id/README.md index c0f59bce46..f640f5d307 100644 --- a/docs/i18n/id/README.md +++ b/docs/i18n/id/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/in/CHANGELOG.md b/docs/i18n/in/CHANGELOG.md index 8808920e72..13bdcb426f 100644 --- a/docs/i18n/in/CHANGELOG.md +++ b/docs/i18n/in/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/in/README.md b/docs/i18n/in/README.md index d62cdae81d..c5910c66fb 100644 --- a/docs/i18n/in/README.md +++ b/docs/i18n/in/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/it/CHANGELOG.md b/docs/i18n/it/CHANGELOG.md index 7c37720bc6..5cb112357c 100644 --- a/docs/i18n/it/CHANGELOG.md +++ b/docs/i18n/it/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/it/README.md b/docs/i18n/it/README.md index 9b8eb9c244..9f88923382 100644 --- a/docs/i18n/it/README.md +++ b/docs/i18n/it/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/ja/CHANGELOG.md b/docs/i18n/ja/CHANGELOG.md index 9b5b00b7d6..82033f3332 100644 --- a/docs/i18n/ja/CHANGELOG.md +++ b/docs/i18n/ja/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/ja/README.md b/docs/i18n/ja/README.md index eab2780fcc..e8c50607fe 100644 --- a/docs/i18n/ja/README.md +++ b/docs/i18n/ja/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/ko/CHANGELOG.md b/docs/i18n/ko/CHANGELOG.md index e5c11bdfa2..c6c2eab25f 100644 --- a/docs/i18n/ko/CHANGELOG.md +++ b/docs/i18n/ko/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/ko/README.md b/docs/i18n/ko/README.md index 8bd314cd7c..9a3a01f8be 100644 --- a/docs/i18n/ko/README.md +++ b/docs/i18n/ko/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/ms/CHANGELOG.md b/docs/i18n/ms/CHANGELOG.md index 9d00dde97b..9a3bf79e95 100644 --- a/docs/i18n/ms/CHANGELOG.md +++ b/docs/i18n/ms/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/ms/README.md b/docs/i18n/ms/README.md index d7a8463d42..bb1dbd8b89 100644 --- a/docs/i18n/ms/README.md +++ b/docs/i18n/ms/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/nl/CHANGELOG.md b/docs/i18n/nl/CHANGELOG.md index b25da82b8f..a1c204bf93 100644 --- a/docs/i18n/nl/CHANGELOG.md +++ b/docs/i18n/nl/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/nl/README.md b/docs/i18n/nl/README.md index 78d4887f89..dfaf5fdfe2 100644 --- a/docs/i18n/nl/README.md +++ b/docs/i18n/nl/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/no/CHANGELOG.md b/docs/i18n/no/CHANGELOG.md index 43bd234c88..8fe63e0e8a 100644 --- a/docs/i18n/no/CHANGELOG.md +++ b/docs/i18n/no/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/no/README.md b/docs/i18n/no/README.md index d51967b29f..2991a9da12 100644 --- a/docs/i18n/no/README.md +++ b/docs/i18n/no/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/phi/CHANGELOG.md b/docs/i18n/phi/CHANGELOG.md index b06b6abd9b..355e3d237c 100644 --- a/docs/i18n/phi/CHANGELOG.md +++ b/docs/i18n/phi/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/phi/README.md b/docs/i18n/phi/README.md index cad42b780a..c3777e6fc1 100644 --- a/docs/i18n/phi/README.md +++ b/docs/i18n/phi/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/pl/CHANGELOG.md b/docs/i18n/pl/CHANGELOG.md index d8bb54352b..7cb2cce0f2 100644 --- a/docs/i18n/pl/CHANGELOG.md +++ b/docs/i18n/pl/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/pl/README.md b/docs/i18n/pl/README.md index cd9b2b3f1d..53baec40a8 100644 --- a/docs/i18n/pl/README.md +++ b/docs/i18n/pl/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/pt-BR/CHANGELOG.md b/docs/i18n/pt-BR/CHANGELOG.md index 7a65b3219d..a0240f4f15 100644 --- a/docs/i18n/pt-BR/CHANGELOG.md +++ b/docs/i18n/pt-BR/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/pt-BR/README.md b/docs/i18n/pt-BR/README.md index 343d7313d5..66670d1f9f 100644 --- a/docs/i18n/pt-BR/README.md +++ b/docs/i18n/pt-BR/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/pt/CHANGELOG.md b/docs/i18n/pt/CHANGELOG.md index 29a7203ccc..949488a56e 100644 --- a/docs/i18n/pt/CHANGELOG.md +++ b/docs/i18n/pt/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/pt/README.md b/docs/i18n/pt/README.md index 978e95d699..127c4e8ba2 100644 --- a/docs/i18n/pt/README.md +++ b/docs/i18n/pt/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/ro/CHANGELOG.md b/docs/i18n/ro/CHANGELOG.md index b6a5f585dd..d6292bd346 100644 --- a/docs/i18n/ro/CHANGELOG.md +++ b/docs/i18n/ro/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/ro/README.md b/docs/i18n/ro/README.md index 3b72636485..5149775fe2 100644 --- a/docs/i18n/ro/README.md +++ b/docs/i18n/ro/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/ru/CHANGELOG.md b/docs/i18n/ru/CHANGELOG.md index e3a4c049f2..f2741fc393 100644 --- a/docs/i18n/ru/CHANGELOG.md +++ b/docs/i18n/ru/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/ru/README.md b/docs/i18n/ru/README.md index f27613dd69..2a6e03f105 100644 --- a/docs/i18n/ru/README.md +++ b/docs/i18n/ru/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/sk/CHANGELOG.md b/docs/i18n/sk/CHANGELOG.md index bd73a04f84..48fbdec59e 100644 --- a/docs/i18n/sk/CHANGELOG.md +++ b/docs/i18n/sk/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/sk/README.md b/docs/i18n/sk/README.md index 95c87dda68..a05d9fd53e 100644 --- a/docs/i18n/sk/README.md +++ b/docs/i18n/sk/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/sv/CHANGELOG.md b/docs/i18n/sv/CHANGELOG.md index 79b402a6f9..5fd844def1 100644 --- a/docs/i18n/sv/CHANGELOG.md +++ b/docs/i18n/sv/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/sv/README.md b/docs/i18n/sv/README.md index 9377c8b9c6..5409c4e43c 100644 --- a/docs/i18n/sv/README.md +++ b/docs/i18n/sv/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/th/CHANGELOG.md b/docs/i18n/th/CHANGELOG.md index 84fe853b7f..2df9929c4a 100644 --- a/docs/i18n/th/CHANGELOG.md +++ b/docs/i18n/th/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/th/README.md b/docs/i18n/th/README.md index 08652329d9..432703546b 100644 --- a/docs/i18n/th/README.md +++ b/docs/i18n/th/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/tr/CHANGELOG.md b/docs/i18n/tr/CHANGELOG.md index a71fdd7fab..1040d713af 100644 --- a/docs/i18n/tr/CHANGELOG.md +++ b/docs/i18n/tr/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/tr/README.md b/docs/i18n/tr/README.md index c048afcf2a..f12e9118a9 100644 --- a/docs/i18n/tr/README.md +++ b/docs/i18n/tr/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/uk-UA/CHANGELOG.md b/docs/i18n/uk-UA/CHANGELOG.md index 163adbbfff..ec4d37aceb 100644 --- a/docs/i18n/uk-UA/CHANGELOG.md +++ b/docs/i18n/uk-UA/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/uk-UA/README.md b/docs/i18n/uk-UA/README.md index 814954a791..05231b353f 100644 --- a/docs/i18n/uk-UA/README.md +++ b/docs/i18n/uk-UA/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/vi/CHANGELOG.md b/docs/i18n/vi/CHANGELOG.md index d2e3ad4d37..28fd801550 100644 --- a/docs/i18n/vi/CHANGELOG.md +++ b/docs/i18n/vi/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/vi/README.md b/docs/i18n/vi/README.md index 1f5ab6328c..338b9d5047 100644 --- a/docs/i18n/vi/README.md +++ b/docs/i18n/vi/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/i18n/zh-CN/CHANGELOG.md b/docs/i18n/zh-CN/CHANGELOG.md index e16a515aa1..409f3274f4 100644 --- a/docs/i18n/zh-CN/CHANGELOG.md +++ b/docs/i18n/zh-CN/CHANGELOG.md @@ -4,10 +4,95 @@ --- + ## [Unreleased] --- +## [3.7.0] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Add ModelScope provider (Chinese AI marketplace) with Kimi K2.5, GLM-5, and Step-3.5-Flash integration. (#1430) +- **feat(core):** Implement provider-level Circuit Breaker to prevent cascading failures across connections, enforcing a 10-minute cooldown after 5 consecutive transient failures. (#1430) +- **feat(core):** Add daily quota exhaustion lock to detect "quota exceeded" signals and lock the specific model until midnight. (#1430) +- **feat(dashboard):** Introduce real-time model status badges with countdown timers in the provider detail and combo panel interfaces. (#1430) + +### ๐Ÿ› Bug Fixes + +- **fix(dashboard):** Correct TOML round-trip corruption in Codex config serializer by dequoting keys and preserving array/boolean structures properly. (#1438) + +--- + +## [3.6.9] โ€” 2026-04-19 + +### โœจ New Features + +- **feat(providers):** Mark Qwen OAuth provider as deprecated following the upstream free tier shutdown on 2026-04-15. Adds deprecation warning to CLI tool UI and rewrites `saveQwenConfig` to inject OmniRoute as a multi-provider (openai, anthropic, gemini) via `.qwen/settings.json` and `.qwen/.env` (#1437) +- **feat(cc-compatible):** Align Claude Code-compatible request shape with the official Claude CLI protocol, including proper system skeleton and request normalization (#1411) +- **feat(skills):** Provider-aware marketplace UX with scored AUTO injection and memory pipeline hardening. Skills now show relevance scores and can automatically inject context into requests (#1411) +- **feat(claude-code):** Update Claude Code obfuscation to version 2.1.114, centralize hardcoded version strings, and use standard logger (#1403) +- **feat(cli-tools):** Add direct configuration file generation and override support for Qwen Code local settings (#1394) +- **feat(providers):** Derive Claude CLI model defaults dynamically from provider registry to stay current with upstream API changes (#1393) +- **feat(core):** Implement persistent API key, backup pruning, and GPU optimization (#1350, #1367, #1369) + +### ๐Ÿ› Bug Fixes + +- **fix(cli-tools):** Prevent masked API keys (`sk-31c4****8600`) from being written to CLI tool config files. The dashboard UI now passes `key.id` to the backend, which resolves the unmasked key from the database via a new `resolveApiKey()` helper. Fixes auth failures across all CLI tools (Claude, Codex, Cline, Kilo, Droid, OpenClaw, Antigravity) (#1435) +- **fix(cc-compatible):** Trim the default Claude Code-compatible system prompt skeleton from a multi-paragraph instruction set down to a single identifier line, reducing redundant token usage since Claude Code already injects its own extensive system context (#1433) +- **fix(security):** Resolve SSRF environment static evaluation bug where the outbound URL guard could be bypassed via computed expressions (#1427) +- **fix(auth):** Reload fresh token state and unify expiry persistence to prevent stale credentials from causing cascading auth failures +- **fix(core):** Stabilization fixes for token refresh, usage translation, and testing infrastructure +- **fix(api):** Stop sending unsupported parameters to Gemini and Codex upstream APIs, preventing 400 Bad Request errors +- **fix(skills):** Optimize AUTO scoring algorithm and include Responses API input context for more accurate skill relevance matching (#1418) +- **fix(responses):** Preserve reasoning content when translating Chat Completions format to Responses API format, preventing loss of chain-of-thought data (#1414) +- **fix(cc-compatible):** Add Claude CLI system skeleton for OpenAI-format inputs to ensure consistent behavior when CC-compatible providers receive OpenAI-style payloads +- **fix(providers):** Add `ref` to `GEMINI_UNSUPPORTED_SCHEMA_KEYS` to fix 400 errors from Gemini CLI when tool schemas contain JSON Schema `$ref` fields +- **fix(codex):** Prevent proactive token refresh from consuming valid tokens and strip the unsupported `background` parameter from upstream requests +- **fix(providers):** Fix `usage.prompt_tokens` under-reporting when translating Claude caching responses to OpenAI format (#1426) +- **fix(core):** Fix token refresh resilience for Codex providers. Unrecoverable OAuth refresh errors (`token_expired` and `invalid_token`) now correctly mark the connection as invalid to prompt user re-authentication, rather than silently failing (#1415) +- **fix(providers):** Fix Gemini tool calling by removing the unsupported `additionalProperties` schema field, resolving 400 errors during complex tool invocations (#1421) +- **fix(providers):** Remove arbitrary user thought signature injection in Gemini responses to comply with updated API constraints (#1410) +- **fix(providers):** Fix Gemini API part count mismatch for streaming responses (#1412) +- **fix(codex):** Respect `openaiStoreEnabled` setting during native passthrough for Responses API to prevent unsupported upstream arguments (#1432) +- **fix(ui):** Makes dropdown text visible in dark mode within the Combo Builder modal (#1409) +- **fix(chatcore):** Apply proactive compression before provider translation to prevent token limit errors in combo routes (#1406) +- **fix(claude-code):** Scope thinking stripping to executor boundaries to prevent issues with normal API requests (#1401) +- **fix(claude-code):** Scope obfuscation logic to CLI clients only and fix associated test assertions +- **fix(mitm):** Resolve MITM not working when connecting Antigravity (#1399) +- **fix(security):** Resolve CodeQL password hash alert and fix TruffleHog CI failure (#161) +- **fix(combo):** Fallback to the next model when all provider accounts return a 503 rate-limited signal instead of aborting the routing sequence (#1398) +- **fix(codex):** Strip server-generated IDs from response items in input to prevent 404 lookup errors in multi-turn Codex Conversations (#1397) +- **fix(codex):** Optimize Chat Completions paths by converting `system` to `developer` roles instead of hoisting them into instructions, enabling prompt caching for system messages on GPT-5 models (#1400) +- **fix(providers):** Resolve Claude passthrough corruption (#1359), Kimi-k2 reasoning header rejections (#1360), thinking parameter leaks (#1361), and Ollama proxy redirect drops (#1381) +- **fix(core):** Proxy lookup in key validation respects the new ProxyRegistry environments, and proxy contexts correctly inherit downwards during token refresh preventing expiration loops (#1384, #1390) +- **fix(providers):** Treat upstream legacy validation HTTP 5xx responses as a valid bypass for Qoder PAT tokens to prevent false negative invalidation (#1391) +- **fix(electron):** Resolve type error in Header electronAPI properties +- **fix(security):** Resolve CodeQL security alerts including safe prototype bindings (#151, #152, #154, #155-159) +- **fix(tsc):** Silence `baseUrl` deprecation warnings for TypeScript 5.5+ configurations + +### ๐Ÿงช Tests + +- **test(core):** Resolve typescript strictness complaints and fix combo-routing-engine test regression +- **test(core):** Resolve remaining strict type errors across all unit test files +- **test(providers):** Fix provider service assertion for anthropic-compatible header format +- **test(codex):** Align codex passthrough assertions with explicit store retention policy +- **test(codex):** Fix store assertion for codex responses +- **test(cli):** Resolve strict null checks in Qoder unit tests + +### ๐Ÿ› ๏ธ Maintenance + +- **chore:** Sync infrastructure with docker postinstall components and secondary CodeQL analysis rules +- **chore:** Enforce contributor credit rule in review-prs workflow +- **chore:** Fix TS errors and update review-prs workflow for improved automation +- **ci:** Allow manual CI dispatch for release branches +- **ci:** Shard long-running test suites and relax timeouts for stability +- **ci:** Restore release v3.6.9 build pipeline and fix flaky tests +- **docs:** Update generate-release workflow to use full changelog for PR body +- **docs:** Enforce PR merge instead of manual close in workflows + +--- + ## [3.6.8] โ€” 2026-04-17 ### โœจ New Features diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md index 15a8a93b01..a9e43254c5 100644 --- a/docs/i18n/zh-CN/README.md +++ b/docs/i18n/zh-CN/README.md @@ -4,6 +4,7 @@ --- + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy โ€” one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._ @@ -1452,7 +1453,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | ----------------------------------- | --------------------------------------------------------------------------------------- | -| ๐Ÿ”Œ **Circuit Breakers** | Per-model trip/recover with threshold controls | +| ๐Ÿ”Œ **Circuit Breakers** | Per-provider and per-model trip/recover with 10-minute cooldowns | +| ๐Ÿ”’ **Daily Quota Lock** ๐Ÿ†• | Detects exhaustion signals and locks routing for the specific model until midnight | | ๐ŸŽฏ **Endpoint-Aware Models** | Custom models declare supported endpoints + API format | | ๐Ÿ›ก๏ธ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events | | ๐Ÿง  **Semantic + Signature Cache** | Cost/latency reduction with two cache layers | @@ -1478,7 +1480,8 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy. | Feature | What It Does | | -------------------------------- | ----------------------------------------------------- | | ๐Ÿ“ **Request + Proxy Logging** | Full request/response and proxy logging | -| ๐Ÿ“‰ **Streamed Detailed Logs** ๐Ÿ†• | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿ“‰ **Streamed Detailed Logs** | Reconstructs SSE payload streams cleanly into the UI | +| ๐Ÿท๏ธ **Real-Time Model Badges** ๐Ÿ†• | Live model status and daily quota countdown timers | | ๐Ÿ“‹ **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page | | ๐Ÿ” **Request Telemetry** | p50/p95/p99 latency and request tracing | | ๐Ÿฅ **Health Dashboard** | Uptime, breaker states, lockouts, cache stats | diff --git a/docs/openapi.yaml b/docs/openapi.yaml index ac43b5671a..1a659c0a18 100644 --- a/docs/openapi.yaml +++ b/docs/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: OmniRoute API - version: 3.6.9 + version: 3.7.0 description: | OmniRoute is a local-first AI API proxy router. It provides an OpenAI-compatible endpoint that routes requests to multiple AI providers with load balancing, diff --git a/electron/package.json b/electron/package.json index 22a1a2b76c..f4da5e1509 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,6 +1,6 @@ { "name": "omniroute-desktop", - "version": "3.6.9", + "version": "3.7.0", "description": "OmniRoute Desktop Application", "main": "main.js", "author": { diff --git a/open-sse/package.json b/open-sse/package.json index fae8803126..3768c51670 100644 --- a/open-sse/package.json +++ b/open-sse/package.json @@ -1,6 +1,6 @@ { "name": "@omniroute/open-sse", - "version": "3.6.9", + "version": "3.7.0", "description": "Express SSE sidecar for OmniRoute โ€” handles streaming, protocol translation, and provider orchestration", "type": "module", "main": "index.js", diff --git a/open-sse/services/combo.ts b/open-sse/services/combo.ts index 796a8a58da..219b8afaa4 100644 --- a/open-sse/services/combo.ts +++ b/open-sse/services/combo.ts @@ -1493,7 +1493,7 @@ export async function handleComboChat({ let earliestRetryAfter = null; let lastStatus = null; const startTime = Date.now(); - globalAttempts = 0; + let globalAttempts = 0; let fallbackCount = 0; let recordedAttempts = 0; diff --git a/package-lock.json b/package-lock.json index 9387c47ca5..5da6f07344 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20962,7 +20962,7 @@ }, "open-sse": { "name": "@omniroute/open-sse", - "version": "3.6.9" + "version": "3.7.0" } } }