v0.6.2: 仪表盘布局重构 + 每日趋势折线图 + OpenCode Go/Zen 预设

仪表盘:
- 新增每日用量趋势折线图(Token/缓存命中率/请求数三线)
- 用量趋势 Tab 组(每日/模型/供应商模型)与模型表格同行等高
- 热力图独立整行,格子放大 16px
- 折线图坐标轴文字改 HTML 覆盖层(修复 SVG 拉伸变形)
- 表格 border-collapse + 行线与边框同色
- 模型表格估算标签行内显示(行高统一)
- 最近请求容器 max-h 限制
- 页脚归属放内容流末尾

模型唯一性:
- 获取模型列表时自动勾选已存在模型 + 已添加徽章
- 批量添加跳过同供应商已存在 model id
- onBulkAdd 同供应商 model id 去重

新增预设:
- OpenCode Go(套餐 subscription,带推荐链接)
- OpenCode Zen(按量 pay_as_you_go)

折线图优化:
- 缓存命中率 0-1 映射修复
- 请求数默认显示
- 直线连接 + 渐变填充
This commit is contained in:
KimiSwitch Dev committed 2026-07-30 11:50:05 +08:00
1 parent 2614f80d0f
commit bee981aefa
13 files changed
+739 -95

No files matched your search

+26 -2
View File
@@ -73,6 +73,7 @@ export const enTranslations: Record<TranslationKey, string> = {
fetchingModels: "Fetching...",
discoveredModels: "Discovered {count} models",
addSelected: "Add selected",
alreadyAdded: "Added",
displayName: "Display name",
actualModel: "Actual model",
contextSize: "Context size",
@@ -283,6 +284,7 @@ export const enTranslations: Record<TranslationKey, string> = {
cardDailyTrendSubCapped: "Last 30 days · {n} days total",
tabModelTrend: "Model usage trend",
tabProviderTrend: "Provider–model usage trend",
tabDailyTrend: "Daily usage trend",
providerUnknown: "Unknown provider",
cardDailyTrendSub: "{n} days",
cardModelUsage: "Model usage",
@@ -339,10 +341,13 @@ export const enTranslations: Record<TranslationKey, string> = {
presetNameKimiCoding: "Kimi For Coding",
presetNameMoonshot: "Moonshot Platform",
presetNameDeepseek: "DeepSeek",
presetNameZhipu: "Zhipu GLM",
presetNameZai: "z.ai (Zhipu Global)",
presetNameZhipuApi: "Zhipu GLM (Pay-as-you-go)",
presetNameZhipuCoding: "Zhipu GLM Coding Plan",
presetNameZaiApi: "z.ai (Pay-as-you-go)",
presetNameZaiCoding: "z.ai Coding Plan",
presetNameBailian: "Alibaba Bailian",
presetNameMinimax: "MiniMax",
presetNameMinimaxTokenPlan: "MiniMax Token Plan",
presetNameStepfun: "StepFun",
presetNameSiliconflow: "SiliconFlow",
presetNameNovita: "Novita AI",
@@ -350,6 +355,8 @@ export const enTranslations: Record<TranslationKey, string> = {
presetNameOpenai: "OpenAI",
presetNameGoogleGenai: "Google AI Studio",
presetNameVolcengine: "Volcengine Ark",
presetNameOpencodeGo: "OpenCode Go",
presetNameOpencodeZen: "OpenCode Zen",
// Provider usage
usageBalance: "Balance",
@@ -363,4 +370,21 @@ export const enTranslations: Record<TranslationKey, string> = {
usageResetIn: "resets in {time}",
usageResetDone: "reset",
usageLoading: "Querying…",
// Billing mode (subscription / pay-as-you-go)
billingTabSubscription: "Subscription",
billingTabPayAsYouGo: "Pay-as-you-go",
billingTabAll: "All",
billingBadgeSubscription: "Plan",
billingBadgePayAsYouGo: "PAYG",
// Usage trend line chart
trendLineTitle: "Usage Trend",
trendLineSub: "last {n} days",
trendLineLegendTokens: "Token usage",
trendLineLegendCacheHit: "Cache hit rate",
trendLineLegendRequests: "Requests",
trendLineShowRequests: "Show requests",
trendLineTooltip: "{date}\nTokens: {tokens}\nCache hit: {cache}\nRequests: {req}",
trendLineNoData: "No data",
};