Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
6386 commits
Select commit Hold shift + click to select a range
330c3d0
fix(ci): reject incomplete scoped TypeScript compiler results (#16849)
diegosouzapw Oct 17, 2026
63d5e3e
fix(anthropic): retain explicit Opus 4.5 provider and effort aliases …
diegosouzapw Oct 17, 2026
0422e9a
fix(auth): retain inactive API-key group restrictions (#16416) (#16808)
diegosouzapw Oct 17, 2026
5d19073
feat(compression): antislop UI and copy/human output styles (#16916)
diegosouzapw Oct 17, 2026
0e4d056
fix(kiro): route API-key connections to the Amazon Q region and auto-…
diegosouzapw Oct 17, 2026
906fb59
chore(quality): re-seed the open-sse β†’ src boundary ceiling at the re…
diegosouzapw Oct 17, 2026
7447492
feat(updater): Docker-aware dashboard update with a socket-free host …
diegosouzapw Oct 17, 2026
7ff5f6e
feat(providers): add NaN.Builders API-key provider (chat, embeddings,…
diegosouzapw Oct 17, 2026
858d602
feat(image): Muse Image 1.0 generation and edits on the Muse Code pro…
diegosouzapw Oct 17, 2026
4dd6778
feat(providers): Qwen Cloud Token Plan TTS and per-model reasoning-ef…
diegosouzapw Oct 17, 2026
0ab2f0d
feat(guardrails): per-type PII selection, custom masking patterns and…
diegosouzapw Oct 17, 2026
c75b18b
ci: Turbopack back on the self-hosted build slot (64 GB); webpack sta…
diegosouzapw Oct 17, 2026
759b348
ci(nightly-schemathesis): give the webpack backend-only build time to…
diegosouzapw Oct 17, 2026
c4b2ea2
feat(providers): add DaoXE OpenAI-compatible gateway (#16889)
diegosouzapw Oct 17, 2026
a139bce
feat(settings): selective provider-account transfer with sealed file …
diegosouzapw Oct 17, 2026
3c3edb9
fix(db): encrypt nested provider metadata credentials at rest (#16863)
fabioKoruja00 Oct 17, 2026
2ed641e
fix(security): require an operator credential to prune backups or cha…
diegosouzapw Oct 17, 2026
09ee32d
fix(ws): live dashboard WebSocket requires a management-scoped API ke…
diegosouzapw Oct 17, 2026
4f0cda9
fix(skills): validate skills.sh install inputs before building the Gi…
diegosouzapw Oct 17, 2026
ce3a5a4
fix(db): envelope the extraApiKeys pool and legacy provider_specific_…
diegosouzapw Oct 17, 2026
62343a1
feat(ci): base-relative check:boundary:ratchet on PR events (--base-r…
diegosouzapw Oct 17, 2026
73c4d17
fix(i18n): use the canonical 提供者 for provider in the zh Zed tool desc…
diegosouzapw Oct 17, 2026
cc64d05
test(golden): add the daoxe and nan providers to the translate-path g…
diegosouzapw Oct 17, 2026
ce9563f
fix(combos): keep snapshot weights within percentage budget (#16942)
diegosouzapw Oct 17, 2026
7b3f754
fix(models): preserve namespaces in resolved capability lookups (#16939)
diegosouzapw Oct 17, 2026
a7890fa
fix(translator): keep a client-sent service_tier through the Anthropi…
diegosouzapw Oct 17, 2026
84ee9b0
test(cursor): lock the KV blob ack request_metadata echo with round-t…
diegosouzapw Oct 17, 2026
3c67b0e
feat(search): forward allow-listed Exa and Tavily provider_options fi…
diegosouzapw Oct 17, 2026
d609217
feat(dashboard): copyable connection ID chip and docs for per-request…
diegosouzapw Oct 17, 2026
8708178
fix(routing): require consent and caller authorization for model fall…
diegosouzapw Oct 17, 2026
abf0a37
fix(auto-combo): stop per-candidate registry scans and DB reads on th…
diegosouzapw Oct 17, 2026
cfd2d27
docs(i18n): reconcile release guide translations (#16924)
diegosouzapw Oct 17, 2026
2cbdcd7
fix(dashboard): reveal streamed pages while the tab is hidden (#16245…
diegosouzapw Oct 17, 2026
ef11fcd
docs(usage): qualify upstream Ollama balance endpoint (#16936)
diegosouzapw Oct 17, 2026
8be2fec
fix(quality): bind admission skills and shared instruction dependenci…
diegosouzapw Oct 17, 2026
9c67fe7
test: align release regressions with current catalog and UI contracts…
diegosouzapw Oct 17, 2026
5fb4528
feat(providers): manual "Ping now" for Codex OAuth connections (#16954)
diegosouzapw Oct 17, 2026
5e019c2
feat(api): discovery filters on /v1/models and POST /v1/models/query …
diegosouzapw Oct 17, 2026
dea8829
fix(opencode): alias over-length tool names (>64 chars) for OpenCode …
diegosouzapw Oct 17, 2026
7c92b15
feat(providers): optional custom ID suffix for compatible provider no…
diegosouzapw Oct 17, 2026
1fe360a
feat(search): add Parallel web search and fetch provider (#16960)
diegosouzapw Oct 17, 2026
dc9cab3
fix(api): apply API-key connection scope to direct /v1 media and embe…
diegosouzapw Oct 17, 2026
c35d0ce
feat(settings): scheduled wakeups for Codex OAuth accounts (#16965)
diegosouzapw Oct 17, 2026
ca7ece8
fix(ci): require full admission for Mergify candidates (#16957)
diegosouzapw Oct 17, 2026
411aead
docs(i18n): fix the Bosnian AGENTS.md mirror, keep literal code spans…
diegosouzapw Oct 17, 2026
ab04570
ci: one hosted run per ref for the lock guard and Scorecard (#16967)
diegosouzapw Oct 17, 2026
5413a24
fix(relay): key the per-client throttle on the pipeline-stamped clien…
diegosouzapw Oct 17, 2026
852f185
fix(providers): remove OpenCode Free while preserving Zen and Go (#16…
diegosouzapw Oct 17, 2026
1591cd5
fix(authz): keep relay token management authenticated when login is d…
diegosouzapw Oct 17, 2026
a1be257
fix(db): let migration 207 run on a provider_connections table withou…
diegosouzapw Oct 18, 2026
bf9f62c
ci(security): run the nightly guard eval on the lockfile's promptfoo,…
diegosouzapw Oct 18, 2026
3cfaa14
docs: align CONTRIBUTING Node.js floor with engines (#16534)
trabgarmarjc-maker Oct 18, 2026
6ce866c
fix(api): answer 400 for a non-JSON body on POST /api/chaos/run and P…
pacocartones Oct 18, 2026
771fc48
fix(api): answer 400 for a non-JSON body on the skills marketplace an…
pacocartones Oct 18, 2026
8a4a66a
fix(combo): trace an unknown skip reason instead of failing the reque…
maxmad64bis Oct 18, 2026
7db6659
fix(api): normalize empty streaming finish reasons to null (#16701) (…
alltomatos Oct 18, 2026
9760222
fix(dashboard): surface the quota cookie hint next to parsed rows (#1…
LazyGatto Oct 18, 2026
c734363
docs(resilience): clarify rate-limit protection false semantics and s…
PrinceThummar011 Oct 18, 2026
f3f23dc
fix(oauth): honor connectionId on email-less re-auth instead of dupli…
castocolina Oct 18, 2026
e3da870
fix(health): don't condemn refresh-less connections whose known expir…
castocolina Oct 18, 2026
90a28ff
test(video): enforce retention fixture network isolation (#16634)
diegosouzapw Oct 18, 2026
16e9368
fix(sse): keep Claude OAuth rewrites off the body a combo replays (#1…
AndresDiagoM Oct 18, 2026
8926293
fix(codex-images): allow 16 references for dedicated GPT Image edits …
Bl0ck154 Oct 18, 2026
6065b65
fix(sse): compress Anthropic tool_result blocks in safe pipeline (#16…
DarknessKiller Oct 18, 2026
c7449f4
fix(codebuddy-intl): send the X-Conversation-* family to pass channel…
Junior-HJ Oct 18, 2026
57169e6
fix(codex): resolve an effort-suffixed alias against the synced base …
HouMinXi Oct 18, 2026
513e41d
fix(skills): regenerate the 20 SKILL.md files drifted since #14381 (#…
BenjaminAronsson Oct 18, 2026
6e1ff7d
fix(skills): stop ambient env leaking into generated SKILL.md output …
BenjaminAronsson Oct 18, 2026
9721c42
fix(providers): rank expiry-first accounts on the weekly deadline, no…
feci Oct 18, 2026
d987581
fix(observability): capture recent stalls with content-free SQLite ti…
insoln Oct 18, 2026
9d67706
fix(quota): route quota fetcher reads through the connection proxy (#…
maxmad64bis Oct 18, 2026
97eb6e4
fix(monitoring): log event-loop stalls with counter on health (#15888)
maxmad64bis Oct 18, 2026
b14ddd8
fix(sse): forward the pending final event on translated flush (#16304)
maxmad64bis Oct 18, 2026
8f2afda
fix(usage): keep request detail files with the redirected test databa…
maxmad64bis Oct 18, 2026
c8b78e7
fix(call-logs, proxy-logs): retry a locked write once after a short d…
maxmad64bis Oct 18, 2026
024acd4
refactor(sse): remove redundant request-path work on large-context bo…
woodsonl Oct 18, 2026
9bfce3d
fix(opencode-plugin): stop bare-id enrichment fallback attributing mo…
yourspraveen Oct 18, 2026
d545d98
fix(providers): send no thinkingConfig to Gemini models without think…
yourspraveen Oct 18, 2026
d1b2f63
docs(guardrails): document hook coverage and limits accurately (#16564)
yourspraveen Oct 18, 2026
4791d0e
fix(sse): keep adaptive thinking effort at the level the client chose…
HouMinXi Oct 18, 2026
ab459a2
fix(memory): recover Potion model loading and drain reindex queue (#1…
fabioKoruja00 Oct 18, 2026
db6e89e
refactor(security): preserve mandatory injection block boundary (#164…
fabioKoruja00 Oct 18, 2026
0c7bf23
Fix/16943 web cookie provider counters (#16951)
fabioKoruja00 Oct 18, 2026
1374cac
Fix/16169 manual hosted build webpack (#16938)
fabioKoruja00 Oct 18, 2026
85482ff
fix(combos): hiding a base model also hides its generated effort vari…
castocolina Oct 18, 2026
6bd0e35
fix(token-refresh): skip retry loop when there is nothing to refresh …
maxmad64bis Oct 18, 2026
c7632d0
fix(sse): keep in-request account rotation inside the routing allowli…
fouadSalkini Oct 18, 2026
279bbec
fix(monitoring): warn once on unusable stall sampler reading (#15978)
maxmad64bis Oct 18, 2026
d2f5584
ci(security): run the pinned promptfoo from an isolated npx install, …
diegosouzapw Oct 18, 2026
5400b0c
fix(api): sanitize duplicate-combo 500 error body (#17002)
trespassmk Oct 18, 2026
bb978b3
fix(zcode): preserve caller tools and image inputs through native inf…
megamen32 Oct 18, 2026
0753ebe
fix(providers): devin-desktop tool calls reassemble fragmented argume…
wusaki0723 Oct 18, 2026
9de47e0
fix(proxy-subscriptions): keep the last switch trace per selector (#1…
maxmad64bis Oct 18, 2026
a3a8d6e
fix(translator): sanitize $ref keys in Gemini function_response (#16153)
aliepratama Oct 18, 2026
f41a58b
fix(call-log): honor dashboard retention in request log rotation (#16…
maxmad64bis Oct 18, 2026
0fb5623
fix(api): record job-preset video calls and attribute them to the API…
LuisAlejandro Oct 18, 2026
92ed796
fix(antigravity): don't mix native googleSearch grounding with functi…
Neuron-Mr-White Oct 18, 2026
535ae1e
fix(resilience): decay a stale DEGRADED breaker and close it on a val…
shipsfromrio Oct 18, 2026
e15f7b0
fix(quota): route remaining console quota reads through the connectio…
maxmad64bis Oct 18, 2026
9045b49
fix(dashboard): confirm proxy distribution and allow account resets (…
JxnLexn Oct 18, 2026
c76ee07
fix(sse): lock the model on a 429 whose RetryInfo wait exceeds the qu…
shipsfromrio Oct 18, 2026
407396c
fix(translator): bridge Claude Code WebSearch to Gemini/Antigravity g…
wray-lee Oct 18, 2026
7cfdcf8
fix(sse): bound qodercli concurrency and kill its process tree (#17004)
mad-gooze Oct 18, 2026
b362310
perf(db): index call-log artifact paths for rotation lookups (#16350)
maxmad64bis Oct 18, 2026
dc98dfe
Fix/16460 cloudflare image input validation (#16868)
fabioKoruja00 Oct 18, 2026
6807a4f
fix(quota): drop bespoke quota caches on upstream 429 (#16932)
maxmad64bis Oct 18, 2026
f8d93bf
perf(logs): run log-export destinations in an isolated child process …
xiaoyaner0201 Oct 18, 2026
0a74d33
fix(sse): stop pinning streaming requests in gcPersistentSignals (#16…
oooohhoo Oct 18, 2026
d46445c
Fix/16801 internal node vision bridge verdict (#16937)
fabioKoruja00 Oct 18, 2026
a00a8fb
Feat/16940 autosync timestamps immediate refresh (#16947)
fabioKoruja00 Oct 18, 2026
fc0959f
Fix/16948 configurable quota fetch spacing (#16952)
fabioKoruja00 Oct 18, 2026
194a244
feat(grok-cli): allow a validated client version override (#16397)
TechNickAI Oct 18, 2026
09d7036
fix(relay): make relay token minting operator-only and sanitize its e…
diegosouzapw Oct 18, 2026
0192973
fix(cli): send the skills.sh install route its real contract from ski…
diegosouzapw Oct 18, 2026
fc00af2
perf(db): run storage integrity check on demand instead of on every s…
maxmad64bis Oct 18, 2026
4be2ebf
ci(security): run the pinned promptfoo from runner.temp so the repo i…
diegosouzapw Oct 18, 2026
22f7b42
fix(db): insert call_logs row before writing its artifact (#15608)
insoln Oct 18, 2026
8b91a40
fix(devin): surface CLI auth and include auto-routing (#15446)
mohammadraufzahed Oct 18, 2026
df60c41
feat(providers): integrate Demon Route with live catalog and embeddin…
fabioKoruja00 Oct 18, 2026
d52607f
fix(claude): do not redact thinking when the client asks for summariz…
diegosouzapw Oct 18, 2026
2a493fe
fix(conversations): stop re-inserting whole histories when reconnect …
fouadSalkini Oct 18, 2026
4ecc110
fix(cli): list the skills.sh results from skillssh list (#17035)
diegosouzapw Oct 18, 2026
89ebf6a
docs(guardrails): describe the injection middleware after #16934 remo…
diegosouzapw Oct 18, 2026
d8d07f7
fix(release): drain four unit reds on release/v3.8.52 β€” MCP bundle im…
diegosouzapw Oct 18, 2026
5aeac85
chore(quality): list the #16594 circuit-breaker tests in stryker tap.…
diegosouzapw Oct 18, 2026
c84b77b
fix(images): preserve long-running Playground generation results (#16…
D4rk4 Oct 18, 2026
4674b29
fix(chatgpt-web): reuse persistent CDP sessions and current app menti…
ElioBonfim Oct 18, 2026
62a1d20
fix(codex): recognize ultra effort suffix and avoid nested variants (…
alltomatos Oct 18, 2026
ebbc7bd
CorreΓ§Γ£o do erro do erro EACCES: permission denied (#14910)
matheusgcdj Oct 18, 2026
0c137bb
fix(reasoning): split effort suffixes for kimi ids into request-side …
castocolina Oct 18, 2026
b14e9de
fix(oauth): resume quota refresh and bound stale window filtering (#1…
copystring Oct 18, 2026
9e54542
fix(copilot): skip unnecessary healthy sub-token refresh (#16818)
gsmarcil Oct 18, 2026
f46b81b
fix(release): drain three more unit reds β€” Antigravity quota tests af…
diegosouzapw Oct 18, 2026
5305557
fix(logs): keep structured logs on current file after rotation (#16373)
maxmad64bis Oct 18, 2026
4f58701
fix(proxy): attach manual proxy to subscription by id, detach with nu…
maxmad64bis Oct 18, 2026
05d9d4c
perf(cache): serve the usage-history part of the cache page from the …
maxmad64bis Oct 18, 2026
cd60595
fix(providers): route Google AI Studio image models natively (#15976)
LuisAlejandro Oct 18, 2026
95b311d
fix(release): drain the A6 keyless catalog integration reds and the O…
diegosouzapw Oct 18, 2026
24442f7
fix(sse): skip cooldown retry for persistent 403 and 410 refusals (#1…
maxmad64bis Oct 18, 2026
ea3d7f8
fix(sse): enable reactive compaction for native Codex passthrough (#1…
Junior-HJ Oct 18, 2026
ed8d3a3
fix(ci): teach the route-guard gate to follow transitive spawns (#15965)
jonlwheat2-gif Oct 18, 2026
93e7b1f
fix(resilience): avoid cooldown and fallback on content-policy refusa…
insoln Oct 18, 2026
2608672
fix(sse): send Arena create-evaluation cx telemetry and fix its cooki…
themirzaalibaig Oct 18, 2026
74f45af
fix(sse): mark late streamed output beyond the early probe window (#1…
maxmad64bis Oct 18, 2026
68dc61f
fix(oauth): recover credential gates after inconclusive probes (#16599)
KiaroSama Oct 18, 2026
db53964
fix(plugin): stop requesting the retired combos route in the v2 plugi…
maxmad64bis Oct 18, 2026
0ed2705
fix(resilience): show when a blocked provider serves again on the con…
maxmad64bis Oct 18, 2026
ad160ab
fix(proxy-subscriptions): count early selector skips with readable la…
maxmad64bis Oct 18, 2026
656f01c
fix(credential-health): retest connections the gateway switched off b…
shipsfromrio Oct 18, 2026
4447fec
fix(auto): prepare auto request pool with resolved capabilities (#16419)
maxmad64bis Oct 18, 2026
4d07a26
fix(models): use the effort tiers models.dev already publishes (#15944)
HouMinXi Oct 18, 2026
cae17fc
fix(sse): keep mid-conversation system turns in place on anthropic-co…
MikeTuev Oct 18, 2026
44a2961
fix(sync): keep sync token management authenticated when login is dis…
diegosouzapw Oct 18, 2026
47c0b94
fix(muse): linear-time base-URL trailing-slash strip; parsed-host che…
diegosouzapw Oct 18, 2026
1630faa
fix(release): drain four more reds left by 2026-10-18 merges β€” Connec…
diegosouzapw Oct 18, 2026
0f234dd
Fix/16929 gemini specialty endpoint tags (#16956)
fabioKoruja00 Oct 18, 2026
306465d
fix(release): drain two v3.8.52 base-reds β€” cycles membership test, d…
woodsonl Oct 18, 2026
ce7da47
fix(sse): cover opencode-zen with the egress-IP lockout and feed body…
maxmad64bis Oct 18, 2026
3b52f62
fix(sse): keep opencode free-tier failures model-scoped and de-mislea…
asdlombardi4-lang Oct 18, 2026
99f0694
fix(opencode): port v2 client fingerprint and tool contracts from 9ro…
Junior-HJ Oct 18, 2026
d0ae778
fix(providers): poll OpenRouter video jobs and serve the clip safely …
LuisAlejandro Oct 18, 2026
778791b
fix(opencode): route each key-based model to the endpoint the publish…
maxmad64bis Oct 18, 2026
ff51ddb
fix(api): mirror reasoning-effort variants and resolvable auto combos…
aldoeliacim Oct 18, 2026
35e6b55
fix(sse): recover rejected empty streams on eligible sibling accounts…
fouadSalkini Oct 18, 2026
eaa7a41
fix(release): reconcile-changelog reads fragments from disk and stops…
diegosouzapw Oct 18, 2026
5d38513
docs(release): v3.8.52 credit audit β€” CHANGELOG reconciliation and RE…
diegosouzapw Oct 18, 2026
a016744
fix(authz): keep management credential issuance authenticated when lo…
diegosouzapw Oct 18, 2026
eea2f41
fix(oauth): retain Kimi Coding recovery token after rejected refresh …
fabioKoruja00 Oct 18, 2026
fd4c50f
ci(nightly): build the a11y dashboard once on the build pool and boot…
diegosouzapw Oct 18, 2026
c8c3fe4
fix(docs): take MDX components from the module default, not the names…
Theadd Oct 18, 2026
6a2ac81
fix(gamification): read the stored streak counters as non-negative wh…
pacocartones Oct 18, 2026
e616e58
fix(gamification): measure the early-adopter window in UTC (#17013)
pacocartones Oct 18, 2026
771ed15
fix(gamification): reject a fractional invite maxUses (#17016)
pacocartones Oct 18, 2026
87dd7e6
fix(gamification): list transfers recorded in the same second newest …
pacocartones Oct 18, 2026
d4c08c6
fix(gamification): refuse a negative or non-finite XP amount in the a…
pacocartones Oct 18, 2026
0dd4d74
fix(gamification): count a streak day once when two calls advance it …
pacocartones Oct 18, 2026
0533646
fix(api): answer 400 for malformed JSON on POST /api/plugins and PATC…
pacocartones Oct 18, 2026
1d76655
fix(cli): probe Windows .cmd/.bat shims through cmd.exe so the tool d…
pacocartones Oct 18, 2026
4c1472d
fix(chat): skip null entries in tools and input in the session finger…
pacocartones Oct 18, 2026
b311c5e
Fix/17017 js yaml parser lockfile (#17022)
fabioKoruja00 Oct 18, 2026
69a1121
fix(sse): fail closed when the browser-pool proxy lookup fails (#17011)
maxmad64bis Oct 18, 2026
1499630
fix(sse): cap the M365 WebSocket pending-frame buffer (#17014)
maxmad64bis Oct 18, 2026
3bb730a
fix(compression): fold role:"developer" into system for the engines (…
DarknessKiller Oct 18, 2026
96d236b
fix(model-test): probe speech models through audio endpoint (#17030)
edosulai Oct 18, 2026
d20f8f9
fix(dashboard): only switch timeline to pan on an actual drag (#17024)
for-the-zero Oct 18, 2026
af8f1c6
fix(opencode): rotate Zen free DeepSeek id to v4.1 (#17044)
coqfu Oct 18, 2026
626928a
ci(runners): give Release-Green its own slot and stop throwing away s…
diegosouzapw Oct 18, 2026
7bb6edb
perf(api-manager): load per-key usage from a lightweight totals view …
fouadSalkini Oct 18, 2026
7cde09e
fix(providers): keep uncloseai's context window across /v1/models rot…
opensource-elearning Oct 18, 2026
d93fd1b
fix(oauth): harden the OIDC login with PKCE and a required id_token n…
maxmad64bis Oct 18, 2026
edc79d9
fix(workbuddy): adapt gateway compliance headers and tool schema cont…
Junior-HJ Oct 18, 2026
64d8338
fix(cli): preserve compiled Windows shell selection (#16547) (#16768)
diegosouzapw Oct 18, 2026
1efac51
fix(m365): preserve trusted ChatHub hosts in HAR credentials (#16755)
diegosouzapw Oct 18, 2026
9221771
fix(chatgpt-web): defer optional browser runtime loading (#16771)
diegosouzapw Oct 18, 2026
e98693b
fix(kiro): preserve Opus 5.5 adaptive reasoning (#16098)
Kizuno18 Oct 18, 2026
7c71b93
fix(providers): discover and expose synchronized Muse models (#16774)
diegosouzapw Oct 18, 2026
4e7c7f0
fix(providers): reject paid SiliconFlow models from free routing (#17…
fabioKoruja00 Oct 18, 2026
d3d86fc
fix(claude): honor native thinking summary opt-in (#16407) (#16772)
diegosouzapw Oct 18, 2026
f188221
docs(security): set the LTS support window for stable/v3 (T-GAP-3) (#…
diegosouzapw Oct 18, 2026
62aba1f
fix(zcode): hash-guarded numeric provider-code step for the image run…
megamen32 Oct 18, 2026
d35018b
fix(autoCombo): hold browser-backed and local-CLI transports out of t…
opensource-elearning Oct 18, 2026
cda89de
fix(providers): inline reasoning_content as a <thought> block for cod…
diegosouzapw Oct 18, 2026
b5f21c0
ci(build): record the validated hosted heaps and keep Docker above th…
diegosouzapw Oct 18, 2026
11bb5f1
fix(sse): preserve provider safety stops through routing (#17049)
aldoeliacim Oct 18, 2026
9e85a19
test(video): compare parsed hosts in the OpenRouter off-origin test (…
diegosouzapw Oct 18, 2026
8104726
test(logs): wait for the call-log save instead of a fixed poll in ups…
diegosouzapw Oct 18, 2026
b7bfee1
fix(release): drain v3.8.52 base-reds β€” #16956 fixtures, single custo…
diegosouzapw Oct 18, 2026
20d9b04
docs(i18n): retranslate the changed AUTHZ_GUIDE and REMOTE-MODE secti…
diegosouzapw Oct 18, 2026
34cf53b
test(release): drain three unit reds β€” quota throttle timing (#6911) …
diegosouzapw Oct 18, 2026
b24a6ab
ci: stop starting the full CI and Quality matrices on every push to r…
diegosouzapw Oct 18, 2026
79d47ef
fix(sse): stop the provider breaker from retaining the last request's…
diegosouzapw Oct 18, 2026
c2419f4
fix(quota): retry a locked snapshot cleanup instead of crashing the b…
tiagovilasboas Oct 18, 2026
10602fd
test(logs): one shared settle bound for the call-log readers the cold…
diegosouzapw Oct 18, 2026
84f7709
fix(i18n): preserve source-owned thinking examples (#17088)
diegosouzapw Oct 18, 2026
c72f59b
fix(compression): preserve current live-zone context (#17097)
aldoeliacim Oct 18, 2026
9c92346
fix(codex): recognize client session aliases (#17096)
aldoeliacim Oct 18, 2026
d4129db
fix(vision): handle nested tool_result images for text-only models (#…
fabioKoruja00 Oct 18, 2026
6834a20
fix(dashboard): honour image apiFormat in model test probe (#17071) (…
quantum-shubham Oct 18, 2026
a534852
fix(models): stabilize catalog cache and recover picker on transient …
diegosouzapw Oct 18, 2026
07bb3c7
ci: build pull requests on the hosted pool, keep the Turbopack slot f…
diegosouzapw Oct 18, 2026
0a2753c
fix(plugin): stop fetching auto combos on each catalog refresh (#16228)
maxmad64bis Oct 18, 2026
4052356
fix(dashboard): mobile-first layout for the dashboard and shared resp…
HDBR Oct 18, 2026
19cff1b
test(quota): give the throttle spacing assertions room for scheduling…
diegosouzapw Oct 19, 2026
eb2fd31
docs(i18n): resync nine drifted sources across all 66 locales (#17117)
diegosouzapw Oct 19, 2026
2d1de17
fix(models): preserve SiliconFlow paid evidence through discovery cac…
diegosouzapw Oct 19, 2026
28443d8
fix(routing): respect wire alias locks during family fallback (#17113)
diegosouzapw Oct 19, 2026
4346947
docs(guardrails): align mandatory injection coverage description (#17…
diegosouzapw Oct 19, 2026
d13f376
ci(a11y): boot the nightly a11y artefact on a hosted runner (#17122)
diegosouzapw Oct 19, 2026
7d7ed3f
fix(docs): widen the version-claim gate and correct AGENTS.md's cover…
jonlwheat2-gif Oct 19, 2026
5bd407f
docs: slim AGENTS.md under the 40k context limit (62.3k -> 39.4k) (#1…
wahidsadik371-coder Oct 19, 2026
26df9d9
fix(quality): drop two eslint suppressions that no longer match (#17126)
diegosouzapw Oct 19, 2026
a80bdb3
fix(catalog): require per-model evidence and ratchet legacy audit deb…
diegosouzapw Oct 19, 2026
e5995a8
docs(i18n): refresh approved documentation mirrors for v3.8.52 (#16980)
diegosouzapw Oct 19, 2026
0843241
fix(usage): bill credit-metered providers by their reported cost (#16…
thotypous Oct 19, 2026
56c78cf
docs(ci): keep the Build routing comment true after the main-only pus…
diegosouzapw Oct 19, 2026
7614edd
fix(i18n): reject translations that lose inline code spans (#17128)
diegosouzapw Oct 19, 2026
6ba34bc
fix(i18n): format translated mirrors with the repo's Prettier config …
diegosouzapw Oct 19, 2026
04b052b
test(nightly): wait for the fake server before reading its environmen…
diegosouzapw Oct 19, 2026
14fe8e9
fix(logs): start the source-checkout call-log worker without tsx's di…
diegosouzapw Oct 19, 2026
d804179
test(settings): give the catalog visibility waits a realistic window …
diegosouzapw Oct 19, 2026
3a99284
docs(i18n): re-translate README, CONTRIBUTING and 11 more drifted sou…
diegosouzapw Oct 19, 2026
03be754
docs(i18n): restore the issue-reference literals in the Uzbek QUALITY…
diegosouzapw Oct 19, 2026
aae8749
fix(oauth): accept exact Microsoft substrate ChatHub host (#16327) (#…
diegosouzapw Oct 19, 2026
9ec0bf1
fix(models): verify free-tier evidence and reject variable-price Kilo…
diegosouzapw Oct 19, 2026
2369d71
fix(dashboard): give nested sidebar items and subtitles AA contrast o…
diegosouzapw Oct 19, 2026
81714ee
ci(release-green): sweep main once a day, keep three daily sweeps for…
diegosouzapw Oct 19, 2026
84cf629
ci(release-green): run the sweep's heavy lanes one at a time, unit as…
diegosouzapw Oct 19, 2026
da38fc4
test(sse): time the specificity detector on warm runs, keep the 5 ms …
diegosouzapw Oct 19, 2026
0a1265e
chore(release): back-merge main into release/v3.8.52 (ancestry only)
diegosouzapw Oct 19, 2026
c754707
chore(release): v3.8.52 β€” 2026-10-19
diegosouzapw Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
450 changes: 415 additions & 35 deletions .env.example

Large diffs are not rendered by default.

12 changes: 8 additions & 4 deletions .env.selfhost.example
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,15 @@ APP_BIND_HOST=127.0.0.1

# ── Auth ──────────────────────────────────────────────────────────────
# false = the dashboard and /v1 proxy are open to APP_BIND_HOST's network.
# true = every request needs an API key / dashboard login. The dashboard
# auto-creates INITIAL_PASSWORD on first boot (read it from the logs:
# `docker logs omniroute | grep -i password`). # EDIT ME β€” set true.
# true = /v1 requests need an API key (a logged-in dashboard session also works);
# the dashboard needs login once a password
# exists. Create the login password in the onboarding wizard on first visit
# (skipping that step turns dashboard login off, even with
# REQUIRE_API_KEY=true); after you submit it, the wizard asks for
# a one-time token from `docker logs omniroute | grep BOOTSTRAP`.
# # EDIT ME β€” set true.
REQUIRE_API_KEY=false
# INITIAL_PASSWORD= # uncomment to pre-seed the dashboard password
# INITIAL_PASSWORD=strong-password-here # fill in to pre-seed the dashboard password (an empty value behaves like unset)

# ── Memory ceiling (V8 old-space) ──────────────────────────────────────
# 1024 = dashboard + light chat. Coding agents (long POST /v1/responses
Expand Down
49 changes: 49 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/bugfix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
## Summary

- What was broken, for whom, and what does this change fix?
- Root cause in one or two sentences.

## Related Issues

- Closes # <!-- use "Refs #" if this only partially fixes the issue -->

## Target Branch

See the [Release Strategy](../../docs/ops/RELEASE_STRATEGY.md) and the [ROADMAP](../../ROADMAP.md):

- [ ] Base is the active `release/v3.8.x` branch (the highest open `release/v*`), not `main`
(after 3.9.0, fixes target `stable/v3` and are forward-ported to v4 with credit)

## Proof Of Fix (required)

Every bug fix must be validated by ONE of the following (`AGENTS.md`, Hard Rule #18).
A fix without either is not merged.

- [ ] **TDD (preferred)** β€” a test that fails before the fix and passes after it.
- Test file(s):
- Failing output before the fix (paste the relevant lines):
- [ ] **Real-environment test** (only when TDD is not possible β€” OAuth upstream flows,
upstream WebSocket/Cloudflare behavior, UI-only regressions, hardware-dependent
behavior) β€” record the exact command and its result:
- Environment:
- Command:
- Result:

## Scope

- [ ] Only the files the failing test proves need changing are touched
- [ ] No test was weakened or deleted to make the suite pass

## Validation

Choose the focused loop for your change type from the
[Contribution Golden Path](../../docs/ops/CONTRIBUTION_GOLDEN_PATH.md). The full unit suite,
Vitest, the 60% coverage gate, and the production build all run in CI on this PR:

- [ ] Change type: provider / routing / UI / i18n / CLI / DB / build-deploy / other
- [ ] Focused tests and category gates from the golden path
- [ ] `npm run lint`

## Reviewer Notes

- Risky areas, side effects on other providers/routes, or follow-ups reviewers should know about.
44 changes: 44 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## Summary

- What does this feature add, and who uses it?
- Link the issue or discussion where it was agreed on.

## Related Issues

- Closes #
- Related to #

## Target Branch

See the [Release Strategy](../../docs/ops/RELEASE_STRATEGY.md) and the [ROADMAP](../../ROADMAP.md):

- [ ] Base is the active `release/v3.8.x` branch (the highest open `release/v*`), not `main`
- [ ] I understand that from 3.8.55 on, feature PRs are held with the `v4-feature` label and
re-targeted to the v4 channel (`develop`) when it opens β€” they are not closed

## Design

- Where does the code live (route / handler / executor / service / DB module / UI)?
- New settings, env vars, feature flags, DB migrations, or MCP tools? List them.
- Is it opt-in? Data-mutating behavior must be off by default.

## Validation

Choose the focused loop for your change type from the
[Contribution Golden Path](../../docs/ops/CONTRIBUTION_GOLDEN_PATH.md). The full unit suite,
Vitest, the 60% coverage gate, and the production build all run in CI on this PR:

- [ ] Change type: provider / routing / UI / i18n / CLI / DB / build-deploy / other
- [ ] Focused tests and category gates from the golden path
- [ ] `npm run lint`
- [ ] New production code ships with new automated tests in this PR
- [ ] Docs updated for every new endpoint, env var, CLI command, or setting
- [ ] New UI strings added to the i18n catalogs

## Tests Added Or Updated

- List every changed or added automated test file.

## Reviewer Notes

- Risky areas, migrations, feature flags, or manual validation reviewers should know about.
2 changes: 1 addition & 1 deletion .github/actions/npm-ci-retry/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# npm ci with retry

This action installs the checkout dependencies with up to three attempts and restores a node_modules tree only when its complete cache key matches. Node, the lockfile, project npm configuration, postinstall helpers and the action itself participate in the key.
This action installs the checkout dependencies with up to three attempts and restores a node_modules tree only when its complete cache key matches. Node, npm, lockfile, project npm configuration, postinstall helpers and the action itself participate in the key. Cached and freshly installed trees still pass the existing native-runtime verification.

The installation step sets `ONNXRUNTIME_NODE_INSTALL=skip` before invoking npm. ONNX Runtime reads this environment variable directly, so skipping its additional CUDA installation does not depend on npm forwarding the custom `.npmrc` key. The repository retains that key temporarily; its npm warning can therefore remain.

Expand Down
29 changes: 28 additions & 1 deletion .github/actions/npm-ci-retry/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,26 @@ inputs:
runs:
using: composite
steps:
- name: Select the lockfile-compatible npm version
id: npm
shell: bash
run: |
set -euo pipefail
expected=$(node -p "require('./config/ci/toolchain.json').npm")
if ! [[ "$expected" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Invalid pinned npm version" >&2
exit 1
fi
if [ "$(npm --version)" != "$expected" ]; then
npm install --global "npm@$expected" --no-audit --no-fund
fi
actual=$(npm --version)
if [ "$actual" != "$expected" ]; then
echo "npm version differs from the lockfile toolchain" >&2
exit 1
fi
echo "version=$actual" >> "$GITHUB_OUTPUT"

- name: Resolve Node version for the cache key
id: node
shell: bash
Expand All @@ -35,7 +55,7 @@ runs:
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: node_modules
key: node-modules-${{ runner.os }}-${{ runner.arch }}-${{ steps.node.outputs.version }}-${{ hashFiles('package-lock.json', '.npmrc', 'scripts/build/postinstall.mjs', 'scripts/build/postinstallSupport.mjs', 'scripts/build/colocateOptionals.mjs', 'scripts/build/wreqJsNative.mjs', 'scripts/build/fixPlaywrightAndroid.mjs', 'scripts/build/native-binary-compat.mjs', 'scripts/build/betterSqlitePrebuildTarget.mjs', '.github/actions/npm-ci-retry/action.yml') }}
key: node-modules-v3-${{ runner.os }}-${{ runner.arch }}-${{ steps.node.outputs.version }}-${{ steps.npm.outputs.version }}-${{ hashFiles('package-lock.json', '.npmrc', 'scripts/build/postinstall.mjs', 'scripts/build/postinstallSupport.mjs', 'scripts/build/colocateOptionals.mjs', 'scripts/build/wreqJsNative.mjs', 'scripts/build/fixPlaywrightAndroid.mjs', 'scripts/build/native-binary-compat.mjs', 'scripts/build/betterSqlitePrebuildTarget.mjs', 'scripts/ci/verify-ci-install.mjs', '.github/actions/npm-ci-retry/action.yml') }}

- name: npm ci (with retry)
if: steps.node-modules.outputs.cache-hit != 'true'
Expand Down Expand Up @@ -68,6 +88,13 @@ runs:
delay_seconds=$((delay_seconds * 2))
done

# Both cache hits and successful installs must execute the native runtimes.
# A package directory alone cannot prove ABI compatibility or a usable binary.
- name: Verify installed native runtimes
id: verify-install
shell: bash
run: node scripts/ci/verify-ci-install.mjs

- name: node_modules restored from cache
if: steps.node-modules.outputs.cache-hit == 'true'
shell: bash
Expand Down
41 changes: 41 additions & 0 deletions .github/labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Declarative GitHub labels for the 3.8.5x -> 3.9.0 LTS release rail.
#
# Synced by `npm run labels:sync` (scripts/release/sync-labels.mjs): dry-run by
# default, `-- --apply` to create/update. Only the labels listed here are managed;
# labels missing from this file are never touched or deleted.
#
# Pre-existing operational labels (`queue`, `release-freeze`, `base-red`, ...) are
# intentionally NOT listed β€” they keep their current meaning and colors.
#
# Model: docs/ops/RELEASE_STRATEGY.md
#
# Fields: name (required), color (QUOTED 6-digit hex - unquoted values like 5319E7 or
# 012345 are parsed by YAML as numbers), description (<= 100 chars).

- name: v4-feature
color: "1D76DB"
description: Feature PR held for the v4 channel (develop); re-targeted when it opens

- name: lts
color: "0E8A16"
description: Belongs to the v3 LTS line (stable/v3) - fixes, security, provider updates

- name: forward-port
color: "C5DEF5"
description: Fix forward-ported from stable/v3 to develop with original-author credit

- name: channel:latest
color: "2EA44F"
description: Ships on the npm `latest` dist-tag (v3 until 4.0 GA)

- name: channel:next
color: "FBCA04"
description: Ships on the npm `next` dist-tag (v4 release candidates)

- name: channel:nightly
color: "5319E7"
description: Ships on the npm `nightly` dist-tag (v4 develop builds)

- name: preview-artifact
color: "BFDADC"
description: Requests a PR preview build artifact (dormant until the 3.8.58 rehearsal)
10 changes: 10 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@
- Closes #
- Related to #

## Target Branch

See the [Release Strategy](../docs/ops/RELEASE_STRATEGY.md), the
[Contribution Golden Path](../docs/ops/CONTRIBUTION_GOLDEN_PATH.md) and the
[ROADMAP](../ROADMAP.md):

- [ ] Base is the active `release/v3.8.x` branch (the highest open `release/v*`), not `main`
- [ ] New feature? From 3.8.55 on it is held with the `v4-feature` label for the v4 channel
- Focused templates: append `?template=feature.md` or `?template=bugfix.md` to the compare URL

## Validation

Choose the change type and focused loop from the
Expand Down
29 changes: 29 additions & 0 deletions .github/workflows/base-ci-repair.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Release base repair
on:
push:
branches: [fix/release-v3.8.52-basereds]
permissions:
contents: read
jobs:
regression:
runs-on: ubuntu-latest
timeout-minutes: 12
env:
CI: "true"
OMNIROUTE_SKIP_SYSTEM_TRUST: "1"
DISABLE_SQLITE_AUTO_BACKUP: "true"
NEXT_TELEMETRY_DISABLED: "1"
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1"
OMNIROUTE_MAX_TEST_WORKERS: "2"
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
fetch-depth: 0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020
with:
node-version: "24"
- name: Verify old failure and final guarded transport
run: node scripts/check/base-ci-repair.mjs
- name: Clean owned state
if: always()
run: rm -rf -- .ci-work/base-ci-repair
12 changes: 9 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,15 @@ jobs:
run: |
npm run build:release
env:
NODE_OPTIONS: "--max-old-space-size=12288"
OMNIROUTE_BUILD_MEMORY_MB: "12288"
OMNIROUTE_USE_TURBOPACK: "1"
# Hosted artifact builds run with less memory than the opt-in 64 GB
# CI build slot. Keep Webpack here without overriding the latter's
# separately measured Turbopack policy (#16169). Validated 2026-10-18 on the
# hosted runner (run 39151150605): webpack compiled in 7.1 min, job 17 min.
# This is the floor docker-publish.yml must not go below
# (tests/unit/docker-publish-build-heap-14325.test.ts).
NODE_OPTIONS: "--max-old-space-size=10240"
OMNIROUTE_BUILD_MEMORY_MB: "10240"
OMNIROUTE_USE_TURBOPACK: "0"

- name: Archive build outputs
run: |
Expand Down
Loading