{{ t('models.aiProviders.title', 'AI Providers') }}
-{{ t('models.aiProviders.subtitle', 'Manage your AI models and API keys.') }}
+{{ t('models.aiProviders.title', 'AI Providers') }}
+{{ t('models.aiProviders.subtitle', 'Manage your AI models and API keys.') }}
+
{{ editingItem?.account.id.includes('-') ? t('models.aiProviders.addProvider', '添加 AI 提供商') : t('models.aiProviders.editProvider', '编辑提供商') }}
-
+
配置新的 AI 模型提供商
+
{{ t('models.aiProviders.addProvider', 'Add AI Provider') }}
-
+
配置新的 AI 模型提供商
+
{{ t('models.recentTokenHistory.contentDialogTitle', 'Request Content') }}
-
+
{{ entry?.model || t('models.recentTokenHistory.unknownModel', 'Unknown Model') }} • {{ formatUsageTimestamp(entry?.timestamp) }}
++@@ -75,6 +75,9 @@ const formatUsageTimestamp = (timestamp?: string) => { background-color: #F4F3EB !important; border-radius: 20px !important; } +.dark .custom-request-dialog { + background-color: #1f1f22 !important; +} .custom-request-dialog .el-dialog__header { display: none !important; } diff --git a/src/pages/agents/index.vue b/src/pages/agents/index.vue index fbbdef6..27232c4 100644 --- a/src/pages/agents/index.vue +++ b/src/pages/agents/index.vue @@ -1,6 +1,6 @@{{ entry?.content }}- +@@ -11,27 +11,27 @@ -+
{{ t('models.recentTokenHistory.title', 'Token Usage History') }}
-+-{{ t('models.recentTokenHistory.loading', 'Loading usage history...') }} +{{ t('models.recentTokenHistory.empty', 'No usage history available.') }}-+{{ t('models.recentTokenHistory.emptyForWindow', 'No usage history in the selected time window.') }}-+- +-+
{{ usageRefreshing ? t('models.recentTokenHistory.loading', 'Loading...') : t('models.recentTokenHistory.showingLast', `Showing ${filteredUsageHistory.length} records`) }} @@ -101,14 +101,14 @@
--@@ -116,18 +116,18 @@+
{{ entry.model || t('models.recentTokenHistory.unknownModel', 'Unknown Model') }}
-+
{{ [formatUsageSource(entry.provider), formatUsageSource(entry.agentId), entry.sessionId].filter(Boolean).join(' • ') }}
{{ formatUsageTotal(entry) }}
-+
{{ t('models.recentTokenHistory.noUsage', 'No usage info') }}
{{ t('models.recentTokenHistory.usageParseError', 'Error parsing usage') }}
-+
{{ formatUsageTimestamp(entry.timestamp) }}
+{{ t('models.recentTokenHistory.input', `Input: ${formatTokenCount(entry.inputTokens)}`) }} {{ t('models.recentTokenHistory.output', `Output: ${formatTokenCount(entry.outputTokens)}`) }} @@ -139,7 +139,7 @@ ? t('models.recentTokenHistory.noUsage', 'No usage reported') : t('models.recentTokenHistory.usageParseError', 'Parse error') }} - + {{ t('models.recentTokenHistory.cost', `$${entry.costUsd.toFixed(4)}`) }} -+
{{ t('models.recentTokenHistory.page', `Page ${safeUsagePage} of ${usageTotalPages}`) }}
@@ -314,8 +314,8 @@ const formatTokenCount = (value: number) => Intl.NumberFormat().format(value); const getUsageTotalClass = (entry: UsageHistoryEntry) => { if (entry.usageStatus === 'error') return 'font-bold text-[15px] text-red-500'; - if (entry.usageStatus === 'missing') return 'font-bold text-[15px] text-[#99A0AE]'; - return 'font-bold text-[15px] text-[#171717]'; + if (entry.usageStatus === 'missing') return 'font-bold text-[15px] text-[#99A0AE] dark:text-gray-500'; + return 'font-bold text-[15px] text-[#171717] dark:text-[#f3f4f6]'; }; const formatUsageTotal = (entry: UsageHistoryEntry) => { diff --git a/src/pages/cron/components/CronJobCard.vue b/src/pages/cron/components/CronJobCard.vue index 927d778..068206e 100644 --- a/src/pages/cron/components/CronJobCard.vue +++ b/src/pages/cron/components/CronJobCard.vue @@ -1,25 +1,25 @@--+ + --{{ job.name }}
+{{ job.name }}
+
@@ -36,14 +36,14 @@
{{ parseCronSchedule(job.schedule, t) }} --- +
+ {{ job.message }}
+-{{ t('cron.card.last') }}: {{ formatRelativeTime(job.lastRun.time) }} @@ -58,7 +58,7 @@ +diff --git a/src/pages/cron/components/CronStats.vue b/src/pages/cron/components/CronStats.vue index b466172..0fad84d 100644 --- a/src/pages/cron/components/CronStats.vue +++ b/src/pages/cron/components/CronStats.vue @@ -1,54 +1,54 @@{{ job.lastRun.error }} -+---+ + -{{ total }}
-{{ t('cron.stats.total') }}
+{{ total }}
+{{ t('cron.stats.total') }}
+---+ + -{{ active }}
-{{ t('cron.stats.active') }}
+{{ active }}
+{{ t('cron.stats.active') }}
+---+ + -{{ paused }}
-{{ t('cron.stats.paused') }}
+{{ paused }}
+{{ t('cron.stats.paused') }}
+diff --git a/src/pages/cron/components/CronTaskDialog.vue b/src/pages/cron/components/CronTaskDialog.vue index 09c7d70..2b3c669 100644 --- a/src/pages/cron/components/CronTaskDialog.vue +++ b/src/pages/cron/components/CronTaskDialog.vue @@ -8,16 +8,16 @@ > ---+ + -{{ failed }}
-{{ t('cron.stats.failed') }}
+{{ failed }}
+{{ t('cron.stats.failed') }}
+@@ -26,7 +26,7 @@--+
{{ job ? t('cron.dialog.editTitle') : t('cron.dialog.createTitle') }}
-+
{{ t('cron.dialog.description') }}
+ - + - + - +@@ -74,7 +74,7 @@ />-+
{{ schedulePreview ? `${t('cron.card.next')}: ${schedulePreview}` : t('cron.dialog.cronPlaceholder') }}
- -{{ t('cron.dialog.deliveryDescription') }}
+ +{{ t('cron.dialog.deliveryDescription') }}
@@ -122,16 +122,16 @@-+-{{ t('cron.dialog.noChannels') }}+- -@@ -311,6 +311,9 @@ function handleClosed() { overflow: hidden; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15) !important; } +.dark .custom-cron-dialog { + background-color: #1f1f22 !important; +} .custom-cron-dialog .el-dialog__body { padding: 0 !important; @@ -326,6 +329,9 @@ function handleClosed() { background-color: #D1CFC7; border-radius: 3px; } +.dark .custom-cron-dialog .el-dialog__body::-webkit-scrollbar-thumb { + background-color: #2a2a2d; +} /* Input / Textarea styling to match the cream UI */ .custom-cron-dialog .el-input__wrapper, @@ -336,6 +342,11 @@ function handleClosed() { border: 1px solid transparent !important; color: #171717 !important; } +.dark .custom-cron-dialog .el-input__wrapper, +.dark .custom-cron-dialog .el-textarea__inner { + background-color: #222225 !important; + color: #f3f4f6 !important; +} .custom-cron-dialog .el-input__wrapper.is-focus, .custom-cron-dialog .el-textarea__inner:focus { border-color: #3B6DE8 !important; @@ -343,10 +354,17 @@ function handleClosed() { .custom-cron-dialog .el-input__inner { color: #171717 !important; } +.dark .custom-cron-dialog .el-input__inner { + color: #f3f4f6 !important; +} .custom-cron-dialog .el-input__inner::placeholder, .custom-cron-dialog .el-textarea__inner::placeholder { color: #99A0AE !important; } +.dark .custom-cron-dialog .el-input__inner::placeholder, +.dark .custom-cron-dialog .el-textarea__inner::placeholder { + color: #6b7280 !important; +} /* Schedule preset buttons */ .schedule-btn { @@ -361,6 +379,14 @@ function handleClosed() { background-color: #E5E4DC !important; color: #171717 !important; } +.dark .schedule-btn--inactive { + background-color: #222225 !important; + color: #9ca3af !important; +} +.dark .schedule-btn--inactive:hover { + background-color: #2a2a2d !important; + color: #f3f4f6 !important; +} .schedule-btn--active { background-color: #3B6DE8 !important; color: #ffffff !important; @@ -378,6 +404,14 @@ function handleClosed() { background-color: #E5E4DC !important; color: #171717 !important; } +.dark .delivery-btn--inactive { + background-color: #222225 !important; + color: #9ca3af !important; +} +.dark .delivery-btn--inactive:hover { + background-color: #2a2a2d !important; + color: #f3f4f6 !important; +} .delivery-btn--active { background-color: #3B6DE8 !important; color: #ffffff !important; @@ -403,4 +437,12 @@ function handleClosed() { background-color: #E5E4DC !important; color: #171717 !important; } +.dark .cancel-btn { + background-color: #222225 !important; + color: #9ca3af !important; +} +.dark .cancel-btn:hover { + background-color: #2a2a2d !important; + color: #f3f4f6 !important; +} diff --git a/src/pages/cron/index.vue b/src/pages/cron/index.vue index f7479b9..a1467bd 100644 --- a/src/pages/cron/index.vue +++ b/src/pages/cron/index.vue @@ -1,17 +1,17 @@+ +
{{ t('cron.dialog.enableImmediatelyDesc') }}
- +@@ -19,7 +19,7 @@{{ t('cron.title') }}
-+
{{ t('cron.subtitle') }}
{{ t('cron.refresh') }} @@ -48,7 +48,7 @@ {{ t('common.loading', 'Loading...') }}
@@ -64,9 +64,9 @@ /> -+- {{ t('cron.empty.title') }}
+{{ t('cron.empty.title') }}
{{ t('cron.empty.description') }}
diff --git a/src/pages/dashboard/index.vue b/src/pages/dashboard/index.vue deleted file mode 100644 index d440836..0000000 --- a/src/pages/dashboard/index.vue +++ /dev/null @@ -1,7 +0,0 @@ - -看板- - - diff --git a/src/pages/home/ChatHistory.vue b/src/pages/home/ChatHistory.vue index 804430d..c994c81 100644 --- a/src/pages/home/ChatHistory.vue +++ b/src/pages/home/ChatHistory.vue @@ -17,7 +17,7 @@新对话 @@ -32,8 +32,8 @@
diff --git a/src/pages/home/TaskCenter.vue b/src/pages/home/TaskCenter.vue index 6517973..78c50f3 100644 --- a/src/pages/home/TaskCenter.vue +++ b/src/pages/home/TaskCenter.vue @@ -6,20 +6,20 @@-{{ item.icon }}-+{{ item.title }}-+diff --git a/src/pages/home/components/ChatAIMark.vue b/src/pages/home/components/ChatAIMark.vue index 59f7945..830e88d 100644 --- a/src/pages/home/components/ChatAIMark.vue +++ b/src/pages/home/components/ChatAIMark.vue @@ -1,5 +1,5 @@ -{{ item.desc }}+本回答由 AI 生成\ No newline at end of file diff --git a/src/pages/home/components/ChatAttach.vue b/src/pages/home/components/ChatAttach.vue index 6309712..7355e9f 100644 --- a/src/pages/home/components/ChatAttach.vue +++ b/src/pages/home/components/ChatAttach.vue @@ -1,8 +1,8 @@-diff --git a/src/pages/home/components/ChatInputArea.vue b/src/pages/home/components/ChatInputArea.vue index 6aedaff..8684851 100644 --- a/src/pages/home/components/ChatInputArea.vue +++ b/src/pages/home/components/ChatInputArea.vue @@ -1,15 +1,15 @@- {{ item }} + {{ item }}-