Skip to content
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
3047 commits
Select commit Hold shift + click to select a range
4220c81
fix(resilience): include RFC1918, CGNAT, and mDNS hosts in isLocalPro…
rqzbeh Aug 22, 2026
367ae2f
fix(search): enforce blockedProviders setting on search endpoint (#11…
rqzbeh Aug 22, 2026
b2509bc
fix(release): drain v3.8.50 base-reds β€” getTokenLimit contract, vi i1…
diegosouzapw Aug 22, 2026
aa12873
fix(providers): remove Hack Club AI provider (#11118) (#11123)
rqzbeh Aug 22, 2026
56540f2
fix(api): save call logs and add endpoint fallback for local rerank p…
AndrianBalanescu Aug 22, 2026
80d931a
fix(logs): apply filter predicates to merged in-memory call-log rows …
AndrianBalanescu Aug 22, 2026
e15af18
fix(kimi): point kimi-web to international www.kimi.ai (#11045)
MeRezaRezaei Aug 22, 2026
7360ca4
feat(redis): add configurable key namespace prefix (#11042)
MeRezaRezaei Aug 22, 2026
445121f
docs: DEFAULT_RATE_LIMIT_PER_DAY unset is unlimited (#11031)
Prajeeth-12 Aug 22, 2026
c19c73f
fix(claude): restore canonical tool names so Claude Code accepts tool…
linhdmn Aug 22, 2026
5818cfb
docs(cli): update opencode.ts JSDoc to reflect 128k context fallback …
rqzbeh Aug 22, 2026
64b7389
fix(tests): update translate-path golden snapshot and docs for hailuo…
rqzbeh Aug 22, 2026
d3ac1a6
refactor(dashboard): mirror check button disable state in AddApiKeyMo…
rqzbeh Aug 22, 2026
ec6010f
fix(cli): resolve blank device code and undefined verification URL in…
rqzbeh Aug 22, 2026
805252a
feat(mcp): implement dynamic runtime tool schema plumbing for blocked…
rqzbeh Aug 22, 2026
7246e5a
fix(bun): update Dockerfile.bun entrypoint and native bun:sqlite inst…
rqzbeh Aug 22, 2026
de5e237
feat(ci): publish Bun container images (-bun and -web-bun) in Docker …
rqzbeh Aug 22, 2026
2edb7a1
fix(dashboard): keep the provider registry out of node:net (#11122) (…
yourspraveen Aug 22, 2026
ce66d31
fix(quality): drain v3.8.50 base-reds β€” doc counts + orphan uncloseai…
yourspraveen Aug 22, 2026
92ef3c7
fix(resilience): honor shared-registry passthrough providers (#11071)…
yourspraveen Aug 22, 2026
f387575
fix(memory): treat TokenRouter as system-must-be-first (live HTTP 400…
ggdayup Aug 23, 2026
b384455
fix(api): refuse creating a routing combo without any model (#11162)
maxmad64bis Aug 23, 2026
1058426
fix(executors): rotate on upstream 400 empty-body rejections (opencod…
maxmad64bis Aug 23, 2026
60f25ef
fix(sse): merge purify_history compression notice into the leading sy…
ggdayup Aug 23, 2026
80b8d2a
fix(sse): resume stream recovery after a clean stop with reasoning-on…
maxmad64bis Aug 23, 2026
62ab93d
fix(sse): reject a low-overlap stream-recovery continuation instead o…
maxmad64bis Aug 23, 2026
eb9fa33
feat(api): structured ?format=json for the self-service usage endpoin…
diegosouzapw Aug 23, 2026
3ef54fc
feat(api): return every connection's snapshot under providers[] in om…
diegosouzapw Aug 23, 2026
eb57973
feat(dashboard): add CheaperInference sponsor banner and route banner…
diegosouzapw Aug 23, 2026
d888f1a
fix(combo): accept SSE comment lines (e.g. OpenRouter keep-alives) in…
asorourx Aug 23, 2026
e73ab00
fix(codex): make remote compaction V2 complete reliably (#11041)
jackjinke Aug 23, 2026
2300171
fix(resilience): drain heavyweight SSE on SIGTERM (#11020)
RaviTharuma Aug 23, 2026
e52d2db
fix(compression): CCR must not strand prompts for callers without the…
HouMinXi Aug 23, 2026
c018bb4
fix(catalog): declare GLM reasoning effort tiers (#10963)
xz-dev Aug 23, 2026
9689dce
fix(reasoning): preserve mixed plaintext and drop incompatible state …
jackjinke Aug 23, 2026
2dd2033
feat(providers): add Logfare as a free OpenAI-compatible provider (#1…
jonlwheat2-gif Aug 23, 2026
79c5bdf
fix(release): repair v3.8.50 base-red tail after latest root lift (#1…
backryun Aug 23, 2026
f131b64
fix(security): add test coverage for Tier 1 local-only route guard pr…
rqzbeh Aug 23, 2026
b25b2ea
refactor(dashboard): format custom provider quota keys into title-cas…
rqzbeh Aug 23, 2026
47147e0
fix(auth): replace router.push with window.location navigation after …
rqzbeh Aug 23, 2026
8fa3e31
fix(sse): unpin static Antigravity sessionId and add DNS retry classi…
rqzbeh Aug 23, 2026
c92bd40
perf(proxy): implement non-blocking async proxy log batching and perf…
rqzbeh Aug 23, 2026
376b49d
fix(ratelimit): keep operator minTime floor when relaxing on headroom…
pacocartones Aug 23, 2026
b6fc559
fix(providers): g4f.space sub-providers no longer advertise a free ti…
pacocartones Aug 23, 2026
8c73386
fix(routing): forward lkgpEnabled into RoutingContext so the LKGP tog…
pacocartones Aug 23, 2026
a966c75
fix(routing): keep keyless custom-compatible connections in the auto/…
pacocartones Aug 23, 2026
8d6870f
fix(analytics): classify opencode-go as a flat-rate subscription (#11…
pacocartones Aug 23, 2026
5853e22
fix(resilience): route chat by per-connection synced model inventory …
pacocartones Aug 23, 2026
17897cc
test(services): align adoption tests with the opt-in contract from #1…
diegosouzapw Aug 23, 2026
0a7bd62
fix(i18n): complete vi parity for cheaperInferenceSponsorBanner (#11208)
diegosouzapw Aug 23, 2026
dea5345
fix(mcp): honor the mcp:connect carve-out in transport route guards (…
HouMinXi Aug 23, 2026
a255488
fix(oauth): recover connections stuck on upstream 400 after token sta…
HouMinXi Aug 23, 2026
1f6e781
feat(search): add context7 as a library-docs search and fetch provide…
HouMinXi Aug 23, 2026
957c1c6
docs(i18n): clarify embedded services purpose for beginners (#11204)
ignamiranda Aug 23, 2026
c1e9fbf
feat(dashboard): orient users before API key management (#11195)
ignamiranda Aug 23, 2026
7e57354
feat(dashboard): frame ACP as optional advanced setup (#11206)
ignamiranda Aug 23, 2026
dfe73f4
Beginner UX: lead resilience page with plain-language reassurance (#1…
ignamiranda Aug 23, 2026
ef8414b
Beginner UX: interpret health status with plain-language verdict (#11…
ignamiranda Aug 23, 2026
35a34ac
Beginner UX: lead batch page with stable outcome header (#11227)
ignamiranda Aug 23, 2026
8a42aee
Beginner UX: guided endpoint connection header (#11228)
ignamiranda Aug 23, 2026
2264cff
fix(ci): finish greening release/v3.8.50 base (#9985, #11203) (#11201)
jonlwheat2-gif Aug 23, 2026
98289a8
fix(sse): stop keyless pollinations 401s from poisoning the noauth po…
jonlwheat2-gif Aug 23, 2026
0fe1bb2
fix(routing): preserve combo precedence and skip hidden models in ali…
SCys Aug 23, 2026
0b41259
fix(search): fall back to duckduckgo-free when no search provider is …
Egorich-print Aug 23, 2026
6e9553e
pricing: note DeepSeek peak is weekdays only (#11210)
xyzs996 Aug 23, 2026
1135cbe
feat(cli-tools): add Prime Agent to the CLI agents catalog (#11166)
arminanton Aug 23, 2026
7af14d2
fix(codex): prefer max_context_window over context_window as the usab…
excessivechaos Aug 23, 2026
e66181b
fix(sse): append synthetic user turn for GLM-family upstreams (400 [1…
linhdmn Aug 23, 2026
3d8448b
fix(sse): floor muse-spark output budget to prevent empty-content 502…
linhdmn Aug 23, 2026
fb421bc
fix(build): spawn esbuild cross-platform in the postbuild hook (#11159)
aliyosufi Aug 23, 2026
8d59ab3
feat(cli): detach tray mode from terminal (#11230)
tuandinh0801 Aug 23, 2026
84bd382
fix(kie): map the Nano Banana 2 Market id to its KIE upstream id (#11…
xiaoyaner0201 Aug 23, 2026
90ba281
fix(sse): default single-target incompatible reasoning to drop for ag…
adevwithpurpose Aug 23, 2026
c836919
fix: add AWS Polly signing credentials (#11207)
rafacpti23 Aug 23, 2026
968fa96
feat: guide Qdrant memory configuration (#11213)
rafacpti23 Aug 23, 2026
8f390ef
feat(codex): self-contained codex app-server transport (executor + pr…
arminanton Aug 23, 2026
855243a
fix(dashboard): repair EndpointPageClient JSX + place guided header i…
hartmark Aug 23, 2026
a7e09ed
fix(dashboard): restore ProviderModelsModal map broken by #11228 (bas…
diegosouzapw Aug 23, 2026
b81f2b6
fix(build): align pack-boot sql.js expectations with dependency-based…
diegosouzapw Aug 23, 2026
7fdd2e0
fix(sse): learn accepted reasoning_effort sets and clamp downgrade-on…
maxmad64bis Aug 23, 2026
a054ac4
feat(providers): allow per-connection maxWaitMs rate-limit override (…
maxmad64bis Aug 23, 2026
34463f6
docs(i18n): restore Italian README translation (#11246)
Natizh Aug 23, 2026
158c6ec
fix(embeddings): honor configured LM Studio connection URL via lm-stu…
diegosouzapw Aug 23, 2026
162ef91
fix(usage): order quota windows chronologically on every provider car…
pacocartones Aug 23, 2026
e0a22ff
test(cli): make the CLI suite pass on Windows (#11240)
pacocartones Aug 23, 2026
a55ee5d
feat(combo): make the global attempt budget operator-configurable (#1…
pacocartones Aug 23, 2026
e32b926
fix(cli): resolve dynamic imports to file:// URLs so the DB fallback …
pacocartones Aug 23, 2026
578db86
fix(cli): complete Windows cliproxy platform handling + pid probe (#1…
diegosouzapw Aug 23, 2026
af90cb7
docs(i18n): improve and complete Turkish documentation translations (…
ismailcelik-tr Aug 23, 2026
b5e4c2c
docs(i18n): add complete Persian user guide translation (#11254)
crmbadesaba-commits Aug 23, 2026
5cf1602
fix(cli): real OpenRouter key validation + auth export argument wirin…
diegosouzapw Aug 23, 2026
5b92dbd
feat(lint): add no-unused-vars ratchet scoped to src+open-sse+tests (…
maxmad64bis Aug 23, 2026
92a083a
fix(resilience): honor dashboard quota snapshots in opencode-go prefl…
diegosouzapw Aug 23, 2026
7c2dba0
feat(monitoring): expose structural chat admission snapshot + shed co…
diegosouzapw Aug 23, 2026
00c80fd
feat(models): surface learned reasoning_effort sets in catalog, varia…
maxmad64bis Aug 23, 2026
d077e88
fix(providers): complete Hack Club AI removal from shared catalog (#1…
diegosouzapw Aug 23, 2026
527da65
feat: list embeddings from configured providers (#11249)
rafacpti23 Aug 23, 2026
bdf63d2
fix(security): harden codex app-server transport (#11205 post-merge r…
diegosouzapw Aug 23, 2026
1027682
Integration: security tier + self-hosted operator blockers (rebased o…
arminanton Aug 23, 2026
9adeb3b
fix(providers): clamp reasoning_effort to the declared vocabulary of …
linhdmn Aug 23, 2026
ab150e1
test(startup): assert disabled boot path log output at runtime (#1101…
Prajeeth-12 Aug 23, 2026
12986c4
fix(live-ws, dashboard): allow 0.0.0.0 dashboard origin and stop non-…
Minamaged18 Aug 23, 2026
6d4c484
fix(ollama): route models by advertised capability (#11087) β€” port of…
yourspraveen Aug 23, 2026
3abbb60
Beginner UX: soft first-run readiness card on Home (#11282)
ignamiranda Aug 23, 2026
14d70a7
fix: resolve CLI mcp call protocol issues (BUG-001) (#10960)
YunyunZhai Aug 23, 2026
29caad9
feat(sse): discover Anthropic partner models on Vertex AI (#11279)
maci0 Aug 23, 2026
2764812
fix(providers): eliminate Gemini 3.5 Flash
backryun Aug 23, 2026
6158c9a
fix: drop stray conflict leftover in managedModelImport (#11259 cherr…
hartmark Aug 23, 2026
2904cf8
fix(security): clear new CodeQL code-scanning alerts (round 4) (#11293)
diegosouzapw Aug 23, 2026
d137368
fix(oauth): stop overwriting Kiro connections that share a profile AR…
engenhariaandrereis01-ai Aug 23, 2026
7cec8e3
Beginner UX: Essentials sidebar preset (#11286)
ignamiranda Aug 23, 2026
92f5860
Beginner UX: purpose-first Traffic Inspector header (#11283)
ignamiranda Aug 23, 2026
9cb91de
fix(security): close round-3 advisories (v7g9, x7vm, j7j4, jcm5) + ex…
diegosouzapw Aug 23, 2026
67fba53
fix(tests): drain base-red cluster from 2026-08-23 merges (#9985) (#1…
diegosouzapw Aug 23, 2026
7913447
docs(db): align cache guide with runtime settings (#11018) (#11294)
RaviTharuma Aug 24, 2026
d9a883e
docs(openapi): declare spec endpoint management auth (#11299)
RaviTharuma Aug 24, 2026
a3c3117
fix(translator): preserve omitted subagent session IDs (#11297)
ofonseca-pyming Aug 24, 2026
1e81e52
fix(opencode-plugin): track active release branch in CI + align combo…
diegosouzapw Aug 24, 2026
d282ec7
fix(providers): don't silently enable rate-limit protection on PATCH …
diegosouzapw Aug 24, 2026
3daa455
fix(memory): avoid rejected mid-conversation system injection on Clau…
diegosouzapw Aug 24, 2026
5518916
fix(chat): detect severity-classifier format in claudeClassifierCompa…
diegosouzapw Aug 24, 2026
8969526
fix(tests): drain compression/kiro/memory/i18n base-red mini-cluster …
diegosouzapw Aug 24, 2026
3192eb8
fix(providers): unify learned and declared reasoning-effort clamps on…
diegosouzapw Aug 24, 2026
07d1816
fix(providers): hidden models leak into GET /v1/models (#11300) (#11309)
diegosouzapw Aug 24, 2026
ac02c5b
fix(resilience): don't clear an active rate-limit cooldown for non-qu…
diegosouzapw Aug 24, 2026
adca3b8
fix(kie): map remaining google-imagen Market ids to their real KIE up…
diegosouzapw Aug 24, 2026
c3698ee
fix(dashboard): route the Adapta tutorial CTA through the branded sho…
diegosouzapw Aug 24, 2026
8d6f91b
fix(security): refuse proxy-authorization and proxy-authenticate upst…
ntdat812 Aug 24, 2026
24ac714
test(db): make singleton reset survive the full suite and un-skip the…
pacocartones Aug 24, 2026
04b2c47
fix(i18n): restore three placeholders dropped from the pt catalogue (…
ntdat812 Aug 24, 2026
79f8ae9
fix(i18n): add the 3 pt-BR CLI keys that break the locale parity test…
pacocartones Aug 24, 2026
6984676
fix(quality): report the real failure line and stop double-counting c…
pacocartones Aug 24, 2026
5ee646e
fix(github): verify access tokens during health checks (#11320)
RaviTharuma Aug 24, 2026
cb11592
fix(db): judge the proxy URL host by address, not by spelling (#11319)
ntdat812 Aug 24, 2026
29f2629
feat(compression): isolate sync engines in bounded worker pool (#11318)
RaviTharuma Aug 24, 2026
9b14896
feat(api): add Google AI Studio Gemini TTS (#11315)
RaviTharuma Aug 24, 2026
c21460f
fix(lint): drain release-green hard failures on release/v3.8.50 (#998…
jonlwheat2-gif Aug 24, 2026
c3cd1f9
feat(services): expose sanitized CLIProxyAPI account health (#11314)
RaviTharuma Aug 24, 2026
690f684
feat(audio): add native ElevenLabs HTTP compatibility routes (#11312)
RaviTharuma Aug 24, 2026
6945bba
fix(db): escape regex metacharacters in group model patterns (#11311)
ntdat812 Aug 24, 2026
338c05d
fix(models): expose Ollama Cloud native effort tiers (#11307)
ekinnee Aug 24, 2026
dafb4ae
fix(deps): keep unused pnpm peers out of production (#11342)
diegosouzapw Aug 24, 2026
38969ad
fix(video-bridge): render timestamped contact sheets
diegosouzapw Aug 24, 2026
2f18a85
docs(changelog): link Video Bridge contact-sheet fix
diegosouzapw Aug 24, 2026
d2cea08
fix(video): harden result cache identity and bounds
diegosouzapw Aug 24, 2026
e2e48fd
docs(changelog): link Video Bridge cache fix PR
diegosouzapw Aug 24, 2026
f54c93c
fix(video): key download flights with process HMAC
diegosouzapw Aug 24, 2026
d4ade9d
fix(video): separate tenant scope from download hash
diegosouzapw Aug 24, 2026
22086a7
fix(video-bridge): validate structural segment sampling
diegosouzapw Aug 24, 2026
93135f8
feat(guardrails): add focused video analysis mode
diegosouzapw Aug 24, 2026
05e76d6
docs(changelog): link FU-07 pull request
diegosouzapw Aug 24, 2026
38d21af
docs(changelog): link FU-04 pull request
diegosouzapw Aug 24, 2026
12b8df0
fix(catalog): keep large builds event-loop responsive (#11367)
diegosouzapw Aug 24, 2026
fdcd15e
docs(openapi): document try proxy operation (#11363)
diegosouzapw Aug 24, 2026
b010d8b
docs(readme): reconcile v3.8.50 metrics and contributors (#11356)
diegosouzapw Aug 24, 2026
c6963ca
fix(changelog): require verified reconciliation ledger (#11345)
diegosouzapw Aug 24, 2026
761d38f
fix(video): harden result cache identity and coalescing (#11362)
diegosouzapw Aug 24, 2026
7715825
fix(video): harden visual frame deduplication (#11382)
diegosouzapw Aug 24, 2026
c83116e
fix(video): isolate drill-down cache by principal (#11369)
diegosouzapw Aug 24, 2026
c8ad44e
merge #11350 onto updated tip
hartmark Aug 24, 2026
d23bfef
merge #11383 onto updated tip
hartmark Aug 24, 2026
04d2a60
fix(video): make one-frame scene sampling deterministic (#11344)
diegosouzapw Aug 24, 2026
e589831
sync with tip before push
hartmark Aug 24, 2026
9fedc1c
merge #11381 onto updated tip
hartmark Aug 24, 2026
0b7ac87
sync with tip before push
hartmark Aug 24, 2026
9df3f89
fix(build): stop bundling the better-sqlite3 stub at runtime (#11343)…
diegosouzapw Aug 24, 2026
644dd32
fix(cli): resolve tray runtime import to a file:// URL so --tray work…
pacocartones Aug 24, 2026
2af1326
fix(catalog): add Stealth Ox Alpha (stealth/ox-alpha) to the openrout…
stanleytejakusuma Aug 24, 2026
028f1b9
fix(release): count sweep-stale matches by their real category in the…
pacocartones Aug 24, 2026
8301984
fix(i18n): complete zh-CN/zh-TW CLI locales and guard their parity (#…
pacocartones Aug 24, 2026
f88aa48
test(db): make exclusive-connection-lease uniqueness test self-contai…
pacocartones Aug 24, 2026
e1c2b34
fix(quota): parse absolute ISO datetime reset timestamps in weekly qu…
sprintberlin Aug 24, 2026
315b0a9
fix(resilience): preserve active cooldowns during recovery and probes…
sprintberlin Aug 24, 2026
6de542b
fix(providers): mark Antigravity connects with no Cloud Code projectI…
rqzbeh Aug 24, 2026
378eff0
fix(combo): pre-skip targets with persisted connection cooldown and r…
sprintberlin Aug 24, 2026
077bc1a
fix(compression): use pathToFileURL for workerUrl to prevent bundler …
TheDemonTuan Aug 24, 2026
37e7191
fix(translator): preserve functionCall id in Gemini to OpenAI request…
Siva010 Aug 24, 2026
dfc9257
fix(cli): spawn npm the way Windows needs in `omniroute update` (#11374)
ntdat812 Aug 24, 2026
019ad33
fix(auth): keep the real upstream reason in lastError (#11376)
ntdat812 Aug 24, 2026
9f30b76
fix(live-ws): resolve the public socket URL at runtime (#11377)
ntdat812 Aug 24, 2026
20de0d9
fix(usage): parse CREDIT_LIMIT rows from z.ai coding-plan quota API (…
Neuron-Mr-White Aug 24, 2026
095f424
fix(sse): spare live user message across all aggressive compression s…
HouMinXi Aug 24, 2026
3c2906a
fix(sse): kill entire process tree on Linux for adobe firefly sign-in…
HouMinXi Aug 24, 2026
440113c
fix(dashboard): align sync interval slider ticks via magnetic checkpo…
An0nym0us92 Aug 24, 2026
2544ee9
feat: enable Linux PATH inheritance for autostart & extend loginShell…
ziuus Aug 24, 2026
13e29f2
fix(translator): preserve Claude tool call state
NicolasDuranGarces Aug 24, 2026
243445f
docs(changelog): record Codex tool call fix
NicolasDuranGarces Aug 24, 2026
f58e8be
fix(opencode): close Muse Responses streams at completion
AStupidBear Aug 24, 2026
d732cf6
feat(volcengine): add Ark plan providers
Aug 13, 2026
76ac1c8
feat(volcengine): live model discovery for Ark plan providers
Aug 17, 2026
3415050
fix(volcengine): retain API-callable Agent Plan models
Aug 18, 2026
07a378c
feat(volcengine): switch Agent Plan discovery to ListAgentPlanLatestM…
Aug 19, 2026
8f15b79
feat(volcengine): phone/SMS auto-login for console with MFA + identit…
Aug 21, 2026
815c7c2
fix(volcengine): exempt volcengine-console from the -web naming conve…
Aug 24, 2026
93da24c
fix(providers): reject reserved provider prefixes on compatible-node …
ggdayup Aug 24, 2026
0a53c8a
test(providers): update reserved-prefix count fixture to 391 after up…
ggdayup Aug 24, 2026
dfc5b5e
perf(providers): lazy validate provider schema on demand to reduce st…
hartmark Aug 24, 2026
406f452
chore(quality): rebaseline file-size for #11355/#11344/#11381/#11362/…
hartmark Aug 24, 2026
71eeaf2
fix(combo): reconcile #11360 retry-loop persisted-cooldown recheck re…
hartmark Aug 24, 2026
b1fdfd5
fix(sse): preserve auto-selected first target (#11399)
jacobsparts Aug 24, 2026
ddee064
fix(sse): preserve auto scoring order (#11400)
jacobsparts Aug 24, 2026
7b36e45
fix(dashboard): normalize explicit auto weights (#11402)
jacobsparts Aug 24, 2026
56d64e2
fix(dashboard): expose custom mode-pack option (#11407)
jacobsparts Aug 24, 2026
bbc7bf4
fix(authz): match exact public routes exactly, not as prefixes (#11417)
diegosouzapw Aug 24, 2026
8bbe92c
fix(docker): size the Next build worker pool for a 16 GB runner (#11419)
diegosouzapw Aug 24, 2026
d5d730c
test(kimi): stop drawing the refresh window inside the assertion (#11…
ntdat812 Aug 24, 2026
f93fecd
fix(dashboard): honour the live WebSocket port the handshake reports …
ntdatt812 Aug 24, 2026
11cbd7d
fix(models): normalize media endpoint metadata (#11397)
marcelokarval Aug 24, 2026
9464792
feat(sse): add glm-5.3-max explicit effort tier (#11415)
phuongddx Aug 24, 2026
59dccdd
fix(security): sanitize agent-card topology, anti-spoof login rate-li…
HouMinXi Aug 24, 2026
b24cc53
fix(quality): drain the two Fast Quality Gates base-reds (#11438)
diegosouzapw Aug 24, 2026
1d0c5a3
fix(security): match cookie domains by suffix, not substring (#11429)
diegosouzapw Aug 24, 2026
f95b03d
chore(release): back-merge main into release/v3.8.50 (ours) to unbloc…
backryun Aug 24, 2026
e3e188e
fix(release): restore #10534 quota recovery and validate the volcengi…
diegosouzapw Aug 25, 2026
fc0d619
fix(release): drain the v3.8.50 docs/golden/GLM base-reds and restore…
diegosouzapw Aug 25, 2026
93c798c
test(a2a): call the agent-card route handlers with a NextRequest
diegosouzapw Aug 25, 2026
7de2643
test(router-eval): give spawned CLI children an explicit DATA_DIR
diegosouzapw Aug 25, 2026
80f107d
test(quota): freeze the clock in the GLM absolute-ISO-reset regressio…
diegosouzapw Aug 25, 2026
b4a636c
test(providers): use a non-reserved prefix in the CC-compatible node …
diegosouzapw Aug 25, 2026
ae126da
fix(quality): drain the three v3.8.50 inventory/coverage base-reds
diegosouzapw Aug 25, 2026
e4f730a
fix(release): drain two v3.8.50 base-reds (volcengine vision metadata…
diegosouzapw Aug 25, 2026
1249f71
fix(cli): do not treat a tmpfs mount as proof a config path reaches t…
diegosouzapw Aug 25, 2026
543bf99
chore(docs): commit the next-dev agent-rules block into AGENTS.md
backryun Aug 25, 2026
588c683
docs(changelog): aggregate the 363 changelog.d fragments into [3.8.50]
backryun Aug 25, 2026
1e705fd
docs(changelog): reconcile the v3.8.50 section with the cycle's uncov…
backryun Aug 25, 2026
5e370c2
docs(changelog): date the 3.8.50 header, inject contributors and sync…
backryun Aug 25, 2026
3d59c66
fix(ci): raise the unit-shard heap ceiling to 8192 MB to stop the SIG…
backryun Aug 25, 2026
b6a4739
fix(ci): set NODE_OPTIONS on the unit-shard step and prune stale esli…
backryun Aug 25, 2026
5eccbfa
fix(ci): drain four inherited base-reds in packaging, electron and in…
backryun Aug 25, 2026
dd3a0f0
test(vitest): realign five sibling-test contracts unmasked by the gre…
backryun Aug 25, 2026
486a265
fix(i18n): unstale trafficInspectorSubtitle across 32 locales and reg…
backryun Aug 25, 2026
79478a6
test(vitest): pay heavy module imports at collection time, not out of…
backryun Aug 25, 2026
7790b0d
test(integration): realign three suites to security and version contr…
backryun Aug 25, 2026
c51d742
fix(ci): drain the electron packaging regression, the models-catalog …
backryun Aug 25, 2026
091e2ba
test(ui): unmount before asserting so the auto-sync timer cannot outl…
backryun Aug 25, 2026
37d784b
fix(search): prefer the configured search connection over duckduckgo-…
backryun Aug 25, 2026
45fde4f
fix(api): restore the after() injection point for the /v1/models SWR …
backryun Aug 25, 2026
2dfb730
fix(sse): stop re-summarizing a universal handoff that never parses
backryun Aug 25, 2026
a11930e
fix(sse): honor per-step connection pins instead of rotating accounts…
backryun Aug 25, 2026
01c40d7
fix(ci): point the pack-artifact provenance gate at the branch under …
backryun Aug 25, 2026
b212a5a
test(dashboard): open the proxy toolbar overflow menu before bulk assign
backryun Aug 25, 2026
7cde116
fix(dashboard): restore expert-mode manual model entry in the combo b…
backryun Aug 25, 2026
32470f3
test(api): accept the post-#9320 auth gate on the /v1/models e2e check
backryun Aug 26, 2026
7afacf6
chore(quality): refresh the combos-page eslint suppressions after the…
backryun Aug 26, 2026
3822186
docs(changelog): add fragments for the nine post-reconciliation commits
backryun Aug 26, 2026
fc185d9
docs(changelog): correct the #11552 waste figure to the measured rate
backryun Aug 26, 2026
7448780
fix(cli): restore the full health view for the loopback CLI (check:pa…
backryun Aug 26, 2026
031e765
test(authz): stop skipping the loopback coverage and re-point the Hos…
backryun Aug 26, 2026
ee24799
chore(quality): freeze the 215 pre-existing eslint errors the CI cach…
backryun Aug 26, 2026
0915890
revert(quality): drop the 150 phantom eslint suppressions frozen from…
backryun Aug 26, 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
  •  
  •  
  •  
201 changes: 201 additions & 0 deletions .cbmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
# codebase-memory-mcp ignore list
#
# PadrΓ£o gitignore-style. Linhas comeΓ§ando com `#` sΓ£o comentΓ‘rios.
# Barra final (`/`) = sΓ³ diretΓ³rio. Sem barra = casa arquivo OU diretΓ³rio.
#
# O CBM tambΓ©m lΓͺ `.gitignore` automaticamente β€” esta lista deixa explΓ­cito o que
# os hooks do CBM vΓ£o pular. Se uma regra entrar em conflito entre os dois arquivos,
# vale a uniΓ£o. Editar este arquivo Γ© mais barato do que confiar na heranΓ§a implΓ­cita.
#
# Última reconciliação: 2026-07-31, status `ready` (513k nodes / 689k edges),
# `auto_index_limit=50000`, total indexΓ‘vel medido β‰ˆ11.546 arquivos (folga 4,3Γ—).
#
# Fontes cruzadas:
# - `codebase-memory-mcp cli index_status --project home-diegosouzapw-dev-proxys-OmniRoute`
# β†’ `not_indexed.dirs` (27) + `not_indexed.files` (336), todos `BY DESIGN`.
# - `.gitignore` deste repo (5.691 B) β€” fonte canΓ΄nica secundΓ‘ria.
#
# Como auditar mudanΓ§as: depois de editar este arquivo, rodar `index_repository`
# (ou esperar `auto_watch` re-indexar) e re-checar `cli index_status` β†’ comparar
# contagens em `not_indexed.dirs_count` e `not_indexed.files_count`.

# ─────────────────────────────────────────────────────────────────────────────
# 1. Diretorios de runtime / pacote β€” nao sao codigo-fonte
# ─────────────────────────────────────────────────────────────────────────────
node_modules/
node_modules

# Builds e artefatos reproduziveis (Layer 1 Next.js / Electron)
.build/
dist/
.next/
out/

# Electron especifico
electron/dist-electron/
electron/node_modules/
icon.iconset/

# Workspaces internos que tem proprio node_modules
@omniroute/opencode-plugin/dist/
@omniroute/opencode-plugin/node_modules/
@omniroute/opencode-provider/dist/
@omniroute/opencode-provider/node_modules/

# Recursos nativos compilados (C/JNI/wasm)
src/mitm/tproxy/native/build/

# Artefatos locais do Stryker / Playwright / coverage
.stryker-tmp/
reports/mutation/
stryker-output-*.json
.playwright-mcp/
test-results/
playwright-report/
blob-report/

# Analise / linters / caches
.analysis/
.sisyphus/
.plans/
.gitnexus
.worktrees
.codegraph/

# Quality artifacts (gerados por npm run lint --cache etc)
.eslintcache
.eslintcache-complexity

# Claude Code local state
.claude/scheduled_tasks.lock
.claude/scheduled_tasks/
.claude/sessions/
.claude/state.json
.claude/settings.local.json

# Serena / Antigravity / outras tools locais
.serena/
.antigravitycli/
.gemini/
.config/

# ─────────────────────────────────────────────────────────────────────────────
# 2. Diretorios com prefixo `_` β€” locais / privados (regra global do .gitignore)
# ─────────────────────────────────────────────────────────────────────────────
_*/
_artifacts/
_cache/
_mono_repo/
_references/
_tasks/

# ─────────────────────────────────────────────────────────────────────────────
# 3. Diretorios de tooling IA (state local, nao codigo)
# ─────────────────────────────────────────────────────────────────────────────
.agents/
.claude/
.vscode/
.idea/
.junie/
.omc/
.data/
.data-dev/
.local-data/
.logs/
.artifacts/
.source/
.superpowers/
.claude-flow/
.omnivscodeagent/
omnirouteCloud/
omnirouteSite/
.omniroute/
.stent/

# Subpaths especificos do Claude Code que nao estao em .claude/ (criados sob repo)
.claude/worktrees/

# ─────────────────────────────────────────────────────────────────────────────
# 4. Diretorios de dados / runtime locais (storage, env, secrets, scratch)
# ─────────────────────────────────────────────────────────────────────────────
data/
# NOTA: src/lib/env/, src/app/api/{cloud,sync/cloud,system/env,agent-skills/coverage}/
# foram removidos daqui (2026-08-05). Os nomes sugerem dados/segredos locais, mas os
# 8 arquivos sao route handlers e modulos rastreados no git β€” escondia-los do grafo
# criava pontos cegos em buscas e em analise de impacto.
tests/golden-set/data/

# Logs e saida de teste
logs/*
test_output.log
home-diegosouzapw-dev-automacoes-*.txt

# ─────────────────────────────────────────────────────────────────────────────
# 5. Diretorios do monorepo por subprojeto (nao fazem parte do app principal)
# ─────────────────────────────────────────────────────────────────────────────
security-analysis/
vscode-extension/
obsidian-plugin/node_modules/

# ─────────────────────────────────────────────────────────────────────────────
# 6. Diretorios de documentacao interna / workflow
# ─────────────────────────────────────────────────────────────────────────────
docs/superpowers/
# Docs traduzidas: 1.215 arquivos / 94 MB (inclui 20+ copias do CHANGELOG).
# Sao traducoes do tree em ingles, ja indexado β€” no grafo so geram ruido em
# search_code e consomem o auto_index_limit.
docs/i18n/

# ─────────────────────────────────────────────────────────────────────────────
# 7. Arquivos especificos (nao diretorios inteiros)
# ─────────────────────────────────────────────────────────────────────────────

# Segredos e env β€” NUNCA indexar
.env
.env.*
!.env.example
!.env.homolog.example

# TypeScript build info e next env declaration
*.tsbuildinfo
next-env.d.ts
typescript

# SQLite transient files (WAL/SHM/journal)
*.sqlite-shm
*.sqlite-wal
*.sqlite-journal

# Mapas e source maps
*.map

# Bun / npm lockfiles ruidosos
bun.lock

# `cheaper-inference-gateway.svg` e arquivos de midia na raiz/asset ja cobertos
# pelos `ignored-suffix` do indexador (svg/png/jpg/ico/etc >50kB ou >500linhas);
# manter a regra explicita aqui ajuda a auditar:
cheaper-inference-gateway.svg
cheaper-inference-gateway-*.svg

# Husky internals
.husky/_/

# CI / quality metric artifacts
config/quality/quality-metrics.json
config/quality/test-impact-map.json
audit-report.json
.gh-discussions.json

# i18n audit (gerado por npm run scripts)
scripts/i18n/_audit.json
scripts/i18n/_pending-keys.json

# NOTA: bin/omniroute.mjs foi removido daqui (2026-08-05). Estava marcado como
# "scratch", mas e o entrypoint real do CLI publicado (package.json -> bin.omniroute)
# e consta em PACK_ARTIFACT_REQUIRED_PATHS. Precisa estar no grafo.

# Deploy / docker backups
deploy.sh
docker-compose.yml.bak
docker-compose.minimal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- **docs:** add management authentication terminology guide ([#7786](https://github.com/diegosouzapw/OmniRoute/issues/7786))
41 changes: 41 additions & 0 deletions .claude/worktrees/feat-7786/docs/guides/MANAGEMENT-AUTH.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Management Authentication

OmniRoute uses four distinct credential families for management access. This guide
distinguishes them by purpose, scope, and locality.

| Credential | Scope | Locality | Use Case |
|-------------------------|--------------------|---------------|-----------------------------------|
| Dashboard JWT session | Full management | Localhost | Web dashboard login |
| CLI machine-id token | Full management | Per-machine | `omniroute` CLI commands |
| Scoped `oma_` token | Configurable scope | External | Automation / CI / API access |
| Manage-scope API key | `manage` scope | External | Management API calls |

## Dashboard JWT Session

Generated on dashboard login (`/api/auth/login`). Stored in HTTP-only cookie.
Valid for the session duration. Cannot be used from external hosts.

## CLI Machine-ID Token

Created by `omniroute auth login` on first use. Stored in `~/.omniroute/auth.json`.
Used by the CLI for all management operations. Tied to the machine identity.

## Scoped `oma_` Access Token

Created via dashboard or CLI with configurable scopes (e.g., `manage`, `read`).
Format: `oma_<random-hex>`. Used for programmatic access from external systems.

## Manage-Scope API Key

Standard API key with the `manage` scope enabled. Created in dashboard API Keys page.
Used for management API calls from external hosts.

## Header Examples

```
Authorization: Bearer oma_abc123def456
Authorization: Bearer <standard-api-key-with-manage-scope>
Cookie: omniroute_session=<jwt-token>
```

See `docs/reference/API_REFERENCE.md` for endpoint-specific auth requirements.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { describe, it } from "node:test";
import { ok } from "node:assert/strict";
import { readFileSync } from "node:fs";

describe("Management auth documentation (#7786)", () => {
const docPath = "docs/guides/MANAGEMENT-AUTH.md";
const content = readFileSync(docPath, "utf-8");

it("exists and has content", () => {
ok(content.length > 500, "should have substantial content");
ok(content.includes("Dashboard JWT session"));
ok(content.includes("CLI machine-id token"));
ok(content.includes("oma_"));
});

it("documents all four credential families", () => {
const families = ["Dashboard JWT", "CLI machine-id", "oma_", "Manage-scope"];
for (const f of families) {
ok(content.includes(f), `should document ${f}`);
}
});

it("mentions relevant auth header examples", () => {
ok(content.includes("Authorization"));
ok(content.includes("Bearer"));
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- **feat(infra):** add systemd autostart unit for Linux ([#8635](https://github.com/diegosouzapw/OmniRoute/issues/8635))
19 changes: 19 additions & 0 deletions .claude/worktrees/feat-8635/contrib/systemd/omniroute.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[Unit]
Description=OmniRoute AI Proxy
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=$(which omniroute) start
Restart=on-failure
RestartSec=5
Environment=NODE_ENV=production

# Security hardening
NoNewPrivileges=true
ProtectSystem=full
PrivateTmp=true

[Install]
WantedBy=default.target
23 changes: 23 additions & 0 deletions .claude/worktrees/feat-8635/tests/unit/systemd-autostart.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { describe, it } from "node:test";
import { ok } from "node:assert/strict";
import { readFileSync, existsSync } from "node:fs";

describe("Systemd autostart (#8635)", () => {
const svcPath = "contrib/systemd/omniroute.service";
const content = readFileSync(svcPath, "utf-8");

it("service file exists", () => {
ok(existsSync(svcPath));
ok(content.length > 200);
});

it("defines required systemd sections", () => {
ok(content.includes("[Unit]"));
ok(content.includes("[Service]"));
ok(content.includes("[Install]"));
});

it("specifies WantedBy=default.target", () => {
ok(content.includes("WantedBy=default.target"));
});
});
22 changes: 22 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@
**/.vscode

# Dependencies and build output
# `node_modules` alone matches the ROOT only β€” Docker's matcher does not cross
# `/` like .gitignore does. Without the `**/` form, nested installs ship in the
# build context (e.g. @omniroute/opencode-provider/node_modules, ~79 MB of
# devDependencies). Both forms are kept: the bare one is the documented root
# rule, the `**/` one covers every nested package.
node_modules
**/node_modules
.next
.build
out
Expand All @@ -18,6 +24,7 @@ coverage
# Runtime data and logs
data
logs
.sandbox

# Local env files (inject at runtime via --env-file or -e)
.env
Expand All @@ -37,6 +44,17 @@ tests
test-results
playwright-report
blob-report
output
.playwright-cli
.playwright-mcp
.stryker-tmp
reports/mutation

# Local caches and quality-gate artifacts (all gitignored). `_*` does not match
# dot-prefixed names, so these need explicit entries.
.artifacts
.eslintcache
.eslintcache-complexity

# Documentation
# Issue #2348: The Dashboard Docs viewer reads markdown from `/app/docs` at
Expand All @@ -49,6 +67,10 @@ blob-report
# (English) sources at runtime, so translations are not required in the
# container image.
docs/i18n/**
# Internal planning artifacts (gitignored). `*.md` above only matches the root,
# so without this rule these land in /app/docs and become readable through the
# dashboard's Docs viewer at runtime.
docs/superpowers/**
docs/diagrams/**/*.png
docs/diagrams/**/*.jpg
docs/diagrams/**/*.jpeg
Expand Down
6 changes: 6 additions & 0 deletions .env.devin-bridge.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ENABLE_LIVE_DEVIN_TESTS=0
DEVIN_BRIDGE_MODEL=devin-cli-agentic/swe-1-7
DEVIN_BRIDGE_SONNET_MODEL=devin-cli-agentic/swe-1-7
DEVIN_BRIDGE_OPUS_MODEL=devin-cli-agentic/swe-1-7
DEVIN_BRIDGE_HAIKU_MODEL=devin-cli-agentic/swe-1-7
DEVIN_BRIDGE_SUBAGENT_MODEL=devin-cli-agentic/swe-1-7
Loading
Loading