diff --git a/CHANGELOG.md b/CHANGELOG.md index 8addc7126f..3f6618b0b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ - **feat(api-keys):** configurable default rate limits via `DEFAULT_RATE_LIMIT_PER_DAY` env var — replaces hardcoded 1000/day fallback with Zod-validated configuration while preserving secure defaults for existing deployments. ([#2266](https://github.com/diegosouzapw/OmniRoute/pull/2266) — thanks @gleber) - **feat(authz):** `managementPolicy` accepts API keys with `manage` scope — enables headless/programmatic management (provisioning providers, setting rate limits) without a browser session. ([#2265](https://github.com/diegosouzapw/OmniRoute/pull/2265) — thanks @gleber) - **feat(termux):** Android/Termux headless support — auto-detect Android platform for headless mode (no browser open), move `wreq-js` and `tls-client-node` to `optionalDependencies` for ARM compatibility, lazy-load WS proxy with graceful 503 when unavailable, set `GYP_DEFINES` for `better-sqlite3` ARM build, extended build timeout to 600s. ([#2273](https://github.com/diegosouzapw/OmniRoute/pull/2273) — thanks @t-way666) +- **feat(deepseek-web):** full DeepSeek web API executor with Keccak PoW solver (`DeepSeekHashV1`), SSE streaming, and auto-refresh session management via `ds_session_id`. ([#2295](https://github.com/diegosouzapw/OmniRoute/pull/2295) — thanks @oyi77) +- **feat(cc-bridge):** config-driven per-provider system-block transform DSL — operators can now configure system prompt transformations per-provider via Dashboard settings UI. ([#2286](https://github.com/diegosouzapw/OmniRoute/pull/2286), closes #2260 — thanks @mrmm) +- **feat(batch):** global rate-limit header cache with 60s TTL + 24h time-based retry window — shares rate-limit throttle state across sequential batches and uses time-based retry limits for robust large-batch processing. ([#2299](https://github.com/diegosouzapw/OmniRoute/pull/2299) — thanks @hartmark) ### Changed @@ -57,7 +60,12 @@ - **fix(opencode-zen):** flag `qwen3.6-plus` and `qwen3.6-plus-free` with `targetFormat: "claude"`. The opencode-zen upstream returns Claude-format SSE bodies (`type: "message_start"`, no `choices` array) for these Qwen3.6 models even when the request hits the OpenAI-compatible `/chat/completions` endpoint, causing client-side Zod failures (`expected "choices" (array), received undefined`). Routing them through the Claude `/messages` endpoint + translator fixes the format mismatch. (#2292) - **fix(settings):** default `debugMode` to `true` on fresh installations — the Debug sidebar section (Translator, Playground, Search Tools) was hidden on new installs because `debugMode` was not in the settings defaults object, making `data?.debugMode === true` evaluate to `false`. The toggle in System & Storage appeared active but had no effect until manually set. Now all sidebar sections are visible out of the box. - **fix(providers/command-code):** send required `skills` and `stream` payload fields — Command Code upstream wrapper now includes `skills: ""` and forces `params.stream: true` to align with upstream API requirements. Validation probe defaults to `deepseek/deepseek-v4-flash`. ([#2271](https://github.com/diegosouzapw/OmniRoute/pull/2271) — thanks @ddarkr) +- **fix(sse):** strip stale `Content-Encoding`, `Content-Length`, and `Transfer-Encoding` from upstream responses — prevents JSON truncation and `ZlibError` on gzipped provider responses forwarded through the proxy. ([#2291](https://github.com/diegosouzapw/OmniRoute/pull/2291) — thanks @thepigdestroyer) +- **fix(sse):** remove dead-code flag leak in `claudeCodeToolRemapper` — eliminates a stale boolean flag that could cause incorrect tool remapping behavior on subsequent requests. ([#2290](https://github.com/diegosouzapw/OmniRoute/pull/2290) — thanks @thepigdestroyer) +- **fix:** remove implicit API key request caps — removes the default daily/weekly/monthly rate caps (1K/5K/20K) that silently applied 429s to API keys without explicit limits configured, causing unexpected throttling for operators who hadn't set custom rate policies. ([#2289](https://github.com/diegosouzapw/OmniRoute/pull/2289) — thanks @josephvoxone) +- **fix(migrations):** resolve version collision at migration slot 056 by renaming the quota thresholds migration to 057, and add batch deletion API with bulk cleanup support and batch/file management UI. ([#2294](https://github.com/diegosouzapw/OmniRoute/pull/2294) — thanks @hartmark) - **chore:** ignore `.playwright-mcp/` generated artifacts (CSP error logs, accessibility tree snapshots) — removes tracked test artifacts and adds the directory to `.gitignore`. ([#2269](https://github.com/diegosouzapw/OmniRoute/pull/2269) — thanks @backryun) +- **build(deps):** bump `actions/checkout` from 4 to 6 in CI workflows. ([#2288](https://github.com/diegosouzapw/OmniRoute/pull/2288)) - **Docs:** 270 broken internal markdown links repaired. --- @@ -290,19 +298,19 @@ Thank you to all **55+ community contributors** who made v3.8.0 possible! 🎉 | Contributor | PRs | Contributions | | :--------------------------------------------------------- | :-: | :--------------------------------------------------------------------------------- | | [@NomenAK](https://github.com/NomenAK) | 12 | #2217, #2218, #2219, #2221, #2222, #2223, #2224, #2228, #2233, #2234, #2242, #2192 | -| [@oyi77](https://github.com/oyi77) | 12 | #2010, #2014, #2041, #2052, #2061, #2074, #2091, #2094, #2096, #2131, #2135, #2240 | -| [@backryun](https://github.com/backryun) | 8 | #1992, #2033, #2088, #2123, #2138, #2141, #2150, #2177 | +| [@oyi77](https://github.com/oyi77) | 14 | #2010, #2014, #2041, #2052, #2061, #2074, #2091, #2094, #2096, #2131, #2135, #2240, #2283, #2295 | +| [@backryun](https://github.com/backryun) | 9 | #1992, #2033, #2088, #2123, #2138, #2141, #2150, #2177, #2279 | | [@Brkic-Nikola](https://github.com/Brkic-Nikola) | 6 | #2165, #2189, #2190, #2191, #2192, #2197 | | [@Gioxaa](https://github.com/Gioxaa) | 5 | #2105, #2149, #2153, #2154, #2159 | | [@dhaern](https://github.com/dhaern) | 4 | #2028, #2039, #2087, #2090 | | [@andrewmunsell](https://github.com/andrewmunsell) | 3 | #2169, #2176, #2238 | -| [@ddarkr](https://github.com/ddarkr) | 3 | #2047, #2199, #2243 | +| [@ddarkr](https://github.com/ddarkr) | 4 | #2047, #2199, #2243, #2271 | | [@nickwizard](https://github.com/nickwizard) | 3 | #1991, #2196, #2227 | | [@herjarsa](https://github.com/herjarsa) | 3 | #2030, #2136, #2152 | | [@rafacpti23](https://github.com/rafacpti23) | 3 | #2086, #2146, #2201 | | [@Tentoxa](https://github.com/Tentoxa) | 2 | #2011, #2053 | | [@wauputr4](https://github.com/wauputr4) | 2 | #2009, #2046 | -| [@hartmark](https://github.com/hartmark) | 2 | #2045, #2137 | +| [@hartmark](https://github.com/hartmark) | 4 | #2045, #2137, #2294, #2299 | | [@payne0420](https://github.com/payne0420) | 2 | #2082, #2128 | | [@bypanghu](https://github.com/bypanghu) | 2 | #2027, #2156 | | [@eleata](https://github.com/eleata) | 2 | #2116, #2133 | @@ -340,6 +348,9 @@ Thank you to all **55+ community contributors** who made v3.8.0 possible! 🎉 | [@InkshadeWoods](https://github.com/InkshadeWoods) | 1 | #2202 | | [@kang-heewon](https://github.com/kang-heewon) | 1 | #2231 | | [@one-vs](https://github.com/one-vs) | 1 | #2236 | +| [@thepigdestroyer](https://github.com/thepigdestroyer) | 2 | #2290, #2291 | +| [@josephvoxone](https://github.com/josephvoxone) | 1 | #2289 | +| [@mrmm](https://github.com/mrmm) | 1 | #2286 | ## [3.7.9] — 2026-05-03