Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
20ce642
fix: 移除 usage-doc 页面重复的语言切换器
ding113 Nov 21, 2025
cce1f1d
refactor: 供应商限额管理页面重构为列表布局
ding113 Nov 21, 2025
af9400a
chore: format code (dev-cce1f1d)
github-actions[bot] Nov 21, 2025
925a2ab
fix: 解决 PR #170 审阅意见
ding113 Nov 21, 2025
d8d07f4
chore: format code (dev-925a2ab)
github-actions[bot] Nov 21, 2025
99bd3c4
feat: 添加深色模式支持
ding113 Nov 21, 2025
e65b735
chore: format code (feat-dark-mode-99bd3c4)
github-actions[bot] Nov 21, 2025
eaa5926
fix: improve quota UI and complete i18n translations
ding113 Nov 21, 2025
fe6f882
fix: 解决深色模式 PR 中的所有评审问题
ding113 Nov 21, 2025
9f89057
Merge pull request #171 from ding113/feat/dark-mode
ding113 Nov 21, 2025
768002c
docs: update changelog for PR #171
github-actions[bot] Nov 21, 2025
2f84c72
chore: format code (dev-768002c)
github-actions[bot] Nov 21, 2025
aa8db2f
fix: auto-fix CI failures in PR Build Check
github-actions[bot] Nov 21, 2025
284080d
chore: format code (claude-fix-pr-170-19580916774-aa8db2f)
github-actions[bot] Nov 21, 2025
93ff7f0
Merge pull request #173 from ding113/claude-fix-pr-170-19580916774
ding113 Nov 21, 2025
8de339c
docs: update changelog for PR #173
github-actions[bot] Nov 21, 2025
c9fbf2c
Update provider-quota-list-item.tsx
ding113 Nov 21, 2025
00dc3f7
fix: 修复供应商限额页面圆环对齐问题
ding113 Nov 21, 2025
d93929f
Merge branch 'main' into dev
ding113 Nov 21, 2025
8e41e15
chore: 将 CHANGELOG.md 添加到 Prettier 忽略列表
ding113 Nov 21, 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
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ data
# Seed data (large auto-generated JSON files)
public/seed/litellm-prices.json

# Documentation (preserve manual formatting)
CHANGELOG.md

# Package manager
bun.lock
package-lock.json
Expand Down
12 changes: 9 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# Changelog

All notable changes to this project will be documented in this file.

## [Unreleased]

### Changed
- 供应商页面增加排行榜入口 (#168) @ding113
- 合并若干优化 (#162) @ding113
### Added

- Add dark mode support with theme switcher in Dashboard and settings pages (#171) @ding113

### Fixed

- Fix CI failures: Prettier formatting and React Hooks ESLint error in theme-switcher (#173) @ding113
7 changes: 6 additions & 1 deletion messages/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,10 @@
"info": "Info",
"noData": "No data",
"emptyState": "No data to display",
"core": "Core"
"core": "Core",
"appearance": "Appearance",
"theme": "Theme",
"light": "Light",
"dark": "Dark",
"system": "System"
}
16 changes: 16 additions & 0 deletions messages/en/quota.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
"title": "Provider Quota Statistics",
"totalCount": "{count} providers total",
"filterCount": "Showing {filtered} / {total} providers",
"searchPlaceholder": "Search provider name...",
"status": {
"enabled": "Enabled",
"disabled": "Disabled"
Expand All @@ -100,6 +101,19 @@
"priority": "Priority",
"weight": "Weight"
},
"sort": {
"name": "By Name",
"priority": "By Priority",
"weight": "By Weight",
"usage": "By Usage"
},
"list": {
"resetIn": "Resets in",
"unlimited": "Unlimited",
"current": "Current",
"limit": "Limit",
"used": "used"
},
"cost5h": {
"label": "5-Hour Cost"
},
Expand All @@ -121,6 +135,8 @@
"noQuotaSet": "No quota set",
"noQuotaData": "Unable to retrieve quota information",
"noMatches": "No matching providers",
"noMatchesDesc": "No providers match your search criteria. Try adjusting your filters.",
"noProvidersDesc": "No providers have been configured yet.",
"unlimitedSection": "Providers without quota ({count})"
},
"keys": {
Expand Down
7 changes: 6 additions & 1 deletion messages/ja/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,10 @@
"info": "情報",
"noData": "データがありません",
"emptyState": "表示するデータがありません",
"core": "コア"
"core": "コア",
"appearance": "外観",
"theme": "テーマ",
"light": "ライト",
"dark": "ダーク",
"system": "システム設定"
}
62 changes: 62 additions & 0 deletions messages/ja/quota.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
"title": "プロバイダークォータ統計",
"totalCount": "合計 {count} 個のプロバイダー",
"filterCount": "{filtered} / {total} 個のプロバイダーを表示",
"searchPlaceholder": "プロバイダー名を検索...",
"status": {
"enabled": "有効",
"disabled": "無効"
Expand All @@ -100,9 +101,26 @@
"priority": "優先度",
"weight": "重み"
},
"sort": {
"name": "名前順",
"priority": "優先度順",
"weight": "重み順",
"usage": "使用量順"
},
"list": {
"resetIn": "リセットまで",
"unlimited": "無制限",
"current": "現在",
"limit": "制限",
"used": "使用済み"
},
"cost5h": {
"label": "5時間コスト"
},
"costDaily": {
"label": "日次コスト",
"resetAt": "リセット時刻"
},
"costWeekly": {
"label": "週次コスト",
"resetAt": "リセット時刻"
Expand All @@ -117,6 +135,8 @@
"noQuotaSet": "クォータ未設定",
"noQuotaData": "クォータ情報を取得できません",
"noMatches": "一致するプロバイダーがありません",
"noMatchesDesc": "検索条件に一致するプロバイダーがありません。フィルターを調整してください。",
"noProvidersDesc": "まだプロバイダーが設定されていません。",
"unlimitedSection": "クォータ未設定のプロバイダー ({count}個)"
},
"keys": {
Expand All @@ -136,6 +156,7 @@
"keyName": "キー名",
"quotaType": "クォータタイプ",
"cost5h": "5時間クォータ",
"costDaily": "日次クォータ",
"costWeekly": "週次クォータ",
"costMonthly": "月次クォータ",
"concurrentSessions": "同時制限",
Expand All @@ -160,6 +181,26 @@
"placeholder": "無制限",
"current": "現在使用: {currency}{current} / {currency}{limit}"
},
"costDaily": {
"label": "日次クォータ (USD)",
"placeholder": "無制限",
"current": "現在使用: {currency}{current} / {currency}{limit}"
},
"dailyResetMode": {
"label": "日次リセットモード",
"options": {
"fixed": "固定時刻リセット",
"rolling": "ローリングウィンドウ(24時間)"
},
"desc": {
"fixed": "毎日固定時刻にクォータをリセット",
"rolling": "最初のリクエストから24時間のローリングウィンドウ"
}
},
"dailyResetTime": {
"label": "日次リセット時刻",
"placeholder": "HH:mm"
},
"costWeekly": {
"label": "週次クォータ (USD)",
"placeholder": "無制限",
Expand Down Expand Up @@ -225,6 +266,27 @@
"placeholder": "空欄の場合は無制限",
"description": "5時間以内の最大消費金額"
},
"limitDailyUsd": {
"label": "日次消費上限 (USD)",
"placeholder": "空欄の場合は無制限",
"description": "1日の最大消費金額"
},
"dailyResetMode": {
"label": "日次リセットモード",
"options": {
"fixed": "固定時刻リセット",
"rolling": "ローリングウィンドウ(24時間)"
},
"desc": {
"fixed": "毎日指定時刻にクォータをリセット",
"rolling": "最初のリクエストから24時間のローリングウィンドウで計算"
}
},
"dailyResetTime": {
"label": "日次リセット時刻",
"placeholder": "HH:mm",
"description": "日次制限のリセット時刻(システムタイムゾーン使用)"
},
"limitWeeklyUsd": {
"label": "週間消費上限 (USD)",
"placeholder": "空欄の場合は無制限",
Expand Down
7 changes: 6 additions & 1 deletion messages/ru/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,10 @@
"info": "Информация",
"noData": "Нет данных",
"emptyState": "Нечего отображать",
"core": "Основной"
"core": "Основной",
"appearance": "Внешний вид",
"theme": "Тема",
"light": "Светлая",
"dark": "Тёмная",
"system": "Системная"
}
62 changes: 62 additions & 0 deletions messages/ru/quota.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
"title": "Статистика квот провайдеров",
"totalCount": "Всего провайдеров: {count}",
"filterCount": "Показано {filtered} из {total} провайдеров",
"searchPlaceholder": "Поиск по имени провайдера...",
"status": {
"enabled": "Включен",
"disabled": "Отключен"
Expand All @@ -98,9 +99,26 @@
"priority": "Приоритет",
"weight": "Вес"
},
"sort": {
"name": "По имени",
"priority": "По приоритету",
"weight": "По весу",
"usage": "По использованию"
},
"list": {
"resetIn": "Сброс через",
"unlimited": "Неограниченно",
"current": "Текущее",
"limit": "Лимит",
"used": "использовано"
},
"cost5h": {
"label": "Расходы за 5 часов"
},
"costDaily": {
"label": "Ежедневные расходы",
"resetAt": "Сброс в"
},
"costWeekly": {
"label": "Еженедельные расходы",
"resetAt": "Сброс в"
Expand All @@ -115,6 +133,8 @@
"noQuotaSet": "Квота не установлена",
"noQuotaData": "Не удалось получить информацию о квоте",
"noMatches": "Провайдеры не найдены",
"noMatchesDesc": "Нет провайдеров, соответствующих вашим критериям поиска. Попробуйте изменить фильтры.",
"noProvidersDesc": "Провайдеры еще не настроены.",
"unlimitedSection": "Провайдеры без квот ({count})"
},
"keys": {
Expand All @@ -134,6 +154,7 @@
"keyName": "Название ключа",
"quotaType": "Тип квоты",
"cost5h": "5-часовая квота",
"costDaily": "Дневная квота",
"costWeekly": "Еженедельная квота",
"costMonthly": "Ежемесячная квота",
"concurrentSessions": "Лимит параллельных",
Expand All @@ -158,6 +179,26 @@
"placeholder": "Неограниченно",
"current": "Использовано: {currency}{current} из {currency}{limit}"
},
"costDaily": {
"label": "Дневная квота (USD)",
"placeholder": "Неограниченно",
"current": "Использовано: {currency}{current} из {currency}{limit}"
},
"dailyResetMode": {
"label": "Режим дневного сброса",
"options": {
"fixed": "Сброс в фиксированное время",
"rolling": "Скользящее окно (24ч)"
},
"desc": {
"fixed": "Сброс квоты в фиксированное время каждый день",
"rolling": "24-часовое скользящее окно от первого запроса"
}
},
"dailyResetTime": {
"label": "Время дневного сброса",
"placeholder": "ЧЧ:мм"
},
"costWeekly": {
"label": "Еженедельная квота (USD)",
"placeholder": "Неограниченно",
Expand Down Expand Up @@ -223,6 +264,27 @@
"placeholder": "Оставьте пустым для отсутствия ограничений",
"description": "Максимальная сумма расходов за 5 часов"
},
"limitDailyUsd": {
"label": "Дневной лимит расходов (USD)",
"placeholder": "Оставьте пустым для отсутствия ограничений",
"description": "Максимальная сумма расходов в день"
},
"dailyResetMode": {
"label": "Режим дневного сброса",
"options": {
"fixed": "Сброс в фиксированное время",
"rolling": "Скользящее окно (24ч)"
},
"desc": {
"fixed": "Сброс квоты в указанное время каждый день",
"rolling": "24-часовое скользящее окно от первого запроса"
}
},
"dailyResetTime": {
"label": "Время дневного сброса",
"placeholder": "ЧЧ:мм",
"description": "Время сброса дневного лимита (используется системный часовой пояс)"
},
"limitWeeklyUsd": {
"label": "Еженедельный лимит расходов (USD)",
"placeholder": "Оставьте пустым для отсутствия ограничений",
Expand Down
7 changes: 6 additions & 1 deletion messages/zh-CN/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,10 @@
"info": "信息",
"noData": "暂无数据",
"emptyState": "没有数据可显示",
"core": "核心"
"core": "核心",
"appearance": "外观",
"theme": "主题",
"light": "浅色",
"dark": "深色",
"system": "跟随系统"
}
16 changes: 16 additions & 0 deletions messages/zh-CN/quota.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
"title": "供应商限额统计",
"totalCount": "共 {count} 个供应商",
"filterCount": "显示 {filtered} / {total} 个供应商",
"searchPlaceholder": "搜索供应商名称...",
"status": {
"enabled": "启用",
"disabled": "禁用"
Expand All @@ -100,6 +101,19 @@
"priority": "优先级",
"weight": "权重"
},
"sort": {
"name": "按名称",
"priority": "按优先级",
"weight": "按权重",
"usage": "按使用量"
},
"list": {
"resetIn": "重置于",
"unlimited": "无限制",
"current": "当前",
"limit": "限制",
"used": "已用"
},
"cost5h": {
"label": "5小时消费"
},
Expand All @@ -121,6 +135,8 @@
"noQuotaSet": "未设置限额",
"noQuotaData": "无法获取限额信息",
"noMatches": "没有匹配的供应商",
"noMatchesDesc": "没有供应商匹配您的搜索条件,请尝试调整筛选条件。",
"noProvidersDesc": "尚未配置任何供应商。",
"unlimitedSection": "未设置限额的供应商 ({count}个)"
},
"keys": {
Expand Down
7 changes: 6 additions & 1 deletion messages/zh-TW/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,10 @@
"info": "資訊",
"noData": "暫無資料",
"emptyState": "沒有資料可顯示",
"core": "核心"
"core": "核心",
"appearance": "外觀",
"theme": "主題",
"light": "淺色",
"dark": "深色",
"system": "跟隨系統"
}
Loading
Loading