Commit Graph

142 Commits

Author SHA1 Message Date
Diego Rodrigues de Sa e Souza
d6b95e687d Merge pull request #60 from diegosouzapw/fix/token-refresh-connection-tests
fix(token-refresh): detect Qwen invalid_request as unrecoverable & switch broken test endpoints to checkExpiry
2026-02-17 07:08:50 -03:00
diegosouzapw
3607eceb41 refactor(types): Wave 1 — shared component interfaces + EventTarget fixes
- Added TypeScript Props interfaces to 8 shared components:
  Badge, Input, Select, Toggle, SegmentedControl, DataTable, EmptyState, Tooltip
- Batch-fixed 15 e.target.style → e.currentTarget EventTarget issues
- Created missing src/lib/oauth/config/index.ts (getServerCredentials)
- Added module declarations for figlet, chalk, gradient-string, chalk-animation

TS errors: 984 → 862 (-122)
Build:   Tests: 368/368 
2026-02-17 03:05:59 -03:00
diegosouzapw
6bff90edf7 fix(token-refresh): detect Qwen invalid_request as unrecoverable error and switch broken test endpoints to checkExpiry
- refreshQwenToken now detects 'invalid_request' and returns sentinel error
- isUnrecoverableRefreshError expanded to match invalid_request
- Switched Qwen, IFlow, Cline test configs to checkExpiry mode (endpoints were returning 404/400/stale-auth)
- Fixed TypeScript errors in testSingleConnection (union type casts, Record<string,any>)
2026-02-17 02:52:50 -03:00
diegosouzapw
5ef97b2622 docs: update all documentation to reflect JS→TS migration
- README.md: TypeScript 5.9 in tech stack, test count 368+, evalRunner.ts
- CONTRIBUTING.md: TypeScript code examples, project structure with .ts/.tsx, PR checklist
- AGENTS.md: all src/ module references .js→.ts, TypeScript in stack
- ARCHITECTURE.md: 44 src/ path refs updated, date updated, TS/JS note
- CODEBASE_DOCUMENTATION.md: localDb.ts/usageDb.ts in app layer
- TASKS.md: 8 component/route refs updated to .tsx/.ts

open-sse/ references correctly remain .js (not yet migrated)
2026-02-17 02:04:00 -03:00
diegosouzapw
9739f41366 refactor: migrate entire src/ from JS to TypeScript
- Rename 254 .js files to .ts (domain, lib, services, stores, API routes, etc.)
- Rename 133 .js files to .tsx (components, pages, layouts)
- Fix ~230 import references (remove .js extensions from internal imports)
- Fix 10 open-sse cross-references to @/lib/ and ../../src/ paths
- Add TypeScript interfaces to Card, Modal, Button, and notificationStore
- Install tsx for test runner (handles extensionless .ts imports in Node ESM)
- Update test:unit script to use tsx/esm loader
- Update test imports from .js to .ts (20 files)
- Add typescript.ignoreBuildErrors in next.config.mjs for gradual migration
- Create src/types/global.d.ts for env vars and untyped modules
- Update tsconfig.json (jsx: preserve, forceConsistentCasingInFileNames)

Results:
- Build: ✓ compiles in ~40s
- Tests: ✓ 368/368 pass (100%)
- Zero .js files remain in src/
2026-02-17 01:53:41 -03:00
Diego Rodrigues de Sa e Souza
7ec5a0a527 Merge pull request #58 from diegosouzapw/dependabot/github_actions/actions/checkout-6
chore(deps): bump actions/checkout from 4 to 6
2026-02-17 01:04:31 -03:00
dependabot[bot]
a811c66230 chore(deps): bump actions/checkout from 4 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-17 03:47:51 +00:00
Diego Rodrigues de Sa e Souza
62e8369a12 Merge pull request #57 from diegosouzapw/dependabot/github_actions/peter-evans/dockerhub-description-5
chore(deps): bump peter-evans/dockerhub-description from 4 to 5
2026-02-17 00:47:14 -03:00
Diego Rodrigues de Sa e Souza
5291cd3321 Merge pull request #56 from diegosouzapw/dependabot/github_actions/actions/setup-node-6
chore(deps): bump actions/setup-node from 4 to 6
2026-02-17 00:47:01 -03:00
dependabot[bot]
00253b795c chore(deps): bump peter-evans/dockerhub-description from 4 to 5
Bumps [peter-evans/dockerhub-description](https://github.com/peter-evans/dockerhub-description) from 4 to 5.
- [Release notes](https://github.com/peter-evans/dockerhub-description/releases)
- [Commits](https://github.com/peter-evans/dockerhub-description/compare/v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/dockerhub-description
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 23:19:39 +00:00
dependabot[bot]
1d6a918154 chore(deps): bump actions/setup-node from 4 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 23:19:34 +00:00
Diego Rodrigues de Sa e Souza
7152691755 Merge pull request #51 from diegosouzapw/fix/ci-actions
fix(ci): lower coverage thresholds, use production server for E2E, block ESLint major upgrades
2026-02-16 20:19:02 -03:00
Diego Rodrigues de Sa e Souza
e6c31bf890 Merge pull request #50 from diegosouzapw/dependabot/npm_and_yarn/development-55a9f41e4a
deps: bump eslint from 9.39.2 to 10.0.0 in the development group
2026-02-16 20:18:40 -03:00
Diego Rodrigues de Sa e Souza
d0dd7b4b4c Merge pull request #49 from diegosouzapw/dependabot/npm_and_yarn/production-c9cc875c3b
deps: bump undici from 7.21.0 to 7.22.0 in the production group
2026-02-16 20:18:23 -03:00
Diego Rodrigues de Sa e Souza
dc50abc060 Merge pull request #55 from diegosouzapw/feat/unified-test-logging
feat(logging): unified Logger + Proxy logging for all test flows
2026-02-16 18:19:26 -03:00
diegosouzapw
835c860585 feat(logging): unified Logger + Proxy logging for all test flows
- Add saveCallLog + logProxyEvent to testSingleConnection() so provider
  tests, API key tests, and batch tests all log to both Logger and Proxy
  tabs in the Usage dashboard
- Fix combo test getBaseUrl() to respect x-forwarded-host/proto headers,
  preventing localhost resolution behind reverse proxy on VPS
- All test flows now produce entries in both call_logs and proxy_logs
  tables alongside the existing chat/SSE pipeline logging
2026-02-16 18:18:48 -03:00
Diego Rodrigues de Sa e Souza
81f0f4d97c Merge pull request #54 from diegosouzapw/fix/batch-test-network-error-vps
fix(providers): eliminate HTTP self-calls in batch test for VPS
2026-02-16 17:58:08 -03:00
diegosouzapw
f1deb98348 fix(providers): eliminate HTTP self-calls in batch test for VPS compatibility
- Extract testSingleConnection() from [id]/test/route.js as reusable export
- Rewrite test-batch/route.js to call testSingleConnection() directly
  instead of fetch(${request.nextUrl.origin}/api/...) which resolves to
  localhost behind reverse proxy, causing NETWORK_ERROR on VPS
- Add NEXT_PUBLIC_APP_URL to cloudSyncScheduler.js fallback chain
- POST handler in [id]/test/route.js now delegates to testSingleConnection()

Fixes: all 34 providers failing with NETWORK_ERROR on llms.omniroute.online
2026-02-16 17:57:30 -03:00
dependabot[bot]
d8b409c257 deps: bump undici from 7.21.0 to 7.22.0 in the production group
Bumps the production group with 1 update: [undici](https://github.com/nodejs/undici).


Updates `undici` from 7.21.0 to 7.22.0
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.21.0...v7.22.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 20:47:36 +00:00
Diego Rodrigues de Sa e Souza
bc38805b51 Merge pull request #53 from diegosouzapw/feature/proxy-log-sqlite-persistence
feat(proxy): persist proxy logs to SQLite
2026-02-16 17:46:19 -03:00
diegosouzapw
22cf732f08 feat(proxy): persist proxy logs to SQLite for restart survival
- Add proxy_logs table to db/core.js schema (18 columns + 3 indexes)
- Rewrite proxyLogger.js with hybrid dual storage:
  - In-memory ring buffer for real-time performance
  - SQLite persistence for surviving server restarts
  - On startup, hydrates from DB (last 500 entries)
  - Each event writes to both memory and SQLite
  - Auto-trim keeps max 500 rows in DB
- Same external API (getProxyLogs, clearProxyLogs, etc.)
- Zero changes needed in API route or frontend
2026-02-16 17:45:33 -03:00
Diego Rodrigues de Sa e Souza
3b3dce07be Merge pull request #52 from diegosouzapw/feature/tls-fingerprint-spoofing
feat(proxy): implement TLS fingerprint spoofing via wreq-js
2026-02-16 17:13:36 -03:00
diegosouzapw
127cdc9143 feat(proxy): implement TLS fingerprint spoofing via wreq-js
- Add TlsClient module (Chrome 124 fingerprint via wreq-js)
- Integrate TLS client as opt-in layer in proxyFetch.js (ENABLE_TLS_FINGERPRINT)
- Add per-request TLS tracking via AsyncLocalStorage
- Add TLS fingerprint column and badge to Proxy Logger dashboard
- Add TLS Fingerprint section to ProxyLogDetail modal
- Add wreq-js dependency
- Document ENABLE_TLS_FINGERPRINT in .env.example

Adapted from upstream PR decolua/9router#137, preserving all
OmniRoute-specific proxy features (AsyncLocalStorage context,
proxyDispatcher, SOCKS5, Symbol-based patch state).
2026-02-16 17:12:24 -03:00
diegosouzapw
d3a4f6be98 fix(e2e): correct API endpoints and response format assertions 2026-02-16 17:08:17 -03:00
diegosouzapw
23ee13818a fix(ci): lower coverage thresholds, use production server for E2E, block ESLint major upgrades 2026-02-16 17:01:50 -03:00
dependabot[bot]
9eeeb90dae deps: bump eslint from 9.39.2 to 10.0.0 in the development group
Bumps the development group with 1 update: [eslint](https://github.com/eslint/eslint).


Updates `eslint` from 9.39.2 to 10.0.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.2...v10.0.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 19:06:39 +00:00
Diego Rodrigues de Sa e Souza
a1137c1fa1 Merge pull request #48 from diegosouzapw/style/add-website-url
v0.8.0 — Website launch, SECURITY.md audit, docs improvements
v0.8.0
2026-02-16 14:33:46 -03:00
diegosouzapw
e962e4f558 chore: bump version to 0.8.0
- Website launch (omniroute.online)
- Comprehensive SECURITY.md
- Documentation improvements
- Updated provider count to 36+
2026-02-16 14:33:13 -03:00
diegosouzapw
6d3b4166df docs: remove all Architecture Decision Record (ADR) documents. 2026-02-16 14:31:35 -03:00
diegosouzapw
45eced0b3e docs: comprehensive SECURITY.md based on full codebase audit
Documented all security features actually implemented:
- AES-256-GCM encryption at rest (API keys, tokens)
- Prompt injection guard (5 pattern types)
- PII redaction (email, CPF, CNPJ, CC, phone, SSN)
- Secrets validator (fail-fast on weak values)
- Circuit breaker (3-state, SQLite-persisted)
- OAuth 2.0 + PKCE, CORS, IP filtering
- Rate limiting, anti-thundering herd
- Compliance (log retention, audit log, no-log)
2026-02-16 14:29:50 -03:00
diegosouzapw
1b00a6b70b docs: update SECURITY.md and add to README
- Bump supported versions: 0.7.x (active), 0.6.x (security)
- Replace fake email with GitHub Security Advisories link
- Add Security Policy to README documentation table
2026-02-16 14:27:17 -03:00
diegosouzapw
03d05e0490 docs: track USER_GUIDE, API_REFERENCE, and TROUBLESHOOTING in git
These files were referenced in README but ignored by .gitignore.
Added them to the exception list so they appear in the repository.
2026-02-16 14:25:52 -03:00
diegosouzapw
4cac582cb0 docs: add omniroute.online website URL to README, npm, and Docker
- Add Website badge to README header
- Add website link to nav, tech stack, support, and footer
- Update provider count from 28 to 36+
- Set package.json homepage to https://omniroute.online
- Add OCI image URL label to Dockerfile
2026-02-16 14:22:29 -03:00
Diego Rodrigues de Sa e Souza
eb0fbccd05 Merge pull request #47 from diegosouzapw/fix/vm-onboarding-auth
fix: auto-skip onboarding and enforce login on VM deployments
2026-02-16 11:25:06 -03:00
diegosouzapw
32c0f40021 fix: auto-skip onboarding and enforce login on VM deployments
- getSettings() auto-sets setupComplete=true when INITIAL_PASSWORD env is set
- proxy.js middleware enforces login when INITIAL_PASSWORD exists (even without DB hash)
- Settings API reports hasPassword=true when INITIAL_PASSWORD is configured
- Login page hides '123456' default hint when a custom password is set

Fixes fresh Docker/VM deployments getting stuck on onboarding wizard
and being accessible without authentication.
2026-02-16 11:24:15 -03:00
Diego Rodrigues de Sa e Souza
baae44f825 Merge pull request #46 from diegosouzapw/feature/release-0.7.0
chore: release v0.7.0 — Docker Hub, changelog overhaul
v0.7.0
2026-02-16 09:49:07 -03:00
diegosouzapw
5fe53168b2 chore: bump version to 0.7.0, reorganize changelog, add Docker Hub CI/CD and README
- Bump version from 0.6.0 to 0.7.0 in package.json
- Rewrite CHANGELOG.md with comprehensive entries from v0.1.0 to v0.7.0
- Add docker-publish.yml GitHub Actions workflow for auto Docker Hub push
- Add Docker Hub badge, Docker section, and Docker Hub link to README
- Update release command example to v0.7.0
2026-02-16 09:48:35 -03:00
diegosouzapw
ebdc1c214d refactor: extract CliStatusBadge component and refactor CLI tool cards
- Create shared CliStatusBadge component with support for configured,
  not_configured, not_installed, other, and unknown statuses
- Replace inline status badge markup in ClaudeToolCard and ClineToolCard
  with the new reusable component
- Add colored status dot indicator alongside badge text
- Support batch status fallback so badges render even when cards are collapsed
- Refactor model/provider selection logic in tool card configuration
2026-02-16 01:35:57 -03:00
Diego Rodrigues de Sa e Souza
467e998650 Merge pull request #45 from diegosouzapw/fix/cloud-connection-ux
fix(cloud): improve cloud connection UX
2026-02-16 01:03:23 -03:00
diegosouzapw
9a9f592f54 fix(cloud): improve cloud connection UX with GET status, toast feedback, and sidebar indicator
- Add GET handler to /api/sync/cloud for real-time status polling
- Rewrite CloudSyncStatus: clickable, event-driven updates, clearer labels
- Add inline status toast with auto-dismiss after enable/disable
- Show success animation in modal before auto-closing
- Dispatch cloud-status-changed event for instant sidebar updates
2026-02-16 01:02:52 -03:00
Diego Rodrigues de Sa e Souza
c3fe96e221 Merge pull request #44 from diegosouzapw/feature/release-0.6.0
chore: release v0.6.0
v0.6.0
2026-02-16 00:23:19 -03:00
diegosouzapw
1c6541f25d chore: bump version to 0.6.0 and update changelog 2026-02-16 00:22:55 -03:00
diegosouzapw
9f8dfa1398 feat: add costs page and enhance health provider status display
Add dedicated Costs page combining Budget and Pricing tabs with a
sidebar navigation layout. Improve Health page provider section with
status legend (Healthy/Recovering/Down) and import AI_PROVIDERS
constants for richer provider display.
2026-02-15 23:01:27 -03:00
diegosouzapw
e4db9bff0e feat: add provider metrics display and model import for passthrough providers
- Fetch and display request metrics (success rate, latency, total requests) on provider overview cards
- Create /api/provider-metrics endpoint to aggregate stats from request logs
- Add /api/providers/[id]/import-models endpoint to import models from provider's /models API
- Add "Import from /models" button on passthrough provider detail pages
- Include proper PropTypes for new metrics and alias fields
2026-02-15 21:53:27 -03:00
diegosouzapw
54aba4c087 feat: redesign app icons with network node graph and new color scheme
Replace text-based "9" favicon with a network/router node graph design
across all icon sizes. Add apple-touch-icon and icon-192 SVG assets.
Update brand gradient from orange (#f97815) to red (#E54D5E).
2026-02-15 20:56:48 -03:00
Diego Rodrigues de Sa e Souza
c2542b75f6 Merge pull request #43 from diegosouzapw/feature/release-0.5.0
chore: release v0.5.0
v0.5.0
2026-02-15 19:03:37 -03:00
diegosouzapw
6572f2a1b6 chore: bump version to 0.5.0 and update changelog 2026-02-15 19:03:18 -03:00
Diego Rodrigues de Sa e Souza
2ad23f3b3c Merge pull request #42 from diegosouzapw/feature/ajustes-cosmeticos
feat: v0.5.0 - Dashboard refinements, evals framework, and combo strategies
2026-02-15 18:57:29 -03:00
diegosouzapw
fa9687ae0d feat: Implement API key usage for EvalsTab LLM calls, enhance model filtering with provider aliases, and remove the random routing strategy option. 2026-02-15 18:56:33 -03:00
diegosouzapw
0ed7738c7c feat: add LLM evaluation framework with golden set testing
Introduce built-in eval system for testing LLM response quality against
golden sets. Includes eval runner with 4 match strategies (exact,
contains, regex, custom), a pre-loaded 10-case golden set, REST API
endpoints for managing and running suites, and a dashboard UI under
Analytics → Evals with real-time progress tracking and pass rate
summaries. Also adds OpenAPI tags for Audio, Moderations, and Rerank.
2026-02-15 18:37:18 -03:00