Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
16ff4f4
feat(user-management): enhance user quota management with daily reset…
ding113 Dec 17, 2025
1ebaeb4
feat(user-management): add create user flow with onboarding tour
ding113 Dec 17, 2025
4b1255b
chore: format code (feat-user-panel-d3fb4f6)
github-actions[bot] Dec 17, 2025
a7dac94
feat(user-management): enhance user edit dialog and key management UI
ding113 Dec 17, 2025
58e25ef
chore: format code (feat-user-panel-d5cf49f)
github-actions[bot] Dec 17, 2025
cc7e5b1
fix(i18n): update provider group placeholder translations for clarity
ding113 Dec 17, 2025
e1505a1
feat(user-management): enhance user and key management UI with new fe…
ding113 Dec 17, 2025
4197760
feat(i18n): enhance translations and user interface for key management
ding113 Dec 17, 2025
618631c
fix: handle undefined value in Recharts Tooltip formatter
github-actions[bot] Dec 17, 2025
c9f6aff
chore: fix lint errors in test files after rebase
ding113 Dec 17, 2025
560c313
feat(user-management): enhance user edit and access restrictions feat…
ding113 Dec 18, 2025
79d2968
fix(sql): prevent duplicate column additions in user table
ding113 Dec 18, 2025
cf6a644
feat(i18n): enhance dashboard translations and key management UI
ding113 Dec 18, 2025
1d6bc73
feat(user-management): add quick renewal dialog and relocate enable t…
ding113 Dec 18, 2025
1305e2d
chore: format code (feat-user-panel-c9f8832)
github-actions[bot] Dec 18, 2025
f1181d2
feat(user-management): update user management table and edit section
ding113 Dec 18, 2025
7c7f690
fix: remove duplicate sumUserCostInTimeRange function
github-actions[bot] Dec 18, 2025
0611df1
fix: update translations and improve date handling in user dialogs
ding113 Dec 18, 2025
4647f96
feat: add quota usage feature and update translations
ding113 Dec 19, 2025
84d0439
chore: format code (feat-user-panel-4647f96)
github-actions[bot] Dec 19, 2025
d174c8f
Merge branch 'dev' into feat/user-panel
ding113 Dec 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
@.env.example
@CONTRIBUTING.md
@README.md
@docs/product-brief-claude-code-hub-2025-11-29.md
@CONTRIBUTING.md
2 changes: 1 addition & 1 deletion docs/architecture-claude-code-hub-2025-11-29.md
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ const COUNT_TOKENS_PIPELINE = ["auth", "version", "probe", "provider"];
```
1. Filter enabled providers
2. Filter by circuit breaker state (exclude OPEN)
3. Filter by user's provider group (if set)
3. Filter by effective provider group (key.providerGroup overrides user.providerGroup; key.providerGroup is admin-only; user.providerGroup is derived from Key groups on Key changes)
4. Check session cache for sticky provider
5. If no sticky: weighted random selection by weight
6. Return selected provider or null (all unavailable)
Expand Down
1 change: 0 additions & 1 deletion drizzle/0036_common_forge.sql

This file was deleted.

3 changes: 3 additions & 0 deletions drizzle/0036_stale_iron_fist.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "daily_reset_mode" "daily_reset_mode" DEFAULT 'fixed' NOT NULL;--> statement-breakpoint
ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "daily_reset_time" varchar(5) DEFAULT '00:00' NOT NULL;--> statement-breakpoint
ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "allowed_models" jsonb DEFAULT '[]'::jsonb;
17 changes: 16 additions & 1 deletion drizzle/meta/0036_snapshot.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"id": "68c87bdf-499a-45dd-8765-ad9b7a0bf3f9",
"id": "d991037a-f11d-420f-b508-439064ed9b06",
"prevId": "9be2ede5-422c-44a7-a144-3ef1ca483887",
"version": "7",
"dialect": "postgresql",
Expand Down Expand Up @@ -1755,6 +1755,21 @@
"primaryKey": false,
"notNull": false
},
"daily_reset_mode": {
"name": "daily_reset_mode",
"type": "daily_reset_mode",
"typeSchema": "public",
"primaryKey": false,
"notNull": true,
"default": "'fixed'"
},
"daily_reset_time": {
"name": "daily_reset_time",
"type": "varchar(5)",
"primaryKey": false,
"notNull": true,
"default": "'00:00'"
},
"is_enabled": {
"name": "is_enabled",
"type": "boolean",
Expand Down
4 changes: 2 additions & 2 deletions drizzle/meta/_journal.json
Original file line number Diff line number Diff line change
Expand Up @@ -257,8 +257,8 @@
{
"idx": 36,
"version": "7",
"when": 1765976381662,
"tag": "0036_common_forge",
"when": 1765993084329,
"tag": "0036_stale_iron_fist",
"breakpoints": true
}
]
Expand Down
2 changes: 2 additions & 0 deletions messages/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
"reset": "Reset",
"view": "View",
"copy": "Copy",
"copySuccess": "Copied",
"copyFailed": "Copy failed",
"download": "Download",
"upload": "Upload",
"add": "Add",
Expand Down
Loading
Loading