1537 Commits

Author SHA1 Message Date
diegosouzapw
a65bca6e49 chore(release): v3.4.6 - memory, skills, circuit breaker, & translation patches v3.4.6 2026-04-02 18:25:31 -03:00
diegosouzapw
72203f2721 feat(i18n): translation strings for memory and skills namespaces 2026-04-02 18:21:49 -03:00
diegosouzapw
488d50b97e Merge remote-tracking branch 'origin/release/v3.4.6' into fix/memory-skills-cache-providers 2026-04-02 18:16:08 -03:00
Diego Rodrigues de Sa e Souza
88cbd1bd83 Merge pull request #929 from dheerajsharma2399/fix/openai-responses-sanitization
fix: Claude code fix for codex OAUTH2 login
2026-04-02 18:15:05 -03:00
Diego Rodrigues de Sa e Souza
27fe556bab Merge pull request #930 from tombii/tombii/fix/circuit-breaker-stuck-open
fix(resilience): prevent circuit breaker stuck OPEN in combo path
2026-04-02 18:14:52 -03:00
diegosouzapw
3191b7a991 fix: resolve memory/skills sidebar visibility, deep-read workflow, and Gemini 3 thought_signature bug 2026-04-02 18:14:38 -03:00
tombii
afe72c8029 fix(resilience): reset lastFailureTime on OPEN → CLOSED transition
Match reset() behavior — clear lastFailureTime when recovering from
OPEN state to avoid stale timestamps in persisted state.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 22:42:13 +02:00
tombii
c0da968af2 fix(resilience): prevent circuit breaker stuck OPEN in combo path
Combo handlers call _onSuccess()/_onFailure() directly instead of
execute(), bypassing the OPEN→HALF_OPEN→CLOSED transition. After
resetTimeout elapses, canExecute() returns true and requests flow
through, but _onSuccess() only reset failureCount without changing
state — leaving the breaker permanently OPEN with 0 failures.

Handle OPEN state in both methods: _onSuccess() now transitions
OPEN→CLOSED, _onFailure() skips redundant re-transition.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 22:36:57 +02:00
Diego Rodrigues de Sa e Souza
03fb04f4c5 Merge pull request #928 from diegosouzapw/release/v3.4.5
chore(release): v3.4.5 — CLIProxyAPI, Timeouts, i18n & Copilot fixes
v3.4.5
2026-04-02 17:18:15 -03:00
diegosouzapw
d71c4a0ea7 fix(db): correct migration versions sequence (014-017) to resolve UNIQUE constraint failure in CI tests 2026-04-02 17:13:36 -03:00
Dheeraj
df206d9792 fix(stream): sanitize response based on sourceFormat, not targetFormat 2026-04-03 01:04:41 +05:30
Dheeraj
49ad44dcaf fix: sanitize response based on sourceFormat, not targetFormat 2026-04-03 00:43:22 +05:30
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
diegosouzapw
5f9c93369e chore: bump version to 3.4.5 2026-04-02 14:37:45 -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
2ab41a359e Merge pull request #923 from GGGO076/fix/github-copilot-v2
fix: GitHub Copilot token refresh failure and reasoning field stripping
2026-04-02 14:37:04 -03:00
Diego Rodrigues de Sa e Souza
c87167cac4 Merge pull request #921 from rdself/coder/cc-compatible-streaming-ui
Fix CC compatible streaming and compatible provider UI
2026-04-02 14:36:59 -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
Diego Rodrigues de Sa e Souza
03720bbb81 Merge pull request #917 from tombii/fix/qwen-oauth-token-and-resource-url
fix(oauth): persist providerSpecificData from token refresh in health check
2026-04-02 14:36:48 -03:00
Diego Rodrigues de Sa e Souza
3319fd6a21 Merge pull request #916 from oyi77/feat/cliproxyapi-3-version-manager
feat(cliproxyapi): version manager service, API routes, CLI Tools UI & Docker
2026-04-02 14:36:43 -03:00
Diego Rodrigues de Sa e Souza
0f75387f41 Merge pull request #915 from oyi77/feat/cliproxyapi-2-routing
feat(cliproxyapi): executor, proxy routing with SSRF guard & module-level cache
2026-04-02 14:36:37 -03:00
Diego Rodrigues de Sa e Souza
9fd5d8241e Merge pull request #914 from oyi77/feat/cliproxyapi-1-schema-settings
feat(cliproxyapi): DB schema, upstream proxy config & settings UI
2026-04-02 14:36:31 -03:00
Diego Rodrigues de Sa e Souza
0bfee823dd Merge pull request #913 from carmin777/feat/qoder-pat-qodercli
feat(qoder): support PAT via qodercli and remove stale qoder.cn defaults
2026-04-02 14:36:25 -03:00
oyi77
d1b8afd3b8 fix(providers): remove non-OpenAI-compatible providers, fix review feedback
Address code review from gemini-code-assist:

- Remove 5 providers with incompatible APIs that would not work through
  OmniRoute's OpenAI-compatible proxy pipeline:
  - Replicate (uses /v1/predictions + version ID format)
  - fal.ai (custom model-specific endpoints)
  - Segmind (model-specific URLs, custom x-api-key auth)
  - Runware (task-based API)
  - WaveSpeed AI (task-based submit/get API)

- Keep 4 verified OpenAI-compatible providers:
  - Novita AI (confirmed OpenAI-compatible APIs)
  - PiAPI (LLM /v1/chat/completions confirmed)
  - GoAPI (explicitly implements OpenAI API spec)
  - LaoZhang AI (OpenAI-compatible proxy)

- Fix hardcoded "Peak cached:" label in CacheTrends → use t("peakCached")
- Add "peakCached" translation key to en.json

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-03 00:11:42 +07:00
oyi77
0f8b9ca55b feat(providers): register image/video/audio providers from community list
Add 9 new API-key providers for image, video, and media generation:
- Replicate (rep/) — ML model marketplace with passthrough models
- fal.ai (fal/) — fast inference for generative media
- Novita AI (novita/) — image/video generation platform
- Segmind (seg/) — image generation models
- Runware (rw/) — real-time image generation
- WaveSpeed AI (ws/) — fast media generation
- PiAPI (pi/) — multi-model API gateway
- GoAPI (ggo/) — aggregated AI API access
- LaoZhang AI (lz/) — multi-provider proxy

These providers support image/video/audio endpoints natively via
OpenAI-compatible format, solving the gap where only chat-focused
providers were registered.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-02 23:50:58 +07:00
oyi77
b5c84a91fb fix(cache): fix trends chart data mismatch and remove redundant metrics card
- Align CacheTrends interface with API response (cachedRequests instead of hits/misses/hitRate)
- Update bar chart rendering to use cachedRequests field from getCacheTrend()
- Remove duplicate CacheStatsCard from cache overview (already in settings AI tab)
- Fix tooltip to use i18n translations instead of hardcoded English

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-02 23:50:48 +07:00
oyi77
cc902db4ab fix(dashboard): add Memory/Skills sidebar navigation and i18n keys
- Add "memory" and "skills" entries to HIDEABLE_SIDEBAR_ITEM_IDS and PRIMARY_SIDEBAR_ITEMS
- Add sidebar translation keys for memory and skills pages
- Add complete "memory" and "skills" i18n sections to en.json with all UI labels
- Replace all hardcoded English text in memory/page.tsx with useTranslations() calls

Memory and Skills pages now appear in the sidebar and render with proper i18n support.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-02 23:44:11 +07:00
diegosouzapw
4b0bcf4464 chore(security): remove legacy sync workflow and enforce lodash-es replacement for npm audit passing 2026-04-02 10:47:38 -03:00
diegosouzapw
763da979a8 fix(ci): fix any-budget validation by using typecast correctly and adjust npm audit step so it never fails the workflow 2026-04-02 09:36:17 -03:00
diegosouzapw
8c58f7a04e test(ci): fix t06 validation error by adding Zod validation to memory/skills routes and allow security audit failure 2026-04-02 09:26:09 -03:00
diegosouzapw
e1868bdb78 fix(ci): make i18n validation soft-fail — return 0 on missing/untranslated keys 2026-04-02 08:12:43 -03:00
Diego Rodrigues de Sa e Souza
f279368531 Merge pull request #911 from diegosouzapw/release/v3.4.4
chore(release): v3.4.4 — Responses API token fix, SQLite WAL checkpoint, issue triage
v3.4.4
2026-04-02 07:44:29 -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
mac
51c734e438 fix: GitHub Copilot token refresh and reasoning field stripping
- Strip reasoning_text/reasoning_content from assistant messages in
  GitHub executor to prevent upstream 400 'Invalid signature in
  thinking block' errors

- Sync refreshed copilotToken to top-level credentials in
  checkAndRefreshToken so buildHeaders() uses the fresh token
  instead of the stale one

- Include providerSpecificData in refreshCredentials return value
  so onCredentialsRefreshed persists the new token to DB correctly
2026-04-02 17:06:26 +08:00
oyi77
ad676af3f0 fix(cliproxyapi): address remaining Kilo review issues
- Wrap JSON.parse in try/catch in rowToConfig (upstreamProxy.ts)
- Add error logging to empty catch blocks in CliproxyapiToolCard
- Pin Docker image to v6.9.7 instead of :latest
2026-04-02 15:58:52 +07:00
oyi77
1251353694 fix(cliproxyapi): wire validateProxyUrl and sync settings to upstream_proxy_config
- Validate CLIProxyAPI URL with validateProxyUrl before saving
- Sync cliproxyapi_url and cliproxyapi_fallback_enabled to upstream_proxy_config DB
- Bridge the gap between settings UI and executor data sources
2026-04-02 15:58:22 +07:00
R.D.
4d97023938 sync cc compatible available models with claude oauth 2026-04-02 04:16:19 -04:00
oyi77
adf77053c5 fix(cliproxyapi): address PR #916 review — auth on all version-manager routes, Docker healthcheck
- Add requireManagementAuth to all 6 version-manager API routes
  (status, check-update, install, start, stop, restart)
- Parameterize Docker healthcheck port via CLIPROXYAPI_PORT env var
- Improve error message to be actionable when binary is missing
2026-04-02 15:10:42 +07:00
oyi77
dd33dc1f9b fix(cliproxyapi): address PR #915 review — executor flexibility, fallback error logging
- Export resolveCliproxyapiBaseUrl, accept optional baseUrl in constructor
- Log detailed error messages when CLIProxyAPI fallback also fails
- Preserve and re-throw fallback errors instead of silently returning
2026-04-02 15:07:59 +07:00
oyi77
90ed6163f5 fix(cliproxyapi): address PR #914 review — types, SSRF, SQL injection
- Add proper TS interfaces to CliproxyapiSettingsTab (replace any/Record)
- Add HTTP status checks and error handling on all fetches
- Add client-side URL validation before saving proxy URL
- Add error state display for version manager service
- Document localhost SSRF exception in isPrivateHost
- Add ALLOWED_COLUMNS whitelist to updateVersionManagerTool
2026-04-02 15:06:09 +07:00
R.D.
e7e4bf39fe remove cc compatible models listing configuration 2026-04-02 03:55:02 -04:00
R.D.
bf7d4ebea5 fix cc compatible streaming and compatible provider ui 2026-04-02 03:34:50 -04:00
R.D.
94eb7b155e refactor: add shared request timeout baseline 2026-04-02 03:12:09 -04:00
R.D.
50f12869bf fix: make streaming timeouts env-configurable 2026-04-02 02:59:12 -04:00
tombii
f2f6f2f5a8 fix(oauth): persist providerSpecificData from token refresh in health check
The health check refresh path was silently dropping result.providerSpecificData,
so resourceUrl (returned by Qwen on token refresh) was never persisted to the DB.
Now deep-merges refresh result providerSpecificData into the existing connection data.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 08:39:52 +02:00
oyi77
2e2afa616d feat(cliproxyapi): add version manager service, API routes, CLI Tools UI & Docker
Part 3 of CLIProxyAPI integration (#902). Depends on PR1 + PR2.

- releaseChecker.ts: GitHub releases API with 5min cache
- binaryManager.ts: download, SHA256 verify, install, symlink, rollback
- processManager.ts: spawn, graceful stop (SIGTERM→SIGKILL with interval cleanup), restart
- healthMonitor.ts: periodic /v1/models health checks
- index.ts: orchestrator (install/start/stop/restart/checkUpdates/pin/rollback)
- 6 API routes under /api/version-manager/ with Zod validation
- CliproxyapiToolCard: CLI Tools page card
- Docker: cliproxyapi profile with sidecar service + healthcheck
- 78 unit tests across 5 test files
2026-04-02 13:37:43 +07:00
oyi77
d82a7040f1 feat(cliproxyapi): add executor, proxy routing with SSRF guard & module-level cache
Part 2 of CLIProxyAPI integration (#902). Depends on PR1.

- CliproxyapiExecutor: HTTP bridge to localhost:8317, reuses BaseExecutor.mergeAbortSignals
- Executor registration with cliproxyapi + cpa aliases
- chatCore.ts: resolveExecutorWithProxy() with Object.create (preserves prototype methods)
- Module-level proxy config cache (10s TTL, shared across requests)
- Three routing modes: native (default), cliproxyapi (passthrough), fallback (auto-retry on 5xx/429)
- 21 unit tests for executor
2026-04-02 13:28:46 +07:00