Commit Graph

1593 Commits

Author SHA1 Message Date
Diego Rodrigues de Sa e Souza
a92393157f chore(release): finalize v3.8.42 CHANGELOG + cycle-close reconciliation
- Reconcile CHANGELOG.md for v3.8.42: 40 bullets covering all 89 commits
  since v3.8.41 (4 features, 26 fixes, 10 maintenance incl. 2 rollups for
  the 35-PR dead-code sweep + 17-PR DRY consolidation), dedup the merge-
  artifact duplicate New Features headers, set release date 2026-06-30.
- Sync 42 docs/i18n/*/CHANGELOG.md mirrors.
- Document 3 new chatgpt-web/TLS env vars in .env.example + ENVIRONMENT.md
  (OMNIROUTE_CGPT_WEB_PRO_TIMEOUT_MS, _PRO_POLL_INTERVAL_MS,
  OMNIROUTE_CHATGPT_STREAM_FIRST_BYTE_TIMEOUT_MS).
- Cycle-close ratchet rebaselines: eslintWarnings 4116->4121, file-size
  base.ts/chatgpt-web.ts/strategySelector.ts/chatgpt-web.test.ts (all
  inherited drift, justified inline).
- Regenerate provider translate-path golden snapshot for the merged
  bytez/friendliai/novita endpoint fixes.
2026-06-30 03:34:44 -03:00
Diego Rodrigues de Sa e Souza
7c9cb7f47a fix(build): keep ioredis out of the client/CLI bundle via SPAWN_CAPABLE_PREFIXES leaf (#5546)
Fix the dast-smoke ioredis client-bundle regression (proven: dast-smoke green). Remaining reds are pre-existing base-reds/flakes (base.ts file-size, GOLDEN provider drift, shard-1 compression flakes) inherited by all PRs — not from this change.
2026-06-30 03:00:08 -03:00
Diego Rodrigues de Sa e Souza
d10b929cc1 fix(chatgpt-web): portable SHA3-512 for sentinel PoW under Electron/BoringSSL (#5531) (#5540) 2026-06-30 02:59:23 -03:00
PizzaV
15fdfe200e fix(mimocode): route per-account traffic through SOCKS5 proxy dispatchers (#5521)
Integrated into release/v3.8.42 (round 3). Per-account SOCKS5 dispatcher routing — completes #3837's stored proxy config with the actual undici dispatcher layer. Rebased onto .42 (dropped the CI-workflow-deletion commits; merged proxyUrlMap dispatch with #3837's acct.proxy storage).

Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
2026-06-30 02:36:59 -03:00
KooshaPari
e30e0725f5 fix(providers): persist Configured filter across page reloads (#5510)
Integrated into release/v3.8.42 (round 3). Persist Configured filter across reloads; extracted shouldSyncProviderDisplayMode race guard + TDD test (Closes #4059).

Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
2026-06-30 02:30:57 -03:00
Arthur Bodera
6a8692fd55 fix(chatgpt-web): support GPT-5.5 Pro handoff (#5536)
Integrated into release/v3.8.42 (round 3). GPT-5.5 Pro async stream_handoff support (drift-shed: dependabot #5415 dropped).
2026-06-30 02:26:21 -03:00
KooshaPari
f4629835f1 [codex] add bifrost auto fallback cooldown (#5519)
Integrated into release/v3.8.42 (round 3). Bifrost auto fallback cooldown; header reconciled with #5526 helper + env-doc.

Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
2026-06-30 02:19:41 -03:00
KooshaPari
76a3e1a806 test relay routing fallback headers (#5526)
Integrated into release/v3.8.42 (round 3). Relay fallback header extraction + tests (drift-shed: dependabot #5415 commit dropped).
2026-06-30 02:15:15 -03:00
Diego Rodrigues de Sa e Souza
eea8182209 refactor(dashboard): T11 — drop duplicate caveman on/off toggle from the compression settings tab (#5524)
Integrated into release/v3.8.42 (round 3). T11 consolidate duplicate caveman controls; i18n'd the panel hint string (source key).
2026-06-30 02:13:33 -03:00
Diego Rodrigues de Sa e Souza
a32cfb1597 feat(compression): T07/R9 — gradle + dotnet RTK catalog filters (#5537)
Integrated into release/v3.8.42 (round 3). T07/R9 RTK gradle+dotnet filters
2026-06-30 02:08:14 -03:00
Diego Rodrigues de Sa e Souza
8946860885 feat(compression): T05/C6 — Chinese (zh / wenyan) caveman pack + detection (#5532)
Integrated into release/v3.8.42 (round 3). T05/C6 zh/wenyan pack + detection
2026-06-30 02:08:08 -03:00
Diego Rodrigues de Sa e Souza
1c882ed7f9 feat(compression): T05/C2 — caveman dedup + ultra packs for de, fr, ja (#5529)
Integrated into release/v3.8.42 (round 3). T05/C2 caveman packs de/fr/ja
2026-06-30 02:08:02 -03:00
Diego Rodrigues de Sa e Souza
47de0a12ef feat(compression): T02 — honest default-on pipeline inflation guard (H1) (#5527)
Integrated into release/v3.8.42 (round 3). T02 pipeline inflation guard
2026-06-30 02:07:56 -03:00
Diego Rodrigues de Sa e Souza
2c9a80b95c test(quota): guard Claude-Code identity version lockstep (Phase 2) (#5514)
Integrated into release/v3.8.42 (round 3). Claude-Code identity version lockstep guard.
2026-06-30 02:06:59 -03:00
Randi
285b13e12a fix: protect dynamic dashboard tests with CSRF (#5405)
Integrated into release/v3.8.42 (round 3). Reworked CSRF (HMAC-signed synchronized token).
2026-06-30 02:01:36 -03:00
backryun
2ce25e7da8 fix(providers): remove dead Phind provider + dedupe HuggingChat catalog listing (#5530)
Integrated into release/v3.8.42 (round 3). Dead Phind removal + HuggingChat dedupe, verified complete.
2026-06-30 02:01:32 -03:00
Diego Rodrigues de Sa e Souza
b09875d3b3 fix(providers): Bytez OpenAI-compat base URL + auth-only key validation (#5422) (#5528)
Bytez IS OpenAI-compatible at .../models/v2/openai/v1, but the registry
stored the bare .../models/v2 base, so validation's chat-probe hit
.../models/v2/chat/completions -> 404 -> 'endpoint not supported'.

Part A: registry baseUrl -> full OpenAI-compat chat path.
Part B: a Bytez account only serves catalog-provisioned models, so chat-probe
validation 404s even for valid keys. validateBytezProvider instead probes the
auth-only GET .../models/v2/list/tasks (200=valid, 401/403=invalid).

Verified live with a real key: list/tasks -> 200 (valid) / 401 (invalid).
Regression guard: tests/unit/bytez-validation-5422.test.ts.
2026-06-29 23:47:40 -03:00
backryun
2c07f23996 fix(providers): correct LongCat free tier — GA LongCat-2.0, one-time 10M (KYC) (#5508)
LongCat's preview ended and the Flash-* line was retired (2026-05-29);
the API now exposes only the GA LongCat-2.0 (1M context, 128K output).
The free tier is a ONE-TIME 10M-token grant unlocked after account
signup + KYC verification — NOT a recurring daily/monthly allowance.
The catalog still described the retired preview/Flash models and a
recurring 150M / 5M-per-day budget; this corrects every reference.

Config / code:
- registry/longcat: model LongCat-2.0-Preview -> LongCat-2.0, name +
  comment reflect one-time 10M (KYC) and pay-as-you-go beyond it.
- freeModelCatalog: longcat-2.0-preview (150M, recurring-daily) ->
  LongCat-2.0 (10M, freeType one-time-initial via creditTokens).
- freeTierCatalog: drop longcat from the recurring-monthly budget map
  (one-time credits are excluded by that catalog's own rule).
- regional.ts freeNote: one-time 10M after signup + KYC, not recurring.
- providerCostData: longcat-flash-lite -> longcat-2.0 (pay-as-you-go
  0.75/2.95 per 1M, 10M free quota).
- validation probe model longcat -> LongCat-2.0.

Tests:
- free-tier-catalog: longcat now absent from FREE_TIER_BUDGETS;
  providerCount 22->21 (clean 21->20); documented total ~1.39B.
- tierResolver: sample model flash-lite -> LongCat-2.0.

Docs:
- README, PROVIDERS-GUIDE, FREE-TIERS-GUIDE, FREE_TIERS: 50M/day
  Flash-Lite -> one-time 10M LongCat-2.0 (KYC); 'No auth' -> API key + KYC.
- Regenerated PROVIDER_REFERENCE.md (picks up the new freeNote).

typecheck:core clean; changed-file lint 0 errors; docs-sync PASS.
2026-06-29 23:32:06 -03:00
Diego Rodrigues de Sa e Souza
17b36694c9 fix(providers): gate import for tool-only providers + sanitize Coze validation error (#5420 #5426) (#5522)
#5420: the 'Import Models' button now hides for tool-only providers
(web search / web fetch) via a capability check over resolved serviceKinds,
not just the -search suffix — firecrawl/jina-reader (webFetch) no longer
show an Import button that 400s. No LLM/media provider is affected.

#5426: Coze key validation no longer leaks the raw upstream envelope
({code,msg,logId,from}) into the UI; the Coze error becomes a friendly
message, scoped to provider === 'coze' so no other provider is affected.

Regression guards: tests/unit/model-listing-capability-5420.test.ts,
tests/unit/coze-validation-error-5426.test.ts.
2026-06-29 23:10:43 -03:00
Diego Rodrigues de Sa e Souza
f4b1aee7b9 fix(providers): correct FriendliAI (serverless) + Novita (/openai/v1) endpoints (#5430 #5455) (#5515)
* fix(providers): correct FriendliAI (serverless) and Novita (/openai/v1) endpoints (#5430 #5455)

Both rejected valid keys, verified live with real provider keys:
- FriendliAI baseUrl was /dedicated/v1/... which 403s a serverless flp_* token;
  switched to /serverless/v1/... + serverless modelsUrl.
- Novita baseUrl was the legacy /v3/... with a typo'd model id ai-ai/...
  (both 404); switched to OpenAI-compat /openai/v1/... + meta-llama/llama-3.1-8b-instruct.

Regression guard: tests/unit/provider-endpoints-friendliai-novita.test.ts.

* chore: reconcile CHANGELOG with release (keep #5430/#5455 + prior bullets)
2026-06-29 22:40:50 -03:00
Diego Rodrigues de Sa e Souza
8f5eda90be fix(providers): align Muse Spark (Meta AI) cookie copy to ecto_1_sess (#5449) (#5513)
* fix(providers): align Muse Spark (Meta AI) cookie copy to ecto_1_sess (#5449)

The default Meta AI session cookie migrated from the retired abra_sess to
ecto_1_sess (META_AI_DEFAULT_COOKIE), but the provider form hint and one
401 auth-failure message still named abra_sess, telling users to paste a
cookie that no longer exists. Both strings now name ecto_1_sess.

Regression guard: tests/unit/muse-spark-cookie-copy-5449.test.ts.

* chore: reconcile CHANGELOG with release (keep #5449 + #5511 bullets)
2026-06-29 22:39:56 -03:00
Diego Rodrigues de Sa e Souza
83889924e7 fix(dashboard): provider-add UX — i18n labels, surface import warning, default key name (#5511)
* fix(dashboard): provider-add UX — real i18n labels, surface import warning, default key name (#5421 #5428 #5429 #5431 #5435)

Three rough edges in the Add-API-Key / model-import flow, all from the
provider-catalog audit:

1. Validation Model + Account ID form fields shipped untranslated i18n
   stub copy ('Validation Model Id Label', etc.) that rendered verbatim.
   Replaced with real copy in en.json.
2. Model import silently fell back to the cached/local catalog — the route
   returns a 'warning' field the import hook never read. New pure helper
   extractImportWarning surfaces it as a log line.
3. Required connection-name field defaulted to '' (let browser autofill
   inject garbage like 'wiw'); now defaults to 'main'.

Regression guard: tests/unit/provider-add-ux-i18n-import-warning.test.ts.

* fix(dashboard): compress AddApiKeyModal comment to keep file under frozen size cap
2026-06-29 22:37:44 -03:00
Jan Leon
78aaecb0d1 chore(duplication): share combo builder model options (#5477)
Share combo builder model options; add regression test locking custom-model source classification (manual->custom, api-sync->imported).

Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
2026-06-29 22:14:29 -03:00
Jan Leon
152ffc2ebf chore(duplication): share proxy route handlers (#5472)
Share proxy route handlers; add resolveProxyLookupResponse regression test (3 branches + custom whereUsed param name).

Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
2026-06-29 22:10:43 -03:00
Jan Leon
ae93cfbee7 chore(duplication): share service install helpers (#5495)
Share service install helpers; re-add SERVICE_VERSION_PATTERN regex to the shared schema (dropped in extraction, #5474) + tests rejecting malformed versions.

Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
2026-06-29 22:08:27 -03:00
KooshaPari
c8814edd47 fix(rate-limit): normalize queue refresh settings (#5499)
Co-authored-by: KooshaPari <koosha@example.com>
2026-06-29 22:03:31 -03:00
KooshaPari
6b9c7d14df fix(fallback): normalize provider error rule headers (#5473)
Co-authored-by: KooshaPari <koosha@example.com>
2026-06-29 22:03:28 -03:00
KooshaPari
3f8995deb6 fix: gate claude adaptive thinking defaults (#5480)
Co-authored-by: KooshaPari <koosha@example.com>
2026-06-29 22:03:25 -03:00
Jan Leon
8811468269 fix: treat terminal stream cancels as complete (#5491) 2026-06-29 21:58:55 -03:00
Jan Leon
c548008943 chore(duplication): share node sqlite adapter (#5500) 2026-06-29 21:58:52 -03:00
Jan Leon
92c511550d chore(duplication): share relay stream finalizer (#5497) 2026-06-29 21:58:46 -03:00
Jan Leon
b9fd69ecf3 chore(duplication): share settings transform schemas (#5496) 2026-06-29 21:58:44 -03:00
Jan Leon
1783f89456 chore(duplication): share version manager request parsing (#5492) 2026-06-29 21:58:38 -03:00
Jan Leon
3bc0d5feeb chore(duplication): share redis runtime helpers (#5490) 2026-06-29 21:58:35 -03:00
Jan Leon
e124b50922 chore(duplication): share provider specific validation (#5485) 2026-06-29 21:58:30 -03:00
Jan Leon
b3747c3a92 chore(duplication): share vscode tokenized request helper (#5479) 2026-06-29 21:58:21 -03:00
Jan Leon
bbd9a776db chore(duplication): share auth zip extractors (#5475) 2026-06-29 21:58:18 -03:00
Jan Leon
09fa9905f2 chore(duplication): share vscode metadata helpers (#5471) 2026-06-29 21:58:16 -03:00
Jan Leon
467736a1b4 chore(dead-code): remove unused prompt cache control helper (#5466) 2026-06-29 21:56:23 -03:00
Jan Leon
a003b1fdc4 chore: remove unused headroom log tail export (#5464) 2026-06-29 21:56:20 -03:00
Jan Leon
749128195a chore: remove unused gamification streak exports (#5463) 2026-06-29 21:56:17 -03:00
Diego Rodrigues de Sa e Souza
73f9580c8e fix(db): EBUSY-safe database import on Windows (#5406) (#5507)
Closes #5406
2026-06-29 21:21:25 -03:00
Diego Rodrigues de Sa e Souza
2a8309ba4a fix(dashboard): render onboarding wizard on /providers/new (#5427) (#5505)
Closes #5427
2026-06-29 21:18:02 -03:00
Diego Rodrigues de Sa e Souza
8d04875521 fix(cli): restore dist/tls-options.mjs to npm tarball (#5452) (#5503)
Closes #5452
2026-06-29 21:15:17 -03:00
Diego Rodrigues de Sa e Souza
29bdb8dfde fix(services): runNpm shell on win32 + prefix via env for Node 24 EINVAL (#5379) (#5474)
Node 24 refuses execFile of npm.cmd without a shell (nodejs/node#52554),
so embedded-service install (9Router/CLIProxy) failed with spawn EINVAL on
Windows. runNpm now enables shell on win32 only; to stay Hard-Rule-#13 safe
under a shell, the install --prefix is passed via npm_config_prefix (env)
instead of an argv path (survives spaces), and the user-supplied version is
constrained by SERVICE_VERSION_PATTERN at the route boundary.
2026-06-29 20:45:30 -03:00
Randi
e9c739184e fix: frame non-streaming JSON responses (#5416)
Integrated into release/v3.8.42
2026-06-29 19:23:59 -03:00
Jan Leon
3c28b936ba chore: remove unused webhook delivery detail export (#5372)
Integrated into release/v3.8.42
2026-06-29 19:15:28 -03:00
Jan Leon
655fccade8 chore: remove unused a2a routing logger readers (#5374)
Integrated into release/v3.8.42
2026-06-29 19:15:25 -03:00
Jan Leon
3578711bc1 chore: remove unused cloud agent result schemas (#5375)
Integrated into release/v3.8.42
2026-06-29 19:15:22 -03:00
Jan Leon
4b82560b20 chore: remove unused v1 search response schema (#5376)
Integrated into release/v3.8.42
2026-06-29 19:15:19 -03:00