Commit Graph
26 Commits
Author SHA1 Message Date
MUH. IQRAM BAHRING 3d10fd9611 chore(docker): follow upstream — untrack package-lock, use npm install 2026-08-15 04:25:18 +08:00
MUH. IQRAM BAHRING c895410510 chore(deps): sync package lock 2026-08-15 04:11:54 +08:00
MUH. IQRAM BAHRING f555236545 merge: update from decolua/9router upstream (SAML, providers, opencode session headers) 2026-08-15 03:54:03 +08:00
MUH. IQRAM BAHRING df8c4ccb81 fix: improve provider routing and assignments 2026-08-15 03:47:18 +08:00
MUH. IQRAM BAHRING d00205511a feat(docs): add screenshots + beginner install guide, MIBP Edition credits 2026-08-07 12:48:39 +08:00
MUH. IQRAM BAHRING 7929464427 fix: restore platform-complete package-lock for linux npm ci 2026-08-07 09:32:23 +08:00
MUH. IQRAM BAHRING 56f46aa433 chore(ci): disable gitbook pages workflow for fork, add healthcheck + geo env docs
gitbook-pages.yml deployed to upstream org's 9router.github.io which a fork
cannot (no GH_PAGES_DEPLOY_KEY) — renamed to .yml.disabled. Dockerfile gains
a /api/health HEALTHCHECK. .env.example documents the new pool geostrobes
env knobs (POOL_GEO_PROBE_DISABLED, GEO_PROBE_URL).
2026-08-07 08:35:49 +08:00
MUH. IQRAM BAHRING 3844f04cb5 fix(profile): move Check Size Memory button beside Import Backup 2026-08-07 08:20:27 +08:00
MUH. IQRAM BAHRING 1f4813c786 feat(profile): Check Size Memory button + English geo-probe hint
New /api/system/memory reports db + data-dir sizes and in-memory state
(fitness/geo registries, freebuff session/cooldown counts); profile page
'Local Mode' card gets a Check Size Memory button rendering the summary.
Geo-probe toggle hint localized to English.
2026-08-07 08:11:44 +08:00
MUH. IQRAM BAHRING 37d03aa0d5 feat(proxy-fitness): on/off toggle for egress geo probe
Header toggle in Proxy Fitness persists settings.poolGeoProbeEnabled
(default on); the probe scheduler reads it each pass and skips when off.
The env POOL_GEO_PROBE_DISABLED remains a hard override. Smart rotation is
unaffected — it runs off the fitness registry from real request failures.
2026-08-07 08:01:55 +08:00
MUH. IQRAM BAHRING a443834f53 feat(proxy-fitness): multi-endpoint egress geo probe chain
Try ipwho.is -> ip-api.com -> ipapi.co -> ipinfo.io in order so a
rate-limited/broken provider falls through to the next; ipinfo (most
quota-bound) is last. Normalize each payload to {ip,country,region,city,org},
keep 15s timeout per endpoint, and support GEO_PROBE_URL to replace the
chain with a single custom endpoint.
2026-08-07 07:45:54 +08:00
MUH. IQRAM BAHRING 3c4bd4f1e5 feat(proxy-fitness): throttle egress geo probe + aggregate failure log
Refuse re-probing failures too fast: 500/429 failures get a 2h backoff,
other errors 30m (flapping relays/quota stops hammering ipinfo every pass,
passes every 30 min instead of 15). One-line summary per pass
(geo N/M · fail: rate×a server×b) replaces the per-pool error wall.
New env POOL_GEO_PROBE_DISABLED=1 turns the feature off.
2026-08-07 07:16:29 +08:00
MUH. IQRAM BAHRING c1bbe446de chore: drop full error stack traces from chat error logs
Shorten the ✗ ERROR 502 / stream ERROR lines to the message only; the
multi-KB next-dev stack trace polluted the console on every provider error.
2026-08-07 06:39:54 +08:00
MUH. IQRAM BAHRING fa679a676d docs(cloud): raise nginx client_max_body_size for large-context payloads
nginx default 1m rejects multi-MB chat bodies (1M-token prompts) with
413 before they reach 9Router; set 128m in the documented site config.
2026-08-07 05:40:18 +08:00
MUH. IQRAM BAHRING 2a1e192734 feat(api): advertise context_window on /v1/models from capabilities 2026-08-07 04:56:40 +08:00
MUH. IQRAM BAHRING 041e039793 chore: strip per-request DEBUG logs from chat path
Remove [DBG:STREAM] chunk/pipe/EOF instrumentation and [DBG:SSE] flush +
fetch success lines that spam the dev console every request. Keep the stream
stall watchdog and the fetch-error (✖) diagnostics.
2026-08-07 04:24:54 +08:00
MUH. IQRAM BAHRING ad43a267ac chore: re-sync package-lock 2026-08-07 04:04:35 +08:00
MUH. IQRAM BAHRING a0bf2e3f96 fix(token-refresh): stop dead-token retry loop, lift block on refresh success
Unrecoverable refresh errors (invalid_grant/invalid_request) are persisted as
a refreshBlocked marker so the background scheduler stops hammering the
provider every 5 minutes and surfaces re-login required; the marker is lifted
automatically when a later refresh succeeds. Cooldown maps gained lazy pruning.
2026-08-07 03:51:38 +08:00
MUH. IQRAM BAHRING b75d665fa5 feat(proxy-fitness): egress geo probe + unstable detection + state sweeper
Background probe fetches ipinfo through each pool itself (provider-agnostic
transport), fills an egress IP/country cache (TTL 1h, 8-IP history) and flags
flapping relays as unstable. Periodic state sweeper (10 min) prunes expired
fitness marks, stale geo/ip-history and Freebuff session/cooldown state;
schedulers skip non-server runtimes. Unit tests for the geo cache.
2026-08-07 03:51:29 +08:00
MUH. IQRAM BAHRING fd22290a34 feat(proxy-fitness): pool fitness registry + Smart rotation + pool-scoped retry
Pool/IP fitness registry (globalThis-backed, provider::model scopes, 5-min
cooldown, provider::* wildcard) fed by pool-scoped failures: freebuff
limited-IP / model-locked gates and opencode free per-IP limits. chatCore
retries a failed pool via another pool without locking the account; new
Smart rotation strategy (per-connection + no-auth providers) skips unfit
pools. Proxy Fitness dashboard page: active-block table with provider/IP
filters, per-record Clear and provider-scoped Clear All; egress column via
pool geo enrichment. Unit tests for the registry.
2026-08-07 03:51:19 +08:00
MUH. IQRAM BAHRING 90ff8191ff fix: lock Docker dependencies and remove test credential 2026-08-06 04:10:58 +08:00
MUH. IQRAM BAHRING d05b84d377 chore: prepare fork docker deployment 2026-08-06 03:11:31 +08:00
MUH. IQRAM BAHRING eca3b9c3dc fix: add FREEBUFF_CONFIG export to oauth constants
- Export FREEBUFF_CONFIG from src/lib/oauth/constants/oauth.js
- Fixes build error: 'Export FREEBUFF_CONFIG doesn't exist in target module'
2026-08-06 01:05:20 +08:00
MUH. IQRAM BAHRING de5fb415a7 feat: register Freebuff provider in all index files
- Add Freebuff to providers registry (open-sse/providers/registry/index.js)
- Register FreebuffExecutor (open-sse/executors/index.js)
- Add Freebuff OAuth config (src/lib/oauth/providers/index.js)
- Register Freebuff usage handler (open-sse/services/usage.js)

This enables Freebuff provider to appear in dashboard and be fully functional.
2026-08-06 00:54:04 +08:00
MUH. IQRAM BAHRING b15b0c930a docs: add upstream sync instructions to README 2026-08-06 00:35:29 +08:00
MUH. IQRAM BAHRING 8343d54bf2 feat: add Freebuff provider and fix dompurify security vulnerabilities
- Add Freebuff provider integration (executor, registry, OAuth, usage tracking)
- Upgrade monaco-editor to ^0.56.0
- Add dompurify ^3.4.13 with override to fix security vulnerabilities
- Add Freebuff provider icon and test files
2026-08-06 00:30:06 +08:00