diegosouzapw
684b81d835
feat(release): v2.7.4 — search playground, i18n fixes, Copilot limits, Serper validation
...
- feat(search): search playground + search tools page + local rerank (#443 @Regis-RCR)
- fix(analytics): localize day/date labels with Intl.DateTimeFormat (#444 @hijak)
- fix(copilot): correct account type display, filter unlimited quotas (#445 @hijak)
- fix(providers): stop rejecting valid Serper API keys on non-4xx (#446 @hijak)
v2.7.4
2026-03-18 12:11:00 -03:00
Diego Rodrigues de Sa e Souza
4f32da57fd
Merge pull request #443 from Regis-RCR/feat/search-playground
...
feat(search): add search playground, search tools, and local rerank routing
2026-03-18 12:09:51 -03:00
Diego Rodrigues de Sa e Souza
97265e48b3
Merge pull request #444 from hijak/fix/analytics-day-date-translations
...
fix: localize analytics day and date labels
2026-03-18 12:07:03 -03:00
Diego Rodrigues de Sa e Souza
64797158e2
Merge pull request #445 from hijak/fix/copilot-account-type-limits
...
fix: correct GitHub Copilot account type and limits
2026-03-18 12:06:59 -03:00
Diego Rodrigues de Sa e Souza
8359293dcd
Merge pull request #446 from hijak/fix/serper-api-key-validation
...
fix: stop rejecting valid Serper API keys
2026-03-18 12:06:36 -03:00
Jack Cowey
b2dc53d18b
fix(search): return consistent validation result shape
...
Keep search provider validation responses consistent with other validators so Serper regression tests and CI assertions can rely on unsupported=false.
Made-with: Cursor
2026-03-18 12:55:25 +00:00
Jack Cowey
edf8dd2a12
fix(search): accept authenticated serper validation responses
...
Treat non-auth Serper validation errors as successful authentication so valid API keys are not rejected during provider setup.
Made-with: Cursor
2026-03-18 12:29:14 +00:00
Jack Cowey
5a777bd598
fix(github): correct copilot plan and quota mapping
...
Normalize GitHub Copilot account tiers from the usage payload and hide misleading unlimited buckets so account type and limits render correctly in the dashboard.
Made-with: Cursor
2026-03-18 12:25:17 +00:00
Jack Cowey
bd39e01ee1
fix(analytics): localize most active day and weekly labels
...
Use the active app locale for analytics weekday and date formatting so the dashboard no longer shows hardcoded Portuguese labels.
Made-with: Cursor
2026-03-18 12:17:56 +00:00
Regis
e3ed29aab6
feat(search): add search playground, search tools, and local rerank routing
...
Search Playground (Phase 1):
- Web Search as 10th endpoint in Playground with isolated SearchPlayground component
- Endpoint selector moved first; Provider/Model/Send hidden when search selected
- Provider dropdown via GET /api/search/providers, formatted results with cache indicator
Search Tools page (Phase 2) at /dashboard/search-tools:
- Split panel: SearchForm (left) with query, provider, filters + ResultsPanel (right)
- Compare Providers: parallel queries with latency, cost, response size, URL overlap
- Rerank Pipeline: model selector from /v1/models, results with position delta
- Search History: last 10 searches from call_logs with replay
- Sidebar entry under Debug section
Backend:
- GET /api/search/providers — list providers with auth guard + SEARCH_CREDENTIAL_FALLBACKS
- GET /api/search/stats — cache stats, provider aggregates, recent searches (auth guard)
- Add local provider_nodes routing for /v1/rerank (oMLX, vLLM support)
Bug fixes (from F-27 PR #432 ):
- Fix Brave news normalizer: data.results directly, not data.news.results
- Enforce max_results truncation after normalization for all providers
- Fix EndpointPageClient: use /api/search/providers instead of /api/v1/search
- Add isAuthenticated() guards on /api/search/providers and /api/search/stats
Response size metric in results meta bar and compare table.
i18n: 30+ keys in search namespace (en.json)
2026-03-18 12:43:24 +01:00
diegosouzapw
896ce9c0e2
feat(release): v2.7.3 — fix Codex direct API weekly quota fallback
...
- fix(codex): resolveQuotaWindow() prefix-matches 'weekly' → 'weekly (7d)' cache keys
- fix(codex): applyCodexWindowPolicy() enforces useWeekly/use5h toggles in direct API
- 4 new regression tests, 766 total passing
- Closes #440
v2.7.3
2026-03-18 08:41:13 -03:00
Diego Rodrigues de Sa e Souza
82934132e9
Merge pull request #441 from rexname/fix/issue-440-direct-api-fallback
...
fix(codex): block weekly-exhausted accounts in direct API fallback
2026-03-18 08:40:19 -03:00
rexname
a2012b70de
chore(review): harden window normalization and deterministic quota matching
2026-03-18 14:17:37 +07:00
rexname
bcfeba8a57
fix(codex): enforce weekly quota blocking for direct API fallback
2026-03-18 13:57:25 +07:00
diegosouzapw
d3dfd9ce57
feat(release): v2.7.2 — fix light mode contrast in logs UI
...
- fix(logs): text colors in filter buttons + combo badge now have dark: variants
- Bumped version to 2.7.2
- Updated CHANGELOG and openapi.yaml
v2.7.2
2026-03-18 00:42:22 -03:00
Diego Rodrigues de Sa e Souza
aa06d5d356
Merge pull request #433 from diegosouzapw/fix/issue-378-logs-light-mode-contrast
...
Merged fix for light mode contrast in filter buttons and combo badge. Thanks @rdself for the great bug report!
2026-03-18 00:41:28 -03:00
diegosouzapw
448c8a29e1
fix(logs): fix light mode contrast in filter buttons and combo badge ( #378 )
...
- text-red-400 → text-red-700 dark:text-red-400 (error filter, recording button)
- text-emerald-400 → text-emerald-700 dark:text-emerald-400 (ok filter)
- text-violet-300 → text-violet-700 dark:text-violet-300 (combo filter)
- combo row badge: violet-700 → violet-800 dark:violet-300, stronger border
Fixes #378
2026-03-17 16:46:27 -03:00
diegosouzapw
928b7120f4
feat(release): v2.7.1 — unified web search routing + Next.js 16.1.7 security
...
- POST /v1/search: 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/mo
- Search analytics dashboard tab + GET /api/v1/search/analytics
- db: request_type column on call_logs (migration 007)
- Next.js 16.1.7: 6 CVEs fixed (critical: CVE-2026-29057 HTTP request smuggling)
- docs/openapi.yaml: bumped to 2.7.1
v2.7.1
2026-03-17 16:27:31 -03:00
diegosouzapw
a3deacd718
feat: Implement historical model latency and success rate tracking for auto-combo routing and update Claude and Deepseek pricing and model registrations.
2026-03-17 16:18:36 -03:00
diegosouzapw
78959fffbd
Merge branch 'main' of https://github.com/diegosouzapw/OmniRoute
2026-03-17 16:18:12 -03:00
Diego Rodrigues de Sa e Souza
1788616e52
Merge pull request #431 from diegosouzapw/dependabot/npm_and_yarn/next-16.1.7
...
Security update merged: Next.js 16.1.7 fixes 6 CVEs including critical CVE-2026-29057 (HTTP request smuggling). No breaking changes.
2026-03-17 16:18:01 -03:00
Diego Rodrigues de Sa e Souza
c61e6d0777
Merge pull request #432 from Regis-RCR/feat/search-provider-routing
...
Merged with dashboard improvements: SearchAnalyticsTab + /api/v1/search/analytics endpoint — PR review complete by Antigravity.
2026-03-17 16:17:39 -03:00
diegosouzapw
a3bc7620b1
feat(integration): integrate ClawRouter services into active pipeline
...
- intentClassifier → engine.ts selectProvider()
When taskType is 'default', classifies prompt via multilingual keyword
detection (9 langs) and uses detected intent (code/reasoning/simple/medium)
for 6-factor task fitness scoring.
- emergencyFallback → chatCore.ts error path (after T5 intra-family fallback)
On HTTP 402 or budget-exhaustion keywords, attempts one redirect to
nvidia/gpt-oss-120b ($0.00/M) before returning error to combo router.
Skipped for streaming requests and tool-calling requests.
- AutoComboConfig.routerStrategy field added
Allows per-combo strategy override ('rules' | 'cost' | 'latency')
Note: requestDedup was already integrated in chatCore.ts (line 387-430)
Branch: feat/clawrouter-improvements
2026-03-17 15:22:12 -03:00
diegosouzapw
8064c588dc
docs(i18n): sync v2.7.0 release notes to 29 language READMEs
...
New in v2.7.0: pluggable RouterStrategy, multilingual intent detection,
request deduplication, new providers (Grok-4 Fast, GLM-5/Z.AI,
MiniMax M2.5, Kimi K2.5). Native translations for de/es/fr/it/ru/zh-CN/ja/ko/ar/pt-BR/pt.
2026-03-17 15:11:09 -03:00
Regis
564e983c68
feat(search): add unified web search routing with 5 providers
...
Add POST /v1/search — a unified search endpoint routing queries across
5 providers (Serper, Brave, Perplexity Search, Exa, Tavily) with
automatic failover, in-memory caching, and request coalescing.
No open-source AI gateway offers unified search routing. This chains
free tiers for 5,500+ searches/month with zero downtime.
Providers: Serper ($0.001/q, 2500/mo free), Brave ($0.005/q, 1000/mo),
Perplexity Search ($0.005/q), Exa ($0.007/q, 1000/mo), Tavily
($0.008/q, 1000/mo). Auto-select picks cheapest with credentials.
Architecture follows existing patterns:
- searchRegistry.ts (same as embeddingRegistry.ts)
- search.ts handler (same as embeddings.ts)
- route.ts (same as /v1/embeddings/route.ts)
- searchCache.ts (bounded TTL cache + request coalescing)
Schema finalized — all future fields defined as optional with safe
defaults. No breaking changes when implementing content extraction,
answer synthesis, or ranking.
Key features:
- Per-provider request builders and response normalizers
- Enriched response: display_url, score, favicon_url, content block,
metadata, answer block, errors array, upstream_latency_ms metrics
- Cost-sorted auto-select with failover on 429/5xx/timeout
- Credential fallback (perplexity-search reuses perplexity chat key)
- Cache key includes all result-affecting parameters
- max_results clamped to provider limits, sanitized error responses
- Factored validators (validateSearchProvider factory)
- CORS headers on all responses
- Dashboard: Search & Discovery section, search provider template
- DB migration 007: request_type column in call_logs
- 28 unit tests (registry, cache, coalescing, validation)
2026-03-17 18:28:35 +01:00
diegosouzapw
e1da181740
fix(publish): also remove app/electron/ (contains app.asar binary) to prevent Z_DATA_ERROR
2026-03-17 14:25:48 -03:00
diegosouzapw
c63209200e
fix(publish): remove app/vscode-extension/ after build to prevent Z_DATA_ERROR in npm pack
2026-03-17 14:13:15 -03:00
diegosouzapw
737808cf53
fix(npm): exclude app/vscode-extension/ from package to prevent Z_DATA_ERROR during publish
2026-03-17 13:50:06 -03:00
diegosouzapw
a197bb7736
fix(routerStrategy): use .ts extension in imports for Next.js App Router bundle compatibility
2026-03-17 13:15:47 -03:00
dependabot[bot]
f9dd967bc5
deps: bump next from 16.1.6 to 16.1.7
...
Bumps [next](https://github.com/vercel/next.js ) from 16.1.6 to 16.1.7.
- [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.6...v16.1.7 )
---
updated-dependencies:
- dependency-name: next
dependency-version: 16.1.7
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-17 16:14:44 +00:00
diegosouzapw
44e4d55a66
feat(release): merge feat/clawrouter-improvements — v2.7.0
v2.7.0
2026-03-17 13:12:41 -03:00
diegosouzapw
095c84ac16
fix(providerRegistry): remove duplicate claude-haiku-4-5-20251001 from anthropic provider to prevent ambiguous model resolution
2026-03-17 13:10:23 -03:00
diegosouzapw
e063eae727
feat(clawrouter): implement 14 ClawRouter-inspired features
...
PRICING UPDATES (01-09):
- xAI Grok-4 family: grok-4-fast-non-reasoning (/usr/bin/bash.20/$0.50/M, 1143ms),
grok-4-fast-reasoning, grok-4-1-fast-*, grok-4-0709, grok-3, grok-3-mini
- Z.AI GLM-5 family: glm-5 + glm-5-turbo (128k maxOutput, $1.00/$3.20/M)
- Gemini Flash Lite: price corrected $0.15→$0.10 / $1.25→$0.40 (per ClawRouter)
- Gemini 3.1 Pro: new flagship (1.05M context, aliased as gemini-3.1-pro)
- Anthropic Claude 4.5/4.6: haiku-4.5 ($1/$5), sonnet-4.6 ($3/$15), opus-4.6 ($5/$25)
- DeepSeek native section: deepseek-chat/v3/v3.2 ($0.28/$0.42), deepseek-reasoner ($0.55/$2.19)
- Kimi K2.5 Moonshot: kimi-k2.5 ($0.60/$3.00, 262k ctx), moonshot-kimi-k2.5 alias
- MiniMax M2.5: minimax-m2.5 ($0.30/$1.20, 204k ctx, reasoning+tools)
- NVIDIA free tier: gpt-oss-120b at $0.00/M via emergencyFallback.ts
INFRASTRUCTURE FEATURES (10-14):
- feat(router): add intentClassifier.ts for multilingual intent detection (9 langs)
Detects code/reasoning/simple in EN, PT-BR, ES, ZH, JA, RU, DE, KO, AR
- feat(dedup): add requestDedup.ts for concurrent request deduplication
SHA-256 hash, skip streaming, skip high-temperature, 60s failsafe TTL
- feat(autoCombo): add routerStrategy.ts pluggable strategy system
RouterStrategy interface, RulesStrategy (6-factor) + CostStrategy, registry
- feat(fallback): add emergencyFallback.ts budget-exhaustion detector
Triggers on HTTP 402 or budget keywords, redirects to nvidia/gpt-oss-120b
- feat(taskFitness): add fitness scores for Grok-4, Kimi K2.5, GLM-5,
MiniMax M2.5, DeepSeek V3.2, Gemini 3.1 Pro across all task categories
PROVIDERS:
- providers.ts: add Z.AI (zai) provider entry for GLM-5 API key connections
All features on branch: feat/clawrouter-improvements
Source: github.com/BlockRunAI/ClawRouter analysis (2026-03-17)
2026-03-17 10:43:12 -03:00
diegosouzapw
f02c5b5c69
fix(install/v2.6.10): Windows better-sqlite3 prebuilt download ( #426 )
...
npm version patch run BEFORE staging files — this is an ATOMIC commit.
Adds Strategy 1.5 to scripts/postinstall.mjs:
- Uses @mapbox/node-pre-gyp install --fallback-to-build=false
(bundled within better-sqlite3) to download the correct prebuilt
binary for the current OS/arch (win32-x64/arm64, darwin-x64/arm64)
WITHOUT requiring node-gyp, Python, or MSVC build tools.
- Tries node-pre-gyp.cmd (Windows) or node-pre-gyp (Unix) from .bin/
with fallback to direct path in @mapbox/node-pre-gyp/bin/
- Falls back to npm rebuild only if prebuilt download fails.
- Windows-specific error: shows Option A (npx node-pre-gyp) and
Option B (rebuild) with Visual Studio Build Tools links.
Fixes : #426 (better_sqlite3.node is not a valid Win32 application)
v2.6.10
2026-03-17 10:09:45 -03:00
diegosouzapw
838f1d645c
fix(v2.6.9): CI budget checks, #409 file attachments, atomic release workflow
...
Includes version bump — v2.6.9 — committed ATOMICALLY with all changes:
fixes:
- fix(ci/t11): Remove 'any' from comments in openai-responses.ts + chatCore.ts
(\bany\b regex counted comment text as explicit any violations)
- fix(chatCore/#409): Normalize unsupported content part types before forwarding
Cursor sends {type:'file'} for .md attachments; Copilot/OpenAI providers reject
with 'type has to be either image_url or text'. Now: file/document→text block,
unknown types dropped with debug log. Fixes claude-* models via github-copilot.
workflow:
- chore(generate-release): ATOMIC COMMIT RULE — npm version patch MUST run before
feature commits so the release tag always points to a commit with full changes
v2.6.9
2026-03-17 09:09:01 -03:00
diegosouzapw
ce2c30c437
chore(release): v2.6.8 — combo agents, auto-update, detailed logs, MITM Kiro
v2.6.8
2026-03-17 08:58:03 -03:00
diegosouzapw
d56fae0a7b
feat: combo agents, auto-update UI, detailed logs, MITM Kiro ( #399 #401 #320 #378 #336 )
...
DB Migrations (zero-breaking, ADD COLUMN DEFAULT NULL + new table):
- 005_combo_agent_fields.sql: system_message, tool_filter_regex, context_cache_protection on combos
- 006_detailed_request_logs.sql: ring-buffer table (500 entries) for full pipeline body capture
Features:
- #399 System Message Override + Tool Filter Regex per Combo
- applyComboAgentMiddleware() injected into handleComboChat/handleRoundRobinCombo
- Supports both OpenAI and Anthropic tool name formats
- #401 Context Caching Protection (Stateless)
- injectModelTag() appends <omniModel>provider/model</omniModel> to responses
- extractPinnedModel() reads tag from history and pins model for session
- #320 Auto-Update via Settings
- GET /api/system/version — current vs latest npm
- POST /api/system/update — fire-and-forget npm install + pm2 restart
- #378 Detailed Request Logs
- saveRequestDetailLog() captures bodies at 4 pipeline stages (opt-in toggle)
- GET/POST /api/logs/detail — list logs + enable/disable toggle
- #336 MITM Kiro IDE
- src/mitm/targets/kiro.ts: MitmTarget profile for api.anthropic.com interception
2026-03-17 08:53:41 -03:00
diegosouzapw
e45ef00bef
chore(release): v2.6.7 — SSE fixes, local provider_nodes, proxy registry
...
PRs merged: #414 (deps) #415 #417 #419 #420 #421 (SSE fixes)
#418 (Claude passthrough) #422 #416 #423 (local nodes)
#427 (strip empty blocks) #428 (OAuth refreshable)
#429 (proxy registry)
Contributors: @prakersh, @Regis-RCR, @dependabot
v2.6.7
2026-03-17 08:17:11 -03:00
diegosouzapw
e9f31f7394
Merge pull request #429 from contributor branch
2026-03-17 08:14:05 -03:00
diegosouzapw
7c10a98eb2
Merge pull request #428 from contributor branch
2026-03-17 08:14:04 -03:00
diegosouzapw
f260483101
Merge pull request #427 from contributor branch
2026-03-17 08:14:03 -03:00
diegosouzapw
389e6e5c9e
Merge pull request #423 from contributor branch
2026-03-17 08:14:02 -03:00
diegosouzapw
1cfd5866be
Merge pull request #422 from contributor branch
2026-03-17 08:14:02 -03:00
diegosouzapw
c7ceac7f41
Merge pull request #421 from contributor branch
2026-03-17 08:14:01 -03:00
diegosouzapw
cd6eca0424
Merge pull request #420 from contributor branch
2026-03-17 08:14:00 -03:00
diegosouzapw
8c6136fea0
fix(sse): generate fallback call_id for tool calls with missing IDs ( #419 )
...
Co-authored-by: Prakersh Maheshwari <prakersh@users.noreply.github.com >
2026-03-17 08:11:53 -03:00
Diego Rodrigues de Sa e Souza
9644444028
Merge pull request #418 from prakersh/fix/claude-to-claude-passthrough
...
fix(sse): add Claude-to-Claude passthrough for anthropic-compatible providers
2026-03-17 08:09:44 -03:00
Diego Rodrigues de Sa e Souza
9c4154291d
Merge pull request #417 from prakersh/fix/orphaned-tool-result-filter
...
fix(sse): filter orphaned tool results after context compaction
2026-03-17 08:09:41 -03:00
Diego Rodrigues de Sa e Souza
533f5f6da6
Merge pull request #416 from Regis-RCR/feat/audio-provider-nodes
...
feat(audio): route audio requests to local provider_nodes
2026-03-17 08:09:38 -03:00
Diego Rodrigues de Sa e Souza
1b8de756cd
Merge pull request #415 from prakersh/fix/empty-tool-name-loop
...
fix(sse): skip empty-name tool calls in Responses API translator
2026-03-17 08:09:28 -03:00