diff --git a/.agents/workflows/generate-release.md b/.agents/workflows/generate-release.md
index 3a1c6c3c9c..8d0ac8ca17 100644
--- a/.agents/workflows/generate-release.md
+++ b/.agents/workflows/generate-release.md
@@ -52,19 +52,19 @@ Before creating the release, you must ensure the codebase and supply chain are s
git checkout -b release/v2.x.y
```
-### 2. Determine new version
+### 2. Determine and sync version
-Check current version in `package.json` and increment the **patch** number only:
+Check current version in `package.json`:
```bash
grep '"version"' package.json
```
-Version format: `2.x.y` — examples:
-
-- `2.1.2` → `2.1.3` (patch)
-- `2.1.9` → `2.1.10` (patch)
-- `2.1.10` → `2.2.0` (minor threshold — do manually with `sed`)
+> **🔴 BRANCH-VERSION PARITY RULE**: The logical version in `package.json` MUST exactly match the release branch name. For example, if you are on `release/v3.7.0`, the version in `package.json` MUST be `3.7.0`.
+>
+> - If this is the FIRST time generating a release for a new minor/major branch (e.g., bumping from 3.6.9 to 3.7.0), you MUST ensure the version is bumped to match the new branch logic.
+> - If you are just bumping a patch on the current branch (e.g., 3.6.9 to 3.6.10), use:
+> `npm version patch --no-git-tag-version`
> **⚠️ ATOMIC COMMIT RULE — Version bump MUST happen before committing feature files.**
>
@@ -97,15 +97,29 @@ npm install
### 4. Finalize CHANGELOG.md
-Replace `[Unreleased]` header with the new version and date.
-Keep an empty `## [Unreleased]` section above it.
+> **🔴 NO MIXUPS RULE**: Ensure you do NOT mix the backlog of the previous version with the new one. The new version section must ONLY contain the features and fixes for the current release.
+
+Replace the `[Unreleased]` header with the new version and date.
+Keep an empty `## [Unreleased]` section above it, separated by a horizontal rule (`---`).
```markdown
## [Unreleased]
---
-## [2.x.y] — YYYY-MM-DD
+## [3.7.0] — 2026-04-19
+
+### ✨ New Features
+
+- ...
+
+### 🐛 Bug Fixes
+
+- ...
+
+---
+
+## [3.6.9] — 2026-04-19
```
### 5. Update openapi.yaml version ⚠️ MANDATORY
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9e7189ab30..4008929740 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,22 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
## [3.6.9] — 2026-04-19
### ✨ New Features
diff --git a/README.md b/README.md
index 7f45c559c0..351e7e4785 100644
--- a/README.md
+++ b/README.md
@@ -324,12 +324,13 @@ AI providers can become unstable, return 5xx errors, or hit temporary rate limit
**How OmniRoute solves it:**
-- **Settings-Driven Lock Hierarchy** — Provider profiles control default account/model lockouts, global model quarantine, and provider circuit breakers from one control surface, while explicit upstream `Retry-After` windows still take priority
-- **Exponential Backoff** — Progressive retry delays for both account/model lockouts and higher-level quarantine
+- **Request Queue & Pacing** — Per-connection request buckets smooth bursts before they hit upstream rate caps
+- **Connection Cooldown** — A single connection cools down after retryable failures with optional upstream `Retry-After` hints and exponential backoff
+- **Provider Circuit Breaker** — The provider only trips after fallback is exhausted and the provider request still fails with provider-wide transient errors; connection-scoped `429` rate limits stay in Connection Cooldown
+- **Wait For Cooldown** — The server can wait for the earliest connection cooldown to expire and retry the same client request automatically
- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
-- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
-- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
+- **Health Dashboard** — Uptime monitoring, provider circuit breaker states, cooldowns, cache stats, p50/p95/p99 latency
@@ -470,7 +471,7 @@ As request volume grows, without caching the same questions generate duplicate c
- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
- **Request Idempotency** — 5s deduplication window for identical requests
- **Rate Limit Detection** — Per-provider RPM, min gap, and max concurrent tracking
-- **Editable Rate Limits** — Configurable defaults in Settings → Resilience with persistence
+- **Request Queue & Pacing** — Configurable queue, pacing, and concurrency defaults in Settings → Resilience
- **API Key Validation Cache** — 3-tier cache for production performance
- **Health Dashboard with Telemetry** — p50/p95/p99 latency, cache stats, uptime
@@ -567,8 +568,8 @@ Teams need quick runtime changes during incidents or cost events.
**How OmniRoute solves it:**
- Switch combo activation directly from MCP dashboard
-- Apply resilience profiles from pre-defined policy packs
-- Reset circuit breaker state from the same operations panel
+- Tune queue, cooldown, breaker, and wait settings from the dedicated Resilience page
+- Review live provider breaker state from the Health dashboard
@@ -1352,7 +1353,7 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy.
| 🔢 **Hybrid Token Counting** | Uses provider-side `/messages/count_tokens` when available; falls back to estimation — accurate usage tracking without guessing |
| 🌱 **Model Alias Auto-Seed** | 30+ cross-proxy dialect aliases normalised at startup — no more routing mismatches |
| 🛡️ **Safe Outbound Fetch** | All provider validation and model discovery go through a guarded fetch layer blocking private/local URLs with retry, timeout, and SSRF protection |
-| 🔄 **Cooldown-Aware Retries** | Chat requests auto-retry on model-scoped cooldowns with configurable `requestRetry` and `maxRetryIntervalSec` |
+| ⏳ **Wait For Cooldown** | Server-side chat retries when every candidate connection is cooling down; configurable `enabled`, `maxRetries`, and `maxRetryWaitSec` |
| 🔍 **Runtime Env Validation** | Startup validates all env vars with Zod schemas — clear errors for missing secrets, invalid URLs, or wrong types |
| 📋 **Compliance Audit Expansion** | Structured audit logs with pagination, request context, auth events, provider CRUD events, and SSRF-blocked validation logging |
| 🔐 **TPS Log Metric** | Log details modal shows Tokens Per Second (TPS) — quick performance at-a-glance for every request |
@@ -1406,7 +1407,7 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy.
| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
-| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+| ⚙️ **Operational Controls** | Switch combos, tune resilience settings, and review breaker state from dedicated Health and Settings surfaces |
### 🧠 Routing & Intelligence
@@ -1446,35 +1447,38 @@ OmniRoute v3.6 is built as an operational platform, not just a relay proxy.
### 🛡️ Resilience, Security & Governance
-| Feature | What It Does |
-| ----------------------------------- | --------------------------------------------------------------------------------------- |
-| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
-| 🎯 **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 |
-| ⚡ **Request Idempotency** | Duplicate protection window |
-| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
-| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
-| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
-| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
-| 📉 **Graceful Degradation** | Multi-layer capability fallbacks protecting core gateway operations |
-| 📜 **Config Audit Trail** | Diff-based change tracking preventing operational drift with simple rollbacks |
-| ⏳ **Provider Health Sync** | Proactive token expiration monitoring triggering alerts before authorization failures |
-| 🚪 **Auto-Disable Banned Accounts** | Operational circuit breaker sealing permanently blocked token accounts automatically |
-| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
-| 🛡️ **Safe Outbound Fetch** 🆕 | Guarded fetch for provider calls — blocks private/local URLs, retries, SSRF protection |
-| 🔄 **Cooldown-Aware Retries** 🆕 | Auto-retry chat on model cooldowns; configurable `requestRetry` / `maxRetryIntervalSec` |
-| 🔍 **Runtime Env Validation** 🆕 | Zod-based env schema validation at startup with actionable error messages |
-| 📋 **Compliance Audit v2** 🆕 | Pagination, request context, auth events, provider CRUD, and SSRF-blocked logging |
+| Feature | What It Does |
+| ----------------------------------- | ------------------------------------------------------------------------------------------------------- |
+| 🔌 **Provider Circuit Breakers** | Provider-wide trip/recover after fallback exhaustion with configurable thresholds |
+| 🔒 **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 |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 🚦 **Request Queue & Pacing** | Configurable per-connection request buckets for RPM, spacing, concurrency, and max wait |
+| 📉 **Graceful Degradation** | Multi-layer capability fallbacks protecting core gateway operations |
+| 📜 **Config Audit Trail** | Diff-based change tracking preventing operational drift with simple rollbacks |
+| ⏳ **Provider Health Sync** | Proactive token expiration monitoring triggering alerts before authorization failures |
+| ❄️ **Connection Cooldown** | Retryable 408/429/5xx failures cool down a single connection with optional upstream hints |
+| 🚪 **Auto-Disable Banned Accounts** | Permanently blocked token accounts can be disabled automatically |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+| 🛡️ **Safe Outbound Fetch** 🆕 | Guarded fetch for provider calls — blocks private/local URLs, retries, SSRF protection |
+| ⏳ **Wait For Cooldown** 🆕 | Auto-retry chat after connection cooldowns; configurable `enabled`, `maxRetries`, and `maxRetryWaitSec` |
+| 🔍 **Runtime Env Validation** 🆕 | Zod-based env schema validation at startup with actionable error messages |
+| 📋 **Compliance Audit v2** 🆕 | Pagination, request context, auth events, provider CRUD, and SSRF-blocked logging |
### 📊 Observability & Analytics
| 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 |
@@ -2281,7 +2285,7 @@ OmniRoute has **218+ features planned** across multiple development phases. Here
| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, quota-aware P2C, step-based combo routing |
| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, combo target health, cost tracking per model |
-| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, connection cooldowns, multi-account Codex, Copilot quota parsing |
| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
diff --git a/docs/API_REFERENCE.md b/docs/API_REFERENCE.md
index 376ceecacf..087d5619f3 100644
--- a/docs/API_REFERENCE.md
+++ b/docs/API_REFERENCE.md
@@ -284,12 +284,12 @@ GET response includes `agents[]` (id, name, binary, version, installed, protocol
### Resilience & Rate Limits
-| Endpoint | Method | Description |
-| ----------------------- | --------- | ------------------------------- |
-| `/api/resilience` | GET/PATCH | Get/update resilience profiles |
-| `/api/resilience/reset` | POST | Reset circuit breakers |
-| `/api/rate-limits` | GET | Per-account rate limit status |
-| `/api/rate-limit` | GET | Global rate limit configuration |
+| Endpoint | Method | Description |
+| ----------------------- | --------- | ---------------------------------------------------------------------------------- |
+| `/api/resilience` | GET/PATCH | Get/update request queue, connection cooldown, provider breaker, and wait settings |
+| `/api/resilience/reset` | POST | Reset provider circuit breakers |
+| `/api/rate-limits` | GET | Per-account rate limit status |
+| `/api/rate-limit` | GET | Global rate limit configuration |
### Evals
@@ -443,25 +443,6 @@ Content-Type: application/json
}
```
----
-
-## Model Availability
-
-```bash
-# Get real-time model availability across all providers
-GET /api/models/availability
-
-# Check availability for a specific model
-POST /api/models/availability
-Content-Type: application/json
-
-{
- "model": "claude-sonnet-4-5-20250929"
-}
-```
-
----
-
## Request Processing
1. Client sends request to `/v1/*`
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 7900209f28..37c8b1baf0 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -42,7 +42,7 @@ Core capabilities:
- Circuit breaker pattern for provider resilience
- Anti-thundering herd protection with mutex locking
- Signature-based request deduplication cache
-- Domain layer: model availability, cost rules, fallback policy, lockout policy
+- Domain layer: cost rules, fallback policy, lockout policy
- Context Relay: session handoff summaries for account rotation continuity
- Domain state persistence (SQLite write-through cache for fallbacks, budgets, lockouts, circuit breakers)
- Policy engine for centralized request evaluation (lockout → budget → fallback)
@@ -51,7 +51,7 @@ Core capabilities:
- Correlation ID (X-Request-Id) for end-to-end tracing
- Compliance audit logging with opt-out per API key
- Eval framework for LLM quality assurance
-- Resilience UI dashboard with real-time circuit breaker status
+- Health dashboard with real-time provider circuit breaker status
- MCP Server (25 tools) with 3 transports (stdio/SSE/Streamable HTTP)
- A2A Server (JSON-RPC 2.0 + SSE) with skills and task lifecycle
- Memory system (extraction, injection, retrieval, summarization)
@@ -205,10 +205,9 @@ Management domains:
- System prompt: `src/app/api/settings/system-prompt` (GET/PUT)
- Sessions: `src/app/api/sessions` (GET)
- Rate limits: `src/app/api/rate-limits` (GET)
-- Resilience: `src/app/api/resilience` (GET/PATCH) — provider profiles, circuit breaker, rate limit state
-- Resilience reset: `src/app/api/resilience/reset` (POST) — reset breakers + cooldowns
+- Resilience: `src/app/api/resilience` (GET/PATCH) — request queue, connection cooldown, provider breaker, wait-for-cooldown config
+- Resilience reset: `src/app/api/resilience/reset` (POST) — reset provider breakers
- Cache stats: `src/app/api/cache/stats` (GET/DELETE)
-- Model availability: `src/app/api/models/availability` (GET/POST)
- Telemetry: `src/app/api/telemetry/summary` (GET)
- Budget: `src/app/api/usage/budget` (GET/POST)
- Fallback chains: `src/app/api/fallback/chains` (GET/POST/DELETE)
@@ -265,7 +264,6 @@ Services (business logic):
Domain layer modules:
-- Model availability: `src/lib/domain/modelAvailability.ts`
- Cost rules/budgets: `src/lib/domain/costRules.ts`
- Fallback policy: `src/lib/domain/fallbackPolicy.ts`
- Combo resolver: `src/lib/domain/comboResolver.ts`
@@ -794,7 +792,7 @@ legacy compatibility. The current runtime contract uses:
## 1) Account/Provider Availability
-- provider account cooldown on transient/rate/auth errors
+- connection cooldown on retryable upstream failures
- account fallback before failing request
- combo model fallback when current model/provider path is exhausted
@@ -876,7 +874,7 @@ Environment variables actively used by code:
5. The `open-sse/` directory is published as the `@omniroute/open-sse` **npm workspace package**. Source code imports it via `@omniroute/open-sse/...` (resolved by Next.js `transpilePackages`). File paths in this document still use the directory name `open-sse/` for consistency.
6. Charts in the dashboard use **Recharts** (SVG-based) for accessible, interactive analytics visualizations (model usage bar charts, provider breakdown tables with success rates).
7. E2E tests use **Playwright** (`tests/e2e/`), run via `npm run test:e2e`. Unit tests use **Node.js test runner** (`tests/unit/`), run via `npm run test:unit`. Source code under `src/` is **TypeScript** (`.ts`/`.tsx`); the `open-sse/` workspace remains JavaScript (`.js`).
-8. Settings page is organized into 5 tabs: Security, Routing (6 global strategies: fill-first, round-robin, p2c, random, least-used, cost-optimized), Resilience (editable rate limits, circuit breaker, policies, **Context Relay** handoff config), AI (thinking budget, system prompt, prompt cache), Advanced (proxy).
+8. Settings page is organized into 7 tabs: General, Appearance, AI, Security, Routing, Resilience, Advanced. The Resilience page only configures request queue, connection cooldown, provider breaker, and wait-for-cooldown behavior; live breaker runtime state is shown on the Health page.
9. **Context Relay** strategy (`context-relay`) is split across two layers: `combo.ts` decides if a handoff should be generated, `chat.ts` injects the handoff after account resolution. Handoff data lives in `context_handoffs` SQLite table. This split is intentional because only `chat.ts` knows whether the actual account changed.
10. **Proxy enforcement** is now comprehensive: `tokenHealthCheck.ts` resolves proxy per connection, `/api/providers/validate` uses `runWithProxyContext`, and `proxyFetch.ts` uses `undici.fetch()` to maintain dispatcher compatibility on Node 22.
11. **Node.js runtime policy detection**: `/api/settings/require-login` returns `nodeVersion` and `nodeCompatible` fields. The login page renders a warning banner when the runtime falls outside the supported secure Node.js lines.
diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md
index a639755c1d..b1f180b531 100644
--- a/docs/USER_GUIDE.md
+++ b/docs/USER_GUIDE.md
@@ -756,35 +756,34 @@ Chain: production-fallback
Configure via **Dashboard → Settings → Resilience**.
-OmniRoute implements provider-level resilience with four components:
+OmniRoute implements provider-level resilience with five components:
-1. **Provider Profiles** — Per-provider configuration for:
- - **Transient Cooldown** — Base cooldown for transient upstream failures
- - **Rate Limit Cooldown** — Base cooldown for `429`-driven lockouts
- - **Max Backoff Level** — Maximum exponential backoff level for repeated failures
- - **CB Threshold** — Failure count before model quarantine / provider circuit breaker escalates
- - **CB Reset Time** — Failure counting window and breaker reset timer
-
-2. **Editable Rate Limits** — System-level defaults configurable in the dashboard:
+1. **Request Queue & Pacing** — System-level request shaping:
- **Requests Per Minute (RPM)** — Maximum requests per minute per account
- **Min Time Between Requests** — Minimum gap in milliseconds between requests
- **Max Concurrent Requests** — Maximum simultaneous requests per account
- - Click **Edit** to modify, then **Save** or **Cancel**. Values persist via the resilience API.
-3. **Circuit Breaker** — Tracks failures per provider and automatically opens the circuit when the configured threshold is reached:
+2. **Connection Cooldown** — Per-auth-type configuration for a single connection after retryable failures:
+ - **Base Cooldown** — Default cooldown window for retryable upstream failures
+ - **Use Upstream Retry Hints** — Honors authoritative `Retry-After` or reset hints when provided
+ - **Max Backoff Steps** — Maximum exponential backoff level for repeated failures
+
+3. **Provider Circuit Breaker** — Tracks end-to-end provider failures and automatically opens the breaker when the configured threshold is reached:
+ - **Failure Threshold** — Consecutive provider failures before opening the breaker
+ - **Reset Timeout** — Time window before the provider is tested again
- **CLOSED** (Healthy) — Requests flow normally
- **OPEN** — Provider is temporarily blocked after repeated failures
- **HALF_OPEN** — Testing if provider has recovered
- The same provider profile also drives model-scoped lockouts:
- - Account/model lockouts react immediately to authoritative `429` / `404` signals and use the configured cooldown + backoff values
- - Global provider/model quarantine only activates after repeated exhaustion hits the configured **CB Threshold** within **CB Reset Time**
+ Connection-scoped `429` rate limits stay in **Connection Cooldown** and do not count toward the provider breaker.
-4. **Policies & Locked Identifiers** — Shows circuit breaker status and locked identifiers with force-unlock capability.
+ The provider breaker runtime state is shown on **Dashboard → Health** only.
-5. **Rate Limit Auto-Detection** — Monitors `429` and `Retry-After` headers to proactively avoid hitting provider rate limits. When an upstream provider returns an explicit wait window, that authoritative `Retry-After` value overrides the base cooldown from the provider profile.
+4. **Wait For Cooldown** — If every candidate connection is already cooling down, OmniRoute can wait for the earliest cooldown and retry the same client request automatically.
-**Pro Tip:** Use **Reset All** button to clear all circuit breakers and cooldowns when a provider recovers from an outage.
+5. **Rate Limit Auto-Detection** — When upstream providers return explicit wait windows, those hints override the local connection cooldown when the setting is enabled.
+
+**Pro Tip:** Use the **Health** page to inspect and reset live provider breakers after an outage. The Resilience page only changes configuration.
---
@@ -824,14 +823,14 @@ curl -X POST http://localhost:20128/api/db-backups/import \
The settings page is organized into 6 tabs for easy navigation:
-| Tab | Contents |
-| -------------- | ---------------------------------------------------------------------------------------------- |
-| **General** | System storage tools, appearance settings, theme controls, and per-item sidebar visibility |
-| **Security** | Login/Password settings, IP Access Control, API auth for `/models`, and Provider Blocking |
-| **Routing** | Global routing strategy (6 options), wildcard model aliases, fallback chains, combo defaults |
-| **Resilience** | Provider profiles, editable rate limits, circuit breaker status, policies & locked identifiers |
-| **AI** | Thinking budget configuration, global system prompt injection, prompt cache stats |
-| **Advanced** | Global proxy configuration (HTTP/SOCKS5) |
+| Tab | Contents |
+| -------------- | -------------------------------------------------------------------------------------------- |
+| **General** | System storage tools, appearance settings, theme controls, and per-item sidebar visibility |
+| **Security** | Login/Password settings, IP Access Control, API auth for `/models`, and Provider Blocking |
+| **Routing** | Global routing strategy (6 options), wildcard model aliases, fallback chains, combo defaults |
+| **Resilience** | Request queue, connection cooldown, provider breaker config, and wait-for-cooldown behavior |
+| **AI** | Thinking budget configuration, global system prompt injection, prompt cache stats |
+| **Advanced** | Global proxy configuration (HTTP/SOCKS5) |
---
@@ -904,9 +903,9 @@ Access via **Dashboard → Health**. Real-time system health overview with 6 car
| Card | What It Shows |
| --------------------- | ----------------------------------------------------------- |
| **System Status** | Uptime, version, memory usage, data directory |
-| **Provider Health** | Per-provider circuit breaker state (Closed/Open/Half-Open) |
-| **Rate Limits** | Active rate limit cooldowns per account with remaining time |
-| **Active Lockouts** | Providers temporarily blocked by the lockout policy |
+| **Provider Health** | Global provider circuit breaker runtime state |
+| **Rate Limits** | Active connection cooldowns per account with remaining time |
+| **Active Lockouts** | Active model-scoped lockouts and temporary exclusions |
| **Signature Cache** | Deduplication cache stats (active keys, hit rate) |
| **Latency Telemetry** | p50/p95/p99 latency aggregation per provider |
diff --git a/docs/i18n/ar/CHANGELOG.md b/docs/i18n/ar/CHANGELOG.md
index 6a4371a236..11e054045c 100644
--- a/docs/i18n/ar/CHANGELOG.md
+++ b/docs/i18n/ar/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..97cfddac52 100644
--- a/docs/i18n/ar/README.md
+++ b/docs/i18n/ar/README.md
@@ -1452,7 +1452,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 +1479,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..d82f894ada 100644
--- a/docs/i18n/bg/CHANGELOG.md
+++ b/docs/i18n/bg/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..1c8069e215 100644
--- a/docs/i18n/bg/README.md
+++ b/docs/i18n/bg/README.md
@@ -1452,7 +1452,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 +1479,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..9ec5eef036 100644
--- a/docs/i18n/cs/CHANGELOG.md
+++ b/docs/i18n/cs/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..72da7845d6 100644
--- a/docs/i18n/cs/README.md
+++ b/docs/i18n/cs/README.md
@@ -1452,7 +1452,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 +1479,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..5c82121780 100644
--- a/docs/i18n/da/CHANGELOG.md
+++ b/docs/i18n/da/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..e21fd34988 100644
--- a/docs/i18n/da/README.md
+++ b/docs/i18n/da/README.md
@@ -1452,7 +1452,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 +1479,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..d3655cf26f 100644
--- a/docs/i18n/de/CHANGELOG.md
+++ b/docs/i18n/de/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..a8fd113b57 100644
--- a/docs/i18n/de/README.md
+++ b/docs/i18n/de/README.md
@@ -1452,7 +1452,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 +1479,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..685b8dc4ce 100644
--- a/docs/i18n/es/CHANGELOG.md
+++ b/docs/i18n/es/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..bee2ae5c3f 100644
--- a/docs/i18n/es/README.md
+++ b/docs/i18n/es/README.md
@@ -1452,7 +1452,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 +1479,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..f8770e95d2 100644
--- a/docs/i18n/fi/CHANGELOG.md
+++ b/docs/i18n/fi/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..370460fc7a 100644
--- a/docs/i18n/fi/README.md
+++ b/docs/i18n/fi/README.md
@@ -1452,7 +1452,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 +1479,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..28e2d5b90a 100644
--- a/docs/i18n/fr/CHANGELOG.md
+++ b/docs/i18n/fr/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..74f16ade68 100644
--- a/docs/i18n/fr/README.md
+++ b/docs/i18n/fr/README.md
@@ -1452,7 +1452,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 +1479,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..2083b23674 100644
--- a/docs/i18n/he/CHANGELOG.md
+++ b/docs/i18n/he/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..711460f293 100644
--- a/docs/i18n/he/README.md
+++ b/docs/i18n/he/README.md
@@ -1452,7 +1452,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 +1479,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..bf0b19f322 100644
--- a/docs/i18n/hi/CHANGELOG.md
+++ b/docs/i18n/hi/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..eb7515428d 100644
--- a/docs/i18n/hi/README.md
+++ b/docs/i18n/hi/README.md
@@ -1452,7 +1452,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 +1479,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..f89a89b20e 100644
--- a/docs/i18n/hu/CHANGELOG.md
+++ b/docs/i18n/hu/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..84b4fff99f 100644
--- a/docs/i18n/hu/README.md
+++ b/docs/i18n/hu/README.md
@@ -1452,7 +1452,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 +1479,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..8165bcb25b 100644
--- a/docs/i18n/id/CHANGELOG.md
+++ b/docs/i18n/id/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..2b15be7354 100644
--- a/docs/i18n/id/README.md
+++ b/docs/i18n/id/README.md
@@ -1452,7 +1452,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 +1479,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..ff7d835e62 100644
--- a/docs/i18n/in/CHANGELOG.md
+++ b/docs/i18n/in/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..b314077223 100644
--- a/docs/i18n/in/README.md
+++ b/docs/i18n/in/README.md
@@ -1452,7 +1452,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 +1479,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..deb5953f69 100644
--- a/docs/i18n/it/CHANGELOG.md
+++ b/docs/i18n/it/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..3abd480ca9 100644
--- a/docs/i18n/it/README.md
+++ b/docs/i18n/it/README.md
@@ -1452,7 +1452,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 +1479,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..cadc15fb4c 100644
--- a/docs/i18n/ja/CHANGELOG.md
+++ b/docs/i18n/ja/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..79f2a33aee 100644
--- a/docs/i18n/ja/README.md
+++ b/docs/i18n/ja/README.md
@@ -1452,7 +1452,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 +1479,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..8ca32f5bc7 100644
--- a/docs/i18n/ko/CHANGELOG.md
+++ b/docs/i18n/ko/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..caf3171d19 100644
--- a/docs/i18n/ko/README.md
+++ b/docs/i18n/ko/README.md
@@ -1452,7 +1452,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 +1479,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..5509f3b2c7 100644
--- a/docs/i18n/ms/CHANGELOG.md
+++ b/docs/i18n/ms/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..846f22fbd4 100644
--- a/docs/i18n/ms/README.md
+++ b/docs/i18n/ms/README.md
@@ -1452,7 +1452,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 +1479,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..dd26a3d0a1 100644
--- a/docs/i18n/nl/CHANGELOG.md
+++ b/docs/i18n/nl/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..dead5c9c93 100644
--- a/docs/i18n/nl/README.md
+++ b/docs/i18n/nl/README.md
@@ -1452,7 +1452,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 +1479,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..9a33ab11a1 100644
--- a/docs/i18n/no/CHANGELOG.md
+++ b/docs/i18n/no/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..cd848c3d18 100644
--- a/docs/i18n/no/README.md
+++ b/docs/i18n/no/README.md
@@ -1452,7 +1452,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 +1479,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..e8014248a7 100644
--- a/docs/i18n/phi/CHANGELOG.md
+++ b/docs/i18n/phi/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..3982f91db7 100644
--- a/docs/i18n/phi/README.md
+++ b/docs/i18n/phi/README.md
@@ -1452,7 +1452,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 +1479,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..e9c24b233c 100644
--- a/docs/i18n/pl/CHANGELOG.md
+++ b/docs/i18n/pl/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..3521216f16 100644
--- a/docs/i18n/pl/README.md
+++ b/docs/i18n/pl/README.md
@@ -1452,7 +1452,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 +1479,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..8cc223bb43 100644
--- a/docs/i18n/pt-BR/CHANGELOG.md
+++ b/docs/i18n/pt-BR/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..df56ff3fb4 100644
--- a/docs/i18n/pt-BR/README.md
+++ b/docs/i18n/pt-BR/README.md
@@ -1452,7 +1452,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 +1479,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..a5523ab6ab 100644
--- a/docs/i18n/pt/CHANGELOG.md
+++ b/docs/i18n/pt/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..e758ec7301 100644
--- a/docs/i18n/pt/README.md
+++ b/docs/i18n/pt/README.md
@@ -1452,7 +1452,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 +1479,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..17bde222f4 100644
--- a/docs/i18n/ro/CHANGELOG.md
+++ b/docs/i18n/ro/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..417178a60c 100644
--- a/docs/i18n/ro/README.md
+++ b/docs/i18n/ro/README.md
@@ -1452,7 +1452,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 +1479,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..190102f371 100644
--- a/docs/i18n/ru/CHANGELOG.md
+++ b/docs/i18n/ru/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..f542d47b2d 100644
--- a/docs/i18n/ru/README.md
+++ b/docs/i18n/ru/README.md
@@ -1452,7 +1452,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 +1479,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..9d90a7e731 100644
--- a/docs/i18n/sk/CHANGELOG.md
+++ b/docs/i18n/sk/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..436e74d980 100644
--- a/docs/i18n/sk/README.md
+++ b/docs/i18n/sk/README.md
@@ -1452,7 +1452,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 +1479,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..7ae8745a84 100644
--- a/docs/i18n/sv/CHANGELOG.md
+++ b/docs/i18n/sv/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..b00b03fa02 100644
--- a/docs/i18n/sv/README.md
+++ b/docs/i18n/sv/README.md
@@ -1452,7 +1452,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 +1479,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..9295a7f6b4 100644
--- a/docs/i18n/th/CHANGELOG.md
+++ b/docs/i18n/th/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..7d516632eb 100644
--- a/docs/i18n/th/README.md
+++ b/docs/i18n/th/README.md
@@ -1452,7 +1452,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 +1479,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..a3f3833f09 100644
--- a/docs/i18n/tr/CHANGELOG.md
+++ b/docs/i18n/tr/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..31abf535c8 100644
--- a/docs/i18n/tr/README.md
+++ b/docs/i18n/tr/README.md
@@ -1452,7 +1452,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 +1479,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..8a8c7c9a28 100644
--- a/docs/i18n/uk-UA/CHANGELOG.md
+++ b/docs/i18n/uk-UA/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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 6d80b687ef..dbe51a1e92 100644
--- a/docs/i18n/uk-UA/README.md
+++ b/docs/i18n/uk-UA/README.md
@@ -2,7 +2,7 @@
### Ніколи не припиняйте кодувати. Розумна маршрутизація до **БЕЗКОШТОВНИХ та недорогих AI моделей** з автоматичним резервуванням.
-_Ваш універсальний API проксі — одна кінцева точка, 100+ провайдерів, нульовий простій. Тепер з **MCP Server (25 інструментів)**, **A2A Protocol**, **Memory/Skills Systems** та **Electron Desktop App**._
+_Ваш універсальний API проксі — одна кінцева точка, 100+ провайдерів, нульовий простій. Тепер з **MCP Server (34 інструменти)**, **A2A Protocol**, **Memory/Skills Systems** та **Electron Desktop App**._
**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
@@ -1449,7 +1449,8 @@ OmniRoute v3.6 побудований як операційна платформ
| 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 |
@@ -1475,7 +1476,8 @@ OmniRoute v3.6 побудований як операційна платформ
| 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..113564021a 100644
--- a/docs/i18n/vi/CHANGELOG.md
+++ b/docs/i18n/vi/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..24c986ad9b 100644
--- a/docs/i18n/vi/README.md
+++ b/docs/i18n/vi/README.md
@@ -1452,7 +1452,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 +1479,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..5d75dce988 100644
--- a/docs/i18n/zh-CN/CHANGELOG.md
+++ b/docs/i18n/zh-CN/CHANGELOG.md
@@ -8,6 +8,91 @@
---
+## [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)
+- **fix(security):** Resolve CodeQL alert 164 (ReDoS in extraction) and 163 (incomplete URL sanitization) (#163, #164)
+
+---
+
+## [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..d55fde8310 100644
--- a/docs/i18n/zh-CN/README.md
+++ b/docs/i18n/zh-CN/README.md
@@ -1452,7 +1452,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 +1479,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..480e803ab2 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,
@@ -460,22 +460,6 @@ paths:
"200":
description: Complete catalog with all providers
- /api/models/availability:
- get:
- tags: [Models]
- summary: Get model availability status
- description: Returns availability data for all configured models across providers.
- responses:
- "200":
- description: Model availability map
- post:
- tags: [Models]
- summary: Refresh model availability
- description: Triggers a re-check of model availability across all providers.
- responses:
- "200":
- description: Availability refreshed
-
# ─── Management Endpoints ──────────────────────────────────────
/api/providers:
@@ -1844,13 +1828,13 @@ paths:
/api/resilience:
get:
tags: [System]
- summary: Get resilience profiles and circuit breaker states
+ summary: Get resilience configuration
responses:
"200":
- description: Resilience configuration and current states
- put:
+ description: Request queue, connection cooldown, provider breaker, and wait settings
+ patch:
tags: [System]
- summary: Update resilience profiles
+ summary: Update resilience configuration
requestBody:
required: true
content:
@@ -1859,7 +1843,7 @@ paths:
type: object
responses:
"200":
- description: Updated resilience profiles
+ description: Updated resilience configuration
/api/resilience/reset:
post:
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/next.config.mjs b/next.config.mjs
index db1017ae84..375b966e96 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -28,6 +28,7 @@ const nextConfig = {
"./playwright-report/**/*",
"./app.__qa_backup/**/*",
"./tests/**/*",
+ "./logs/**/*",
],
},
serverExternalPackages: [
diff --git a/open-sse/config/providerRegistry.ts b/open-sse/config/providerRegistry.ts
index b48b3dc9d9..ede6e0cdff 100644
--- a/open-sse/config/providerRegistry.ts
+++ b/open-sse/config/providerRegistry.ts
@@ -1400,6 +1400,25 @@ export const REGISTRY: Record
- {incidentMode - ? getI18nOrFallback( - t, - "highCircuitBreakerRate", - "High circuit breaker trip rate detected." - ) - : getI18nOrFallback( - t, - "allProvidersHealthy", - "Providers are reporting healthy routing conditions." - )} + {getI18nOrFallback( + t, + "configOnlyHint", + "This panel shows routing inputs only. Live breaker state is available on the Health page." + )}
Exclusions
-{exclusions.length}
++ Candidate Pool +
++ {normalizedConfig.candidatePool.length || activeProviders.length} +
- {getI18nOrFallback(t, "excludedProviders", "Excluded Providers")} + {getI18nOrFallback(t, "routingInputs", "Routing Inputs")}
{getI18nOrFallback( t, - "excludedProvidersHint", - "Providers with an OPEN circuit breaker are temporarily excluded from routing." + "routingInputsHint", + "Mode pack and weighting stay here; breaker runtime state stays on the Health page." )}
{exclusion.provider}
-{exclusion.reason}
-Mode Pack
++ {normalizedConfig.modePack} +
++ Exploration Rate +
++ {Math.round(normalizedConfig.explorationRate * 100)}% +
+{t("allModelsNormal")}
- ) : ( -- {provider} -
-{t("allModelsOperational")}
-- {t("modelsWithIssues", { count: unavailableCount })} -
-{provider}
-{t("healthCheck")}
-{t("healthCheckDesc")}
-{t("trackMetrics")}
@@ -436,24 +448,6 @@ export default function ComboDefaultsTab() { aria-label={t("providerMaxRetriesAria", { provider })} /> {t("retries")} - - setProviderOverrides((prev) => ({ - ...prev, - [provider]: { - ...prev[provider], - timeoutMs: parseInt(e.target.value) || 120000, - }, - })) - } - className="text-xs w-24" - aria-label={t("providerTimeoutAria", { provider })} - /> - {t("ms")}{t("activeIssuesDetected")}
{t("circuitBreakers")}
-{t("providerProfilesDesc")}
- -{t("rateLimitingDesc")}
- -{t("noActiveLimiters")}
- )} -{t("noCircuitBreakers")}
- ) : ( -{t("allOperational")}
-+ This layer only controls queueing and pacing. It does not write cooldowns or open breakers. +
+ +{t("circuitBreakers")}
-{t("lockedIdentifiers")}
-+ Base cooldown covers retryable connection failures. When upstream retry hints are enabled, + explicit provider wait windows override the local base cooldown. +
+ ++ Breaker runtime state is shown only on the Health page. Connection-scoped 429 rate limits + stay in Connection Cooldown and do not trip the provider breaker. +
+ ++ This only affects the current request. It does not write connection or provider state. +
+ +Unable to load resilience settings.
+ This page only configures behavior. Live breaker state is shown on the Health page. + Combo-specific retry and round-robin slot control remain on combo settings. +
+