feat(ui): add usage monitor modal with gauges and model/task usage analysis
Adds a Usage Monitor modal (Worker menu + wired to the footer/Mission-Control usage pill's Open command): dynamic gauges built from UsageSnapshotDto.Limits with gate-threshold marks, a stale/blocked-gate band, and Models/Tasks tabs backed by GetModelUsageAsync/GetTaskUsageAsync over a 7d/30d/custom range.
This commit is contained in:
@@ -422,6 +422,39 @@
|
||||
"generate": "Generate",
|
||||
"regenerate": "Regenerate",
|
||||
"emptyStateHint": "No report for this range yet. Click “Generate”."
|
||||
},
|
||||
"usageMonitor": {
|
||||
"title": "USAGE MONITOR",
|
||||
"windowTitle": "Usage Monitor",
|
||||
"noGauges": "No usage limits reported yet.",
|
||||
"staleFormat": "Values stale (as of {0})",
|
||||
"staleGateHint": "The gate does not apply while values are stale.",
|
||||
"gateBlockedFormat": "Queue paused — {0}",
|
||||
"resetIn": "Reset in {0}",
|
||||
"gaugeSession": "Session (5h)",
|
||||
"gaugeWeeklyAll": "Week (all models)",
|
||||
"gaugeWeeklyScopedFormat": "Week ({0})",
|
||||
"period": "Period:",
|
||||
"last7Days": "7 days",
|
||||
"last30Days": "30 days",
|
||||
"fromDate": "From",
|
||||
"toDate": "To",
|
||||
"modelUsage": "Models",
|
||||
"taskUsage": "Tasks",
|
||||
"emptyStateHint": "No usage data for this range yet.",
|
||||
"columnModel": "MODEL",
|
||||
"columnIn": "IN",
|
||||
"columnOut": "OUT",
|
||||
"columnCache": "CACHE",
|
||||
"columnOtherIn": "OTHER IN",
|
||||
"columnOtherOut": "OTHER OUT",
|
||||
"columnOtherCache": "OTHER CACHE",
|
||||
"columnShare": "SHARE",
|
||||
"columnTask": "TASK",
|
||||
"columnList": "LIST",
|
||||
"columnModelShort": "MODEL",
|
||||
"columnRuns": "RUNS",
|
||||
"columnTotal": "TOTAL"
|
||||
}
|
||||
},
|
||||
"installer": {
|
||||
@@ -535,6 +568,7 @@
|
||||
"restartWorker": "Restart worker",
|
||||
"worktrees": "Worktrees…",
|
||||
"weeklyReport": "Weekly Report…",
|
||||
"usageMonitor": "Usage Monitor…",
|
||||
"about": "About…",
|
||||
"addRepos": "Add repos as lists…"
|
||||
},
|
||||
@@ -559,6 +593,7 @@
|
||||
"settingsModal": { "workerOffline": "Worker offline — settings read-only.", "saveFailed": "Save failed: {0}" },
|
||||
"onlineInbox": { "workerOffline": "Worker offline — cannot load config.", "saved": "Config saved.", "saveFailed": "Save failed: {0}", "signedIn": "Signed in successfully.", "signedInNoRole": "Signed in, but this account is missing the 'user' role in Zitadel — online sync will be rejected until the role is granted in the ClaudeDo project.", "signInFailed": "Sign-in failed: {0}", "signedOut": "Signed out.", "signOutFailed": "Sign-out failed: {0}" },
|
||||
"weeklyReport": { "invalidRange": "Invalid date range.", "generating": "Generating report…", "error": "Error: {0}" },
|
||||
"usageMonitor": { "loadFailed": "Couldn't load usage data: {0}" },
|
||||
"filesTab": { "workerOffline": "Worker offline.", "noneBundled": "No default agents bundled.", "allPresent": "All default agents already present.", "restored": "Restored {0} default agent(s).", "restoreFailed": "Restore failed: {0}", "openFailed": "Open failed: {0}" },
|
||||
"sessionSkillsTab": { "installed": "Installed: {0}", "installFailed": "Install failed: {0}", "updated": "Updated.", "updateFailed": "Update failed: {0}", "removed": "Removed.", "removeFailed": "Remove failed: {0}" },
|
||||
"worktreesTab": { "workerOffline": "Worker offline.", "removed": "Removed {0} worktree(s).", "blocked": "Cannot force-remove: {0} task(s) still running. Cancel them first.", "removedFrom": "Removed {0} worktree(s) from {1} task(s).", "cleanupFailed": "Cleanup failed: {0}", "resetFailed": "Reset failed: {0}" },
|
||||
|
||||
Reference in New Issue
Block a user