v3.8.52
cheaper-inference/OmniRoutev3.8.52Oct 19, 2026by diegosouzapw
Upgrading?
AI Summary
This massive release encompasses 1,442 documented changes, including 135 new features and 1,112 bug fixes, driven by 1,386 commits from 306 external contributors. The update introduces new providers like WorkBuddy and Claude Opus 5.5, along with significant dashboard and resilience improvements.
Key Highlights
- Massive scale: Over 1,400 changes and 1,300 commits from a large community of 306 external contributors.
- New Providers: Added support for WorkBuddy (Tencent), CodeBuddy International, Demon Route, and others.
- Model Updates: Added Claude Opus 5.5 and GPT-6.1 Sol to the catalogs.
- Dashboard & Management: New Cooldown Manager, per-connection test messages, and full-page API key editors.
- Performance & Reliability: 1,112 fixes, SSE coalescing, reasoning replay controls, and LLMLingua sidecar support.
New Features
- Added WorkBuddy (Tencent) as a first-class provider with device-flow OAuth.
- Added Claude Opus 5.5 with 1M context and five effort tiers.
- New Cooldown Manager page in the dashboard for managing connection states.
- LLMLingua embedded-service supervisor for prompt compression.
- Per-key service-tier overrides for OpenAI OAuth requests.
- Deepgram transcription supports opt-in speaker diarization.
- MiniMax Hailuo text-to-video now works through a native transport.
- GitHub Copilot 'auto' model resolution before routing.
Full Release Notes
# OmniRoute v3.8.52
**1,442 documented changes** โ 135 features, 1,112 fixes and 195 maintenance entries from 1,386 commits in the cycle, with **306 external contributors**. Thank you all.
๐ **Complete release notes** (every entry, full description and credit): attached below as `CHANGELOG-v3.8.52.md`, and in [`CHANGELOG.md` โ `[3.8.52]`](https://github.com/diegosouzapw/OmniRoute/blob/v3.8.52/CHANGELOG.md).
โ ๏ธ Known at release time: the i18n mirrors of `docs/reference/ENVIRONMENT.md`, `docs/architecture/RESILIENCE_GUIDE.md` and `docs/security/GUARDRAILS.md` (and 11 more sources) lag the English text; the re-translation wave lands in the next cycle (#15306).
### ๐ Release by the numbers
| | |
| --- | ---: |
| ๐ฅ People who contributed | **318** |
| ๐ Commits in the cycle | **1,386** |
| ๐ Pull requests referenced | **1,369** |
| ๐ Changelog entries | **1,442** |
| ๐ Contributors credited in entries | **317** |
| ๐ค Automated dependency commits | 17 |
**Entries by type**
| Type | Count |
| --- | ---: |
| ๐ Fixes | 1091 |
| โจ Features | 133 |
| ๐ Docs | 55 |
| ๐งช Tests | 51 |
| ๐งน Chore | 45 |
| โ๏ธ CI | 30 |
| โก Performance | 21 |
| โป๏ธ Refactor | 11 |
| ๐๏ธ Build | 3 |
| ๐ Security | 1 |
| ๐ฆ Dependencies | 1 |
### ๐ Top 25 contributors this cycle
_By commits in `2f42a9ac19..0a1265ea81`, author identities consolidated via `.mailmap` and the merged PR's GitHub login. Bots excluded._
| # | Contributor | Commits |
| ---: | --- | ---: |
| ๐ฅ | diegosouzapw | 592 |
| ๐ฅ | Dizzle (@maxmad64bis) | 134 |
| ๐ฅ | Paco Cartones (@pacocartones) | 62 |
| 4 | Bob.Hou (@HouMinXi) | 49 |
| 5 | WebPerson (@jonlwheat2-gif) | 39 |
| 6 | Lance Woodson (@woodsonl) | 38 |
| 7 | Fabio Junior Gruchovski (@fabioKoruja00) | 19 |
| 8 | Innokentiy Solntsev (@insoln) | 19 |
| 9 | Caio Figueiroa (@shipsfromrio) | 18 |
| 10 | ๅฐๅฆๅฟ โจ (@xiaoyaner0201) | 18 |
| 11 | lorenzozane (@lorenzozanee) | 16 |
| 12 | Praveen K Palaniswamy (@yourspraveen) | 15 |
| 13 | Junior-HJ | 14 |
| 14 | skygunner | 14 |
| 15 | QuangBlue | 12 |
| 16 | Fouad Salkini (@fouadSalkini) | 11 |
| 17 | Jan Leon (@JxnLexn) | 11 |
| 18 | opensource-elearning | 10 |
| 19 | Tiago Rodrigues da Rosa (@tiagolabsit) | 7 |
| 20 | Aldo (@aldoeliacim) | 6 |
| 21 | Ronaldo Davi (@alltomatos) | 6 |
| 22 | Dmitry Galenko (@D4rk4) | 6 |
| 23 | Kizuno18 | 6 |
| 24 | Jacob Stoner (@jacobsparts) | 5 |
| 25 | Stanislav (@LazyGatto) | 5 |
### โจ New Features
- **feat(providers):** add the mainland BigModel.cn (Zhipu) chat-completions provider and correct Z.AI platform links (#12343) โ thanks @jackjinke
- **feat(runtime):** new `REASONING_REPLAY_ENABLED` feature flag (Settings โ Feature flags, on by default) to stop Reasoning Replay from caching and re-injecting real reasoning text across turns; upstreams that require the reasoning field on replay turns still receive the internal placeholder when it is off (#12486 โ thanks @jacobsparts).
- **feat(providers):** add NoTrack (`notrack.ai`) as a free cookie-auth web provider โ catalog id `notrack-web` (alias `ntw`), `/api/dispatch` SSE, session cookies `uid`/`si_usr_id`/`si_ses_id`. (#12534) โ thanks @jeanbispo
- **feat(services):** Added an LLMLingua embedded-service supervisor + HTTP sidecar wrapping the real `@atjsh/llmlingua-2` prompt-compression package (ONNX TinyBERT model, downloaded from Hugging Face on first use). The compression engine dispatches `/compress` calls to the sidecar over HTTP, falling back to the existing in-process worker-thread backend when the sidecar is down. (#12967) โ thanks @rqzbeh
- **feat(providers):** Hugging Face connections support an optional Bill-To account sent as the `X-HF-Bill-To` header for cost attribution (#13016) โ thanks @Abhijeet1520
- **feat(auto-combo):** new `nadir` auto-router strategy (`config.routerStrategy: "nadir"`) asks [Nadir](https://getnadir.com)'s decision API which model in the candidate pool the prompt needs and routes to it, leaving the connection choice to `rules`; opt-in, fail-open with a 30 s cooldown after failures, only the last user turn and the model ids leave the box (#13051) โ thanks @doramirdor
- **feat(codex):** Add explicit per-account paid-credit opt-in with an Extra credits On/Off button in the provider account list. Accounts with available OpenAI credits can continue after their subscription cutoff; credit availability is shown separately, while Spark limits and upstream cooldowns remain effective (#13337) โ thanks @feci
- **feat(api-keys):** Allow per-key service-tier overrides for OpenAI OAuth requests, preserving inherited defaults and enforcing explicit tiers across combos, retries and Responses transports. (#13554) โ thanks @JxnLexn
- **feat(sse):** opt-in per-model concurrency caps per connection โ configure exact `modelConcurrency` ceilings inside `rateLimitOverrides` (dashboard editor or `PATCH /api/providers/[id]`), enforced as an atomic fourth gate alongside the global/provider/account semaphores with local queueing; unconfigured connections behave exactly as before. Also fixes `rateLimitOverrides.executionMaxWaitMs`: the schema accepted it but the DB allowlist rejected it, so saving it failed; a dashboard save now also preserves an API-set value (#13700) โ thanks @Notaloop763
- **feat(sse):** a request no longer dies when the upstream rejects thinking by naming the model instead of the offending field. OmniRoute now drops whichever reasoning field the body actually carries (`reasoning_effort`, `reasoning`, `thinking`, `think`) and retries once. Ollama rejects this way for Instruct-only models such as Qwen3-Coder, where the 400 reads `"Qwen3-Coder:latest" does not support thinking`. Neither existing detector could see anything to strip there, so the error went straight back to the client and every Claude Code request carrying a thinking block failed against a self-hosted non-thinking model. (#13868) โ thanks @cryptiklemur
- **feat(providers):** add Twinmind (`twinmind` / `tm`) unofficial web chat provider โ Firebase refresh, grouped model discovery, SSE `text_delta` โ OpenAI chunks, emulated tool calling for OpenCode/Claude Code (#14131) โ thanks @artickc
- **feat(resilience):** skip CLIProxy-backed combo targets before dispatch using management account health, ignoring stale per-model quota rejections (#14206) (#14301) โ thanks @sprintberlin
- **feat(providers):** WorkBuddy (`www.workbuddy.ai`, Tencent) is now a first-class provider with its own device-flow OAuth module, catalog entry and token refresh. It is a separate product from CodeBuddy CN (different host, account system and catalog, and a credential from one is not valid on the other), so it deliberately does not alias the CodeBuddy OAuth module โ aliasing would point the state request at `copilot.tencent.com` and mint the wrong credential. The gateway is OpenAI-compatible but accepts only a single-turn request: it rejects the replayed history an agent client sends from turn two on, and reports each violation as a generic code that reads like a transport fault (`11148 tool_call_sequence_broken`, `11155 reasoning content from the previous turn must be passed back`, `11128 Illegal API invocation from an unapproved channel`, `11101` non-stream rejected). The repair therefore lands in core as two opt-in `RegistryEntry` flags โ `strictChatHistory` and `bodyStringReplacements` โ honoured by the existing `transformRequest` hook and inert for every provider that does not declare them, so no sidecar proxy is required. The catalog is left `models: []` with `passthroughModels: true` and discovered from the authenticated `GET /v3/config` the official CLI itself uses, because WorkBuddy serves no OpenAI-shaped `/models` endpoint (`/v1/models` and `/v2/models` both 404). That payload is an authenticated `GET /v3/config`, which returns 22 chat models (observed live via the desktop app's own log); that list replaces the membership of the 26-entry catalogue the CLI ships in `cli/product.json` rather than extending it, so the image and video entries that exist only in the built-in file are kept out of a chat roster by their capability tags. (#14212) โ thanks @zeeshanhaque21
- **feat(rerank):** `/v1/rerank` expands named combos with ordered fallback from a local rerank node to hosted providers (#14286) โ thanks @seanford
- **feat(providers):** Added onomeo as an OpenAI-compatible API-key gateway (`https://onomeo.com/v1`), with live model discovery via `passthroughModels`. The free note states the current call-metered free tier (about 30 free models at 30 calls per 5 hours per account and 12 requests/min per key, inside a shared site-wide pool), that large models are paid from a USD balance with a $0.50/day beta cap, and the optional top-up from $5, and the hint says models are served by third-party upstreams and that onomeo is in public beta (#14297) โ thanks @Owaid0723666
- Share CLI capabilities, aliases, setup recipes and model flags across Node and server consumers, including 5dive; add persistent Gemini setup, private config writes, restricted child environments, signal-aware cleanup and registered native ACP lifecycle. (#14387)
- **feat(sse):** Jina token balance in Provider Limits โ `jina-search`, `jina`, `jina-ai` and `jina-reader` connections read the wallet `total_balance` from `GET https://dash.jina.ai/api/v1/api_key/fe_user` (60 s cache, fail-open) so rotation can skip exhausted keys (#14449) โ thanks @HouMinXi
- **feat(cli):** Add opt-in `omniroute models test-add` for local and remote contexts, with management-authenticated generation, streamed synthetic tool-call and continuation checks pinned to the selected connection. Register the custom model only after verified dispatch, unchanged configuration and transactional readback; return an informational validation receipt without executing real tools. (#14506)
- **feat(providers):** add Claude Opus 5.5 (`claude-opus-5-5`) to the Anthropic API, Claude OAuth, Bedrock and Vertex catalogs โ native 1M context, 128K output, five effort tiers (default `medium`), $4/$20 pricing, Fast Mode, Opus 5 fallback; disabled thinking, manual budgets and forced `tool_choice` are normalized before dispatch since Opus 5.5 rejects them. The `cc/` Opus CLI default stays `claude-opus-5`, because `claude`/`anthropic` connections synced before the launch reject Opus 5.5 until their model list is refreshed (Refs #14612) (#14546). โ thanks @ggiak / @HouMinXi / @PixmaNts
- **feat(plugin):** filter the published catalog by capability โ `freeOnly`, `toolsOnly` (on by default, hides models that cannot call tools; set `toolsOnly: false` for the full catalog), `visionOnly` (#14554) โ thanks @maxmad64bis
- **feat(usage):** Per-key weekly USD limits can use a calendar week instead of the earliest upstream account reset. `OMNIROUTE_API_KEY_WEEKLY_WINDOW=calendar` gives every key the local Monday 00:00 week in `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` (default: the process timezone); unset keeps the current behavior (closes #14601) (#14603) โ thanks @xiaoyaner0201
- **feat(api-keys):** new `USAGE_LIMIT_IGNORE_UNPRICED` feature flag (Settings โ Feature flags, off by default). When on, per-key USD usage quotas count models that have no price as $0 instead of failing closed (#12341), so keys that use subscription or free models without pricing rows are no longer reported and blocked as over quota. Priced spend is still enforced, and `dailyHasUnpricedUsage` / `weeklyHasUnpricedUsage` still report the unpriced usage (#14799). โ thanks @fouadSalkini
- **feat(providers):** add Apmix (apmix.ai) as an OpenAI-compatible, subscription-based provider โ one monthly plan with a weighted-token allowance, chat-completions + Responses API at `https://api.apmix.ai/v1`, live `/v1/models` discovery keyed to the plan's model union (seed catalog as offline fallback), and a usage fetcher (`GET /v1/usage`) surfacing the monthly allowance, self-imposed daily/weekly caps and top-up balance in Dashboard โบ Limits with quota-aware preflight (#14821). โ thanks @aref-alapour
- **feat(providers):** add BeatAPI as an OpenAI-compatible gateway (#14875) โ thanks @erickkkyt
- **feat(api):** add or remove models and combos on an API key atomically (#14880). โ thanks @fouadSalkini
- **feat(dashboard):** full-page API key access editor with tabs, replacing the permissions modal (#14885). โ thanks @fouadSalkini
- **feat(dashboard):** models and combos catalog with filters and browser-side health tests (#14887). โ thanks @fouadSalkini
- **feat(codex):** opt-in per-connection `codexPromptCacheKeyScope: "thread"` aligns the outbound `prompt_cache_key` with the converged thread id under session-mode fingerprint convergence, so it matches `thread_id` and stays scoped to the account instead of following a conversation across accounts on failover; the default (`client`) keeps forwarding the client's key unchanged (#14907) โ thanks @gabrielalberton
- **feat(cli):** `setup-claude` and the Claude profile auto-sync skip models of local-CLI providers (`zcode`, `auggie`, `devin-cli-agentic`, `codex-app-server`) whose binary is not detected on the host, print which providers were skipped and why, and take `--include-local` / `--all` to write them anyway (#14952) โ thanks @shipsfromrio
- **feat(oauth):** Claude Code connections can be added from a `claude setup-token` token. Dashboard โ Claude Code โ **Add Connection** now opens on a **Setup Token** tab (Browser Login is one click away and no longer starts on open); `POST /api/oauth/claude/import-token` verifies the token with one `max_tokens: 1` request before storing a refresh-less OAuth connection named "Setup token", and re-pasting the same token updates that connection. The connect dialog also resets to its first step with an empty field on every open (#15093) โ thanks @dpozimski
- **feat(providers):** Added Y-API as an OpenAI-compatible API-key gateway (`https://api.y-api.bestvirtualgoods.com/v1`), with live model discovery via `passthroughModels` โ its `GET /v1/models` requires a key, so no model list is seeded. Listed in `AGGREGATOR_PROVIDER_IDS` because its own catalog states that every model is served by the gateway from third-party upstream vendors rather than trained by it, and its free badge quotes only the models the publisher itself prices at 0 credit. (#15131) โ thanks @jiweiyeah
- **feat(dashboard):** per-account "Test message" action on each provider connection โ a saved test model per connection (Edit connection) and a global test prompt in Settings โ AI, backed by `GET/PUT/POST /api/providers/{id}/test-message`; the quota card footer actions also wrap responsively (#15138 โ thanks @JxnLexn)
- **feat(proxy-subscription):** generate the local proxy-core config beside the adopted file, opt-in per subscription (#15141) (#15564) โ thanks @maxmad64bis
- **feat(proxy-subscription):** verify the generated core configuration with the native binary before replacing the adopted file (#15142) (#15564) โ thanks @maxmad64bis
- **feat(providers):** Add GPT-6.1 Sol to the OpenAI and Codex catalogs with provider-specific limits, Standard pricing, Codex reasoning/Fast wiring, and a synchronized Codex 0.159.2 client identity (#15171) โ thanks @xiaoyaner0201
- **feat(codex):** add GPT-6.1 Sol support across execution and pricing pipelines โ register `gpt-6.1-sol` and reasoning effort variants (`ultra`, `max`, `xhigh`, `high`, `medium`, `low`), bump Codex client version header to `0.159.2` to resolve upstream ChatGPT account tier-gating, surface upstream `detail` error diagnostics, retain Responses Lite parallel tool calls, and wire 2.5x Fast mode pricing. (#15192) โ thanks @initguru
- **feat(providers):** the Xiaomi MiMo Token Plan (`mimotp`) catalog now lists `mimo-v2.6-pro` and `mimo-v2.6-flash` (1M context, 128K output), ahead of Xiaomi retiring `mimo-v2.5-pro` / `mimo-v2.5` on 2026-10-21 (#15219) โ thanks @kang-heewon
- **feat(proxy-subscription):** reload the local proxy core after a verified config replacement, paced at most once per 60 s per subscription (#15238) (#15564) โ thanks @maxmad64bis
- **feat(plugin):** filter the published catalog by provider (`providersAllow`, empty means full catalog) with an explicit empty-result guard (#15239) โ thanks @maxmad64bis
- **feat(admin):** Expose selector member set-aside state (motive, window, repeat count) in pool visibility (#15240). โ thanks @maxmad64bis
- **feat(proxy-subscription):** prune nodes the core check rejects, then retry verification before keeping the previous file (#15295) (#15564) โ thanks @maxmad64bis
- **feat(proxies):** accept operator-provided dated egress observations for pool members โ an authenticated push route stores dated observed addresses per member behind a new opt-in flag, merged with the journal read for display and pool order with the freshest observation winning (#15314) โ thanks @maxmad64bis
- **feat(proxy):** Add `OMNIROUTE_UPSTREAM_HTTP2_ENABLED=false` to force HTTP/1.1 on Undici direct, HTTP(S)/SOCKS proxy, relay, and retry dispatchers without disabling certificate verification. HTTP/2 remains enabled by default (closes #15313) (#15318). โ thanks @Kizuno18
- **feat(proxies):** Log refusal-store writes and show transport proof in pool visibility (#15374) โ thanks @maxmad64bis
- **perf(db):** Serve repeated synced vision verdicts from a version-gated memo instead of re-reading the catalog (#15378) โ thanks @maxmad64bis
- **feat(dashboard):** flag a provider whose exits fail upstream together so the pool screen reads it as an upstream problem, and show upstream 4xx and 5xx as separate counts (#15386) โ thanks @maxmad64bis
- **feat(combos):** the `/dashboard/combos` auto-routing catalog now loads the live built-in `auto/*` combos from `GET /api/combos/auto` (kind badge and candidate count per card) with Control Center, Test and Duplicate actions; `GET /api/combos/auto?id=` materializes one auto combo and `POST /api/combos/test` can test an `auto/*` combo (up to 8 highest-weight candidates). `auto/*` combos with no live candidates are no longer listed in `/api/combos/auto` or advertised in `/v1/models` (#15397 โ thanks @afonsoft).
- **feat(sse):** Agentic pipeline combos can configure ordered executor backups for failed responses and transport errors while preserving successful streams (#15419) โ thanks @potatosips.
- **feat(memory):** opt-in claude-mem worker backend (pinned to `127.0.0.1`), so `/api/memory` and A2A memory search read and write the same store the claude-mem Claude Code hooks fill; `initMemoryBackends()` now registers opt-in backends before `configure()` instead of failing silently on a non-SQLite primary/fallback (#15425) โ thanks @engomarzaied-prog
- **feat(providers):** ClinePass connections now show their 5-hour, weekly and monthly usage limits on the quota dashboard, read from Cline's `/api/v1/users/me/plan/usage-limits`, and reset-aware combo strategies can use those windows (closes #9740) (#15427) โ thanks @PixmaNts
- **feat(i18n):** the translation backend forwards the optional reasoning control when set (#15462) โ thanks @maxmad64bis
- **feat(dashboard):** token refresh failures can pause per account instead of blocking the whole provider (#15469) โ thanks @maxmad64bis (with thanks to @xiaoyaner0201 for the scope proposal in #15444)
- **feat(plugin):** trim the default view with per-provider fresh and showcase caps, tunable freshness window and new options (#15484) โ thanks @maxmad64bis
- **feat(proxy-subscription):** warn with a translated count when generation skips entries instead of reporting not generated or staying silent (#15564) โ thanks @maxmad64bis
- **feat(providers):** Perplexity API (Sonar, Agent) and Perplexity Search requests now send an `X-Pplx-Integration: omniroute` attribution header (#15573) โ thanks @qirh
- **feat(dashboard):** new Monitoring โ Cooldown Manager page lists every connection that is out of routing (connection cooldowns, model lockouts, terminal states) and clears cooldowns per connection, for a selection, or for a whole provider, instead of opening each provider page. It also edits the stream-stall cooldown switch and the OAuth / API-key base cooldown and backoff steps. Backed by the new management-only `GET`/`POST /api/resilience/cooldowns`; terminal states (banned, expired, credits exhausted) are never cleared there. (#15630) โ thanks @fouadSalkini
- **ZenMux image generation** โ route `zenmux/` and `zm/` models through the OpenAI Images API or Vertex AI `:predict`, normalize image output, and enforce Ming Design's text-only/model-selected dimensions contract. (#15670 โ thanks @JeanRGW)
- **feat(embeddings):** llama.cpp connections accept OmniRoute's canonical multimodal embedding items โ `image`, `audio` (wav/mp3/flac) and `video` become llama-server `content` parts (`image_url` / `input_audio` / `input_video`) with inline data, one vector per item, for servers started with `--embedding --mmproj` (e.g. EmbeddingGemma 2). Remote sources go through the same SSRF-guarded fetch and 16 MiB request cap as Jina/Gemini (#15758) โ thanks @hartmark
- **feat(providers):** add the CodeBuddy International (`codebuddy.ai`) provider as `codebuddy-intl` (alias `cbai`), sharing the device-auth flow, executor, token refresh and quota fetcher with `codebuddy-cn` by realm (closes #15173) (#15799) โ thanks @Junior-HJ
- **feat(combos):** a successful model sync now flags combo steps pinned to models that are missing from the provider's synced catalog. The sync response lists them in `staleComboRefs` and an audit entry is written. Combos are never modified (#15800) โ thanks @tiagovilasboas
- **feat(combos):** opt-in `COMBO_AUTO_PRUNE_STALE_STEPS` feature flag (default off): a successful model sync removes the combo steps pinned to models missing from the provider's authoritative catalog, with one audit entry per removed step. Failed, degraded and free-only syncs never prune, and a combo is never emptied (#15925) โ thanks @tiagovilasboas
- **feat(quality):** the forgotten-sibling gate and test-impact selection now follow path-literal edges: tests that read a workflow, root config or doc as a file (`new URL(โฆ, import.meta.url)`, `resolve`/`path.join`, `readFileSync`) are mapped in a new deterministic `artifacts` section of the impact map, so changing `.github/workflows/quality.yml` flags and selects `check-workflows.test.ts` without ever forcing a full run (#16068) (#16129)
- **fix(quality):** artifact edges require an existing tracked regular file and reject symbolic links, including linked parent directories. Import specifiers are excluded by occurrence, so a separate file read of the same JSON path still reaches the sibling advisory and additive test selection; deletion and skip/todo masking protections remain unchanged. (#16129)
- **fix(quality):** scan quoted path spans without unbounded regular expressions, preserve occurrence-specific imports across whitespace, and retain parentheses inside joined path segments. Oversized or incomplete literals do not create partial artifact edges. (#16129)
- **feat(search):** opt-in provider-reported search cost โ a connection with `providerSpecificData.trustReportedCost: true` bills the `usage.search_cost_usd` its operator-configured endpoint returns (also on error responses) instead of the static `costPerQuery`, recorded once per `request_id` in `request_cost_ledger`; caller `provider_options.baseUrl` endpoints are never trusted. Per-key daily/weekly USD usage limits now include search spend (#16088) โ thanks @thotypous
- Set `ONNXRUNTIME_NODE_INSTALL=skip` explicitly for the shared dependency-install action and direct checkout install steps, include the action policy in the dependency cache identity, and document local shell usage. The legacy `.npmrc` key remains for compatibility; published-package consumer installs are outside this checkout policy. (#16246)
- **feat(video):** MiniMax Hailuo text-to-video now works through a native create โ poll โ file-retrieve transport (previously listed but rejected with `Unsupported video format`) (#16508) โ thanks @octo-patch
- **feat(providers):** GitHub Copilot `auto` model (`github/auto`): Copilot picks the model, which Copilot Free accounts require. OmniRoute resolves the pick before routing, so a Claude pick uses the native `/v1/messages` path, and usage, cost and call logs are recorded under the model that served the request (#16679) โ thanks @Primexz
- **feat(stt):** Deepgram transcription supports opt-in speaker diarization and `verbose_json` speaker segments (#16685) โ thanks @n1klaus
- **feat(sse):** opt-in coalescing of Claude `content_block_delta` events (`SSE_COALESCE_*_MS`), SSE frame batching (`SSE_FRAME_COALESCE_MS`) and an interval-based stall watchdog (`SSE_STALL_WATCHDOG=interval`), all off by default (#16722) โ thanks @WYSTAF / @wallerjenifernk530-hash
- **feat(image):** Muse Image 1.0 text-to-image and reference-image edits on the Muse Code (Meta) provider, reusing the muse-code API key or device-flow credential (#16871) โ thanks @dasepmoch
- **feat(settings):** selective transfer of provider accounts (and the custom provider nodes they use) between installations โ passphrase-sealed file, import preview and per-item add/skip/replace that never deletes anything (#16877) โ thanks @minthanthtoo
- **feat(providers):** Baseten opt-in thinking via `chat_template_args.enable_thinking`, per-model reasoning effort clamp and refreshed model seed (#16879) โ thanks @elidrissi-amine
- **feat(providers):** Qwen Cloud Token Plan text-to-speech (`qct/qwen-audio-3.0-tts-plus`, DashScope SpeechSynthesizer, region-aware) and per-model reasoning-effort enums so out-of-enum efforts are mapped on the first request (#16886) โ thanks @alysson-souza
- **feat(providers):** add DaoXE OpenAI-compatible gateway (`daoxe`) with live `/v1/models` discovery and passthrough models (#16889) โ thanks @seven7763
- **feat(guardrails):** per-type PII selection, custom masking patterns (ReDoS-gated) and detection counters for the opt-in PII masking (#16902) โ thanks @lsilveirab39
- **feat(updater):** Docker-aware dashboard update โ image containers show the host `docker compose pull` + recreate command, and `DOCKER_UPDATE_TRIGGER_FILE` enables one-click updates through a host-watched request file inside `DATA_DIR` (no Docker socket) (#16907) โ thanks @semihisikman
- **feat(cli-tools):** applying Codex settings can also write an OmniRoute model catalog (`model_catalog_json`, opt-in checkbox, off by default) so Codex's `/model` picker lists routable provider-prefixed models; fails open with a warning when Codex can't be read (#16910) โ thanks @kalfian
- **feat(providers):** add NaN.Builders API-key provider (`nan`) โ chat with live model discovery, embeddings, STT/TTS (Kokoro default voice), image generation, rerank and per-model token quota usage (#16912) โ thanks @tasarren
- **feat(models):** list Gemini 4 Argon on the Gemini API (API-key) provider and give it a default pricing row (intro paid tier $2 / $10 / $0.10 cached per 1M), so API-key usage is no longer billed at $0 (#16913) โ thanks @WYSTAF
- **feat(usage):** show the Codex Luna Reserve quota rows as display-only usage rows that never affect account selection (#16915) โ thanks @raflyazf
- **feat(compression):** opt-in `antislop-ui` and `antislop-copy` output styles that steer generated UI and copy away from generic AI defaults (purpose-tested visuals; no em dash, generic CTAs or invented facts; WCAG AA contrast, keyboard and mobile rules) (#16916) โ thanks @royhanmh
- **feat(cli):** `omniroute setup-zed` adds OmniRoute as an OpenAI-compatible provider in Zed (key stays in `OMNIROUTE_API_KEY`), plus a Zed card in the CLI catalog (#16919) โ thanks @YoannDev90
- **feat(dashboard):** per-connection decode speed (avg/last tok/s, TTFT, sample count per model) on quota cards (#16920) โ thanks @raflyazf
- **feat(api-keys):** Pin an API key to one model or combo with the new `forcedModel` permission: every chat request made with the key is routed there even when the client hard-codes or omits the model, while the key's model, combo and budget limits still apply. (#16921) โ thanks @sandypratama2030-gif
- **feat(providers):** Display each connection's last successful model-sync timestamp beside Auto-Sync and trigger an immediate per-connection model refresh when enabling it, with safe cache invalidation and user-visible sync-failure feedback (refs #16940) (#16947) โ thanks @fabioKoruja00
- **feat(api):** opt-in `capability` / `min_context` / `kind` / `q` discovery filters on `GET /v1/models` (output unchanged without them) and a new `POST /v1/models/query` deterministic model shortlist (#16945) โ thanks @vianhanif
- **feat(search):** forward allow-listed, Zod-validated Exa and Tavily request fields via `provider_options.exa` / `provider_options.tavily`, map `time_range` to both, add the Tavily `finance` topic and keep their extra result fields in `provider_raw` (#16950) โ thanks @asuan-dev
- **feat(providers):** "Ping now" button on Codex OAuth connection rows sends one small request right away so the account's quota window starts, without changing Auto-Ping. It skips when the session or weekly quota is exhausted, honours exclusive leases and the provider circuit breaker, and allows one ping per account at a time (#16954) โ thanks @Chumr26
- **feat(search):** Parallel web search and fetch provider (`parallel-search`, alias `parallel`): one API key serves `/v1/search` (web only, mode-based pricing for turbo/fast/basic/advanced) and `/v1/web/fetch` (Markdown only, capped at 100,000 characters; a page Parallel cannot extract returns 422) (#16960) โ thanks @tommyyzhao
- **feat(providers):** optional custom ID suffix for OpenAI-/Anthropic-compatible provider nodes (`openai-compatible-<apiType>-<suffix>` / `anthropic-compatible-<suffix>`), with 409 on duplicate ids instead of a 500 (#16961) โ thanks @rafi-zadanly
- **feat(dashboard):** Copyable connection-ID chip on every provider connection row, plus docs for per-request account pinning with the `x-omniroute-connection` header (strict pin, single-model requests, Claude Code `ANTHROPIC_CUSTOM_HEADERS` example) (#16963) โ thanks @nhan14t1
- **feat(settings):** scheduled wakeups for Codex OAuth accounts: a new section in the Codex Quota Auto-Ping card pings chosen accounts daily at a set time (timezone + weekdays) or every N minutes, so each account's quota window starts when you want. It skips when the circuit breaker is open, the account is cooling down or under an exclusive lease, or its quota is exhausted (#16965) โ thanks @Chumr26
- **feat(providers):** Add Demon Route as an OpenAI-compatible API-key gateway for open-weight models, with encrypted normal connection storage, live key-scoped model import / Auto-Sync, curated offline seeds, exact vendor/model ID preservation, Chat Completions and streaming, a 120-second minimum upstream wait, provider metadata and generated reference, a setup/troubleshooting guide, and provider-specific regression tests. Free-lane models require a confirmed deposit and are not advertised as an unconditional free plan (refs #16979) (#17001) โ thanks @fabioKoruja00
- **feat(i18n):** translate up to N locales per request with `--locales-per-request` in `sync-ui-keys` ([#PRNUM](https://github.com/diegosouzapw/OmniRoute/pull/PRNUM)) (#15562) โ thanks @maxmad64bis
- **feat(dashboard):** add Compact and Exact token display mode toggle to Usage Analytics toolbar (#13019) โ thanks @ZaimMarzuki
- **feat(antigravity):** dynamically synchronize live-discovered models outside the static catalog into quota normalization, and introduce family quota pools (Gemini Models, Claude & GPT Models) across 5-hour and weekly windows with dashboard group tracking (#13739) โ thanks @TheDemonTuan
- **feat(providers):** add ChatPlayground (`chatplayground`, alias `cpl`) web provider routing models across Azure, LMSYS, and Perplexity endpoints with dynamic model discovery from `https://app.chatplayground.ai/api/models` (#12690) โ thanks @james-martinez
- **feat(providers):** auto-minting Clerk session JWT authentication via `https://clerk.chatplayground.ai/v1/client/sessions/{sid}/tokens` using the `__client` cookie and `sid` (derived from the `__session` JWT cookie), with in-memory caching and expiry skew (#12690) โ thanks @james-martinez
- **feat(providers):** support multi-account rotation and failover natively via OmniRoute's Combo Router and account fallback engine (#12690) โ thanks @james-martinez
- **feat(providers):** OpenAI-compatible streaming translation for ChatPlayground via `TransformStream`, stripping internal `CHAT_ID:[a-zA-Z0-9_-]+` tokens (#12690) โ thanks @james-martinez
- **feat(usage):** add ChatPlayground quota & limits monitoring via `GET /api/user` tracking daily query allowances (including 300 credits/day for Lifetime subscription accounts) and midnight UTC resets (#12690) โ thanks @james-martinez
- **feat(dashboard): add clamp/full description display modes to the feature-flags cards.** A persisted toggle in the Feature Flags grid toolbar (`localStorage`, hydration-safe) switches every card's description between `clamp` (2-line clamp + full text on hover, via a styled tooltip) and `full` (always expanded). (#12740) โ thanks @jonlwheat2-gif
- **feat(network):** new `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` lets operators list hostnames (typically a Docker/Compose service name such as `reranker`) that provider-node routing treats as local: eligible for `/v1/rerank`, `/v1/audio/*` and the local health check without the `*_REMOTE_PROVIDER_NODES` flags, and called directly instead of through `HTTP(S)_PROXY` or a pinned proxy โ so a sidecar no longer needs a hard-coded container IP. Empty by default; IP literals and cloud-metadata names are rejected with a warning (#14635) (#14640) โ thanks @xiaoyaner0201
- **feat(providers):** DeepSeek-web tool-call parsing now recognizes native DSML `invoke`/`parameter` tokens (both the printable-ASCII and full-width tokenizer spellings) in addition to the existing `<tool>{json}</tool>` shapes, and preserves parallel tool calls and stable call IDs/indexes; custom OpenAI-compatible image/video generation providers now fail closed on a missing base URL instead of silently falling back to a built-in provider endpoint (#14103) โ thanks @arashashrafii
- feat(providers): **Added SYNTX.ai (`syntx` / `stx`) as an unofficial/experimental JWT provider. Chat reuses `chat_uuid` across OpenAI multi-turn history, PUT `/api/v1/user/settings` for a 4k `system_prompt.default`, and keeps compact generate on `tools:[]`. Media covers image, video, speech, music, transcription, and upscale. Live `/api/v1/llm/models` discovery, Limits via subscription + rolling-window quotas, JWT validation, and a 10-minute stream-readiness window.** (#14269) โ thanks @artickc
- **feat(providers):** add Token Market (`tokenmarket`) as an OpenAI-compatible multi-model API gateway with Bearer-key authentication and live model discovery from `/v1/models`. (#13191) โ thanks @FitBBC
- **feat(providers):** Added Unifically as an OpenAI-compatible API-key gateway (`https://api.unifically.com/v1`), with live model discovery via `passthroughModels`. Discovery is scoped to `/v1/models?category=llm`, because the same catalog also lists image, video and audio models that run through a separate async task API and are not chat-completion targets. (#14182) โ thanks @unifically-dev
- **feat(auth):** enable dual auth for Cline and Kilo Code providers (#11837) โ thanks @raheemuddin786
- **feat(cli):** add omniroute fcc-claude โ FCC-style launcher with fallback chain (#11908)
- **feat(providers):** add Astra to the curated GitHub Copilot catalog (#12759) โ thanks @backryun
- **feat(search):** implement /v1/alpha/search endpoint for Codex native web search (fixes #8674) (#13788) โ thanks @amsjavan
- **feat(quality):** version static gate profiles and detect script drift (#14401)
- **feat(quality):** prepare non-mutating admission ruleset proposals (#14419)
- **feat(ci):** bind workflow admission to exact candidate results (#14420)
- **feat(quality):** common original-source coverage instrumentation (#14524)
- **feat(providers):** add vendor-drift tooling for codex-chatgpt-web (#14194) (#14719) โ thanks @alexdrgpy06
- **feat(dashboard):** per-account quota display on provider page (#14803) โ thanks @aref-alapour
- **feat(claude):** add Claude Sonnet 5.5 and correct Sonnet 5 pricing (#15035) โ thanks @HouMinXi
- **feat(resilience):** expose live combo queue telemetry (#15092) โ thanks @xiaoyaner0201
- **feat(providers):** add TypeSafe System One client for Jev routing (#15278) โ thanks @miguelenes
- **feat(dashboard):** one-click show/hide toggles for sidebar sections (#15508) โ thanks @for-the-zero
- **feat(images):** support Gemini Antigravity image-to-image editing in /v1/images/edits (#15513) โ thanks @Ardem2025
- **feat(identity):** refresh pinned CLI versions from their release feeds (#15642) โ thanks @HouMinXi
- **feat(sse):** trace Anthropic thinking-signature failures without payload logging (#15685) โ thanks @insoln
- **feat(dashboard):** add Blacklist button for models with error test status (#15858) โ thanks @kveita
- **feat(resilience):** add typed provider availability states (#15918) โ thanks @atescivitci-cmd
- **feat(sse):** upload images for DeepSeek Web Flash (#16034) โ thanks @ape1121
- **feat(server):** headless mode โ OMNIROUTE_HEADLESS=1 / serve --headless (rail 3.8.53) (#16079)
- **feat(dev):** local candidate build/validate/promote loop with rollback (rail 3.8.53, #8084 local side) (#16180)
- **feat(grok-cli):** allow a validated client version override (#16397) โ thanks @TechNickAI
- **feat(api):** support Grok subscription image generation (#15423) โ thanks @QuangBlue
- **feat(api):** add Firecrawl Map endpoint with account fallback (#15703) โ thanks @lacijowo
- **feat(models):** opt-in `MODELS_DEV_EFFORT_TIERS_ENABLED` (default off) uses the reasoning effort tiers models.dev publishes when neither an override nor the registry declares any, and treats a declared empty tier list as "no tiers" in `/v1/models` (#15944) โ thanks @HouMinXi
- **feat(plugin):** opt-in `combosSource: "models"` for the v2 plugin publishes the combo rows `/v1/models` already serves and skips the `/api/combos` request; the default `"api"` source and its every-member filtering are unchanged (#16167) โ thanks @maxmad64bis
### ๐ Bug Fixes and ๐ Maintenance
**1,112 fixes** and **195 maintenance** entries โ listed in full, each with its PR and credit, in the attached `CHANGELOG-v3.8.52.md`.
### ๐ Contributors
Thanks to everyone whose work landed in v3.8.52:
| Contributor | PRs / Issues |
| --- | --- |
| [@0xH3li0](https://github.com/0xH3li0) | #16281 |
| [@123abab123789](https://github.com/123abab123789) | #16468, #16479, #16491 |
| [@47vigen](https://github.com/47vigen) | #16284 |
| [@66666-design](https://github.com/66666-design) | #16290 |
| [@70nyIT](https://github.com/70nyIT) | #15193 |
| [@AbdullahPesteli](https://github.com/AbdullahPesteli) | #16686 |
| [@Abhijeet1520](https://github.com/Abhijeet1520) | #13016 |
| [@adivekar-utexas](https://github.com/adivekar-utexas) | #15565 |
| [@afonsoft](https://github.com/afonsoft) | #15397, #16109 |
| [@aldoeliacim](https://github.com/aldoeliacim) | #15259, #15841, #16255, #17049, #17096, #17097 |
| [@AlexanderMakarov](https://github.com/AlexanderMakarov) | #16640 |
| [@alexdrgpy06](https://github.com/alexdrgpy06) | #14719 |
| [@aliepratama](https://github.com/aliepratama) | #16153 |
| [@alltomatos](https://github.com/alltomatos) | #15195, #15197, #15578, #15631, #16038, #16744 |
| [@alvinveroy](https://github.com/alvinveroy) | #13003, #13005, #15640 |
| [@alysson-souza](https://github.com/alysson-souza) | #16886 |
| [@amirho1](https://github.com/amirho1) | #16729 |
| [@amirsalaar](https://github.com/amirsalaar) | #16717, #16738, #16909 |
| [@AmirSys-dev](https://github.com/AmirSys-dev) | #16289 |
| [@amsjavan](https://github.com/amsjavan) | #13788 |
| [@AnandkumarMall](https://github.com/AnandkumarMall) | #16537 |
| [@andikadevs](https://github.com/andikadevs) | #16530 |
| [@AndreAlmeidaDC](https://github.com/AndreAlmeidaDC) | #16654, #16955, #16959 |
| [@AndresDiagoM](https://github.com/AndresDiagoM) | #16546, #16648 |
| [@Android-Login-Analysis](https://github.com/Android-Login-Analysis) | #16297 |
| [@andyvandaric](https://github.com/andyvandaric) | #16713 |
| [@anhtahaylove](https://github.com/anhtahaylove) | #14988 |
| [@anndev-69](https://github.com/anndev-69) | #16892 |
| [@ape1121](https://github.com/ape1121) | #16034, #16106 |
| [@arashashrafii](https://github.com/arashashrafii) | #14103, #15448 |
| [@ArchdukeViel](https://github.com/ArchdukeViel) | #16296 |
| [@arcslash](https://github.com/arcslash) | #16543 |
| [@Ardem2025](https://github.com/Ardem2025) | #15513 |
| [@aref-alapour](https://github.com/aref-alapour) | #14803, #14821, #14835 |
| [@artickc](https://github.com/artickc) | #14131, #14269, #16559 |
| [@asdlombardi4-lang](https://github.com/asdlombardi4-lang) | #14313 |
| [@askidmobile](https://github.com/askidmobile) | #16524, #16841 |
| [@asuan-dev](https://github.com/asuan-dev) | #16735, #16950 |
| [@atescivitci-cmd](https://github.com/atescivitci-cmd) | #12917, #15868, #15918 |
| [@avichal15](https://github.com/avichal15) | #13127 |
| [@Azzt17](https://github.com/Azzt17) | #16510 |
| [@backryun](https://github.com/backryun) | #12608, #12759 |
| [@bayhnf](https://github.com/bayhnf) | #16537 |
| [@bbmy85552](https://github.com/bbmy85552) | #15179 |
| [@BenjaminAronsson](https://github.com/BenjaminAronsson) | #15428, #15945, #15948 |
| [@bilalsafdardev](https://github.com/bilalsafdardev) | #14889 |
| [@Bl0ck154](https://github.com/Bl0ck154) | #16623 |
| [@branben](https://github.com/branben) | #15498 |
| [@brashdaniel-droid](https://github.com/brashdaniel-droid) | #16322 |
| [@brimob-sowax](https://github.com/brimob-sowax) | #16521, #16675 |
| [@c4lyp5o](https://github.com/c4lyp5o) | #15333 |
| [@caniko](https://github.com/caniko) | #15920 |
| [@castocolina](https://github.com/castocolina) | #16985, #16986, #16987, #16988 |
| [@Ch3fUlrich](https://github.com/Ch3fUlrich) | #14901, #14992 |
| [@chenli971014-sketch](https://github.com/chenli971014-sketch) | #16283 |
| [@chirag127](https://github.com/chirag127) | #12564 |
| [@christianjgilman](https://github.com/christianjgilman) | #16601 |
| [@christianmahardhika](https://github.com/christianmahardhika) | #15559 |
| [@Chumr26](https://github.com/Chumr26) | #16954, #16965 |
| [@ClaudioASantana](https://github.com/ClaudioASantana) | #13387 |
| [@claw-io](https://github.com/claw-io) | #15492 |
| [@claytontavaresdan](https://github.com/claytontavaresdan) | #16539 |
| [@cmbergamo](https://github.com/cmbergamo) | #16610 |
| [@CodeSavvy77](https://github.com/CodeSavvy77) | #15886, #16060 |
| [@coozgan](https://github.com/coozgan) | #16537, #16894 |
| [@copystring](https://github.com/copystring) | #17000 |
| [@coqfu](https://github.com/coqfu) | #17044 |
| [@cryptiklemur](https://github.com/cryptiklemur) | #13868, #15102, #15103, #16866 |
| [@D4rk4](https://github.com/D4rk4) | #15533, #15750, #15787, #16006, #16017, #16260 |
| [@dajiaohuang](https://github.com/dajiaohuang) | #15708 |
| [@DangTAnh](https://github.com/DangTAnh) | #14199 |
| [@daniadasaya](https://github.com/daniadasaya) | #16642 |
| [@DarknessKiller](https://github.com/DarknessKiller) | #16999, #17029 |
| [@dasepmoch](https://github.com/dasepmoch) | #16871 |
| [@DavyMassoneto](https://github.com/DavyMassoneto) | #16447, #16448 |
| [@Deepleakk](https://github.com/Deepleakk) | #16644 |
| [@defyma](https://github.com/defyma) | #16703 |
| [@developerjillur](https://github.com/developerjillur) | #16522 |
| [@doramirdor](https://github.com/doramirdor) | #13051, #15113 |
| [@dpozimski](https://github.com/dpozimski) | #15093 |
| [@dqphong0302](https://github.com/dqphong0302) | #16541 |
| [@dungartoriaaa](https://github.com/dungartoriaaa) | #16287, #16511 |
| [@DuqueSouza](https://github.com/DuqueSouza) | #16357 |
| [@ebouther](https://github.com/ebouther) | #15755 |
| [@edosulai](https://github.com/edosulai) | #15359, #15566, #17030 |
| [@ekinnee](https://github.com/ekinnee) | #15668, #15693 |
| [@elidrissi-amine](https://github.com/elidrissi-amine) | #16879 |
| [@elielsousa-pathbit](https://github.com/elielsousa-pathbit) | #16621 |
| [@ElioBonfim](https://github.com/ElioBonfim) | #15615, #15935 |
| [@ElissonNadson](https://github.com/ElissonNadson) | #16337 |
| [@elvis460](https://github.com/elvis460) | #16840 |
| [@engomarzaied-prog](https://github.com/engomarzaied-prog) | #15425 |
| [@erickkkyt](https://github.com/erickkkyt) | #14875 |
| [@erikyao0125](https://github.com/erikyao0125) | #16733 |
| [@ersaasyhar](https://github.com/ersaasyhar) | #16618 |
| [@espokaos-ops](https://github.com/espokaos-ops) | #13345 |
| [@exodus2512](https://github.com/exodus2512) | #15669 |
| [@f-liva](https://github.com/f-liva) | #16293 |
| [@fabioKoruja00](https://github.com/fabioKoruja00) | #16819, #16856, #16859, #16860, #16863, #16868, #16888, #16934, #16937, #16938, #16947, #16951, #16952, #16956, #17001, #17022, #17031, #17042, #17087 |
| [@fabioluissilva](https://github.com/fabioluissilva) | #15178 |
| [@farshadasadpour](https://github.com/farshadasadpour) | #16085 |
| [@fasilu](https://github.com/fasilu) | #16529 |
| [@feci](https://github.com/feci) | #13337, #15624, #16586 |
| [@FerryAr](https://github.com/FerryAr) | #16512 |
| [@fidelix](https://github.com/fidelix) | #15299, #15310 |
| [@FitBBC](https://github.com/FitBBC) | #13191 |
| [@fomathpro-arch](https://github.com/fomathpro-arch) | #15711 |
| [@for-the-zero](https://github.com/for-the-zero) | #15255, #15508, #17024 |
| [@fouadSalkini](https://github.com/fouadSalkini) | #14799, #14880, #14885, #14887, #15628, #15630, #15637, #15700, #15990, #16438, #17056 |
| [@foxy1402](https://github.com/foxy1402) | #16403 |
| [@gabrielalberton](https://github.com/gabrielalberton) | #14907 |
| [@ggdayup](https://github.com/ggdayup) | #15778 |
| [@ggiak](https://github.com/ggiak) | #14546 |
| [@GGsXPosiedon](https://github.com/GGsXPosiedon) | #16234 |
| [@GimingRao](https://github.com/GimingRao) | #16908 |
| [@gonisulaimann](https://github.com/gonisulaimann) | #14701 |
| [@grapeslush](https://github.com/grapeslush) | #15450 |
| [@gsmarcil](https://github.com/gsmarcil) | #16478, #16818 |
| [@guanbear](https://github.com/guanbear) | #12893 |
| [@hamedniroomand](https://github.com/hamedniroomand) | #16628 |
| [@hartmark](https://github.com/hartmark) | #15757, #15758, #15761, #15881 |
| [@haumanto](https://github.com/haumanto) | #16542 |
| [@HDBR](https://github.com/HDBR) | #15262, #15532, #15629, #15941 |
| [@hongkongkiwi](https://github.com/hongkongkiwi) | #15904, #15932 |
| [@HouMinXi](https://github.com/HouMinXi) | #13603, #14449, #14546, #14548, #14725, #14884, #15035, #15049, #15090, #15099, #15158, #15280, #15355, #15356, #15361, #15363, #15364, #15365, #15368, #15369, #15406, #15407, #15408, #15415, #15416, #15418, #15430, #15461, #15472, #15494, #15495, #15505, #15510, #15516, #15535, #15553, #15624, #15642, #15643, #15674, #15701, #15710, #15830, #15943, #15944, #16018, #16028, #16033, #16054, #16071, #16423, #16673, #16901 |
| [@huohua-dev](https://github.com/huohua-dev) | #16708 |
| [@hussmanne](https://github.com/hussmanne) | #15237 |
| [@huynle-dev](https://github.com/huynle-dev) | #17040 |
| [@iamzidar](https://github.com/iamzidar) | #13311 |
| [@IEatCodeDaily](https://github.com/IEatCodeDaily) | #16675 |
| [@igorgomes3](https://github.com/igorgomes3) | #16285 |
| [@imnotscare](https://github.com/imnotscare) | #16113 |
| [@initguru](https://github.com/initguru) | #15192 |
| [@innonazarene](https://github.com/innonazarene) | #16314 |
| [@insoln](https://github.com/insoln) | #15557, #15597, #15598, #15608, #15685, #15772, #15784, #15786, #15891, #15893, #15895, #15897, #15917, #16007, #16011, #16014, #16015, #16037, #16041 |
| [@jackjinke](https://github.com/jackjinke) | #12343 |
| [@jackyfan01](https://github.com/jackyfan01) | #16966 |
| [@jacobsparts](https://github.com/jacobsparts) | #12486, #16076, #16309, #16549, #16784 |
| [@james-martinez](https://github.com/james-martinez) | #12690 |
| [@jeanbispo](https://github.com/jeanbispo) | #12534 |
| [@JeanRGW](https://github.com/JeanRGW) | #15670 |
| [@jefripunza](https://github.com/jefripunza) | #16852 |
| [@JessenReinhart](https://github.com/JessenReinhart) | #16917 |
| [@jiweiyeah](https://github.com/jiweiyeah) | #15131 |
| [@JJAbrams-eng](https://github.com/JJAbrams-eng) | #13330 |
| [@jktan0504](https://github.com/jktan0504) | #16248, #16825 |
| [@jonlwheat2-gif](https://github.com/jonlwheat2-gif) | #12740, #15215, #15217, #15221, #15222, #15226, #15227, #15233, #15242, #15244, #15281, #15282, #15283, #15290, #15291, #15376, #15379, #15381, #15382, #15384, #15388, #15394, #15468, #15520, #15522, #15695, #15766, #15767, #15768, #15771, #15773, #15949, #15950, #15951, #15952, #15964, #15965, #15966, #16056 |
| [@Jordannst](https://github.com/Jordannst) | #16493, #16625 |
| [@JunDev76](https://github.com/JunDev76) | #16682 |
| [@Junior-HJ](https://github.com/Junior-HJ) | #15572, #15575, #15602, #15791, #15792, #15797, #15799, #16118, #16396, #16427, #16627, #16632, #16922, #16998, #17046 |
| [@juniorgaudencio00-code](https://github.com/juniorgaudencio00-code) | #16704 |
| [@Juriseagle](https://github.com/Juriseagle) | #15561 |
| [@JxnLexn](https://github.com/JxnLexn) | #13554, #15132, #15133, #15135, #15138, #15481, #15486, #15487, #16299, #16404, #16474 |
| [@kabeza](https://github.com/kabeza) | #16281 |
| [@kalfian](https://github.com/kalfian) | #16910 |
| [@kalpakprod](https://github.com/kalpakprod) | #15357 |
| [@kang-heewon](https://github.com/kang-heewon) | #15219 |
| [@khanghack222](https://github.com/khanghack222) | #16622 |
| [@KiaroSama](https://github.com/KiaroSama) | #15574, #16420, #16424, #16599 |
| [@Kizuno18](https://github.com/Kizuno18) | #15318, #15319, #16098, #16099, #16100, #16101 |
| [@KooshaPari](https://github.com/KooshaPari) | #4165 |
| [@krzemienski](https://github.com/krzemienski) | #16523 |
| [@KrzysiekSko](https://github.com/KrzysiekSko) | #16434 |
| [@kveita](https://github.com/kveita) | #15858 |
| [@kvyb](https://github.com/kvyb) | #16711 |
| [@lacijowo](https://github.com/lacijowo) | #15703 |
| [@Laksopan23](https://github.com/Laksopan23) | #15156 |
| [@LazyGatto](https://github.com/LazyGatto) | #15308, #15752, #15759, #16274, #16752 |
| [@lepkov](https://github.com/lepkov) | #15082 |
| [@likongkong666](https://github.com/likongkong666) | #16646 |
| [@lorenzozanee](https://github.com/lorenzozanee) | #15476, #15478, #15479, #15480, #15499, #15541, #15542, #15543, #15576, #15739, #16080, #16105, #16213, #16426, #16433, #16601 |
| [@Louayzouaoui1](https://github.com/Louayzouaoui1) | #16204, #16216, #16425 |
| [@louisphamdev](https://github.com/louisphamdev) | #16294, #16295 |
| [@lsilveirab39](https://github.com/lsilveirab39) | #16902 |
| [@LuisAlejandro](https://github.com/LuisAlejandro) | #15975, #15976, #15977, #16372, #16378 |
| [@m00nie](https://github.com/m00nie) | #16725 |
| [@M3stryX](https://github.com/M3stryX) | #16250 |
| [@mad-gooze](https://github.com/mad-gooze) | #17004 |
| [@MakdumIbrohim](https://github.com/MakdumIbrohim) | #16531 |
| [@mannnrachman](https://github.com/mannnrachman) | #16949 |
| [@matheusgcdj](https://github.com/matheusgcdj) | #14910 |
| [@maxmad64bis](https://github.com/maxmad64bis) | #14554, #14805, #15003, #15140, #15224, #15225, #15236, #15239, #15240, #15248, #15314, #15316, #15353, #15354, #15362, #15374, #15375, #15378, #15383, #15386, #15389, #15390, #15392, #15395, #15396, #15398, #15399, #15402, #15432, #15433, #15434, #15435, #15436, #15443, #15449, #15451, #15455, #15462, #15463, #15466, #15469, #15474, #15475, #15482, #15483, #15484, #15560, #15562, #15564, #15737, #15738, #15741, #15748, #15885, #15888, #15908, #15978, #15980, #15981, #16051, #16067, #16082, #16102, #16104, #16162, #16163, #16164, #16166, #16167, #16193, #16194, #16212, #16228, #16267, #16268, #16270, #16271, #16272, #16273, #16275, #16276, #16291, #16292, #16300, #16301, #16302, #16303, #16304, #16305, #16331, #16333, #16334, #16335, #16336, #16339, #16340, #16344, #16350, #16353, #16354, #16361, #16362, #16363, #16367, #16371, #16373, #16374, #16376, #16377, #16379, #16382, #16386, #16389, #16390, #16391, #16408, #16419, #16504, #16759, #16760, #16769, #16773, #16775, #16779, #16785, #16786, #16793, #16797, #16798, #16925, #16927, #16932, #17011, #17014, #17072 |
| [@mdc2122](https://github.com/mdc2122) | #15024 |
| [@mdigitalbh81](https://github.com/mdigitalbh81) | #15277 |
| [@megamen32](https://github.com/megamen32) | #16926, #17062 |
| [@miguelenes](https://github.com/miguelenes) | #15278 |
| [@MikeTuev](https://github.com/MikeTuev) | #16236 |
| [@minhtuancn](https://github.com/minhtuancn) | #16282 |
| [@minthanthtoo](https://github.com/minthanthtoo) | #16877 |
| [@mohammadraufzahed](https://github.com/mohammadraufzahed) | #15431, #15446 |
| [@morpheus9393](https://github.com/morpheus9393) | #13891 |
| [@mrnim94](https://github.com/mrnim94) | #16700 |
| [@MRQC-st](https://github.com/MRQC-st) | #16598 |
| [@MumuTW](https://github.com/MumuTW) | #15127, #15128 |
| [@mwpn](https://github.com/mwpn) | #16490 |
| [@n1klaus](https://github.com/n1klaus) | #16685 |
| [@Neuron-Mr-White](https://github.com/Neuron-Mr-White) | #15187, #16567, #16568 |
| [@nhan14t1](https://github.com/nhan14t1) | #16963 |
| [@nitsuah](https://github.com/nitsuah) | #16280, #16867 |
| [@Notaloop763](https://github.com/Notaloop763) | #13700 |
| [@ntdat812](https://github.com/ntdat812) | #16519, #16520, #16521, #16523, #16862 |
| [@ntdatt812](https://github.com/ntdatt812) | #16510, #16521, #16539, #16540, #16891, #16893 |
| [@octo-patch](https://github.com/octo-patch) | #16508 |
| [@octrow](https://github.com/octrow) | #16387 |
| [@omar-nahhas](https://github.com/omar-nahhas) | #16483, #16484 |
| [@omnitrixAG](https://github.com/omnitrixAG) | #16498 |
| [@onexer88-blip](https://github.com/onexer88-blip) | #16077 |
| [@oooohhoo](https://github.com/oooohhoo) | #16974 |
| [@opensource-elearning](https://github.com/opensource-elearning) | #16323, #16324, #16341, #16342, #16346, #16355, #16430, #16436, #17036, #17067 |
| [@Owaid0723666](https://github.com/Owaid0723666) | #14297 |
| [@pacocartones](https://github.com/pacocartones) | #15946, #15989, #15991, #15992, #15993, #15994, #15995, #15996, #15997, #15999, #16001, #16005, #16008, #16009, #16043, #16047, #16117, #16119, #16123, #16124, #16168, #16441, #16453, #16456, #16501, #16504, #16507, #16517, #16544, #16556, #16606, #16607, #16609, #16614, #16615, #16620, #16630, #16633, #16636, #16639, #16641, #16647, #16649, #16650, #16651, #16656, #16657, #16658, #16659, #16661, #16668, #16671, #16730, #16991, #16992, #17009, #17010, #17012, #17013, #17016, #17019, #17020, #17021, #17023 |
| [@patrykkopycinski](https://github.com/patrykkopycinski) | #15647, #15724, #15725 |
| [@pedrohx26](https://github.com/pedrohx26) | #16683 |
| [@PIKACHUIM](https://github.com/PIKACHUIM) | #16911 |
| [@PixmaNts](https://github.com/PixmaNts) | #14546, #15427 |
| [@piyush97](https://github.com/piyush97) | #15485 |
| [@Poid-ZA](https://github.com/Poid-ZA) | #15676 |
| [@pompousman](https://github.com/pompousman) | #16613 |
| [@potatosips](https://github.com/potatosips) | #15419 |
| [@Primexz](https://github.com/Primexz) | #16629, #16679 |
| [@PrinceThummar011](https://github.com/PrinceThummar011) | #16155, #16683, #16764 |
| [@qirh](https://github.com/qirh) | #15573 |
| [@QuangBlue](https://github.com/QuangBlue) | #14973, #15117, #15160, #15168, #15186, #15261, #15331, #15332, #15412, #15413, #15423, #15702 |
| [@quantum-shubham](https://github.com/quantum-shubham) | #17085 |
| [@rafi-zadanly](https://github.com/rafi-zadanly) | #16961 |
| [@raflyazf](https://github.com/raflyazf) | #16626, #16710, #16719, #16906, #16915, #16920, #16946 |
| [@raheemuddin786](https://github.com/raheemuddin786) | #11837 |
| [@RaviTharuma](https://github.com/RaviTharuma) | #15745 |
| [@Reinazhard](https://github.com/Reinazhard) | #16713 |
| [@rifuki](https://github.com/rifuki) | #16710 |
| [@royhanmh](https://github.com/royhanmh) | #16916 |
| [@rqzbeh](https://github.com/rqzbeh) | #12967 |
| [@rusak47](https://github.com/rusak47) | #16513 |
| [@ryanngit](https://github.com/ryanngit) | #16288, #16469, #16475, #16480, #16484, #16497, #16728, #16742 |
| [@sadSanta-07](https://github.com/sadSanta-07) | #16262, #16269 |
| [@Sahas2711](https://github.com/Sahas2711) | #15712 |
| [@sandypratama2030-gif](https://github.com/sandypratama2030-gif) | #16921 |
| [@sasazemzulin058-debug](https://github.com/sasazemzulin058-debug) | #16532 |
| [@scottchristian](https://github.com/scottchristian) | #16705 |
| [@seanford](https://github.com/seanford) | #14286, #15549 |
| [@semihisikman](https://github.com/semihisikman) | #16628, #16699, #16704, #16713, #16715, #16720, #16907 |
| [@SemonCat](https://github.com/SemonCat) | #16495 |
| [@seven7763](https://github.com/seven7763) | #16889 |
| [@shannonlowder](https://github.com/shannonlowder) | #15358 |
| [@Sheshiyer](https://github.com/Sheshiyer) | #13052 |
| [@ShiDai567](https://github.com/ShiDai567) | #16638 |
| [@shipsfromrio](https://github.com/shipsfromrio) | #14952, #15023, #15154, #15155, #15164, #15169, #16108, #16146, #16151, #16525, #16550, #16566, #16580, #16581, #16584, #16588, #16589, #16592, #16594 |
| [@Shurelia](https://github.com/Shurelia) | #16617 |
| [@sirwhy](https://github.com/sirwhy) | #16494 |
| [@Siva-2517](https://github.com/Siva-2517) | #15570 |
| [@SkiiOS](https://github.com/SkiiOS) | #16665 |
| [@skygunner](https://github.com/skygunner) | #15054, #15231, #15457, #15458, #15459, #16091, #16316, #16359, #16360, #16375, #16388, #16395, #16504, #16528, #16582 |
| [@SoloDrex52](https://github.com/SoloDrex52) | #15742 |
| [@Spoon94](https://github.com/Spoon94) | #16865, #16914 |
| [@sprintberlin](https://github.com/sprintberlin) | #14301 |
| [@StevanusPangau](https://github.com/StevanusPangau) | #16684 |
| [@suhanrain](https://github.com/suhanrain) | #16821 |
| [@tasarren](https://github.com/tasarren) | #16912 |
| [@TechNickAI](https://github.com/TechNickAI) | #16397 |
| [@Theadd](https://github.com/Theadd) | #15340, #16605, #17079 |
| [@TheCrabe](https://github.com/TheCrabe) | #16481, #16499 |
| [@TheDemonTuan](https://github.com/TheDemonTuan) | #13739 |
| [@themirzaalibaig](https://github.com/themirzaalibaig) | #16858, #16895 |
| [@TheViniAlmeida](https://github.com/TheViniAlmeida) | #15594 |
| [@thienpvt](https://github.com/thienpvt) | #16541 |
| [@thotypous](https://github.com/thotypous) | #16086, #16087, #16088 |
| [@tiagolabsit](https://github.com/tiagolabsit) | #16462, #16463, #16464, #16465, #16466, #16467, #16514 |
| [@tiagovilasboas](https://github.com/tiagovilasboas) | #15800, #15925, #17101 |
| [@tikhomirov](https://github.com/tikhomirov) | #15900 |
| [@timootten](https://github.com/timootten) | #15754, #15756 |
| [@tommyyzhao](https://github.com/tommyyzhao) | #16960 |
| [@TPOHH](https://github.com/TPOHH) | #13224 |
| [@trabgarmarjc-maker](https://github.com/trabgarmarjc-maker) | #16534 |
| [@trespassmk](https://github.com/trespassmk) | #15699, #16144, #17002 |
| [@turbolego](https://github.com/turbolego) | #16223, #16227, #16810 |
| [@Tushar49](https://github.com/Tushar49) | #16021 |
| [@unifically-dev](https://github.com/unifically-dev) | #14182 |
| [@velizarofff](https://github.com/velizarofff) | #16826 |
| [@vianhanif](https://github.com/vianhanif) | #16511, #16539, #16645, #16945 |
| [@VihaanR](https://github.com/VihaanR) | #15301 |
| [@W25X80](https://github.com/W25X80) | #16181 |
| [@wahidsadik371-coder](https://github.com/wahidsadik371-coder) | #12743 |
| [@wakqasahmed](https://github.com/wakqasahmed) | #15905 |
| [@waleedkkk](https://github.com/waleedkkk) | #15878 |
| [@wallerjenifernk530-hash](https://github.com/wallerjenifernk530-hash) | #16722 |
| [@webzidev](https://github.com/webzidev) | #14988 |
| [@wedreamer](https://github.com/wedreamer) | #15548 |
| [@WellArtDev](https://github.com/WellArtDev) | #16295 |
| [@woodsonl](https://github.com/woodsonl) | #15137, #15206, #15209, #15296, #15298, #15345, #15346, #15571, #15583, #15587, #15589, #15590, #15591, #15592, #15593, #15596, #15599, #15600, #15601, #15603, #15604, #15605, #15607, #15609, #15610, #15612, #15613, #15614, #15617, #15618, #15682, #15801, #15857, #16277, #16278, #16366, #16392, #16445 |
| [@wray-lee](https://github.com/wray-lee) | #12914, #16351 |
| [@wusaki0723](https://github.com/wusaki0723) | #16674 |
| [@WYSTAF](https://github.com/WYSTAF) | #16698, #16702, #16722, #16913 |
| [@x-adam](https://github.com/x-adam) | #16732 |
| [@xiaoyaner0201](https://github.com/xiaoyaner0201) | #14603, #14619, #14640, #14976, #15084, #15086, #15087, #15092, #15094, #15171, #15189, #16473, #16505, #16574, #16585, #16591, #16655, #16663, #16693, #16829 |
| [@Xxx91n](https://github.com/Xxx91n) | #11902 |
| [@Yashxp1](https://github.com/Yashxp1) | #15114 |
| [@Yi-111-a](https://github.com/Yi-111-a) | #15328 |
| [@YoannDev90](https://github.com/YoannDev90) | #16919 |
| [@yourspraveen](https://github.com/yourspraveen) | #15252, #15253, #15254, #15452, #15453, #15465, #15467, #16399, #16401, #16410, #16415, #16418, #16564, #16565, #16931 |
| [@yugui923](https://github.com/yugui923) | #12869, #15213 |
| [@ZaimMarzuki](https://github.com/ZaimMarzuki) | #13019 |
| [@zasasamar2129](https://github.com/zasasamar2129) | #16637 |
| [@zebrajaeger](https://github.com/zebrajaeger) | #15337 |
| [@zeeshanhaque21](https://github.com/zeeshanhaque21) | #14212 |
| [@zeydsama](https://github.com/zeydsama) | #16222 |
| [@zitus91](https://github.com/zitus91) | #15663 |
| [@diegosouzapw](https://github.com/diegosouzapw) | maintainer |
---
Related Repositories
The AI that really does things. Any OS. Any Platform. The lobster way. ๐ฆ
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Reverse engineer anything with agents, from app behavior down to native binaries.
The open source coding agent.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.