Commit Graph

3300 Commits

Author SHA1 Message Date
diegosouzapw
f2ce32aa8b docs(changelog): add round-2 PR entries (8 PRs merged) 2026-05-21 18:15:04 -03:00
Paijo
0498b77004 feat(providers): add 14 free-tier providers — Chinese regional + dev tools (Wave 1b) (#2488)
Integrated into release/v3.8.2
2026-05-21 18:13:15 -03:00
Gi99lin
1f2d1fdbf2 fix(i18n): add missing dashboard keys and fix EN fallbacks (#2500)
Integrated into release/v3.8.2
2026-05-21 18:11:58 -03:00
InkshadeWoods
1f8b41bc23 fix(i18n): translate 830 missing zh-CN UI strings (#2523)
Integrated into release/v3.8.2
2026-05-21 18:10:32 -03:00
Hernan Javier Ardila Sanchez
32804f2a43 fix(opencode-zen): add 'opencode' provider alias and sync model list with live API (#2517)
Integrated into release/v3.8.2
2026-05-21 18:10:17 -03:00
Hernan Javier Ardila Sanchez
caefdfa971 fix(handler): capture Gemini thought_signature in non-streaming response path (#2504) (#2518)
Integrated into release/v3.8.2
2026-05-21 18:09:15 -03:00
Hernan Javier Ardila Sanchez
ae73b90280 fix(handler): always normalize system role messages in claude passthrough paths (#2468) (#2519)
fix(handler): always normalize system role messages in claude passthrough paths — integrated into release/v3.8.2
2026-05-21 18:08:54 -03:00
Hernan Javier Ardila Sanchez
a2efaf384c fix(cost): prevent double-billing of cache_creation_input_tokens (#2522)
fix(cost): prevent double-billing of cache_creation_input_tokens — integrated into release/v3.8.2
2026-05-21 18:07:29 -03:00
diegosouzapw
2fc8f9e9b9 docs(changelog): add complete v3.8.2 release notes with 13 contributor credits 2026-05-21 16:10:35 -03:00
diegosouzapw
933858e1bd chore: ignore .claude/worktrees from tracking 2026-05-21 16:02:35 -03:00
diegosouzapw
e79e8f3f07 fix(opencode-zen): add 'opencode' provider alias + resolve conflicts (#2508) 2026-05-21 16:02:25 -03:00
diegosouzapw
7cbb51d132 fix: resolve merge conflict with release/v3.8.2 (usage.ts test exports) 2026-05-21 15:59:12 -03:00
Paijo
c78a267044 feat(providers): add 7 free-tier providers (Wave 1) (#2479)
Integrated into release/v3.8.2
2026-05-21 15:54:00 -03:00
Hernan Javier Ardila Sanchez
c38e407e4d fix(vision-bridge): auto-route non-standard provider models through OmniRoute self-loop (#2487)
Integrated into release/v3.8.2
2026-05-21 15:53:55 -03:00
ucloudnb666
45b17e957c feat: add Astraflow provider support (global + China endpoints) (#2486)
Integrated into release/v3.8.2
2026-05-21 15:53:50 -03:00
Paijo
ad99e34f25 fix(providers): add claude-web + make gitlawb/gitlawb-gmi optional (#2476)
Integrated into release/v3.8.2
2026-05-21 15:53:31 -03:00
Hernan Javier Ardila Sanchez
3cbe57a8c7 fix(mitm): add IPv6 DNS redirect, modular antigravity target, improved logging (#2514)
Integrated into release/v3.8.2
2026-05-21 15:53:26 -03:00
Gi99lin
4e476b3fdd fix(usage): improve Claude and MiniMax plan label detection (#2498)
Integrated into release/v3.8.2
2026-05-21 15:53:03 -03:00
NMI
c361b3ca02 fix(codex): fan out image n requests in parallel (#2499)
Integrated into release/v3.8.2
2026-05-21 15:52:58 -03:00
Halil Tezcan KARABULUT
01c5d5c7b7 fix: extract system/developer messages in Claude Code semantic passthrough paths (#2497)
Integrated into release/v3.8.2
2026-05-21 15:52:53 -03:00
Leonid Bondarenko
731e766136 fix(embeddings): strip stale Content-Encoding headers from upstream response (#2477)
Integrated into release/v3.8.2
2026-05-21 15:52:34 -03:00
Hernan Javier Ardila Sanchez
8d43cbd53c fix(model): return clear error instead of silent openai default for unrecognized models (#2492)
Integrated into release/v3.8.2
2026-05-21 15:52:28 -03:00
Apostol Apostolov
7be33531b2 fix(dark-mode): correct background token on Compression Override select (#2513)
Integrated into release/v3.8.2
2026-05-21 15:52:23 -03:00
Automation
07df7c8e43 fix(opencode-zen): add 'opencode' provider alias and sync model list with live API
OpenCode's Zen provider changed its slug from 'opencode-zen' to 'opencode',
breaking OmniRoute's provider resolution when users reference models with the
new prefix (e.g. 'opencode/deepseek-v4-flash-free').

Changes:

1. open-sse/services/model.ts: Add manual ALIAS_TO_PROVIDER_ID entry
   mapping 'opencode' → 'opencode-zen' so parseModel() resolves
   correctly for model strings using the new slug.

2. open-sse/executors/index.ts: Register 'opencode' as an OpencodeExecutor
   alias for 'opencode-zen' so getExecutor() returns the correct executor.

3. open-sse/config/providerRegistry.ts: Update opencode-zen model list to
   match the live API at https://opencode.ai/zen/v1/models:
   - Add deepseek-v4-flash-free (the model users reported as broken)
   - Add all 30+ models from the API (Claude, GPT, Gemini, Grok, GLM,
     MiniMax, Kimi, Qwen series)
   - Apply targetFormat: 'claude' to qwen3.5-plus (same SSE bug as qwen3.6)
   - Remove ling-2.6-1t-free and trinity-large-preview-free (no longer in API)
   - Enable passthroughModels so new models work without code deploys

4. @omniroute/opencode-provider/src/index.ts: Remove broken reference to
   undefined OMNIROUTE_DEFAULT_MODEL_CONTEXT_LENGTHS constant.

5. tests/unit/opencode-executor.test.ts: Add tests for opencode alias,
   deepseek-v4-flash-free routing, and model registry presence.
2026-05-21 20:03:45 +02:00
ivan_yakimkin
953a754057 fix(antigravity): improve plan label fallback per review
Prefer persisted tier when live subscription maps to an unknown label,
and only return mapped tier IDs from extractCodeAssistTierId. Add
regression test for fallback from providerSpecificData.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 19:41:45 +03:00
Diego Rodrigues de Sa e Souza
3e84b81f6f Merge pull request #2494 from herjarsa/fix/combo-skip-log-message
fix(combo): clarify log message when combo target is skipped due to unavailable credentials
2026-05-21 11:44:44 -03:00
ivan_yakimkin
636d4c44fc refactor(antigravity): address PR review on tier extraction and usage cache
Simplify onboard tier ID fallback and reuse subscription lookup in error path.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 17:39:20 +03:00
ivan_yakimkin
852acc3632 fix(antigravity): align subscription tier detection with Antigravity Manager
Extract paid/current/restricted tiers from loadCodeAssist (shared module), fix invalid LINUX metadata on Docker, refresh tier on quota update without re-auth, and persist tier fields back to connections.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 17:24:04 +03:00
Automation
9989ac799f fix(combo): clarify log message when combo target is skipped due to unavailable credentials
The combo loop log messages misleadingly said '(all accounts in cooldown)'
when the actual reason could be model exclusion, rate-limiting, or other
credential unavailability. Updated to accurately describe the real reason.
2026-05-21 15:54:32 +02:00
Diego Rodrigues de Sa e Souza
0ade48bd04 fix(security): replace Math.random with crypto.randomUUID in generateTaskId/ActivityId and fix URL hostname check in test (#2461) (#2489)
Co-authored-by: diegosouzapw <diego.souza.pw@gmail.com>
2026-05-21 10:35:24 -03:00
Diego Rodrigues de Sa e Souza
4f70ef3d2a Merge pull request #2482 from herjarsa/fix/opencode-provider-context-window
fix(@omniroute/opencode-provider): include limit.context in model entries for OpenCode context window detection
2026-05-21 10:04:03 -03:00
Diego Rodrigues de Sa e Souza
2eb6884e24 Merge pull request #2465 from diegosouzapw/worktree-fix-bugfix-batch-v3.8.2
fix: bug-fix batch (#2390, #2446, #2454, #2459)
2026-05-21 10:03:32 -03:00
diegosouzapw
2e85d80adf fix(validation): guard non-string apiKey/modelsUrl in connection test (#2463)
A corrupted or mis-typed credential (non-string apiKey, or a non-string
modelsUrl from providerSpecificData/registry) could throw
'TypeError: ... is not a function' when validation called .startsWith()/.trim()
during a provider connection test. Adds typeof guards in validateOpenAILikeProvider,
validateGeminiLikeProvider and validateSnowflakeProvider so validation returns a
clean { valid } result instead of crashing. Does not pinpoint the NVIDIA NIM
e.startsWith report (needs a stack trace), but hardens the whole class.
2026-05-21 09:49:47 -03:00
Automation
2a0d20945d fix(@omniroute/opencode-provider): include limit.context in model entries for OpenCode context window detection
OpenCode determines model context windows by reading limit.context from
opencode.json model entries. The provider was not emitting this field,
so all OmniRoute models appeared with an unknown (0) context window
in OpenCode, preventing proper compaction and overflow detection.

- Add limit.context to OpenCodeModelEntry interface
- Add OMNIROUTE_DEFAULT_MODEL_CONTEXT_LENGTHS map (200K Claude / 1M Gemini)
- Include limit.context when generating model entries
- Extend fetchLiveModels to capture context_length from /v1/models
- 5 new tests covering context length coverage, JSON serialisation,
  unknown model fallback, and live model fetch

Closes #2481
2026-05-21 14:38:47 +02:00
diegosouzapw
8f63c72396 docs(changelog): record #2390, #2446, #2454, #2459 bug fixes 2026-05-21 04:02:58 -03:00
diegosouzapw
6db9a77513 fix(perplexity-web): TLS impersonation to bypass Cloudflare on VPS (#2459)
New perplexityTlsClient.ts (Firefox-148 TLS profile, mirrors chatgptTlsClient)
routes perplexity-web requests so Cloudflare stops 403-challenging datacenter
IPs. Executor and connection validator now distinguish a Cloudflare block from
an invalid session cookie. Adds OMNIROUTE_PPLX_TLS_TIMEOUT_MS /
OMNIROUTE_PPLX_TLS_GRACE_MS. Co-authored analysis by havockdev.
2026-05-21 04:02:04 -03:00
diegosouzapw
6fe366db54 fix(claude): per-model beta gating + passthrough thinking sanitization (#2454)
selectBetaFlags now gates the heavy-agent betas (context-1m, effort,
advanced-tool-use) on Opus/Sonnet only; Haiku with OAuth was rejecting
context-1m with 400 'incompatible with the long context beta header'. base.ts
stops deleting Haiku's thinking config (real Claude Desktop keeps it). chatCore
passthrough converts historical thinking/redacted_thinking blocks to
redacted_thinking with a synthetic signature, fixing 400 'Invalid signature in
thinking block' on mid-session model switches. Co-authored analysis by havockdev.
2026-05-21 04:01:11 -03:00
diegosouzapw
016deae964 fix(kiro): serialize non-string role:tool content for CodeWhisperer (#2446)
An OpenAI-style role:"tool" message carrying structured/array content was
collapsing to content:[{ text: "" }], which CodeWhisperer rejects with
400 'Improperly formed request'. Reuse serializeToolResultContent (already used
by the Anthropic tool_result path) so structured output is never empty.
2026-05-21 04:00:18 -03:00
diegosouzapw
75d0d7299a fix(translator): inject web_search tool in Responses-API flat shape (#2390)
The omniroute_web_search fallback tool was always built in Chat Completions
nested shape ({type, function:{name}}). On the Responses->Responses passthrough
path nothing flattens it, so Codex/relay upstreams rejected it with
'Missing required parameter: tools[0].name'. buildFallbackTool and the
tool_choice injection now emit the flat Responses-API shape ({type, name})
when the target provider speaks the Responses API.
2026-05-21 03:59:06 -03:00
Diego Rodrigues de Sa e Souza
1ea91b6c71 Merge pull request #2462 from diegosouzapw/release/v3.8.2
fix(electron): downgrade to Electron 41.x + remove Akamai deploy
2026-05-21 02:44:34 -03:00
diegosouzapw
5abaa7e0f4 fix(electron): downgrade to Electron 41.x for better-sqlite3 V8 compatibility
- Downgrade electron from ^42.2.0 to ^41.2.0 (V8 API breaking change)
- Move better-sqlite3 from optionalDependencies back to dependencies
- Add @xmldom/xmldom override (matching 9router config)
- Fixes: v8::External::Value/New signature mismatch on Windows CI
2026-05-21 02:29:38 -03:00
diegosouzapw
f702cbbd38 chore: remove Akamai VPS deploy from release workflow and skills
- Remove deploy-vps-akamai workflow and skill
- Remove deploy-vps-both workflow and skill
- Remove Step 16 (Akamai deploy) from generate-release workflow and skill
- Renumber Phase 3/4 steps accordingly
- Only Local VPS deploy remains in the release pipeline
2026-05-21 02:06:17 -03:00
Diego Rodrigues de Sa e Souza
91b6983564 Release v3.8.1 (#2441)
Release v3.8.1 — feature flags settings page, bracketed combo names, security hardening, multi-driver SQLite
2026-05-21 01:29:12 -03:00
Diego Rodrigues de Sa e Souza
a224bf6530 fix(security): post-review hardening batch — command injection, CSP, auth gaps, error sanitization, resilience (#2435)
Integrated into release/v3.8.1
2026-05-20 23:41:39 -03:00
diegosouzapw
39526b2b8c fix(build): lazy-init cloudAgentTaskTable to fix Next.js page data collection
The top-level createCloudAgentTaskTable() call in the [id] route
caused better-sqlite3 to load during next build's static page
analysis, failing CI where the native addon isn't compiled yet.
Wrap in ensureTable() called at the start of each handler.
v3.8.0
2026-05-20 13:32:19 -03:00
diegosouzapw
a8cfe243e1 Merge branch 'release/v3.8.0' 2026-05-20 10:00:36 -03:00
diegosouzapw
a3ae2c422d fix(docker): restore cliproxyapi sidecar profile
The cliproxyapi sidecar (service + named volume + DOCKER_GUIDE.md docs)
was accidentally dropped in 3ff3e3dd1, a commit whose message only
mentioned a ChatPlayground guard. Restore the pre-removal version of
docker-compose.yml and docs/guides/DOCKER_GUIDE.md from 49fe356b9 —
re-adds the `cliproxyapi` profile on port 8317 and the cliproxyapi-data
volume while preserving the docs YAML frontmatter.
2026-05-20 09:47:53 -03:00
Diego Rodrigues de Sa e Souza
87175d6c16 Merge pull request #2432 from diegosouzapw/release/v3.8.0
Sync release/v3.8.0 into main — includes features batch (#2431), AgentRouter docs (#2429), Gemini 3.5 Flash (#2423)
2026-05-20 09:32:43 -03:00
Diego Rodrigues de Sa e Souza
527ab764dd Merge pull request #2431 from diegosouzapw/feat/features-batch-v3.8.0
Integrated into release/v3.8.0 — features batch with regression-safe resets

New features:
- feat(combo): provider-level exhaustion tracking (#1731)
- feat(combo): context window filtering (#1808)  
- fix(combo): cost blending in auto-combo scoring (#1812)
- feat(providers): t3.chat web provider (#1909)
- feat(cli): providers rotate command (#1881)
- feat(kiro): multi-account OAuth isolation (#2328)
- feat(errors): sanitized upstream error details (#1718)
- feat(installer): Termux detection (#1764)
- feat(zed): Docker integration + manual import (#2306)
- test(e2e): system failover test suite

68 regressive files were reset to release/v3.8.0 state to prevent regressions.
2026-05-20 09:28:57 -03:00
diegosouzapw
460e4e733f chore: merge release/v3.8.0 into feat/features-batch — resolve all conflicts with release version 2026-05-20 09:27:10 -03:00