Tak Hoffman
8a352c8f9d
Web UI: add token usage dashboard (#10072)
* feat(ui): Token Usage dashboard with session analytics
Adds a comprehensive Token Usage view to the dashboard:
Backend:
- Extended session-cost-usage.ts with per-session daily breakdown
- Added date range filtering (startMs/endMs) to API endpoints
- New sessions.usage, sessions.usage.timeseries, sessions.usage.logs endpoints
- Cost breakdown by token type (input/output/cache read/write)
Frontend:
- Two-column layout: Daily chart + breakdown | Sessions list
- Interactive daily bar chart with click-to-filter and shift-click range select
- Session detail panel with usage timeline, conversation logs, context weight
- Filter chips for active day/session selections
- Toggle between tokens/cost view modes (default: cost)
- Responsive design for smaller screens
UX improvements:
- 21-day default date range
- Debounced date input (400ms)
- Session list shows filtered totals when days selected
- Context weight breakdown shows skills, tools, files contribution
* fix(ui): restore gatewayUrl validation and syncUrlWithSessionKey signature
- Restore normalizeGatewayUrl() to validate ws:/wss: protocol
- Restore isTopLevelWindow() guard for iframe security
- Revert syncUrlWithSessionKey signature (host param was unused)
* feat(ui): Token Usage dashboard with session analytics
Adds a comprehensive Token Usage view to the dashboard:
Backend:
- Extended session-cost-usage.ts with per-session daily breakdown
- Added date range filtering (startMs/endMs) to API endpoints
- New sessions.usage, sessions.usage.timeseries, sessions.usage.logs endpoints
- Cost breakdown by token type (input/output/cache read/write)
Frontend:
- Two-column layout: Daily chart + breakdown | Sessions list
- Interactive daily bar chart with click-to-filter and shift-click range select
- Session detail panel with usage timeline, conversation logs, context weight
- Filter chips for active day/session selections
- Toggle between tokens/cost view modes (default: cost)
- Responsive design for smaller screens
UX improvements:
- 21-day default date range
- Debounced date input (400ms)
- Session list shows filtered totals when days selected
- Context weight breakdown shows skills, tools, files contribution
* fix: usage dashboard data + cost handling (#8462) (thanks @mcinteerj)
* Usage: enrich metrics dashboard
* Usage: add latency + model trends
* Gateway: improve usage log parsing
* UI: add usage query helpers
* UI: client-side usage filter + debounce
* Build: harden write-cli-compat timing
* UI: add conversation log filters
* UI: fix usage dashboard lint + state
* Web UI: default usage dates to local day
* Protocol: sync session usage params (#8462) (thanks @mcinteerj, @TakHoffman)
---------
Co-authored-by: Jake McInteer <mcinteerj@gmail.com>
2026-02-05 22:35:46 -06:00
..
2026-02-05 22:35:46 -06:00
2026-02-05 18:08:29 -08:00
2026-02-05 22:35:46 -06:00
2026-02-01 10:03:47 +09:00
2026-02-02 21:31:17 -05:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-04 18:59:44 -05:00
2026-02-04 18:59:44 -05:00
2026-01-31 16:19:20 +09:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:19:20 +09:00
2026-01-24 13:52:31 +00:00
2026-01-31 16:19:20 +09:00
2025-12-18 23:32:22 +01:00
2026-02-01 10:03:47 +09:00
2026-02-02 16:18:09 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:19:20 +09:00
2026-02-03 16:00:57 -08:00
2026-02-03 16:00:57 -08:00
2026-01-20 13:04:19 +00:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-05 18:08:29 -08:00
2026-02-05 18:08:29 -08:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:19:20 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-02 17:36:49 +00:00
2026-02-01 10:03:47 +09:00
2026-01-20 07:37:01 +00:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-01-20 07:37:01 +00:00
2026-02-03 16:00:57 -08:00
2026-02-03 16:00:57 -08:00
2026-02-01 10:03:47 +09:00
2026-02-04 17:12:16 -05:00
2026-02-04 17:12:16 -05:00
2026-01-31 16:19:20 +09:00
2026-02-01 10:03:47 +09:00
2026-01-03 19:37:09 +01:00
2026-02-04 17:12:16 -05:00
2026-02-04 17:12:16 -05:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:19:20 +09:00
2026-02-01 10:03:47 +09:00
2026-01-30 03:16:21 +01:00
2026-01-30 03:16:21 +01:00
2026-01-31 16:19:20 +09:00
2026-02-05 18:08:29 -08:00
2026-01-20 10:51:25 +00:00
2026-02-01 10:03:47 +09:00
2026-02-02 21:31:17 -05:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:19:20 +09:00
2026-01-14 09:11:21 +00:00
2026-01-19 10:08:29 +00:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:04:04 +09:00
2026-01-31 16:19:20 +09:00
2026-01-30 03:16:21 +01:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-03 13:56:20 -05:00
2026-02-05 16:37:58 -08:00
2026-01-31 16:19:20 +09:00
2026-01-03 19:37:09 +01:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-01-14 15:02:19 +00:00
2026-01-14 15:02:19 +00:00
2026-01-31 16:19:20 +09:00
2026-01-31 16:19:20 +09:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:19:20 +09:00
2026-02-01 10:03:47 +09:00
2026-02-02 16:56:38 -08:00
2026-02-05 16:37:58 -08:00
2026-01-25 12:22:36 +00:00
2026-02-01 10:03:47 +09:00
2026-02-04 17:12:16 -05:00
2026-02-01 10:03:47 +09:00
2026-02-05 16:34:48 -08:00
2026-02-04 01:03:59 -08:00
2026-02-01 10:03:47 +09:00
2026-02-05 18:08:29 -08:00
2026-02-04 17:12:16 -05:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-02-01 10:03:47 +09:00
2026-01-31 16:04:04 +09:00
2026-02-03 17:57:55 -08:00
2026-01-31 16:19:20 +09:00
2026-02-01 10:03:47 +09:00
2026-01-14 15:02:19 +00:00
2026-02-05 22:35:46 -06:00
2026-02-05 22:35:46 -06:00
2026-01-30 03:16:21 +01:00
2026-02-04 17:12:16 -05:00
2026-02-04 17:12:16 -05:00
2026-01-31 16:19:20 +09:00
2026-02-04 17:12:16 -05:00
2026-01-30 03:16:21 +01:00
2026-02-01 10:03:47 +09:00
2026-02-05 16:34:48 -08:00
2026-01-31 16:19:20 +09:00
2026-02-05 16:34:48 -08:00
2026-01-14 01:17:56 +00:00
2026-02-02 16:18:09 +09:00
2026-02-02 16:18:09 +09:00
2026-01-17 20:37:36 +00:00
2026-02-01 10:03:47 +09:00
2025-12-18 13:27:52 +00:00