Skip to content

fix: prevent cached settings responses - #951

Merged
decolua merged 1 commit into
decolua:masterfrom
aqilaziz:fix-caveman-settings-no-store
May 9, 2026
Merged

decolua merged 1 commit into
decolua:masterfrom
aqilaziz:fix-caveman-settings-no-store

Conversation

@aqilaziz

@aqilaziz aqilaziz commented May 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • force /api/settings to run dynamically instead of being cached/prerendered
  • return settings GET/PATCH responses with Cache-Control: no-store
  • keeps persisted settings such as Caveman mode visible after refresh or restart

Fixes #942

Validation

  • npx eslint src/app/api/settings/route.js
  • npx next build --webpack with PowerShell production env workaround

Note

The Endpoint page itself already reads Caveman from /api/settings; this makes that API response always fresh so the UI does not fall back to stale/default values.

@decolua
decolua merged commit 62a4285 into decolua:master May 9, 2026
caothu159 added a commit to diepxuan/9router that referenced this pull request May 9, 2026
* Add Cloudflare Workers AI image generation (decolua#973)

* Refactor connection proxy configuration logic (decolua#970)

* docs: add Chinese translation of README (decolua#957)

* docs: fix localized README links (decolua#956)

* fix: normalize Ollama Local provider input (decolua#955)

* Add captain-definition for easy deployment on Caprover (decolua#954)

With this single file, it becomes very easy to deploy this service on a caprover instance
All that needs to be done to do so on the caprover dashboard is:
- Create a new app with persistance
- Set these envs:
PORT=20128
HOSTNAME=0.0.0.0
NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
DATA_DIR=/app/data
- Add a persistent directory with /app/data
- Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
- Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
- Save and force build

* fix: prevent cached settings responses (decolua#951)

* Update DeepSeek model pricing and add V4 Pro (decolua#938)

Update all DeepSeek model prices to match current V4 Flash pricing
($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
provider model list.

Co-authored-by: smarthomeblack <truongbber@gmail.com>

* feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

* feat(db): migrate from lowdb to SQLite with repos pattern

- Add modular DB layer (adapters, migrations, repos, helpers)
- Replace localDb/usageDb/requestDetailsDb monoliths with repos
- Add Tailscale tunnel integration & status check API
- Add /api/cli-tools/all-statuses aggregated endpoint
- Add settingsStore (Zustand) and mitm/dbReader
- Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

* Update Changelog

---------

Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
Co-authored-by: tarun <chitkarauniversity436@gmail.com>
Co-authored-by: isagoakira <wuwing87@gmail.com>
Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
Co-authored-by: smarthomeblack <truongbber@gmail.com>
Co-authored-by: decolua <decoluadt@example.com>
caothu159 added a commit to diepxuan/9router that referenced this pull request May 14, 2026
* Add Cloudflare Workers AI image generation (decolua#973)

* Refactor connection proxy configuration logic (decolua#970)

* docs: add Chinese translation of README (decolua#957)

* docs: fix localized README links (decolua#956)

* fix: normalize Ollama Local provider input (decolua#955)

* Add captain-definition for easy deployment on Caprover (decolua#954)

With this single file, it becomes very easy to deploy this service on a caprover instance
All that needs to be done to do so on the caprover dashboard is:
- Create a new app with persistance
- Set these envs:
PORT=20128
HOSTNAME=0.0.0.0
NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
DATA_DIR=/app/data
- Add a persistent directory with /app/data
- Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
- Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
- Save and force build

* fix: prevent cached settings responses (decolua#951)

* Update DeepSeek model pricing and add V4 Pro (decolua#938)

Update all DeepSeek model prices to match current V4 Flash pricing
($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
provider model list.

Co-authored-by: smarthomeblack <truongbber@gmail.com>

* feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

* feat(db): migrate from lowdb to SQLite with repos pattern

- Add modular DB layer (adapters, migrations, repos, helpers)
- Replace localDb/usageDb/requestDetailsDb monoliths with repos
- Add Tailscale tunnel integration & status check API
- Add /api/cli-tools/all-statuses aggregated endpoint
- Add settingsStore (Zustand) and mitm/dbReader
- Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

* Update Changelog

---------

Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
Co-authored-by: tarun <chitkarauniversity436@gmail.com>
Co-authored-by: isagoakira <wuwing87@gmail.com>
Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
Co-authored-by: smarthomeblack <truongbber@gmail.com>
Co-authored-by: decolua <decoluadt@example.com>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request May 14, 2026
caothu159 added a commit to diepxuan/9router that referenced this pull request May 26, 2026
* Add Cloudflare Workers AI image generation (decolua#973)

* Refactor connection proxy configuration logic (decolua#970)

* docs: add Chinese translation of README (decolua#957)

* docs: fix localized README links (decolua#956)

* fix: normalize Ollama Local provider input (decolua#955)

* Add captain-definition for easy deployment on Caprover (decolua#954)

With this single file, it becomes very easy to deploy this service on a caprover instance
All that needs to be done to do so on the caprover dashboard is:
- Create a new app with persistance
- Set these envs:
PORT=20128
HOSTNAME=0.0.0.0
NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
DATA_DIR=/app/data
- Add a persistent directory with /app/data
- Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
- Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
- Save and force build

* fix: prevent cached settings responses (decolua#951)

* Update DeepSeek model pricing and add V4 Pro (decolua#938)

Update all DeepSeek model prices to match current V4 Flash pricing
($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
provider model list.

Co-authored-by: smarthomeblack <truongbber@gmail.com>

* feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

* feat(db): migrate from lowdb to SQLite with repos pattern

- Add modular DB layer (adapters, migrations, repos, helpers)
- Replace localDb/usageDb/requestDetailsDb monoliths with repos
- Add Tailscale tunnel integration & status check API
- Add /api/cli-tools/all-statuses aggregated endpoint
- Add settingsStore (Zustand) and mitm/dbReader
- Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

* Update Changelog

---------

Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
Co-authored-by: tarun <chitkarauniversity436@gmail.com>
Co-authored-by: isagoakira <wuwing87@gmail.com>
Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
Co-authored-by: smarthomeblack <truongbber@gmail.com>
Co-authored-by: decolua <decoluadt@example.com>
luckystart79-lang pushed a commit to luckystart79-lang/minirouter that referenced this pull request May 27, 2026
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 2, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 2, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 2, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 2, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 2, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 2, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 2, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 pushed a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>
caothu159 added a commit to diepxuan/9router that referenced this pull request Jun 3, 2026
commit faae36c
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:33 2026 +0700

    docs: revert and refactor BOOTSTRAP.md (#23)

    - Restore BOOTSTRAP.md (was deleted from working tree)
    - Refactor to remove duplication with AGENTS.md
    - Reference AGENTS.md for boot sequence details
    - Keep context validation checklist and execution guard
    - Shrink from ~96 lines to ~60

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 076cd9b
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Tue Jun 2 13:07:17 2026 +0700

    chore: add .openclaw/ to .gitignore (#22)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 46d2aef
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:33:46 2026 +0700

    chore: update @diepxuan/9router built from d285202 [skip ci]

commit 4d1cb2d
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:56 2026 +0700

    docs: align local-only en vi documentation (#21)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit f4ea91a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 28 23:44:15 2026 +0000

    chore: update @diepxuan/9router built from 3b9ff67 [skip ci]

commit a18fb20
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 28 18:23:47 2026 +0700

    feat: implement DiepXuan domain separation + safe bridge architecture

    - Move custom providers (alicode, xiaomi, volcengine, vercel) to src/diepxuan/shared/constants/providers.js
    - Move custom usage fetchers (GLM, MiniMax, AliCode) to open-sse/diepxuan/services/usage.js
    - Move custom provider endpoints to src/diepxuan/shared/constants/config.js
    - Move manualQuotaRepo to src/diepxuan/lib/db/repos/
    - Move ProviderLimits UI components to src/diepxuan/app/dashboard/usage/
    - Create safe bridge wrappers in base files that merge custom logic with fallback
    - All custom logic wrapped in try-catch for stability

    Build verified: OK

commit 3a1c13a
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 07:00:01 2026 +0000

    chore: update @diepxuan/9router built from c6648af [skip ci]

commit faa8eac
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:32:21 2026 +0700

    chore: remove donation UI (#18)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 257b287
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Wed May 27 05:15:55 2026 +0000

    chore: update @diepxuan/9router built from 66661ce [skip ci]

commit 24cbbec
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Wed May 27 12:13:51 2026 +0700

    fix: fallback combo immediately on provider errors (#16)

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e2c07ba
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:31:30 2026 +0700

    docs: add custom features merge checklist (#17)

    * docs: add custom features merge checklist

    * chore: update @diepxuan/9router built from d1723c0 [skip ci]

    * docs: add custom features merge checklist

    - Document fork-only custom features that must be checked after upstream merges/rebases.
    - Add a merge verification checklist for AliCode, manual quota, combo fallback, CLI packaging, MITM, and build/deploy customizations.
    - Update gitignore so this docs file is tracked despite docs/* ignore rules.
    - Reset cli/ build artifacts to match origin/main.

    * ci: skip Build and Deploy for pull requests

    Remove pull_request trigger from build-and-deploy workflow to avoid
    cli/ build conflicts during PR reviews. The workflow now only runs on
    push to main and manual dispatch.

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d6c47fb
Author: AI Assistant <ai@diepxuan.com>
Date:   Tue Jun 2 13:30:29 2026 +0700

    chore: update @diepxuan/9router built from 7bf6b64 [skip ci]

commit 57a62fb
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Tue May 26 17:05:30 2026 +0000

    chore: update @diepxuan/9router built from a75033b [skip ci]

commit d011246
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:09 2026 +0000

    chore: update @diepxuan/9router built from ea31150 [skip ci]

commit df30bb5
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 12:13:58 2026 +0000

    chore: update @diepxuan/9router built from 041818b [skip ci]

commit 9d2b436
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 19:10:39 2026 +0700

    fix: fallback search fetch to first combo (#14)

    * fix: fallback search fetch to first combo

    * fix: guard typeof providerInput before combo lookup

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit e06fd1e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 09:22:38 2026 +0000

    chore: update @diepxuan/9router built from 7eb8d91 [skip ci]

commit f0cd309
Author: AI Assistant <ai@diepxuan.com>
Date:   Thu May 14 16:15:32 2026 +0700

    chore: ignore local memory files

commit f9e56aa
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Thu May 14 13:34:08 2026 +0700

    fix: use dynamic baseUrl in combo curl snippet (#13)

    - Replace hardcoded http://127.0.0.1:20128 with window.location.origin
    - Add setBaseUrl to useState destructuring (fixes ReferenceError)
    - ESLint: add space in empty catch blocks

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 5f6b19e
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Thu May 14 04:22:46 2026 +0000

    chore: update @diepxuan/9router built from b099ced [skip ci]

commit 9f2e049
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 09:12:10 2026 +0000

    chore: update @diepxuan/9router built from 419d44b [skip ci]

commit 7b440e3
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 16:05:43 2026 +0700

    fix: hide reset countdown for AliCode 5h & weekly usage windows (#11)

    * fix: hide reset countdown for alicode 5h & weekly usage windows

    - 5h and weekly are real-time counting → no fixed reset time to display
    - Only monthly window shows reset countdown and reset time
    - Add hideReset flag propagated through quota parsing chain
    - Fix getManualQuota call to pass connection object (from prev session)

    * chore: update @diepxuan/9router built from 44b8112 [skip ci]

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d909897
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Mon May 11 04:17:23 2026 +0000

    chore: update @diepxuan/9router built from 078f628 [skip ci]

commit 2182976
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:15:24 2026 +0700

    docs: add upstream PR policy and manual quota counter documentation (#10)

    - AGENTS.md: forbid creating upstream PRs to decolua/9router
    - IDENTITY.md: same rule in agent identity
    - CHANGELOG.md: v0.4.29 manual quota counter
    - docs/UPDATE-2026-05-11.md: full technical documentation

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit d74fd10
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Mon May 11 11:07:43 2026 +0700

    feat: Manual quota counter for providers without quota API (AliCode) (#9)

    * feat: add manual quota counter for providers without quota API (alicode)

    - New manualQuotaRepo with local request counting from usageDaily
    - Auto-detect AliCode plan (Lite/Pro) based on monthly request count
    - ProviderLimits UI shows Local badge + plan badge
    - Fallback in usage API route when provider has no quota API

    AliCode Lite: 1,200 req/5h, 9,000 req/week, 18,000 req/month
    AliCode Pro: 6,000 req/5h, 45,000 req/week, 90,000 req/month

    * chore: update @diepxuan/9router built from f6009dc [skip ci]

    * chore: update dev server configuration, add gitignore entry, and initialize memory storage system

    ---------

    Co-authored-by: AI Assistant <ai@diepxuan.com>

commit 44e1879
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 15:36:36 2026 +0000

    chore: update @diepxuan/9router built from 8102d2b [skip ci]

commit 18d5e7e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 22:34:34 2026 +0700

    chore: include next static files in CLI deployment package

commit 1828a56
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 12:40:40 2026 +0000

    chore: update @diepxuan/9router built from 7225772 [skip ci]

commit d15dc6f
Author: Tran Ngoc Duc <ductn@diepxuan.com>
Date:   Sun May 10 10:41:57 2026 +0000

    chore: update @diepxuan/9router built from 48366ec [skip ci]

commit 0a6107a
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:30 2026 +0700

    feat: add Alibaba Cloud Coding Plan (alicode) support with usage tracking and update build pipeline deployment process

commit e31c60e
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:38:17 2026 +0700

    feat: add Alibaba Cloud Coding Plan (DashScope) usage tracking and update CI/CD deployment workflow

commit d2e156b
Author: AI Assistant <ai@diepxuan.com>
Date:   Sun May 10 17:37:57 2026 +0700

    docs: initialize comprehensive project documentation and update build/deploy pipeline and provider logic.

commit fbc6ae9
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 19:32:20 2026 +0700

    v0.4.26 from fork (#4)

    * Add Cloudflare Workers AI image generation (decolua#973)

    * Refactor connection proxy configuration logic (decolua#970)

    * docs: add Chinese translation of README (decolua#957)

    * docs: fix localized README links (decolua#956)

    * fix: normalize Ollama Local provider input (decolua#955)

    * Add captain-definition for easy deployment on Caprover (decolua#954)

    With this single file, it becomes very easy to deploy this service on a caprover instance
    All that needs to be done to do so on the caprover dashboard is:
    - Create a new app with persistance
    - Set these envs:
    PORT=20128
    HOSTNAME=0.0.0.0
    NEXT_PUBLIC_BASE_URL=https://your-domain-here.com
    DATA_DIR=/app/data
    - Add a persistent directory with /app/data
    - Set CONTAINER HTTP PORT to 20128, enable HTTPS and websockets
    - Go in deployment -> Method 3 -> Set the git url to this repo on branch main and add your github email and a PAT
    - Save and force build

    * fix: prevent cached settings responses (decolua#951)

    * Update DeepSeek model pricing and add V4 Pro (decolua#938)

    Update all DeepSeek model prices to match current V4 Flash pricing
    ($0.14/$0.28 per 1M input/output tokens), and add V4 Pro model with
    its own pricing ($0.435/$0.87). Also add deepseek-v4-pro to the
    provider model list.

    Co-authored-by: smarthomeblack <truongbber@gmail.com>

    * feat: Added McpMarketplaceModal to the CoworkToolCard for improved plugin management.

    * feat(db): migrate from lowdb to SQLite with repos pattern

    - Add modular DB layer (adapters, migrations, repos, helpers)
    - Replace localDb/usageDb/requestDetailsDb monoliths with repos
    - Add Tailscale tunnel integration & status check API
    - Add /api/cli-tools/all-statuses aggregated endpoint
    - Add settingsStore (Zustand) and mitm/dbReader
    - Add DB unit tests (benchmark, concurrent, migration, vs-lowdb)

    * Update Changelog

    ---------

    Co-authored-by: Aleksei <54264559+eng2007@users.noreply.github.com>
    Co-authored-by: tarun <chitkarauniversity436@gmail.com>
    Co-authored-by: isagoakira <wuwing87@gmail.com>
    Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
    Co-authored-by: R3D347HR4Y <redeathray@gmail.com>
    Co-authored-by: Tran Long <dothoidenquendi@gmail.com>
    Co-authored-by: smarthomeblack <truongbber@gmail.com>
    Co-authored-by: decolua <decoluadt@example.com>

commit 69381ed
Author: Trần Ngọc Đức <caothu91@gmail.com>
Date:   Sat May 9 17:31:57 2026 +0700

    Enable npm global install from source (#3)

    * feat: enable npm global install from source

    * fix: remove broken .gitmodules and exclude src/mitm/dev from npm package (#2)

    - Remove .gitmodules pointing to non-existent decolua/9router-dev repo
    - Remove src/mitm/dev submodule directory
    - Update .npmignore: include src/ but exclude src/mitm/dev/

    This enables npm install -g from git source to work correctly.

    Co-authored-by: root <root@9router.diepxuan.corp>

    * Create build-and-deploy.yml

    * Remove npm ci from build-and-deploy workflow

    Removed the npm ci command from the build workflow.

    * Update build-and-deploy.yml

    * chore: update package name to @diepxuan/9router for GitHub Packages"

    * Update GitHub Actions workflow for build and deploy

    * Update package name and modify package.json structure

    Updated package name and changed private status to true. Removed unnecessary fields from the package configuration.

    * ci: update build-and-deploy workflow - build app/ separately and publish

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update .npmignore

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    * Create diepxuan.config.mjs

    * Update build-and-deploy.yml

    * Update build-and-deploy.yml

    ---------

    Co-authored-by: root <root@9router.diepxuan.corp>

Co-authored-by: AI Assistant <ai@diepxuan.com>
diegosouzapw pushed a commit to diegosouzapw/OmniRoute that referenced this pull request Jun 22, 2026
…9router#951)

Force /api/settings to run dynamically per-request (export const dynamic = "force-dynamic" + revalidate = 0) and return GET/PATCH success responses with `Cache-Control: no-store`. Keeps persisted dashboard preferences (debugMode, hidden sidebar items, Caveman mode, etc.) visible immediately after refresh or restart instead of falling back to a stale Next.js prerender / fetch cache.

TDD: 2 new tests in tests/unit/settings-api.test.ts assert Cache-Control header on GET and PATCH.

Inspired-by: decolua/9router#951

Co-authored-by: Aqil Aziz <gonzes7@gmail.com>
Shinzzyak pushed a commit to Shinzzyak/VansRouter that referenced this pull request Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Caveman settings not persisting in UI after restart (WSL)

2 participants