Commit Graph

369 Commits

Author SHA1 Message Date
Diego Rodrigues de Sa e Souza
0cd388efb8 Release v3.7.4 (#1730)
* chore(release): v3.7.4 — version bump, openapi and changelog sync

* fix: preserve previous_response_id and conversation_id fields on empty input array (#1729)

* fix: bypass UI validation block for optional API keys and fix string fallback typing (#1721)

* fix(proxy): disable HTTP keep-alive and pipelining in Undici proxy dispatcher to prevent socket hang up

* feat(proxy): implement bulk proxy import via pipe-delimited parser with update-or-create logic

* docs: update changelog for v3.7.4 fixes and proxy features

* test: update responses store expectations for empty input arrays

* feat(pwa): add fullscreen installable PWA with manifest, service worker, and cross-platform app icons. (#1728)

Integrated into release/v3.7.4

* Fix image provider validation and Stability image requests (#1726)

Integrated into release/v3.7.4

* docs: add PR 1726 and PR 1728 to v3.7.4 changelog

* fix(security): replace insecure Math.random with crypto.getRandomValues for fallback UUID generation

* fix(migrations): intercept 007 migration to use IF NOT EXISTS logic on fresh installs

Fixes #1733

* test: fix typescript compilation errors in unit tests

* fix(db): reconcile legacy reasoning cache migration

* chore(release): bump to v3.7.4 — changelog, docs, version sync

* fix(cc-compatible): preserve Claude Code system skeleton (#1740)

Integrated into release/v3.7.4

* docs(changelog): update for PR #1740 merge

* docs(changelog): include workflow updates

* fix(db): reconcile legacy reasoning cache migration (#1734)

Integrated into release/v3.7.4

* Add endpoint tunnel visibility settings (#1743)

Integrated into release/v3.7.4

* Normalize max reasoning effort for Codex routing (#1744)

Integrated into release/v3.7.4

* Fix Claude Code gateway config helper (#1745)

Integrated into release/v3.7.4

* Refresh CLI fingerprint provider profiles (#1746)

Integrated into release/v3.7.4

* Integrated into release/v3.7.4 (PR #1742)

* docs(changelog): update for PRs 1742-1746

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: Yash Ghule <y.ghule77@gmail.com>
Co-authored-by: backryun <bakryun0718@proton.me>
Co-authored-by: dhaern <manker_lol@hotmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Duncan L <leungd@gmail.com>
2026-04-28 20:46:25 -03:00
backryun
57e55268e5 Fix image provider validation and Stability image requests (#1726)
Integrated into release/v3.7.4
2026-04-28 13:59:03 -03:00
diegosouzapw
edd6941de4 fix: resolve 5 bugs (#1712 #1719 #1707 #1706 #1704)
- #1712: Strip existing billing headers before injecting to fix prompt cache misses
- #1719: Strip output_config.format for non-Anthropic Claude endpoints
- #1707: Set terminal error state on quality validation failure (false ALL_ACCOUNTS_INACTIVE)
- #1706: Wrap proxy_assignments queries in try-catch for missing table on Electron
- #1704: Fix Windows file URL path resolution in migration runner with cwd fallback
2026-04-28 07:48:19 -03:00
diegosouzapw
96fa89052b chore: resolve merge conflicts from main into release/v3.7.2 2026-04-28 02:53:34 -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
95f7c69e36 fix(memory): use user role for GLM/ZAI/Qianfan providers (#1701)
GLM/ZhipuAI rejects system role messages with 422 'Input should be
user or assistant'. When memory injection adds a system-role message,
GLM combo targets fail because the system message survives into the
upstream request.

Fix:
- injection.ts: add glm, glmt, glm-cn, zai, qianfan to
  PROVIDERS_WITHOUT_SYSTEM_MESSAGE so memory is injected as user role
- roleNormalizer.ts: add exact 'glm' model match to
  MODELS_WITHOUT_SYSTEM_ROLE for Pollinations and bare model ids

Test: 22 new unit tests covering all GLM variants + regression checks
for openai/anthropic providers.

Closes #1701
2026-04-28 02:16:16 -03:00
diegosouzapw
cf959c768d Merge branch 'main' into release/v3.7.2 2026-04-27 22:53:02 -03:00
diegosouzapw
084f2c53ce fix(security): replace Object.assign with spread to eliminate prototype pollution flow
CodeQL js/prototype-polluting-assignment tracks Object.assign on
dynamically-keyed objects as a potential pollution vector, even when
runtime guards (isSafeKey) are in place. Replace with spread assignment
which creates a new value — CodeQL does not flag this pattern.

Addresses remaining alerts #167 and #168.
2026-04-27 20:23:49 -03:00
diegosouzapw
9e198184a7 fix(security): resolve 14 CodeQL code scanning alerts
- Replace polynomial regex /\/+$/ with loop-based stripTrailingSlashes()
  across 8 enterprise provider configs (azure-openai, azureAi, bedrock,
  datarobot, oci, sap, watsonx, audioSpeech) — fixes js/polynomial-redos

- Add prototype-pollution denylist guard in usageHistory.ts to reject
  __proto__/constructor/prototype as model keys — fixes
  js/prototype-polluting-assignment (#167, #168)

- Suppress 3 false-positive js/insufficient-password-hash alerts in
  chatgpt-web.ts and builtins.ts where SHA-256 is used for cache-key
  derivation, not password storage (#176, #177, #178)

- Add stripTrailingSlashes unit tests with ReDoS regression check
2026-04-27 20:00:10 -03:00
diegosouzapw
4ecddaacd9 ci: stabilize release branch checks 2026-04-27 18:55:29 -03:00
clousky2020
cc07e5f7f6 fix: add body-read timeout to prevent stuck pending requests (#1680)
fix: add body-read timeout to prevent stuck pending requests — integrated into release/v3.7.2
2026-04-27 11:51:04 -03:00
Jack
31a0628cf1 fix(search): support optional bearer auth for SearXNG (#1683)
fix(search): support optional bearer auth for SearXNG — integrated into release/v3.7.2
2026-04-27 11:50:43 -03:00
Payne
ba6a8602fb fix(muse-spark-web): update to Meta's Ecto-era persisted query (fixes 502 "Unknown type RewriteOptionsInput") (#1668)
Integrated into release/v3.7.2
2026-04-27 08:02:12 -03:00
diegosouzapw
6747e22757 fix(codex,db): resolve 6 issues — Codex 502, store default, migration guards
Fixes:
- fix(codex): rename getWreqWebsocket() → getCodexWebSocketTransport()
  Fixes the ReferenceError causing 502 on all Codex requests (#1652, #1653)

- fix(codex): default store to false instead of true
  Codex OAuth backend rejects store=true with 'Store must be set to false' (#1635)

- fix(db): add post-migration startup guards for combos.sort_order (#1657)
  and batches/files tables (#1648) — handles heuristic seeding edge case

- fix(db): renumber duplicate migration 032_create_reasoning_cache → 033

Closes #1635, #1648, #1652, #1653, #1657
Also closed as user-config: #1649 (Claude 429), #1659 (thought_signature)
2026-04-27 07:39:12 -03:00
abix5
6dd883e5f4 feat(authz): introduce centralized proxy-based authz pipeline and lifecycle policy (#1632)
Integrated into release/v3.7.2
2026-04-27 07:16:24 -03:00
Randi
845e2b3d01 feat: configure call log pipeline artifacts (#1650)
Integrated into release/v3.7.2
2026-04-27 07:12:34 -03:00
backryun
9d334c82b9 fix(grokweb):Update Request and Response Specifications (#1655)
Integrated into release/v3.7.2
2026-04-27 07:12:17 -03:00
diegosouzapw
c9fc36ca14 feat(network): add guarded remote image fetch utility
Centralize remote image downloads behind a shared helper that
validates outbound URLs, enforces redirect and size limits, and
applies request timeouts before bytes are read.

Wire the helper into image generation and vision bridge flows so
remote image inputs and result URLs follow the same fetch policy and
block redirects to private hosts. Update key management routes to use
structured logging and document the WebSocket bridge secret in the
example environment file.
2026-04-27 02:25:46 -03:00
diegosouzapw
3008ba9a13 fix(transport): cap streaming logs and parse fragmented responses (#1647) 2026-04-27 01:45:36 -03:00
diegosouzapw
2601e0e49d fix(migration): prevent compat-renamed version slot from shadowing new migrations (#1637)
After reconcileRenumberedMigrations() rewrites a legacy row (e.g. 028→029),
verify the old version slot is clear. A residual row at the old version
would cause getAppliedVersions() to skip the new migration file at that
version number (028_create_files_and_batches.sql).

Also adds 'batches' table to PHYSICAL_SCHEMA_SENTINELS for physical
schema recovery on upgrade paths.
2026-04-26 23:29:25 -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
cabdfb04e7 fix(cache): replay cached reasoning for tool-calling think models
Prevent upstream 400 failures when clients omit prior
reasoning_content in multi-turn tool-calling conversations.

Capture reasoning_content from streaming and non-streaming assistant
responses, persist it in a memory-plus-SQLite cache keyed by
tool_call_id, and re-inject it on later requests when available.

Add the reasoning cache migration, service layer, authenticated API
endpoints, dashboard tab, and unit coverage to support inspection,
cleanup, and crash recovery.
2026-04-26 18:53:54 -03:00
diegosouzapw
3547258282 feat(skills): add workspace-scoped builtins with sandbox execution
Replace placeholder builtin skill responses with real file, HTTP, and
code-execution flows constrained to per-key workspaces, size limits, and
sanitized request headers.

Harden the Docker sandbox with dropped capabilities, tmpfs-backed
workdirs, configurable runtime limits, and clearer failure behavior for
disabled browser automation.

Also consolidate legacy dashboard usage navigation into logs, remove
stale sidebar and SSE backup artifacts, and expand tests to lock in the
new runtime and routing contracts.
2026-04-26 03:03:52 -03:00
Payne
8a8fcc77a8 feat(chatgpt-web): image generation + edit (Open WebUI compatible) (#1607)
Integrated into release/v3.7.0
2026-04-25 23:51:37 -03:00
Jean Brito
13495d4d13 feat(providers): wire CrofAI /usage_api/ into quota preflight, monitor & Limits page (#1606)
Integrated into release/v3.7.0
2026-04-25 23:51:18 -03:00
diegosouzapw
b9c20b2b06 fix(tailscale): support sudo auth and live daemon socket detection
Pass the entered sudo password through endpoint enable and disable
requests so macOS and Linux installs can start or stop Tailscale
without retrying unauthenticated commands.

Also detect and cache the active tailscaled socket before issuing CLI
calls, preferring the system daemon socket when available so status and
funnel operations target the running service correctly.
2026-04-25 21:59:50 -03:00
diegosouzapw
3dba954900 fix(i18n): translate 519 untranslated pt-BR keys — PR #1602 regression fix
Several merges (primarily #1602 by @JasonLandbridge) added new i18n keys
with English values to all locale files instead of translated text.
This commit auto-translates all remaining untranslated pt-BR.json keys
using Google Translate, with manual fixups for technical terms (Proxy,
Fallback, Streaming, Playground, Skills, etc).
2026-04-25 19:08:52 -03:00
diegosouzapw
cb4ad33703 fix(api): harden model tests and metadata reads 2026-04-25 14:41:45 -03:00
diegosouzapw
3478ac6538 Fix Codex Responses WebSocket memory retention and weekly limit handling (#1581) 2026-04-25 11:16:54 -03:00
backryun
a5be284f1d [Improvement] Fix Providers Default models list (Done) (#1577)
Integrated into release/v3.7.0
2026-04-25 11:03:31 -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
Cong Vu Chi
af5d800759 fix(vision-bridge): force GPT-family image fallback (#1571)
Integrated into release/v3.7.0
2026-04-24 15:56:16 -03:00
diegosouzapw
7d34b6a7e1 feat(providers): add AWS Polly and Lemonade provider support
Register AWS Polly as an audio provider with SigV4 request signing,
speech engine discovery, and API-key validation for managed provider
flows.

Add Lemonade as a self-hosted OpenAI-compatible provider, expand
static model discovery to audio registries, and support Azure OpenAI
deployment discovery from resource endpoints.

Sanitize sensitive provider-specific AWS fields in API responses and
update related tests and release notes.
2026-04-24 13:20:59 -03:00
Cong Vu Chi
15b4a54454 fix(claude): preserve tool_result adjacency (#1555)
* fix(claude): preserve tool_result adjacency in native and CC-compatible paths

* feat(providers): add Petals and Nous Research provider support

Register Nous Research as an OpenAI-compatible gateway with remote
model discovery and validation against chat completions.

Add Petals provider metadata, default config, validation, and a
specialized executor that maps OpenAI-style requests to the public
generate endpoint. Also allow optional API keys and configurable base
URLs for Petals in the dashboard and provider schemas.

Expand provider model and catalog tests to cover both integrations.

* fix(resilience): sync queue updates and clear stale discovery caches

Await runtime request queue updates so limiter settings and auto-enabled
API key protections are recomputed when resilience settings change.

Preserve cancelled batch state for in-flight work by marking input files
processed without generating output artifacts, and replace cached synced
models with an empty set when remote discovery returns no models so the
providers route falls back to the local catalog instead of stale cache.

---------

Co-authored-by: congvc <congvc-dev@gmail.com>
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
2026-04-24 09:22:46 -03:00
Randi
4f6f97b369 feat: add expert combo configuration mode (#1547) 2026-04-24 09:04:10 -03:00
diegosouzapw
80e3858ae4 feat(providers): add Empower and Poe gateway support
Register Empower and Poe as managed OpenAI-compatible providers with
static metadata, example models, and remote model catalog support.

Add Poe-specific credential validation against its balance endpoint and
tighten Zed credential imports by skipping unsupported entries and
deduplicating provider-token pairs before saving.
2026-04-24 07:48:19 -03:00
diegosouzapw
c656123db9 feat(video): support Runway task-based generation and provider cataloging
Add Runway as a managed API key provider with a static video model
catalog, dashboard metadata, and provider model route support.

Implement Runway-specific URL normalization, auth headers, credential
validation, and video generation handling for both text-to-video and
image-to-video flows, including task polling and output normalization.

Extend unit coverage for Runway validation, managed catalog exposure,
registry discovery, and end-to-end video handler behavior.
2026-04-24 07:21:53 -03:00
diegosouzapw
3a0bc955be feat(providers): add GitLab Duo, NLP Cloud, and enterprise gateways
Expand the provider catalog with GitLab Duo PAT and OAuth support,
NLP Cloud, and new OpenAI-compatible gateways including Azure AI
Foundry, Bedrock, DataRobot, watsonx, OCI, SAP, Modal, Reka,
Clarifai, and Chutes.

Add specialized GitLab and NLP Cloud executors, provider-specific
URL normalization and validation flows, managed catalog/model
discovery updates, and dashboard metadata for the new providers.

Extend search support with You.com, including request building,
response normalization, validation coverage, and route/schema
registration.
2026-04-24 07:00:21 -03:00
diegosouzapw
e2469b8f6d feat(providers): add amazon-q and specialty model provider support
Add Amazon Q as a Kiro-compatible OAuth provider across execution,
token refresh, usage reporting, dashboard connection flows, and model
catalog exposure.

Add Voyage AI embedding and rerank catalogs plus Jina AI rerank support,
including local model catalog handling, API key validation, provider
metadata, and rerank error reporting updates.

Refresh built-in GitHub Copilot and Kiro model registries to match the
current supported lineup and extend test coverage for the new provider
paths.
2026-04-23 20:04:01 -03:00
diegosouzapw
968cbfeb15 fix(providers): support local OpenAI-style endpoints without auth
Treat LM Studio, vLLM, Llamafile, Triton, Docker Model Runner,
XInference, and oobabooga as managed local providers with default
base URLs and passthrough model discovery.

Avoid sending empty bearer headers during validation, model discovery,
and execution so self-hosted endpoints work without API keys while
still honoring custom base URLs and localized dashboard hints.
2026-04-23 16:57:43 -03:00
diegosouzapw
01dd72cf1f feat(dashboard): add custom CLI builder and eval suite management
Introduce a custom CLI tools card that generates OpenAI-compatible
env vars and JSON config, and add a cost overview tab with pricing
source visibility.

Add persisted custom eval suites with authenticated CRUD routes and
validation, plus new translator stream transformation tooling and
richer live monitor routing details.

Improve localization coverage across dashboard flows and add unit
tests for custom CLI config, pricing sources, eval suites, and
stream transformation.
2026-04-23 16:57:43 -03:00
diegosouzapw
9a8404b733 fix(evals): persist run history and secure eval management routes
Store eval executions with target metadata, expose aggregated scorecard
and recent run history endpoints, and return dashboard-ready eval data
including target options and API key metadata.

Also require management auth for eval read endpoints and preserve
per-case latency, errors, and output snippets so historical results are
more reliable and easier to inspect.
2026-04-23 16:57:43 -03:00
diegosouzapw
47468636e4 feat(dashboard): expand observability and provider tooling
Unify audit access under the logs experience and add richer active
request visibility with sanitized client and provider payload previews.

Expose provider warnings from upstream responses in compliance audit
logs, surface learned rate-limit header data in health monitoring, and
add MCP cache stats and cache flush tools with test coverage.

Also add local provider catalog support for SD WebUI and ComfyUI,
include video generation in endpoint docs and UI, add eval run storage
migrations, and refresh docs and translations to match the expanded
feature set.
2026-04-23 16:57:43 -03:00
diegosouzapw
1568c53faa Resolve conflicts with release/v3.7.0 2026-04-23 08:30:03 -03:00
kang-heewon
bdfcec7cf7 feat: provider/account 단위 동시성 cap 추가
- DB 마이그레이션 028: provider_connections.max_concurrent 컬럼 추가
- AccountSemaphore: 계정별 FIFO 세마포어 (acquire/release/timeout/block)
- chatCore.ts: 요청 파이프라인에 선제적 cap enforcement 통합
- providers.ts: maxConround-trip round-trip 저장/조회, cleanNulls() 보정
- API: provider limits route에서 maxConcurrent GET/PUT 지원
- UI: provider 연결 상세 페이지 account native cap 입력 필드 + hint
- UI: ResilienceTab combo concurrency 라벨 구분 (combo vs account)
- i18n: en/ko 번역 키 추가
- schemas.ts: maxConcurrent 음수 검증 + null 허용
- 테스트: semaphore 6개, DB round-trip + validation 6개
2026-04-23 14:02:45 +09:00
Diego Rodrigues de Sa e Souza
7388623244 fix(combo): fallback to next model on all-accounts-rate-limited 503 (… (#1523)
Integrated into release/v3.7.0
2026-04-23 01:53:00 -03:00
Randi
fff025ca0f Fix OpenRouter remote discovery and unify managed model sync (#1521)
Integrated into release/v3.7.0
2026-04-23 01:14:59 -03:00
Prakersh Maheshwari
331e1b7d61 feat(usage): MiniMax + MiniMax-CN quota tracking in provider limits dashboard (#1516)
Integrated into release/v3.7.0
2026-04-22 19:35:14 -03:00
diegosouzapw
16b0499192 fix(api): harden batch and file endpoints for auth and recovery
Reject invalid API keys even when authentication is optional and add
OPTIONS handlers for batch and file routes to support CORS preflights.

Also recover orphaned batches stuck in finalizing after restarts,
include finalizing in pending batch queries, preserve multipart upload
content handling, and fetch remote vision images as data URIs for
Anthropic requests.
2026-04-22 17:10:47 -03:00
diegosouzapw
fe09fe485f fix: Strip reasoning_content from OpenAI format messages for non-reasoning models (#1505) 2026-04-22 14:52:35 -03:00