feat: v0.3.0 re-release - add dashboard & sessions, hide pi option

- Usage dashboard: KPIs, model split, daily bars, year heatmap, recent requests
- Sessions management: list/preview/archive/delete with streaming preview
- Double-click daily bar opens per-model breakdown modal
- Paginated recent requests (30/page)
- Hide pi option from nav (kept code, just removed from UI)
- Timezone fixes: today/day_key/heatmap now use local calendar day
- Streaming preview with 20MB byte cap + 500-char frontend clip
- README attribution to kimicode-dashboard (MIT, JochenYang)
This commit is contained in:
KimiSwitch Dev committed 2026-07-28 09:16:21 +08:00
1 parent 139af18826
commit 32de98bff5
19 files changed
+3648 -35

No files matched your search

+67
View File
@@ -20,6 +20,8 @@ export const enTranslations: Record<TranslationKey, string> = {
// Provider list
providers: "Providers",
dashboard: "Dashboard",
sessions: "Sessions",
addProvider: "Add Provider",
noProviders: "No providers yet",
addFirstProvider: "Add first provider",
@@ -131,6 +133,71 @@ export const enTranslations: Record<TranslationKey, string> = {
capToolUse: "Tool Use",
customCapabilities: "Other capabilities (comma-separated)",
// Sessions
sessionsTitle: "Sessions",
sessionsSubtitle:
"Browse, preview, archive, or delete Kimi Code sessions by workspace. Archiving keeps data on disk.",
workspaces: "Workspaces",
workspaceIsolatedHint: "Sessions are isolated per workspace",
allWorkspaces: "All workspaces",
emptyWorkspace: "Empty",
deleteWorkspace: "Delete workspace",
noSessions: "No sessions",
statusActive: "Active",
statusArchived: "Archived",
statusAll: "All",
selectAll: "Select all",
deselectAll: "Deselect all",
selectedCount: "{n} selected",
archive: "Archive",
unarchive: "Unarchive",
sessionTitle: "Session",
workspace: "Workspace",
status: "Status",
size: "Size",
updated: "Updated",
actions: "Actions",
sessionsInView: "{n} sessions",
isolatedToWorkspace: "this workspace only",
openPreview: "Open preview",
scanning: "Scanning…",
refresh: "Refresh",
refreshing: "Refreshing…",
refreshed: "Refreshed",
cancel: "Cancel",
confirmDeleteTitle: "Delete session forever?",
confirmDeleteSession:
"This cannot be undone. Prefer archive if you only want it out of the way.",
confirmBulkTitle: "Delete selected forever?",
confirmBulkDelete: "Permanently delete {n} sessions. This cannot be undone.",
confirmDeleteWorkspaceTitle: "Delete empty workspace?",
confirmDeleteWorkspace: "Only workspaces with no sessions can be removed.",
deleteForever: "Delete forever",
previewTitle: "Session preview",
previewHint:
"Roles and truncated text only — secrets and raw tool dumps are omitted.",
previewEmpty: "No previewable messages",
previewTruncated: "Preview truncated",
roleUser: "User",
roleAssistant: "Assistant",
roleSystem: "System",
// Heatmap
noData: "No data",
heatLess: "Less",
heatMore: "More",
requests: "Requests",
cacheHitRate: "Cache hit rate",
// Daily detail modal
dayDetail: "Daily usage detail",
close: "Close",
totalTokens: "Total tokens",
cost: "Cost",
modelDistribution: "Model distribution",
modalEscHint: "Press Esc or click outside to close",
doubleClickHint: "Double-click for details",
// Languages
language: "Language",
zh: "中文",
+64
View File
@@ -18,6 +18,8 @@ export const zhTranslations = {
// Provider list
providers: "供应商",
dashboard: "用量仪表盘",
sessions: "会话管理",
addProvider: "添加供应商",
noProviders: "暂无供应商",
addFirstProvider: "添加第一个供应商",
@@ -129,6 +131,68 @@ export const zhTranslations = {
capToolUse: "工具调用",
customCapabilities: "其他能力(逗号分隔)",
// Sessions
sessionsTitle: "会话管理",
sessionsSubtitle: "按工作区查看、预览、归档或删除 Kimi Code 会话。归档不会删除数据。",
workspaces: "工作区",
workspaceIsolatedHint: "会话按工作区隔离存储",
allWorkspaces: "全部工作区",
emptyWorkspace: "空",
deleteWorkspace: "删除工作区",
noSessions: "暂无会话",
statusActive: "活跃",
statusArchived: "已归档",
statusAll: "全部",
selectAll: "全选",
deselectAll: "取消全选",
selectedCount: "已选 {n} 项",
archive: "归档",
unarchive: "取消归档",
sessionTitle: "会话",
workspace: "工作区",
status: "状态",
size: "大小",
updated: "更新时间",
actions: "操作",
sessionsInView: "共 {n} 个会话",
isolatedToWorkspace: "当前工作区",
openPreview: "打开预览",
scanning: "扫描中…",
refresh: "刷新",
refreshing: "刷新中…",
refreshed: "已刷新",
cancel: "取消",
confirmDeleteTitle: "永久删除会话?",
confirmDeleteSession: "删除后无法恢复。若只是暂时不用,请改用归档。",
confirmBulkTitle: "批量永久删除?",
confirmBulkDelete: "将永久删除 {n} 个会话,此操作无法撤销。",
confirmDeleteWorkspaceTitle: "删除空工作区?",
confirmDeleteWorkspace: "仅允许删除没有任何会话的工作区。",
deleteForever: "永久删除",
previewTitle: "会话预览",
previewHint: "仅展示角色与截断后的文本,不会暴露密钥或工具原始输出。",
previewEmpty: "没有可预览的消息",
previewTruncated: "预览已截断",
roleUser: "用户",
roleAssistant: "助手",
roleSystem: "系统",
// Heatmap
noData: "暂无数据",
heatLess: "少",
heatMore: "多",
requests: "请求",
cacheHitRate: "缓存命中率",
// Daily detail modal
dayDetail: "每日用量详情",
close: "关闭",
totalTokens: "总 Token",
cost: "费用",
modelDistribution: "模型用量分布",
modalEscHint: "按 Esc 或点击外部关闭",
doubleClickHint: "双击查看详情",
// Languages
language: "语言",
zh: "中文",