Commit Graph

257 Commits

Author SHA1 Message Date
diegosouzapw fa2cfe36d4 chore(release): v3.6.5 — Claude Code native parity, Antigravity credit fallback, 5 community PRs
## New Features
- Claude Code Native Parity: CCH xxHash64 signing, TitleCase tool remapping,
  API constraint enforcement (PR #1188 — @RaviTharuma)
- Antigravity AI Credits Fallback: auto-retry with GOOGLE_ONE_AI credit
  injection on quota exhaustion (PR #1190 — @sFaxsy)
- Per-Connection Codex Defaults (PR #1176 — @rdself)
- xxhash-wasm dependency for CCH signing

## Bug Fixes
- Search cache coalescing with TTL=0 (PR #1178 — @sjhddh)
- Antigravity credit cache key alignment (PR #1190)
- Codex combo smoke test false positives (PR #1176)
- Electron NODE_PATH resolution on Windows (PR #1172 — @backryun)
- CC-compatible test assertion fix (billing header cache_control)

## Breaking Changes
- DELETE /api/settings/codex-service-tier removed (PR #1176)
- CCH signing on CC-compatible providers

Tests: 2770/2770 passing
2026-04-12 23:02:34 -03:00
diegosouzapw 25815ae53d fix(combo): honor composite tier order in runtime routing
Apply composite tier ordering to top-level combo steps and direct
targets so priority and round-robin strategies follow the configured
defaultTier to fallbackTier chain before using remaining steps.

Add defensive config parsing helpers, regression tests for composite
tier ordering, and documentation updates for the structured combo
builder, quota-aware P2C, and combo target health.
2026-04-12 11:02:13 -03:00
diegosouzapw ea61d00cf7 feat: v3.6.4 — Combo Builder v2, Composite Tiers, P2C Credentials, Observability Layer
## New Features
- Combo Builder v2 wizard UI (multi-stage: Basics → Steps → Strategy → Review)
- Combo Step Architecture Schema v2 (ComboModelStep, ComboRefStep, pinned accounts)
- Composite Tiers system for tiered model routing with fallback chains
- Model Capabilities Registry (unified resolver merging specs + registry + synced data)
- Observability module (buildHealthPayload, buildTelemetryPayload, buildSessionsSummary)
- Session & Quota Monitor panels on Health dashboard
- Combo Health per-target analytics via resolveNestedComboTargets()
- Combo Builder Options API (GET /api/combos/builder/options)

## Performance
- Middleware lazy loading (apiAuth, db/settings, modelSyncScheduler)
- E2E auth bypass mode (NEXT_PUBLIC_OMNIROUTE_E2E_MODE)

## Bug Fixes
- P2C credential selection with quota headroom awareness
- Fixed-account combo steps bypass model cooldowns/circuit breakers
- Combo metrics per-target tracking (byTarget with executionKey)
- Call logs schema expansion (7 new columns + composite index)
- Quota monitor lifecycle enrichment (status, snapshots, summary)
- Codex quota fetcher hardening

## Maintenance
- DB migration 021 (combo_call_log_targets)
- Combo CRUD normalization on read
- Playwright config + build script improvements
- OpenAPI spec version sync to 3.6.4

## Tests
- 16 new test suites + 12 existing test updates
- 86 files changed, +8318 -1378 lines
2026-04-12 10:34:10 -03:00
diegosouzapw af57d67320 docs: include ENVIRONMENT.md, UNINSTALL.md and sync ignore rules 2026-04-11 18:07:42 -03:00
diegosouzapw 4d460109dd chore(release): v3.6.3 — Fix cloudflare config, prompt cache payloads, and openai-compatible validation 2026-04-11 18:00:20 -03:00
diegosouzapw 86fc7841b8 docs: update provider counts to 100+ across all documentation (33 new providers added)
- CHANGELOG: documented 33 new API Key providers (DeepInfra, SambaNova, Meta Llama API, AI21 Labs, Databricks, Snowflake, GigaChat, etc.)
- README: updated tagline, unified endpoint, and feature descriptions from 60+ to 100+
- AGENTS.md: updated project description and full API Key provider list (48+ → 91)
- ARCHITECTURE.md: updated executive summary
- i18n: synced all 33 language README and ARCHITECTURE files
2026-04-11 12:01:13 -03:00
jonesfernandess e75baed4b6 docs: add macOS better-sqlite3 rebuild fix to troubleshooting (#1119)
Integrated into release/v3.6.2
2026-04-11 09:44:45 -03:00
diegosouzapw 8bacde0262 feat: global email privacy toggle with eye icon button
- Add emailPrivacyStore (Zustand + persist) for global toggle state
- Add EmailPrivacyToggle component with eye open/closed icons
- Add pickDisplayValue() visibility-aware masking function
- Integrate toggle into provider detail, usage limits & playground pages
- Per-modal showEmail now uses global store (synced across all pages)
- Default: emails hidden; toggle persists across page reloads
- Add showEmails/hideEmails i18n keys
- Update CHANGELOG.md and openapi.yaml to v3.6.2
2026-04-11 09:38:17 -03:00
diegosouzapw 87c82071c0 docs(i18n): sync uninstall instructions to all templates 2026-04-10 15:11:18 -03:00
Diego Rodrigues de Sa e Souza 515674b6cf chore(release): v3.6.1 — OAuth env repair + i18n fix (#1117)
Build Electron Desktop App / Validate version (push) Failing after 41s
Build Electron Desktop App / Build Electron (macos-arm64) (push) Has been skipped
Build Electron Desktop App / Build Electron (linux) (push) Has been skipped
Build Electron Desktop App / Build Electron (macos-intel) (push) Has been skipped
Build Electron Desktop App / Build Electron (windows) (push) Has been skipped
Build Electron Desktop App / Create Release (push) Has been skipped
Build Electron Desktop App / Publish to npm (push) Has been skipped
* chore: bump to v3.6.1

* fix(i18n): add missing provider messages across locales (#1111)

Integrated into release/v3.6.1 — adds missing filterModels, modelsActive, showModel, hideModel i18n keys across all 32 locales

* fix: add Repair env action for OAuth providers (#1116)

Integrated into release/v3.6.1 — adds OAuth env repair feature with full 33-language i18n support and backupPath security fix

* chore(release): v3.6.1 — OAuth env repair + i18n fix

* fix: add targetFormat openai-responses to gpt-5.4 and gpt-5.4-mini (#1114)

* fix: add targetFormat openai-responses to gpt-5.4 and gpt-5.4-mini (#1114)

* chore: force CI trigger

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: Ilham Ramadhan <28677129+rilham97@users.noreply.github.com>
Co-authored-by: Artёm <470045+yart@users.noreply.github.com>
2026-04-10 12:19:15 -03:00
Diego Rodrigues de Sa e Souza 37cc63e493 Release v3.6.0 (#1109)
Build Electron Desktop App / Validate version (push) Failing after 31s
Build Electron Desktop App / Build Electron (macos-arm64) (push) Has been skipped
Build Electron Desktop App / Build Electron (linux) (push) Has been skipped
Build Electron Desktop App / Build Electron (macos-intel) (push) Has been skipped
Build Electron Desktop App / Build Electron (windows) (push) Has been skipped
Build Electron Desktop App / Create Release (push) Has been skipped
Build Electron Desktop App / Publish to npm (push) Has been skipped
* chore: create release/v3.6.0 branch

* fix: add row count limits to prevent DB bloat and handle HTML error responses (#1104)

Integrated into release/v3.6.0

* fix combo smoke test payload for thinking models (#1105)

Integrated into release/v3.6.0

* fix: improve Android/Termux ARM64 support for better-sqlite3 (#1107)

Integrated into release/v3.6.0

* chore: finalize CHANGELOG and sync versions for v3.6.0

* fix(tests): align CI tests with v3.6.0 changes

- compliance: match new cleanupExpiredLogs return shape (trimmed/maxRows)
- model-sync: accept masked email in account field
- e2e: allow 401/403/307 for auth-protected /api/providers endpoint

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Suhayli <73960279+Suhay1i@users.noreply.github.com>
2026-04-10 09:56:42 -03:00
Randi 74a5bcb3a9 Add persistent combo ordering and reorder sidebar items (#1095)
Integrated into release/v3.5.9 with openapi.yaml version fix
2026-04-09 21:16:42 -03:00
diegosouzapw 815a7b6e1d chore(release): verify v3.5.8 sync (changelog, docs)
Build Electron Desktop App / Validate version (push) Failing after 33s
Build Electron Desktop App / Build Electron (macos-arm64) (push) Has been skipped
Build Electron Desktop App / Build Electron (linux) (push) Has been skipped
Build Electron Desktop App / Build Electron (macos-intel) (push) Has been skipped
Build Electron Desktop App / Build Electron (windows) (push) Has been skipped
Build Electron Desktop App / Create Release (push) Has been skipped
Build Electron Desktop App / Publish to npm (push) Has been skipped
2026-04-09 19:12:01 -03:00
Diego Rodrigues de Sa e Souza 1442c47bbb chore(release): v3.5.6 — email masking, model toggle, OpenRouter registries & bug fixes (#1080)
Build Electron Desktop App / Validate version (push) Failing after 24s
Build Electron Desktop App / Build Electron (macos-arm64) (push) Has been skipped
Build Electron Desktop App / Build Electron (linux) (push) Has been skipped
Build Electron Desktop App / Build Electron (macos-intel) (push) Has been skipped
Build Electron Desktop App / Build Electron (windows) (push) Has been skipped
Build Electron Desktop App / Create Release (push) Has been skipped
Build Electron Desktop App / Publish to npm (push) Has been skipped
* 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 581ff5fc73 docs: update system documentation and sync i18n for v3.5.5 2026-04-08 13:40:04 -03:00
diegosouzapw 4d9312259c chore(release): bump to v3.5.4 — changelog, docs, version sync 2026-04-07 19:04:11 -03:00
diegosouzapw fa886231d3 docs(i18n): apply deep machine translation to 33 languages 2026-04-06 18:14:01 -03:00
diegosouzapw 5085dcf96f ci: fix sonarqube config and test suite failures 2026-04-06 18:11:09 -03:00
diegosouzapw d33c0ed1b5 docs(i18n): sync documentation updates to 33 languages 2026-04-06 16:44:12 -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)
Build Electron Desktop App / Validate version (push) Failing after 29s
Build Electron Desktop App / Build Electron (macos-arm64) (push) Has been skipped
Build Electron Desktop App / Build Electron (linux) (push) Has been skipped
Build Electron Desktop App / Build Electron (macos-intel) (push) Has been skipped
Build Electron Desktop App / Build Electron (windows) (push) Has been skipped
Build Electron Desktop App / Create Release (push) Has been skipped
Build Electron Desktop App / Publish to npm (push) Has been skipped
* 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 19f46eb817 chore(release): v3.5.0 — all changes in ONE commit 2026-04-03 19:27:15 -03:00
diegosouzapw 3c8e448ffb Merge PR 958 2026-04-03 13:12:06 -03:00
diegosouzapw 2610a286ca chore(release): v3.5.0 — sync specs and finalize CHANGELOG 2026-04-03 10:19:14 -03:00
xiaoge1688 c1c78164d2 Merge remote-tracking branch 'upstream/main' 2026-04-03 14:57:04 +08: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
xiaoge1688 2a052b2db1 docs(deploy): add upstream sync workflow 2026-04-03 10:02:24 +08: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
Build Electron Desktop App / Validate version (push) Failing after 29s
Build Electron Desktop App / Build Electron (macos-arm64) (push) Has been skipped
Build Electron Desktop App / Build Electron (linux) (push) Has been skipped
Build Electron Desktop App / Build Electron (macos-intel) (push) Has been skipped
Build Electron Desktop App / Build Electron (windows) (push) Has been skipped
Build Electron Desktop App / Create Release (push) Has been skipped
Build Electron Desktop App / Publish to npm (push) Has been skipped
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 ee14372e20 Merge PR #912 (I18N String improvements) 2026-04-02 14:40:01 -03:00
Diego Rodrigues de Sa e Souza 0ae31e0acc Merge pull request #925 from rdself/coder/fix-cloudflared-restart-warning
fix(cloudflared): avoid stale quick tunnel restart state
2026-04-02 14:37:15 -03:00
Diego Rodrigues de Sa e Souza 24721cf2fa Merge pull request #924 from rdself/coder/add-github-copilot-gemini-3-1-pro-preview
feat(github): add Gemini 3.1 Pro Preview to GitHub Copilot
2026-04-02 14:37:10 -03:00
Diego Rodrigues de Sa e Souza 46311dfaba Merge pull request #918 from rdself/coder/fix-timeout-env-stream-300s
fix: make request and stream timeouts fully env-configurable
2026-04-02 14:36:53 -03:00
R.D. ed72ddc4d3 fix(cloudflared): avoid stale restart state 2026-04-02 05:40:26 -04:00
R.D. a7fa34c2fc feat(github): add gemini-3.1-pro-preview 2026-04-02 05:27:54 -04:00
R.D. 50f12869bf fix: make streaming timeouts env-configurable 2026-04-02 02:59:12 -04: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
Diego Rodrigues de Sa e Souza e121fec599 Merge pull request #905 from rdself/coder/sqlite-wal-checkpoint-shutdown
Flush SQLite WAL on graceful shutdown
2026-04-02 01:00:50 -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
R.D. 69bbc0a2a1 flush sqlite wal on graceful shutdown 2026-04-01 20:14:31 -04:00
diegosouzapw 52bd72f449 chore: align version strings to v3.4.3 2026-04-01 20:43:33 -03:00
diegosouzapw 485eb60dde Merge Pull Request #888 2026-04-01 18:05:45 -03:00
diegosouzapw bfeb1693d6 chore: documents 2026-04-01 12:34:37 -03:00
diegosouzapw 3e62300f9c docs: update root files to v3.4.2 state, cleanup obsolete files
- SECURITY.md: supported versions 3.4.x/3.0.x, MCP scopes (10),
  audit trail, Zod v4 validation, TLS/CLI fingerprint
- CONTRIBUTING.md: Node >=18<24, port 20128, project structure
  (21 DB modules, 25 MCP tools, memory/skills/electron), 122 test files
- README.md: 60+ providers, 25 MCP tools, 10 scopes, 9 strategies
- .dockerignore: expanded exclusions (tests, docs, electron, *.tgz)
- .npmignore: added llm.txt, bun.lock, tsconfig variants, subprojects
- .gitignore: _*/ dirs, docs/new-features, COVERAGE_PLAN allowlist

Deleted files:
- 20 README.*.md redirect stubs (consolidated in docs/i18n/)
- 4 scratch test files (test_exception/target_format/translator/out)
- restart.sh, validate-translation.sh (obsolete scripts)
- Moved COVERAGE_PLAN.md -> docs/COVERAGE_PLAN.md
2026-04-01 09:44:11 -03:00
diegosouzapw 5509c65a6f Merge remote-tracking branch 'origin/only-4-copilot-869' into temp_merge_branch 2026-04-01 08:47:15 -03:00