Commit graph

143 commits

Author SHA1 Message Date
Diego Rodrigues de Sa e Souza
1442c47bbb
chore(release): v3.5.6 — email masking, model toggle, OpenRouter registries & bug fixes (#1080)
* fix(minimax): switch auth from x-api-key to Authorization Bearer (#1076)

Integrated into release/v3.5.6 — MiniMax auth fix with authHeader consistency normalization

* feat(CI,i18n): autogenerate language files + Add missing strings (#1071)

Integrated into release/v3.5.6 — i18n translations for memory, skills, and missing keys across 31 languages

* fix(ci): restore i18n continue-on-error, remove auto-commit race condition

* fix(husky): load nvm in hooks for VS Code compatibility

* fix(husky): gracefully skip hooks when npm is not in PATH

* fix: convert OpenAI function tool_choice to Claude tool format (#1072)

* fix: prevent EPIPE feedback loop filling logs at GB/s (#1006)

* fix: fallback to native fetch when undici dispatcher fails (#1054)

* fix: improve Qoder PAT validation with actionable error messages (#966)

- Add QODER_PERSONAL_ACCESS_TOKEN env var fallback for both validation and execution
- Pre-flight ping check to diagnose connectivity issues (Docker/proxy)
- Detect encrypted auth blobs from ~/.qoder/.auth/user and guide to website PAT
- Clear error messages for auth failures with link to integrations page
- Treat non-auth 4xx as auth-pass (request format issue, not token issue)
- Update tests to cover new validation paths (23 tests, all passing)

* feat: Improve the Chinese translation (#1079)

Integrated into release/v3.5.6

* chore(release): v3.5.6 — i18n updates and credential security fixes

* fix(ci): resolve e2e and docs-sync pipeline failures

* fix(security): bump next to 16.2.3 to resolve SNYK-JS-NEXT-15954202

* fix: guard Memory/Cache UI against null toLocaleString crash (#1083)

* fix: translate OpenAI tool_choice type 'function' to Claude 'tool' format (#1072)

* fix: pass custom baseUrl in provider API key validation (#1078)

* docs: update CHANGELOG with v3.5.6 bug fixes and security patches

* docs: rewrite implement-features workflow with 5-phase harvest-research-report-plan-execute pipeline

* docs: organize _ideia/ into viable/defer/notfit + add Phase 2.5 auto-response workflow

* docs: implementation plans for #1025, #750, #960, #1046 + close already-implemented #833, #973, #982

* feat: mask email addresses in dashboard for privacy (#1025)

* feat: add OpenRouter and GitHub to embedding/image provider registries (#960)

* feat: add model visibility toggle and search filter to provider page (#750)

* docs: move implemented features to notfit, update task plans status

* chore: untrack _ideia/ and _tasks/ from git — private/internal only

* chore(release): bump to v3.5.6 — changelog, docs, version sync & any-budget fix

* fix: remove explicit .ts extension in qoderCli import that caused 500 error in production build

---------

Co-authored-by: Jean Brito <jeanfbrito@gmail.com>
Co-authored-by: zenobit <zenobit@disroot.org>
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: Ethan Hunt <136065060+only4copilot@users.noreply.github.com>
2026-04-09 15:55:59 -03:00
diegosouzapw
d9f4166418 chore(release): bump to v3.5.5 — changelog, docs, version sync 2026-04-08 16:59:24 -03:00
diegosouzapw
4d9312259c chore(release): bump to v3.5.4 — changelog, docs, version sync 2026-04-07 19:04:11 -03:00
diegosouzapw
9981394557 fix(middleware): resolve infinite loop when requireLogin is disabled and stale cookies collide 2026-04-05 03:42:18 -03:00
Diego Rodrigues de Sa e Souza
b100325fe0
chore(release): v3.5.2 — Qoder DashScope Native Integration & Stability (#999)
Some checks failed
CI / Lint (push) Has been cancelled
CI / Build language matrix (push) Has been cancelled
CI / Security Audit (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Build-1 (push) Has been cancelled
Publish to Docker Hub / Build and Push Docker (multi-arch) (push) Has been cancelled
CI / Coverage (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Integration Tests (push) Has been cancelled
CI / Security Tests (push) Has been cancelled
CI / i18n Validation (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Unit Tests-1 (push) Has been cancelled
CI / CI Dashboard (push) Has been cancelled
* feat(qoder): native cosy integration

* feat(qoder): implement native COSY encryption algorithm and remove CLI child instances, plus workflow bumps

* feat(resilience): context overflow fallback, OAuth token detection, empty content guard & context-optimized combo strategy

- Add isContextOverflowError + isContextOverflow detectors (400 + token-limit signals)
- Auto-fallback to next family model on context overflow in chatCore
- Add isEmptyContentResponse to catch fake-success empty responses, trigger fallback + recursive retry
- Add OAUTH_INVALID_TOKEN error type (T11) with isOAuthInvalidToken signal matching; warn instead of deactivating node
- Add getModelContextLimit helper in modelsDevSync (reads limit_context from synced capabilities)
- Upgrade getTokenLimit in contextManager to check models.dev DB before registry (fixes gemini-2.5-pro: 1000000→1048576)
- Add findLargerContextModel in modelFamilyFallback for context-aware model selection
- Add sortModelsByContextSize + context-optimized combo strategy in combo.ts
- Update context-manager unit test for corrected gemini-2.5-pro limit

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(review): address Gemini code review — tool_calls path, infinite recursion, dedup signals, findLargerContextModel

- Fix isEmptyContentResponse: check message.tool_calls/delta.tool_calls instead
  of firstChoice.tool_calls (wrong OpenAI API path, caused tool-call responses
  to be falsely flagged as empty)
- Fix empty content fallback: replace recursive handleChatCore call (infinite
  recursion risk + wrong model due to original body.model) with non-recursive
  pattern — call executeProviderRequest, parse fallback response body, reassign
  responseBody and fall through to existing processing
- Fix context overflow: use findLargerContextModel over family candidates first,
  fall back to getNextFamilyFallback — ensures we pick a model with actually
  larger context window on overflow
- Fix signal dedup: export CONTEXT_OVERFLOW_SIGNALS + CONTEXT_OVERFLOW_REGEX
  from errorClassifier.ts; import shared regex in modelFamilyFallback.ts,
  removing duplicate signal list and per-call RegExp construction

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(UI): add context-optimized strategy to frontend schema and options

* fix(sse): preserve Responses API events in stream translation

When translating Claude-format responses (e.g. GLM) to Responses API
format for Codex CLI, the sanitizer stripped {event, data} structured
items to {"object":"chat.completion.chunk"}, losing all content and
the critical response.completed event.

Only run sanitizeStreamingChunk on OpenAI Chat Completions chunks,
skipping items that have the Responses API {event, data} structure.

* test(sse): add regression test for Claude→Responses stream sanitization

Verifies that {event,data} structured items from the Responses API
translator bypass sanitizeStreamingChunk when translating Claude-format
providers (e.g. GLM) to Responses API format for Codex CLI.

* fix(sse): strengthen Responses API event detection with response. prefix check

Use explicit `response.` prefix check instead of generic `event && data`
presence check, as recommended in PR review.

* fix: pin Next.js to 16.0.10 to prevent Turbopack hashed module bug

Remove ^ prefix from next and eslint-config-next to prevent
automatic upgrades to 16.1.x+ which introduced content-based
hashing for external module references in Turbopack.

Also remove duplicate Material Symbols @import from globals.css
(font already loaded via <link> in layout.tsx).

Fixes #509

* align cc-compatible cache handling with client passthrough

* chore: integrate resilience and turbopack fixes (PRs #992, #990, #987)

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

* docs(i18n): sync documentation updates to 33 languages

* fix(qoder): replace any with unknown to comply with strict any-budget

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Chris Staley <christopher-s@users.noreply.github.com>
Co-authored-by: Ivan <shanin-i2011@yandex.ru>
Co-authored-by: R.D. <rogerproself@gmail.com>
2026-04-05 02:54:44 -03:00
diegosouzapw
bd281e5753 chore(release): v3.5.1 — Qwen OAuth reliability & limits tracking sync 2026-04-04 09:10:56 -03:00
diegosouzapw
2610a286ca chore(release): v3.5.0 — sync specs and finalize CHANGELOG 2026-04-03 10:19:14 -03:00
diegosouzapw
314ef361b6 chore(release): v3.4.9 — stabilize dashboard and integrated PRs 2026-04-03 03:25:39 -03:00
diegosouzapw
d46e3f07c3 chore(release): v3.4.8 — security compliance and fix algorithms 2026-04-03 00:15:35 -03:00
diegosouzapw
6a36606bd5 chore(release): v3.4.7 — Finalize bug fixes and cryptography check 2026-04-02 22:25:51 -03:00
diegosouzapw
a65bca6e49 chore(release): v3.4.6 - memory, skills, circuit breaker, & translation patches 2026-04-02 18:25:31 -03:00
diegosouzapw
a96dfdda67 chore(release): bump to v3.4.5 — changelog, docs, version sync 2026-04-02 14:44:46 -03:00
diegosouzapw
4cc44b37bb chore(release): v3.4.4 — Responses API token fix, SQLite WAL checkpoint, issue triage 2026-04-02 01:05:09 -03:00
diegosouzapw
49f9fee446 chore(release): v3.4.3 — Antigravity memory/skills, Claude Code bridge, Qwen OAuth fix, model sync stability 2026-04-02 00:12:16 -03:00
diegosouzapw
5c2db0134f chore(release): update changelog for v3.4.4 2026-04-01 22:48:34 -03:00
diegosouzapw
52bd72f449 chore: align version strings to v3.4.3 2026-04-01 20:43:33 -03:00
diegosouzapw
f665da9348 chore(release): prepare v3.4.2 integration branch 2026-04-01 02:51:49 -03:00
diegosouzapw
30558764ba chore(release): bump v3.4.1 and fix integration paths 2026-03-31 19:16:44 -03:00
diegosouzapw
ee4df2806f chore(release): v3.3.11 — analytics, backup control, CLI fixes, workflow unification 2026-03-31 08:17:07 -03:00
diegosouzapw
e071393eb5 chore(release): v3.3.10 — version bump and docs
Some checks are pending
CI / Lint (push) Waiting to run
CI / Security Audit (push) Waiting to run
CI / Build (push) Waiting to run
CI / Build-1 (push) Waiting to run
CI / Unit Tests (push) Blocked by required conditions
CI / Unit Tests-1 (push) Blocked by required conditions
CI / Coverage (push) Blocked by required conditions
CI / E2E Tests (push) Blocked by required conditions
CI / Integration Tests (push) Blocked by required conditions
CI / Security Tests (push) Blocked by required conditions
Publish to Docker Hub / Build and Push Docker (multi-arch) (push) Waiting to run
2026-03-31 00:16:51 -03:00
diegosouzapw
6d366fe80f chore(release): v3.3.9 — custom provider key rotation fix 2026-03-30 21:33:21 -03:00
diegosouzapw
49e1d51be9 chore(release): v3.3.8 2026-03-30 20:54:02 -03:00
diegosouzapw
e7c73c76dd chore(release): bump version to v3.3.7 2026-03-30 19:28:20 -03:00
diegosouzapw
0b2c488a61 chore(release): bump version to v3.3.6 2026-03-30 18:24:15 -03:00
diegosouzapw
df23162e9d chore(release): v3.3.5 - all changes in ONE commit 2026-03-30 17:35:51 -03:00
diegosouzapw
a864258cb8 feat(ui): integrate FSM, adaptive routing, and provider diversity
Some checks are pending
CI / Lint (push) Waiting to run
CI / Security Audit (push) Waiting to run
CI / Build (push) Waiting to run
CI / Build-1 (push) Waiting to run
CI / Unit Tests (push) Blocked by required conditions
CI / Unit Tests-1 (push) Blocked by required conditions
CI / Coverage (push) Blocked by required conditions
CI / E2E Tests (push) Blocked by required conditions
CI / Integration Tests (push) Blocked by required conditions
CI / Security Tests (push) Blocked by required conditions
Publish to Docker Hub / Build and Push Docker (multi-arch) (push) Waiting to run
2026-03-30 12:58:45 -03:00
diegosouzapw
d69e7ec850 chore(release): v3.3.3 — Core UI bugfixes and AutoUpdate repairs 2026-03-29 21:18:07 -03:00
diegosouzapw
8f09c444b6 chore(release): v3.3.2 — bug fixes and feature enhancements 2026-03-29 20:01:06 -03:00
diegosouzapw
6e9c97fbff chore(release): v3.3.1 — bug fixes and schema adjustments 2026-03-29 16:39:10 -03:00
diegosouzapw
6fad06f659 chore(release): v3.3.0 — test stability, release consolidation 2026-03-29 14:22:25 -03:00
diegosouzapw
1d51d8ff27 chore(release): v3.2.9 — combo diagnostics, quality gates, Gemini tool fix 2026-03-29 14:16:37 -03:00
Diego Rodrigues de Sa e Souza
46acd16999
chore(release): v3.2.8 — Docker Auto-Update & Analytics Fixes (#755)
Some checks are pending
CI / Lint (push) Waiting to run
CI / Security Audit (push) Waiting to run
CI / Build (push) Waiting to run
CI / Build-1 (push) Waiting to run
CI / Unit Tests (push) Blocked by required conditions
CI / Unit Tests-1 (push) Blocked by required conditions
CI / Coverage (push) Blocked by required conditions
CI / E2E Tests (push) Blocked by required conditions
CI / Integration Tests (push) Blocked by required conditions
CI / Security Tests (push) Blocked by required conditions
Publish to Docker Hub / Build and Push Docker (multi-arch) (push) Waiting to run
* chore(release): v3.2.8 — Docker auto-update UI and cache analytics fixes

* fix(sse): remove race condition in cache metrics tracking (#758)

- Remove in-memory metrics tracking (currentMetrics, trackCacheMetrics, updateCacheMetrics)
- Cache metrics now computed on-the-fly from usage_history table (single source of truth)
- Fixes CRITICAL issue from code review: concurrent requests overwriting metrics
- Fixes WARNING: duplicate metric tracking logic in streaming/non-streaming paths

Ref: PR #752 (merged before this fix was included)

* fix: handle allRateLimited credentials & forward extra body keys in embeddings/images routes (#757)

* fix: handle allRateLimited credentials in embeddings and images routes

When getProviderCredentials() returns an allRateLimited object (truthy,
but without apiKey/accessToken), the embeddings and images routes
incorrectly passed it to handlers as valid credentials. The handlers
then sent upstream requests without Authorization headers, causing
401 errors from providers (e.g. NVIDIA NIM).

This only manifested under concurrent requests: a chat/completions
call could trigger rate limiting on a provider account, and a
simultaneous embeddings request would receive the allRateLimited
sentinel — but treat it as valid credentials.

The chat pipeline already handled this case correctly. This commit
adds the same allRateLimited guard to all affected routes:
- POST /v1/embeddings
- POST /v1/providers/{provider}/embeddings
- POST /v1/images/generations
- POST /v1/providers/{provider}/images/generations

Also adds a defense-in-depth guard in the embeddings handler itself:
if no auth token is available for a non-local provider, return 401
immediately instead of sending an unauthenticated request upstream.

Made-with: Cursor

* fix(embeddings): forward extra body keys to upstream providers

The embeddings handler only forwarded model, input, dimensions, and
encoding_format to upstream providers, silently dropping any additional
fields. This broke asymmetric embedding APIs (e.g. NVIDIA NIM
nv-embedqa-e5-v5) that require input_type, and other providers
expecting user or truncate parameters.

Add a KNOWN_FIELDS exclusion set and forward all unrecognized body
keys to the upstream request, matching the passthrough pattern used
by the chat pipeline's DefaultExecutor.transformRequest().

Made-with: Cursor

* fix(auth): redirect and unconditional 401 on disabled requireLogin + fix test cases

* fix(build): remove legacy proxy.ts causing Next.js build collision

* fix(build): revert middleware.ts rename to proxy.ts because of Next.js Edge constraints

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <117600961+Gorchakov-Pressure@users.noreply.github.com>
2026-03-29 13:09:38 -03:00
diegosouzapw
b84e79362e docs: sync v3.2.6 features across 30 languages (README + FEATURES) 2026-03-29 05:32:01 -03:00
diegosouzapw
0fd634ef43 chore(release): v3.2.6 — API Key Reveal, Sidebar Controls, Combo Health, Stream Logs 2026-03-29 04:34:55 -03:00
diegosouzapw
b582ddf090 chore(release): v3.2.5 — Void Linux support 2026-03-29 01:33:21 -03:00
diegosouzapw
bd462c4e0b chore(release): bump version to v3.2.4 2026-03-28 23:45:41 -03:00
diegosouzapw
c0cbf00199 chore(release): v3.2.3 — Enhancements and Bugfixes 2026-03-28 23:19:01 -03:00
diegosouzapw
fb8d187f8d chore(release): v3.2.2 — Four-Stage Request Logs & Bugfixes 2026-03-28 22:11:22 -03:00
diegosouzapw
cec833afc6 chore(release): v3.2.1 — context pinning fix + global fallback provider 2026-03-28 21:13:14 -03:00
Diego Rodrigues de Sa e Souza
6637f294df
chore: release v3.2.0 (#722)
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
2026-03-28 20:45:18 -03:00
Diego Rodrigues de Sa e Souza
437cf9bab0
chore(release): v3.1.10 — OmniRoute v3.1.9 remaining bug fixes sprint (#720)
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
2026-03-28 19:54:45 -03:00
diegosouzapw
a7cdcd8b3a chore(release): v3.1.9 — schema coercion, tool sanitization, clearAllModels i18n, bug fixes #605 #709 #710 #711 2026-03-28 16:35:20 -03:00
diegosouzapw
b123fb2cc7 chore(release): bump version to v3.1.8 and global i18n sync 2026-03-27 18:08:16 -03:00
diegosouzapw
508a6d99f5 chore(release): bump version to v3.1.7 and fix SSE parsing bug 2026-03-27 15:17:13 -03:00
diegosouzapw
13829de0d9 release: v3.1.6 — Claude tool name fix + Clear All Models alias cleanup
Changes:
- fix: restore native Claude tool names in passthrough responses (PR #663 by @coobabm)
- fix: Clear All Models button now also removes aliases (PR #664 by @rdself)
- fix: completed truncated test from PR #663, added Claude-to-Claude passthrough test
- docs: update CHANGELOG and OpenAPI spec
2026-03-27 06:23:52 -03:00
diegosouzapw
ad4bd800aa release: v3.1.5 — backoff auto-decay fix + Chinese i18n overhaul
Changes:
- fix: auto-decay backoffLevel when rate limit window expires (PR #657 by @brendandebeasi)
- i18n: comprehensive Chinese translation rewrite (PR #658 by @only4copilot)
- docs: update CHANGELOG and OpenAPI spec
2026-03-27 01:27:01 -03:00
Diego Rodrigues de Sa e Souza
6acd36e374 Merge pull request #655 from oSoWoSo/dev
Merged! Thanks @zen0bit for polishing the Czech translations 🇨🇿
2026-03-26 23:50:54 -03:00
diegosouzapw
3a23dc8b04 release: v3.1.3 — community i18n contributions (#652, #651)
Changes:
- i18n: ~70 missing translation keys for en.json + 12 languages (PR #652 by @zen0bit)
- i18n: Czech documentation updates — CLI-TOOLS, API_REFERENCE, VM_DEPLOYMENT (PR #652)
- feat: translation validation scripts for CI/QA (PR #651 by @zen0bit)
- docs: update CHANGELOG and OpenAPI spec
2026-03-26 21:32:52 -03:00
diegosouzapw
9ff6353b88 release: v3.1.2 — fix critical tool calling regression (#618)
Changes:
- fix: disable proxy_ tool prefix for Claude passthrough (Bash → proxy_Bash)
- docs: document Kiro account ban as upstream AWS issue (#649)
- docs: update CHANGELOG and OpenAPI spec

Fixes #618, closes #649, closes #615
2026-03-26 19:49:45 -03:00
diegosouzapw
211a7a4cfe release: v3.1.1 — Ollama Cloud fix, Gemini 3.1, vision metadata, token retry
Changes:
- fix: Ollama Cloud 401 — wrong base URL (api.ollama.com → ollama.com) (#643)
- fix: Add Gemini 3.1 Pro/Flash to Antigravity provider (#645)
- feat: Vision capability metadata in /v1/models (PR #646)
- feat: Exponential backoff retry for expired OAuth tokens (PR #647)

Closes #643, closes #645
2026-03-26 15:56:44 -03:00