Commit Graph
23 Commits
Author SHA1 Message Date
MUH. IQRAM BAHRING 25df5e6a9d chore(guards): add durable markers so fixes aren't silently dropped
Introduce AGENTS.md (root, primary agent instruction file) documenting six
hard-won fixes with explicit DO NOT / WHY, plus executable enforcement so a
future AI cannot delete or reintroduce them:

1. package-lock.json must be generated with npm 10 (Docker's npm 10.9.8).
   npm 11 drops the top-level @emnapi/core + @emnapi/runtime entries npm 10
   needs, breaking the tag-triggered Docker build at `npm ci` (happened on
   v1.0.14). Add scripts/verify-lockfile-npm10.mjs + .npmrc + a Dockerfile
   fail-fast check + a CI step + tests/unit/lockfile-npm10-guard.test.js.
   Also re-fix the lockfile itself (regenerated with npm 10.9.8).
2. Tests must never write to the real ~/.9router DB (isolateDataDir).
3. Hidden providers must not leak into Usage (usageProviders !p.hidden).
4. codebuddy-intl connection test + OAuth identity.
5. Fork-only features that must survive upstream syncs.
6. Upstream sync procedure.

Each marker cross-references AGENTS.md and the covering test. CLAUDE.md now
points to AGENTS.md at the top. Verified: build ok, guard script passes,
full suite leaves the real DB count unchanged (38), 0 new regressions.
2026-09-19 12:52:19 +08:00
MUH. IQRAM BAHRING 06c66d8df8 ci(docker): pin node:22-alpine by digest so npm cannot drift under npm ci 2026-09-05 23:55:33 +08:00
MUH. IQRAM BAHRING c378f2dc90 Merge remote-tracking branch 'upstream/master' 2026-09-05 23:20:53 +08:00
vianhanif 15687d1913 fix(chat,docker): return 503 for rate-limited providers and bundle node-machine-id
- chat: always return 503 Service Unavailable when all credentials are rate-limited
- Dockerfile: explicitly copy node-machine-id into standalone runtime image
2026-09-03 09:25:17 +07:00
MUH. IQRAM BAHRING 76b139b32c fix(docker): restore lockfile (npm 10) + npm ci for reliable builds 2026-08-15 08:07:59 +08:00
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 f555236545 merge: update from decolua/9router upstream (SAML, providers, opencode session headers) 2026-08-15 03:54:03 +08:00
Nguyen Thanh Dat 27f3710c8b fix(docker): ship sql.js so the pure-JS DB fallback can start
Next file tracing follows JS imports, and sql.js loads dist/sql-wasm.wasm by
path at runtime, so the standalone output carries the package's JS without its
wasm binary. When both native drivers fail the last-resort adapter then aborts
with ENOENT on the missing binary and the container never gets a database.

The CLI bundle already guards this explicitly (build-cli.js step 3b,
ensureModuleInBundle("sql.js")); the image just never got the same treatment.
Copy the package the same way node-forge and next already are.

Fixes #3248
2026-08-14 16:40:53 +07: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 90ff8191ff fix: lock Docker dependencies and remove test credential 2026-08-06 04:10:58 +08:00
decoluaandCursor 7648c3412b fix(auth): real client IP rate-limiting + remote default-password guard
- Add custom-server.js: inject unspoofable socket IP, strip client XFF
  (wired into Docker CMD + CLI spawn + build-cli copy)
- loginLimiter: key on trusted x-9r-real-ip, TRUST_PROXY opt-in, global fallback
- Force password change on first remote login while default is in use
- Add /api/auth/reset-password (local-only) so CLI reset writes live SQLite
- CLI settings: reset via API instead of stale db.json
- Fix OAuth modals opening duplicate browser tabs on add-connection
- Add cli:pack / cli:publish scripts

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 12:10:02 +07:00
decolua 58df17aa91 # v0.4.38 (2026-05-13)
## Features
- Add DeepSeek TUI as CLI tool in dashboard (#1088)

## Fixes
- Fix broken Docker image in v0.4.36/v0.4.37 (#1096, #1097)

## Improvements
- Clean Docker tags + clearer pulls badge
2026-05-13 22:54:40 +07:00
decolua 7ad538bcf2 # v0.4.29 (2026-05-10)
## Features
- Add Cline & Kilo Code tool cards
- Tailscale TUN mode for stable Funnel TLS
- Sort APIKEY providers by usage, collapse to top 20

## Improvements
- Local Material Symbols font (no Google Fonts)
- Docker base: Bun → Node 22-alpine
- MITM reads aliases from JSON cache (no native sqlite)
- Stream stall timeout (2 min) in open-sse

## Fixes
- Fal.ai key test: use stable models endpoint
2026-05-10 21:56:40 +07:00
Anurag Saxena e1c092c297 fix: redirect ~/.9router to DATA_DIR in Docker to persist usage data across updates (closes #585) (#658) 2026-05-03 15:18:06 +07:00
nghionpoint 7887f4fd32 Parameterize Bun image and improve package management in Dockerfile
- Introduced `BUN_IMAGE` build argument for flexibility in specifying the Bun image version.
- Added `apk --no-cache upgrade` for ensuring up-to-date packages.
- Streamlined apk package additions for improved dependency management.
2026-04-10 10:47:37 +07:00
nghionpoint 5d3780cfd2 Update Docker build process and documentation
- Replaced `bun run build:bun` with `npm run build` in Dockerfile for consistency.
- Enhanced `DOCKER.md` to include `DATA_DIR` environment variable usage for database persistence.
- Clarified paths for container and host data storage.
2026-04-10 10:14:34 +07:00
nghionpoint d99f63cf36 Add Docker support and improve Dockerfile configuration
- Added `DOCKER.md` documentation to guide users on using Docker with the project.
- Migrated Dockerfile to use `oven/bun:1-alpine` for performance improvements.
- Refined build process and permissions in the container for better compatibility.
- Excluded `.idea/` files in `.gitignore`.
- Enhanced `.npmignore` to clean redundant blank lines.
2026-04-09 14:21:30 +07:00
Loc Nguyen Huuandlokinh 8c0b4a3e84 [fix] fix mitm for docker and enhance dockerfile (#381)
* [fix] macos

* chore: clean up .gitignore by removing unnecessary start.sh entry

---------

Co-authored-by: lokinh <locnh@uniultra.xyz>
2026-03-23 09:23:14 +07:00
Doan Minh Tu 8c51edabcf fix(docker): use entrypoint to fix /app/data permissions on mounted volumes 2026-03-11 08:33:04 +07:00
Doan Minh Tu 9c757ff7d2 fix(docker): move data dir chown after COPY to fix EACCES permission error 2026-03-11 08:24:48 +07:00
Doan Minh Tu 91c1bc848e ci: harden Dockerfile and workflow security 2026-03-11 06:49:10 +07:00
Hồ Xuân DũngandCursor a57a8ce206 feat: add Gemini embeddings support + Letta compatibility fixes
Cherry-picked from decolua/9router#148 (author: xuandung38 / Hồ Xuân Dũng <me@hxd.vn>)

- Add Google AI (Gemini) embeddings support for /v1/embeddings endpoint
- Add Gemini embedding models: gemini-embedding-001, text-embedding-005, text-embedding-004
- Inject missing object/created fields for Letta and strict OpenAI clients
- Strip Azure-specific fields (prompt_filter_results, content_filter_results) from responses
- Fix Dockerfile: copy open-sse directory into Docker runner stage

Skipped: whitelist message field stripping (commit 3/7/8) — too aggressive for all providers
Skipped: default stream=false change (commit 9) — behavior change needs further review
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-20 15:01:10 +07:00
Diego Souza 5e4a15bb0c feat(docker): add Docker setup, environment examples, and architecture docs 2026-02-06 22:45:03 +00:00