Commit Graph

141 Commits

Author SHA1 Message Date
diegosouzapw
ec6456ba73 chore(release): align migration compatibility and packaged CLI runtime
Skip the superseded 041 session_account_affinity migration when
the canonical 050 file is present, and remap legacy migration
markers so upgraded databases do not replay the duplicate slot.

Also include the CLI entrypoints in packaged artifacts and extend
management-auth coverage across admin memory, pricing, routing,
provider validation, and usage endpoints to keep release bundles
runnable and sensitive operations protected.
2026-05-10 18:27:41 -03:00
diegosouzapw
7c569e9cfe chore: fix docs-sync pre-commit hook, add v3.8.0 contributor credits, and sync CHANGELOG i18n
- Fix check-docs-sync.mjs: CHANGELOG.md i18n mirrors use translation-aware validation
  (version sections + size check) instead of exact byte comparison, since translated
  CHANGELOGs have translated section headings
- Add v3.8.0 Community Contributors section with 38 external contributors credited
- Sync CHANGELOG.md translations across 40 locales
2026-05-10 11:07:06 -03:00
Raxxoor
a8106bbadd fix(glm): add dedicated coding transport (#2087)
Integrated into release/v3.8.0
2026-05-10 00:52:00 -03:00
payne
d06d1ae49c feat(cursor): full OpenAI parity (tool calls, streaming, sessions) (#2082)
Merged automatically
2026-05-10 00:00:18 -03:00
backryun
09733e4906 Refresh providers, model catalogs, and docs for v3.8.0 (#2088)
Merged automatically
2026-05-10 00:00:11 -03:00
Yoviar Pauzi
bfb5ab0f58 fix(api): usage and keys (#2092)
Integrated into release/v3.8.0
2026-05-09 22:04:07 -03:00
diegosouzapw
7b80e80a1e fix(runtime): harden timer handling and model pricing fallback
Align runtime behavior with test and stream expectations across the app.

Use `globalThis` timer APIs for SSE heartbeats, set the Playwright
server `NODE_ENV` explicitly by mode, and fall back to Codex pricing
lookups after stripping effort suffixes when a direct model match is
missing.

Refresh affected unit and e2e coverage to use deterministic timers and
updated settings navigation so timeout- and stream-related assertions are
stable on release builds.
2026-05-08 19:00:06 -03:00
diegosouzapw
276e5da137 Merge PR #2019 and resolve conflicts 2026-05-08 17:54:35 -03:00
Paijo
913b8b84bc Feat/docs site overhaul (#1976)
Integrated into release/v3.7.9
2026-05-05 12:34:04 -03:00
Paijo
7dab1fb731 feat(docs): integrate multi-page documentation into OmniRoute dashboard — Closes #1958 (#1969)
Integrated into release/v3.7.9
2026-05-05 09:32:43 -03:00
diegosouzapw
802a92e92f chore(scripts): remove scratch issue analysis artifacts
Delete temporary issue analysis scripts and generated scratch JSON files
that are not part of the maintained codebase or release assets.
2026-05-04 02:25:14 -03:00
diegosouzapw
72e31e6329 fix(security): resolve CodeQL polynomial regular expression (ReDoS) vulnerabilities and chatCore TS errors (#201, #200, #199) 2026-05-04 02:14:52 -03:00
diegosouzapw
1a342ae5dc docs: add PR #1923 to changelog 2026-05-04 01:36:14 -03:00
diegosouzapw
f6fdfea3ae fix(providers): route agentrouter through anthropic endpoint headers
Update the AgentRouter provider registry to use the Claude-compatible
messages API and required Anthropic-style authentication headers. This
bypasses unauthorized_client_error responses and exposes the supported
model list through passthrough configuration.

Also update the changelog and release PR notes to document the fix for
#1921
2026-05-04 01:08:14 -03:00
diegosouzapw
d3c1abc6e1 docs: update changelog and pr body with merged prs 2026-05-04 00:15:06 -03:00
diegosouzapw
b8746b1464 fix: allow local ollama provider connections (#1893) 2026-05-03 19:03:11 -03:00
Diego Rodrigues de Sa e Souza
743be29852 feat(compression): RTK compression roadmap (#1889)
* chore(rtk): initialize compression roadmap branch

* feat(compression): add RTK engine and compression combos

Introduce RTK command-aware tool-output compression alongside
stacked RTK -> Caveman pipelines for mixed prompt contexts.

Add engine registration, declarative RTK filter packs, language-aware
Caveman rule loading, compression combo persistence and assignments,
analytics grouped by engine/combo, and new MCP/API endpoints for
configuration, previews, filters, and combo management.

Expose the new capabilities in the dashboard with dedicated Context &
Cache pages for Caveman, RTK, and compression combos, and update docs,
i18n strings, migrations, and tests to cover the expanded compression
surface.

* feat(compression): expand RTK DSL, filter catalog, and recovery APIs

Add RTK parity features across the compression pipeline, dashboard,
and management APIs. This expands the built-in filter catalog, adds
trust-gated custom filter loading, inline filter verification, code
stripping, smarter detection, and optional redacted raw-output
retention for authenticated recovery.

Also extend Caveman with file-based multilingual rule packs, localized
output-mode instructions, stricter preview/config schemas, engine
registry metadata, analytics fields, and broad unit test coverage for
RTK, rule loading, and stacked compression behavior.

* fix(auth): protect oauth routes and health reset operations

Require authenticated dashboard access for OAuth endpoints that can
create or import provider connections when login enforcement is
enabled.

Move `/api/monitoring/health` to the readonly public route list so
safe methods remain public while DELETE now returns 401 for anonymous
requests.

Also update Next.js native `.node` handling to avoid webpack parse
failures from external packages such as ngrok and keytar, and add
coverage for the new auth behavior.

* build(compression): ship RTK rule and filter assets with app bundles

Include compression JSON assets in Next output tracing, prepublish copies,
and pack artifact policy checks so standalone and packaged builds can
load RTK filters and caveman rule packs at runtime.

Also harden compression runtime behavior by resolving alternate asset
directories, scoping rule cache entries by source path, carrying RTK raw
output pointers through stacked runs, degrading oversized preview diffs,
and applying combo language/output mode defaults during chat routing.

Add coverage for packaging rules, provider-scoped model parsing, smart
truncate edge cases, raw output retention, and combo-driven compression
behavior.

* docs(workflows): update local repo paths to OmniRoute

Replace outdated `/home/diegosouzapw/dev/proxys/9router` references
with the current `OmniRoute` directory across deploy, release, and
version bump workflow guides so local command examples match the
renamed repository layout

* feat(compression): complete RTK parity coverage

* test(build): align next config assertions

---------

Co-authored-by: diegosouzapw <diego.souza.pw@gmail.com>
2026-05-03 00:37:08 -03:00
diegosouzapw
0f35c148ea feat(compression): expand caveman compression and analytics pipeline
Add caveman intensity levels, output mode instructions, validation, and
preview diffs across the compression pipeline.

Extend MCP and dashboard settings to support auto-trigger mode, system
prompt preservation, MCP description compression, and caveman rule
metadata. Record richer compression analytics with receipt fields,
validation fallbacks, output mode data, and add the related database
migration.

Improve preservation handling for code, URLs, markdown, math, and other
protected content while adding broad unit, integration, and golden-set
coverage for caveman parity and compression behavior.
2026-05-02 12:39:04 -03:00
diegosouzapw
59f4d42795 chore(test): sync open-mode runners and assertions
Update ecosystem and Playwright test environments to boot in open mode
with CLI tools enabled and empty auth defaults when local credentials
are not required.

Refresh A2A, provider, token-count, and circuit-breaker expectations to
match current response semantics and profile-driven thresholds. Remove
obsolete migration regression coverage tied to retired upgrade paths and
add a scratch migration probe for manual verification.
2026-05-02 01:48:58 -03:00
Paijo
95a43597c9 fix(executor): fix urlSuffix and authHeader bugs causing auth failures (Issue #1846) (#1861)
Integrated into release/v3.7.8
2026-05-01 17:44:24 -03:00
Antigravity Assistant
f44fb3d9b7 chore: bump version to 3.7.9-pre 2026-05-01 08:36:51 -03:00
Antigravity Assistant
7b21e04604 Merge release/v3.7.7 into compression phase 4 2026-04-30 17:37:57 -03:00
Antigravity Assistant
e9d2ebb4f9 chore(release): v3.7.7 — changelog, docs, version sync 2026-04-30 16:05:35 -03:00
backryun
a16e47c593 fix(providers): refresh web client user agents (#1699)
Integrated release/v3.7.2 changes — refreshed web client user agents, env docs, Gemini OAuth fix
2026-04-28 02:41:19 -03:00
diegosouzapw
7f3dccf6dd build(prepublish): make next build bundler configurable
Allow the prepublish script to choose between webpack and turbopack
using the OMNIROUTE_USE_TURBOPACK environment variable.

This keeps the default build path explicit while making it possible to
switch bundlers for packaging and release workflows without editing the
script.
2026-04-27 19:48:46 -03:00
diegosouzapw
ae77d1370e fix(electron): pre-create userData dir for Windows + stream logs in CI
Windows smoke test exits code=0 because requestSingleInstanceLock()
fails silently when the APPDATA/<productName> directory doesn't exist.
Pre-create the directory so the lock file can be written.

Also enables ELECTRON_SMOKE_STREAM_LOGS=1 in CI for better debugging.
2026-04-27 02:48:25 -03:00
diegosouzapw
4d48454c11 fix(electron): add --no-sandbox and sandbox env for CI smoke tests
Linux: SUID sandbox error (chrome-sandbox needs root:4755)
Windows: silent exit 0 without sandbox bypass

Adds --no-sandbox, --disable-gpu, --disable-dev-shm-usage CLI args
and ELECTRON_DISABLE_SANDBOX=1 env var when CI=true is detected.
2026-04-27 02:33:35 -03:00
Prateek Rungta
56ae1b8246 fix: package Electron runtime deps (#1639)
Integrated into release/v3.7.1 — fixes Electron installer shipping empty node_modules. Adds separate extraResources FileSet, CI smoke test job, and cross-platform packaged app validation script. Closes #1636.
2026-04-26 23:59:51 -03:00
diegosouzapw
f00e9a1272 fix(postinstall): extend native module repair to cover wreq-js for pnpm global installs (#1634)
- Add fixWreqJsBinary() to postinstall.mjs with 3-strategy repair:
  1. Copy platform binary from root node_modules
  2. Copy entire rust/ directory (all platform binaries)
  3. npm rebuild wreq-js fallback
- Fixes macOS arm64 global pnpm installs shipping only Linux binaries
- Adds reasoning replay cache feature for DeepSeek V4 (#1628)
- Updates CHANGELOG.md with both fixes
2026-04-26 20:15:47 -03:00
diegosouzapw
05a50fcf53 fix(encryption): prevent STORAGE_ENCRYPTION_KEY regeneration on upgrade (#1622)
- sync-env.mjs: add hasEncryptedCredentials() guard before generating
  STORAGE_ENCRYPTION_KEY, matching the existing guard in bootstrap-env.mjs
- bootstrap-env.mjs: add decrypt-probe diagnostic on startup to detect
  key mismatch and log actionable recovery instructions
- bin/omniroute.mjs: add 'reset-encrypted-columns' CLI recovery command
  that nulls encrypted credential columns while preserving provider config
- tests/unit/sync-env.test.ts: isolate tests with DATA_DIR override

Root cause: postinstall → syncEnv() generated fresh crypto secrets into
the package-local .env on every 'npm install -g' upgrade, since the
package directory is wiped and recreated. The bootstrap-env guard never
triggered because sync-env already filled in the new keys. The DB still
contained credentials encrypted under the previous key, making them
permanently unrecoverable (AES-GCM auth-tag mismatch → silent 401s).
2026-04-26 12:57:38 -03:00
diegosouzapw
a6c96257a5 chore(release): finalize changelog and update any-budget for imageGeneration.ts 2026-04-25 23:58:05 -03:00
diegosouzapw
d9120c7b56 fix(i18n): add missing dashboard message keys across locales
Populate newly introduced dashboard and provider UI message keys in all
locale bundles to prevent missing translation lookups after the v3.7.0
changes.

Also fix quota reset handling so expired limits are only marked stale
when usage is still pending, adjust combo form dark-mode backgrounds,
and expand the prepublish hash rewrite to handle nested package paths.
2026-04-25 20:56:43 -03:00
Jason Landbridge
604d55ed42 fix(cli): align OpenCode config preview and add multi-model selection (#1602)
Integrated into release/v3.7.0
2026-04-25 15:55:41 -03:00
diegosouzapw
3478ac6538 Fix Codex Responses WebSocket memory retention and weekly limit handling (#1581) 2026-04-25 11:16:54 -03:00
diegosouzapw
8684d43ebd feat(providers): add AgentRouter support and per-model health checks
Register AgentRouter across the provider registry, pricing, docs, and
dashboard metadata so it appears as a first-class OpenAI-compatible
passthrough option.

Add a dedicated `/api/models/test` endpoint and provider-page controls
for on-demand single-model diagnostics, including latency feedback and
success/error status, to help verify mappings without triggering broader
connection tests or rate limits.

Align header casing expectations in provider validation tests with the
current registry contract.
2026-04-25 09:19:20 -03:00
diegosouzapw
f5df0d337d fix(build): include wreq-js native assets in standalone 2026-04-25 07:32:44 -03:00
diegosouzapw
57b926f739 fix(api): validate route payloads for release checks 2026-04-25 01:22:18 -03:00
diegosouzapw
1f962a2167 fix(mitm): harden packaged runtime and privileged command execution
Compile MITM utilities as NodeNext ESM for prepublish builds, copy the
CommonJS MITM server into standalone artifacts, and resolve MITM data
paths without relying on Next.js aliases at runtime.

Replace shell-interpolated setup and elevated command flows with
argument-based spawn and execFile helpers for database setup, DNS edits,
certificate install flows, and Tailscale sudo execution. Also tighten
the Electron production CSP, update provider icon loading to use direct
@lobehub/icons imports with local fallbacks, and pin dependency
configuration to avoid unused peer installs and known audit findings.
2026-04-25 00:31:43 -03:00
diegosouzapw
0e15988233 feat(providers): register codex auto review and expand icon coverage
Add the Codex Auto Review model to the provider registry and prefer
Codex when resolving unprefixed `codex-auto-review` and `gpt-5.5`
requests.

Broaden provider icon mappings and bundled PNG assets so more providers
render correctly in the shared UI. Also tighten chatCore stream cleanup
behavior so streaming responses return immediately while semaphore slots
and model locks are released on completion or failure, with tests and
artifact policy coverage updated accordingly.
2026-04-24 16:58:14 -03:00
be0hhh
c9aef0e595 feat(codex): support GPT-5.5 responses websocket (#1573)
Integrated into release/v3.7.0
2026-04-24 15:44:59 -03:00
Randi
4f6f97b369 feat: add expert combo configuration mode (#1547) 2026-04-24 09:04:10 -03:00
diegosouzapw
1ef354465a fix(release): resolve combo prefixing, electron packaging, and CLI auth regressions (#1471, #1492, #1496, #1497, #1486) 2026-04-21 22:11:19 -03:00
Diego Rodrigues de Sa e Souza
3432dfd280 Release v3.6.9 (#1404)
* test: resolve typescript strictness complaints in unit tests

* Update Claude Code obfuscation to version 2.1.114 (#1403)

* fix(cloud-code): scope thinking stripping to executor boundaries (#1401)

* fix(cloud-code): scope thinking stripping to executors

* fix(cloud-code): guard antigravity normalized body

* Update Claude Code obfuscation to version 2.1.114

- Update Claude Code version from 2.1.87 to 2.1.114
- Update X-Stainless-Package-Version from 0.80.0 to 0.81.0
- Add new beta flags: redact-thinking-2026-02-12, advisor-tool-2026-03-01, advanced-tool-use-2025-11-20
- Add missing headers: anthropic-version, anthropic-dangerous-direct-browser-access, x-app, X-Stainless-Timeout
- Add all X-Stainless-* headers (Arch, Lang, OS, Runtime, Runtime-Version, Retry-Count)
- Fix accept-encoding header: identity -> gzip, deflate, br, zstd
- Add connection: keep-alive header
- Update tool name mapping: add lsp, apply_patch, websearch

These changes ensure that requests from OpenCode through Omniroute are indistinguishable from genuine Claude Code 2.1.114 requests, allowing proper authentication with Anthropic's API without triggering extra credits errors.

* fix: resolve CodeQL password hash alert and TruffleHog CI failure

---------

Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Diego Rodrigues de Sa e Souza <8016841+diegosouzapw@users.noreply.github.com>
Co-authored-by: Nikolay Popov <ekklesio.dev@gmail.com>
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>

* fix(claude-code): scope obfuscation to cli clients and fix tests

* docs(workflows): enforce PR merge instead of manual close

* docs(changelog): update 3.6.9 notes with missing PR 1403 and fixes

* docs(workflows): update generate-release to use full changelog for PR body

* fix(tsc): silence baseUrl deprecation warnings for TS 5.5+

* fix(chatcore): apply proactive compression before provider translation (#1406)

Integrated into release/v3.6.9

* docs(changelog): add PR 1406

* Makes text visible in dark-mode (#1409)

Integrated into release/v3.6.9

* docs(changelog): add PR 1409

* chore: save local work

* chore(release): sync version references to 3.6.9

* fix(codex): prevent proactive token refresh consumption and strip background parameter

* ci: shard long-running suites and relax timeouts

* ci: allow manual CI dispatch for release branches

* feat(skills): provider-aware marketplace UX, scored AUTO injection, and memory pipeline hardening (#1411)

* fix/400 for GeminiCLI(add "ref" in GEMINI_UNSUPPORTED_SCHEMA_KEYS)

* feat(cc-compatible): align request shape with Claude CLI

* fix(cc-compatible): add Claude CLI system skeleton for OpenAI input

* preserve reasoning when translating chat to responses (#1414)

Integrated into release/v3.6.9

* fix(skills): optimize AUTO scoring and include Responses input context (#1418)

Integrated into release/v3.6.9

* chore: fix TS errors and update review-prs workflow

* fix(api): stop sending unsupported Gemini and Codex parameters

Prevent Gemini request translation from injecting default
thoughtSignature values that the upstream API strictly validates and
rejects. Only preserve real signatures resolved from prior upstream
responses, and strip additionalProperties from Gemini function schemas
to avoid 400 "Unknown name" errors.

Also remove fallback-injected session_id and conversation_id fields
before sending Codex requests, and restore compatibility with the
legacy OUTBOUND_SSRF_GUARD_ENABLED flag when determining whether
private provider URLs are allowed.

Updates the Gemini translator and regression tests for issue #1410
and related 400 error cases.

* fix(core): stabilization fixes for token refresh, usage translation, and testing

- Update Codex token refresh detection logic
- Mark provider connections invalid on unrecoverable refresh error
- Fix Claude usage translation under-reporting cached tokens
- Update test expectations
- Update CHANGELOG.md for v3.6.9

* fix(auth): reload fresh token state and unify expiry persistence

Refresh checks now re-read the latest stored provider connection before
attempting rotation so they do not use stale refresh tokens captured by
an earlier sweep.

Token updates also persist both expiresAt and tokenExpiresAt across the
health check, usage-limit refresh path, and SSE refresh flow. This keeps
known token expiry metadata in sync and avoids interval-based refreshes
for connections whose tokens are still valid well into the future.

* fix: resolve SSRF environment static evaluation bug (#1427)

Fix import aliases and strict TS typings for tests and ACP agents.

* test: resolve remaining strict type errors in test files

* test: fix provider service assertion for anthropic-compatible header

* fix(codex): respect openaiStoreEnabled setting during native passthrough (#1432)

* fix(codex): fix token refresh unrecoverable detection for expired tokens

* fix(ci): restore release v3.6.9 build and flaky tests

* fix(cc-compatible): trim default OpenAI system skeleton (#1433)

Integrated into release/v3.6.9

* fix: prevent masked API keys from being written to CLI tool configs (#1435)

* feat: mark Qwen provider as deprecated and add deprecation warning to CLI tool (#1437)

* docs(changelog): comprehensive v3.6.9 update with all 59 commits since v3.6.8

* test(ci): align qwen guide settings assertions

* fix(security): resolve CodeQL alert 163 for incomplete URL sanitization in Qwen CLI settings

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: Nikolay Popov <74762779+nikolay-popov-ideogram@users.noreply.github.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Nikolay Popov <ekklesio.dev@gmail.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Tim Massey <tim-massey@users.noreply.github.com>
Co-authored-by: Paijo <oyi77@users.noreply.github.com>
Co-authored-by: dail45 <dail45@yandex.ru>
Co-authored-by: R.D. <rogerproself@gmail.com>
2026-04-19 19:50:30 -03:00
diegosouzapw
ecab0edad1 fix(security): Resolve CodeQL alerts (#151, #154, #155-#159)
- Fix insecure randomness in usage service
- Add CodeQL suppression for intentional SHA-512 checksum in callLogArtifacts
- Replace URL string prefix matching with strict hostname validation in tests
- Remove scratch scripts with sensitive data logging
2026-04-18 11:51:24 -03:00
diegosouzapw
d42842ba25 chore: fix CodeQL alerts and missing docker postinstall 2026-04-18 11:44:20 -03:00
diegosouzapw
c8828b8a42 fix(build): unblock release build and settings state updates
Add targeted TypeScript annotations and module declarations to reduce
type errors in open-sse services, executors, and shared utilities while
temporarily disabling checking in legacy files that still need migration.

Reset stale `.next/standalone` output before isolated builds so release
artifacts are generated from a clean state.

Update the dashboard proxy settings UI to bypass cached settings reads
and immediately roll back debug mode when the PATCH request fails, which
prevents stale data and inconsistent toggle state.
2026-04-17 23:21:02 -03:00
diegosouzapw
ea67216bf2 refactor: Split CLI runner and decouple migration engine for extensibility
Closes #1358
2026-04-17 17:02:00 -03:00
diegosouzapw
8cf78ddf00 feat(auth): enforce dashboard sessions for management routes
Require dashboard session cookies on protected management APIs and
reject bearer API keys with explicit 403 responses to prevent
privilege escalation across provider, settings, and model alias routes.

Add a dedicated payload rules management surface with dashboard UI,
OpenAPI documentation, route normalization, and tests for hot-reloaded
runtime updates.

Consolidate provider catalog metadata for dashboard pages, add
Perplexity web-cookie provider support, retire the legacy provider
creation page, and improve upstream proxy handling.

Harden startup and runtime behavior by moving cloud sync bootstrap to
server instrumentation, skipping background services during build/test,
making models.dev sync abortable, pruning isolated build artifacts, and
improving DB backup and recovery safeguards.
2026-04-17 16:45:27 -03:00
diegosouzapw
7b51ccd9e4 feat(antigravity): add client model aliases and signature bypass modes
Expose client-visible Antigravity preview model aliases while resolving
them back to upstream IDs for execution and provider discovery. Refresh
the Antigravity user agent from cached latest release metadata so model
discovery and requests track current CLI versions more reliably.

Add configurable Gemini thought signature cache modes in settings to
allow validated client-provided signatures in bypass flows while
preserving the existing stored-signature behavior by default.

Also centralize Anthropics header/version constants, enrich image model
catalog metadata with input and output modalities, add dashboard image
input support for advanced image providers, and exclude task docs from
Next standalone tracing to keep isolated builds stable.
2026-04-16 20:53:35 -03:00
diegosouzapw
25f9a1339f fix(cli): avoid creating app router during postinstall (#1351) 2026-04-16 16:47:46 -03:00