Diego Rodrigues de Sa e Souza
028874fd05
Merge pull request #840 from diegosouzapw/release/v3.3.9
...
chore(release): v3.3.9 — summary
v3.3.9
2026-03-30 21:38:32 -03:00
diegosouzapw
6d366fe80f
chore(release): v3.3.9 — custom provider key rotation fix
2026-03-30 21:33:21 -03:00
Diego Rodrigues de Sa e Souza
0924f767e9
Merge pull request #839 from diegosouzapw/fix/issue-815-custom-provider-key-rotation
...
fix: rotate extra api keys for custom providers (#815 )
2026-03-30 21:30:56 -03:00
diegosouzapw
173b5a1cd1
fix: rotate extra api keys for custom providers ( #815 )
2026-03-30 21:13:50 -03:00
diegosouzapw
49e1d51be9
chore(release): v3.3.8
v3.3.8
2026-03-30 20:54:02 -03:00
diegosouzapw
23e47a74ee
Merge remote main
2026-03-30 20:48:25 -03:00
Diego Rodrigues de Sa e Souza
fce7f6ce47
Merge pull request #830 from rdself/coder/fix-openrouter-available-models
...
fix: align OpenRouter auto-sync with available models
2026-03-30 20:47:59 -03:00
Diego Rodrigues de Sa e Souza
f3b47a16dd
Merge pull request #831 from christopher-s/gemini-cli-adjustments
...
fix: use gemini-cli/ as model prefix instead of gc/
2026-03-30 20:47:56 -03:00
Diego Rodrigues de Sa e Souza
aa7b754693
Merge pull request #834 from oyi77/feat/cache-page-prompt-cache-tracking
...
fix(debug/sidebar): debug toggle and sidebar visibility
2026-03-30 20:47:54 -03:00
Diego Rodrigues de Sa e Souza
397b13e2d8
Merge pull request #835 from tombii/fix/cache-page-ui-polish
...
fix(ui): improve cache page header sizing and context
2026-03-30 20:47:40 -03:00
diegosouzapw
b2c203e8c1
Merge branch 'fix/streaming-reasoning-field-alias' into main
...
# Conflicts:
# open-sse/services/combo.ts
# open-sse/utils/stream.ts
# tests/unit/chat-combo-live-test.test.mjs
2026-03-30 20:45:44 -03:00
diegosouzapw
6afb314d26
Merge branch 'feat/cache-page-prompt-cache-tracking' into main
...
# Conflicts:
# src/app/(dashboard)/dashboard/settings/page.tsx
# src/app/api/settings/cache-config/route.ts
# src/i18n/messages/ar.json
# src/i18n/messages/bg.json
# src/i18n/messages/cs.json
# src/i18n/messages/da.json
# src/i18n/messages/de.json
# src/i18n/messages/es.json
# src/i18n/messages/fi.json
# src/i18n/messages/fr.json
# src/i18n/messages/he.json
# src/i18n/messages/hi.json
# src/i18n/messages/hu.json
# src/i18n/messages/id.json
# src/i18n/messages/in.json
# src/i18n/messages/it.json
# src/i18n/messages/ja.json
# src/i18n/messages/ko.json
# src/i18n/messages/ms.json
# src/i18n/messages/nl.json
# src/i18n/messages/no.json
# src/i18n/messages/phi.json
# src/i18n/messages/pl.json
# src/i18n/messages/pt-BR.json
# src/i18n/messages/pt.json
# src/i18n/messages/ro.json
# src/i18n/messages/ru.json
# src/i18n/messages/sk.json
# src/i18n/messages/sv.json
# src/i18n/messages/th.json
# src/i18n/messages/tr.json
# src/i18n/messages/uk-UA.json
# src/i18n/messages/vi.json
2026-03-30 20:43:25 -03:00
diegosouzapw
28123355b4
Merge branch 'feat/issue-660-qoder' into main
...
# Conflicts:
# docs/i18n/ar/README.md
# docs/i18n/bg/README.md
# docs/i18n/da/README.md
# docs/i18n/de/README.md
# docs/i18n/es/README.md
# docs/i18n/fi/README.md
# docs/i18n/fr/README.md
# docs/i18n/he/README.md
# docs/i18n/hu/README.md
# docs/i18n/id/README.md
# docs/i18n/in/README.md
# docs/i18n/it/README.md
# docs/i18n/ja/README.md
# docs/i18n/ko/README.md
# docs/i18n/ms/README.md
# docs/i18n/nl/README.md
# docs/i18n/no/README.md
# docs/i18n/phi/README.md
# docs/i18n/pl/README.md
# docs/i18n/pt-BR/README.md
# docs/i18n/pt/README.md
# docs/i18n/ro/README.md
# docs/i18n/ru/README.md
# docs/i18n/sk/README.md
# docs/i18n/sv/README.md
# docs/i18n/th/README.md
# docs/i18n/uk-UA/README.md
# docs/i18n/vi/README.md
# docs/i18n/zh-CN/README.md
2026-03-30 20:39:31 -03:00
diegosouzapw
bcb87f5d55
feat: Return only accessible models from /models for restricted API keys ( #781 )
2026-03-30 20:31:32 -03:00
tombii
67b9a3bc0e
fix(ui): internationalize CacheStatsCard and add auto-refresh
...
- Add 10s auto-refresh interval matching cache page pattern
- Replace all hardcoded English strings with translation keys
- Add 13 new i18n keys to cache namespace for metrics display
- Reorganize header layout with auto-refresh indicator and reset button
Addresses Gemini Code Assist feedback on PR #835 :
- Fixed internationalization (all text now uses t())
- Maintains distinct metrics (cumulative/resettable vs real-time rolling)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 00:32:37 +02:00
diegosouzapw
ab4914ee6a
chore(release): v3.3.7 — OpenCode config fix, i18n keys fix
v3.3.7
2026-03-30 19:30:18 -03:00
diegosouzapw
e7c73c76dd
chore(release): bump version to v3.3.7
2026-03-30 19:28:20 -03:00
diegosouzapw
3591a3fe5c
fix: resolve opencode json structure to use record mapping instead of array ( #816 )
2026-03-30 19:23:25 -03:00
diegosouzapw
fbdce049b2
fix: add missing cloudflaredUrlNotice i18n keys ( #823 )
2026-03-30 19:23:14 -03:00
diegosouzapw
9a8520a2de
fix: add missing cloudflaredUrlNotice i18n keys to prevent MISSING_MESSAGE console errors ( #823 )
2026-03-30 19:16:50 -03:00
oyi77
a315ab29bc
fix(debug/sidebar): make debug toggle control debug section visibility and fix sidebar hidden items tracking
...
- Sync debugMode with showDebug in Sidebar (was using enableRequestLogs env var)
- Only render debug-section sidebar toggles in AppearanceTab when debugMode=true
- Sidebar filters debug-section items based on debugMode (was already correct)
- Debug toggle now triggers omniroute:settings-updated event for instant sidebar update
EOF
2026-03-31 04:50:50 +07:00
oyi77
5437d691b5
fix(cache): address code review issues
...
- Add authentication to /api/cache/entries (GET and DELETE)
- Add authentication to /api/cache (GET and DELETE)
- Validate trendHours: clamp to 1-720 range
- Fix estimatedCostSaved bug: use calculated value instead of hardcoded 0
2026-03-31 04:50:50 +07:00
oyi77
f99c90dc85
feat(cache): add OpenAI prompt_cache_key and Gemini cachedContent support
...
Provider-specific caching enhancements:
OpenAI:
- Auto-generate prompt_cache_key from message prefix hash
- Key format: omni-{prefix_hash_32chars}
- Preserves client-provided keys (doesn't override)
Gemini:
- Preserve cachedContent ID if provided by client
- Enables explicit Gemini caching for long prompts
- cachedContentTokenCount already tracked in responses
2026-03-31 04:50:50 +07:00
tombii
d838388443
fix(ui): improve cache page header sizing and context
...
- Match CacheStatsCard header size with other card headers (text-sm)
- Show request counts in cache hit rate label (116/359) for clarity
- Add CacheStatsCard component to cache page for cumulative metrics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-30 23:33:48 +02:00
diegosouzapw
0b2c488a61
chore(release): bump version to v3.3.6
v3.3.6
2026-03-30 18:24:15 -03:00
Chris Staley
e2eb4ef29d
fix: address PR #831 review feedback
...
- Update DEFAULT_PRICING key from 'gc' to 'gemini-cli' so pricing
lookups work with the new alias
- Restore gc -> gemini-cli in FALLBACK_ALIAS_TO_PROVIDER for backward
compatibility (existing saved configs with gc/ prefix still resolve)
2026-03-30 15:23:34 -06:00
diegosouzapw
76e135077b
Resolve merge conflicts with main natively built Prompt Cache UI
2026-03-30 18:20:19 -03:00
Diego Rodrigues de Sa e Souza
6078cd2eab
Merge pull request #829 from rdself/coder/fix-cloudflared-startup
...
Fix cloudflared quick tunnel startup in Docker
2026-03-30 18:18:03 -03:00
Diego Rodrigues de Sa e Souza
3482dade71
Merge pull request #828 from rdself/coder/fix-combo-test-false-negative
...
Fix combo test false negatives and parallelize model probes
2026-03-30 18:18:00 -03:00
R.D.
ff73de5716
fix openrouter available models sync
2026-03-30 17:07:46 -04:00
diegosouzapw
04d0c350db
build: sync monorepo package versions across electron and open-sse
2026-03-30 18:02:33 -03:00
R.D.
b6a5c91045
Install CA certificates in runtime image
2026-03-30 17:01:50 -04:00
diegosouzapw
7a37c79ebc
ci: fix pipeline errors and enforce route lint validatation
2026-03-30 17:54:44 -03:00
R.D.
ba227c5ec3
Run combo health probes concurrently
2026-03-30 16:49:01 -04:00
Chris Staley
7ab75dd15a
fix: use gemini-cli/ as model prefix instead of gc/
...
Gemini CLI clients use bare model names, not provider-prefixed IDs.
The gc/ alias was opaque — gemini-cli/ is self-documenting. Since
alias now equals provider ID, the dual-prefix duplication logic
naturally skips Gemini CLI (no duplicate gemini-cli/ entries).
2026-03-30 14:42:00 -06:00
diegosouzapw
df23162e9d
chore(release): v3.3.5 - all changes in ONE commit
v3.3.5
2026-03-30 17:35:51 -03:00
dependabot[bot]
2c12f18b44
deps: bump the production group with 8 updates
...
Bumps the production group with 8 updates:
| Package | From | To |
| --- | --- | --- |
| [@lobehub/icons](https://github.com/lobehub/lobe-icons ) | `5.0.1` | `5.2.0` |
| [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk ) | `1.27.1` | `1.29.0` |
| [@swc/helpers](https://github.com/swc-project/swc/tree/HEAD/packages/helpers ) | `0.5.19` | `0.5.20` |
| [jose](https://github.com/panva/jose ) | `6.2.1` | `6.2.2` |
| [next](https://github.com/vercel/next.js ) | `16.1.7` | `16.2.1` |
| [recharts](https://github.com/recharts/recharts ) | `3.8.0` | `3.8.1` |
| [undici](https://github.com/nodejs/undici ) | `7.24.4` | `7.24.6` |
| [wreq-js](https://github.com/sqdshguy/wreq-js ) | `2.2.0` | `2.2.2` |
Updates `@lobehub/icons` from 5.0.1 to 5.2.0
- [Release notes](https://github.com/lobehub/lobe-icons/releases )
- [Changelog](https://github.com/lobehub/lobe-icons/blob/master/CHANGELOG.md )
- [Commits](https://github.com/lobehub/lobe-icons/compare/v5.0.1...v5.2.0 )
Updates `@modelcontextprotocol/sdk` from 1.27.1 to 1.29.0
- [Release notes](https://github.com/modelcontextprotocol/typescript-sdk/releases )
- [Commits](https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.27.1...v1.29.0 )
Updates `@swc/helpers` from 0.5.19 to 0.5.20
- [Release notes](https://github.com/swc-project/swc/releases )
- [Changelog](https://github.com/swc-project/swc/blob/main/CHANGELOG-CORE.md )
- [Commits](https://github.com/swc-project/swc/commits/HEAD/packages/helpers )
Updates `jose` from 6.2.1 to 6.2.2
- [Release notes](https://github.com/panva/jose/releases )
- [Changelog](https://github.com/panva/jose/blob/main/CHANGELOG.md )
- [Commits](https://github.com/panva/jose/compare/v6.2.1...v6.2.2 )
Updates `next` from 16.1.7 to 16.2.1
- [Release notes](https://github.com/vercel/next.js/releases )
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js )
- [Commits](https://github.com/vercel/next.js/compare/v16.1.7...v16.2.1 )
Updates `recharts` from 3.8.0 to 3.8.1
- [Release notes](https://github.com/recharts/recharts/releases )
- [Changelog](https://github.com/recharts/recharts/blob/main/CHANGELOG.md )
- [Commits](https://github.com/recharts/recharts/compare/v3.8.0...v3.8.1 )
Updates `undici` from 7.24.4 to 7.24.6
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v7.24.4...v7.24.6 )
Updates `wreq-js` from 2.2.0 to 2.2.2
- [Release notes](https://github.com/sqdshguy/wreq-js/releases )
- [Commits](https://github.com/sqdshguy/wreq-js/compare/v2.2.0...v2.2.2 )
---
updated-dependencies:
- dependency-name: "@lobehub/icons"
dependency-version: 5.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production
- dependency-name: "@modelcontextprotocol/sdk"
dependency-version: 1.29.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production
- dependency-name: "@swc/helpers"
dependency-version: 0.5.20
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production
- dependency-name: jose
dependency-version: 6.2.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production
- dependency-name: next
dependency-version: 16.2.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production
- dependency-name: recharts
dependency-version: 3.8.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production
- dependency-name: undici
dependency-version: 7.24.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production
- dependency-name: wreq-js
dependency-version: 2.2.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-30 17:32:55 -03:00
dependabot[bot]
eaeb28b4e1
deps: bump the development group with 7 updates
...
Bumps the development group with 7 updates:
| Package | From | To |
| --- | --- | --- |
| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss ) | `4.2.1` | `4.2.2` |
| [@types/keytar](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/keytar ) | `4.4.0` | `4.4.2` |
| [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next ) | `16.1.6` | `16.2.1` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss ) | `4.2.1` | `4.2.2` |
| [typescript](https://github.com/microsoft/TypeScript ) | `5.9.3` | `6.0.2` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint ) | `8.57.1` | `8.58.0` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ) | `4.1.0` | `4.1.2` |
Updates `@tailwindcss/postcss` from 4.2.1 to 4.2.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases )
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md )
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.2/packages/@tailwindcss-postcss )
Updates `@types/keytar` from 4.4.0 to 4.4.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/keytar )
Updates `eslint-config-next` from 16.1.6 to 16.2.1
- [Release notes](https://github.com/vercel/next.js/releases )
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js )
- [Commits](https://github.com/vercel/next.js/commits/v16.2.1/packages/eslint-config-next )
Updates `tailwindcss` from 4.2.1 to 4.2.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases )
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md )
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.2/packages/tailwindcss )
Updates `typescript` from 5.9.3 to 6.0.2
- [Release notes](https://github.com/microsoft/TypeScript/releases )
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.9.3...v6.0.2 )
Updates `typescript-eslint` from 8.57.1 to 8.58.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases )
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md )
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.0/packages/typescript-eslint )
Updates `vitest` from 4.1.0 to 4.1.2
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.2/packages/vitest )
---
updated-dependencies:
- dependency-name: "@tailwindcss/postcss"
dependency-version: 4.2.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development
- dependency-name: "@types/keytar"
dependency-version: 4.4.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development
- dependency-name: eslint-config-next
dependency-version: 16.2.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development
- dependency-name: tailwindcss
dependency-version: 4.2.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development
- dependency-name: typescript
dependency-version: 6.0.2
dependency-type: direct:development
update-type: version-update:semver-major
dependency-group: development
- dependency-name: typescript-eslint
dependency-version: 8.58.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development
- dependency-name: vitest
dependency-version: 4.1.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-30 17:32:51 -03:00
Chris Staley
d5647eab33
fix: remove dead userDismissed ref after auto-open removal
...
The userDismissed ref was only read by the removed auto-open useEffect.
Remove the ref declaration and the three onClose assignments that set it.
2026-03-30 17:32:49 -03:00
Chris Staley
89eb8885b1
fix: remove unnecessary comment from previous commit
2026-03-30 17:32:49 -03:00
Chris Staley
a5dc5687f8
fix: remove auto-opening OAuth/API key modal on provider detail page
...
Auto-opening the "Add Connection" dialog when navigating to a provider
with zero connections was a poor UX pattern. It surprised users who were
simply browsing provider details (e.g. after deleting a connection or
checking settings). The page already displays a clear empty state with
an "Add Connection" button — users should click it when ready.
2026-03-30 17:32:49 -03:00
oyi77
6780485051
feat(cache): persistent metrics, cache entry browser, settings UI, MCP tools, prefix analyzer
...
Implements remaining features from #813 :
Phase 1 - Persistent Metrics:
- Add cache_metrics table for persistent hit/miss tracking
- Semantic cache stats now survive server restarts
Phase 2 - Cache Entry Browser:
- /api/cache/entries endpoint with search, pagination, delete
- CacheEntriesTab component for browsing cached entries
Phase 3 - Settings UI:
- CacheSettingsTab for semantic/prompt cache configuration
- /api/settings/cache-config endpoint
Phase 4 - Prefix Analyzer:
- src/lib/promptCache/prefixAnalyzer.ts for intelligent caching
- Analyzes message arrays to find stable prefixes
Phase 5 - Provider Support:
- Added deepseek to CACHING_PROVIDERS
Phase 6 - MCP Tools:
- omniroute_cache_stats tool
- omniroute_cache_flush tool
Phase 7 - Retention:
- cleanOldMetrics() for auto-purge of old entries
Closes #813
2026-03-30 17:32:45 -03:00
oyi77
d043e7a242
feat(cache): fix cache page to display prompt cache metrics and trend data
...
Closes #813
2026-03-30 17:32:45 -03:00
Chris Staley
c5d9b5f51d
fix: apply PR review feedback for Gemini CLI quota
...
- Add early return guard for missing accessToken in getGeminiUsage
- Add 10s fetch timeout (AbortSignal.timeout) on retrieveUserQuota calls
- Clamp used value with Math.max(0, ...) for non-negative display
- Use full accessToken as cache key instead of truncated prefix
- Replace catch(err: any) with instanceof Error check in models route
2026-03-30 17:32:42 -03:00
Chris Staley
35e2892b98
feat: add real Gemini CLI quota tracking via retrieveUserQuota API
...
Replace stub getGeminiUsage() with per-model quota fetching from Google
Cloud Code Assist's retrieveUserQuota endpoint (same API the official
Gemini CLI /stats command uses). Fixes OAuth env var name, aligns model
list with official Gemini CLI VALID_GEMINI_MODELS, and makes "Import
from /models" discover new models via the quota endpoint.
2026-03-30 17:32:42 -03:00
R.D.
b492c5ac1a
Fix cloudflared startup TLS handling
2026-03-30 16:31:07 -04:00
diegosouzapw
df38b3c62a
docs(i18n): sync cache metrics translation keys across 30 languages
2026-03-30 17:29:44 -03:00
R.D.
03a860dd6f
Fix combo smoke tests for reasoning responses
2026-03-30 16:23:53 -04:00
oyi77
fec585e44b
feat(cache): persistent metrics, cache entry browser, settings UI, MCP tools, prefix analyzer
...
Implements remaining features from #813 :
Phase 1 - Persistent Metrics:
- Add cache_metrics table for persistent hit/miss tracking
- Semantic cache stats now survive server restarts
Phase 2 - Cache Entry Browser:
- /api/cache/entries endpoint with search, pagination, delete
- CacheEntriesTab component for browsing cached entries
Phase 3 - Settings UI:
- CacheSettingsTab for semantic/prompt cache configuration
- /api/settings/cache-config endpoint
Phase 4 - Prefix Analyzer:
- src/lib/promptCache/prefixAnalyzer.ts for intelligent caching
- Analyzes message arrays to find stable prefixes
Phase 5 - Provider Support:
- Added deepseek to CACHING_PROVIDERS
Phase 6 - MCP Tools:
- omniroute_cache_stats tool
- omniroute_cache_flush tool
Phase 7 - Retention:
- cleanOldMetrics() for auto-purge of old entries
Closes #813
2026-03-31 02:41:30 +07:00
diegosouzapw
11dfdbb7a3
feat(analytics): add diversity score card UI and diversity API route
...
Implement DiversityScoreCard component to fetch and display provider diversity score with loading state and conditional styling, integrate it into AnalyticsPage overview, and add a new API route at src/app/api/analytics/diversity/route.ts to return the diversity report using getDiversityReport
2026-03-30 16:37:49 -03:00