feat(ui): redesign sessions page with overview tiles, kind avatars, and context meters#102523
Conversation
…nd context meters The Control UI sessions roster now leads with operator telemetry: overview tiles (sessions / live / unread / tokens), per-kind row avatars with a live-run dot, compact token values with context-usage meters (ok/warn/danger at 65%/85%), initial-load skeleton rows, and icon-led empty states. Stale token snapshots render as ~approximations with a neutral meter and never drive warning tones, matching the chat composer convention; the overview token sum counts only known snapshots (~ when partial, n/a when none). Label chips ellipsize instead of overflowing sticky columns; <=500px drops the avatar to preserve the key column budget. Closes #102517
|
Codex review: needs maintainer review before merge. Reviewed July 9, 2026, 3:57 AM ET / 07:57 UTC. Summary PR surface: Source +510, Tests +237, Docs 0. Total +747 across 68 files. Reproducibility: not applicable. as a bug reproduction; this is a feature redesign PR. Source inspection confirms current main still lacks the overview tiles, kind avatars, context meters, and skeleton loading behavior. Review metrics: none identified. Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Land the redesign after maintainer product approval and exact-head refresh, or narrow the PR if maintainers want only part of the telemetry treatment. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction; this is a feature redesign PR. Source inspection confirms current main still lacks the overview tiles, kind avatars, context meters, and skeleton loading behavior. Is this the best way to solve the issue? Yes for the implementation layer: the PR keeps the existing Sessions table owner boundary and adds view/style/tests/docs without changing gateway or protocol contracts. Product acceptance still needs maintainer approval because this is a visible UI direction change. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 18b24edea627. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +510, Tests +237, Docs 0. Total +747 across 68 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
Merged via squash.
|
…nd context meters (openclaw#102523) The Control UI sessions roster now leads with operator telemetry: overview tiles (sessions / live / unread / tokens), per-kind row avatars with a live-run dot, compact token values with context-usage meters (ok/warn/danger at 65%/85%), initial-load skeleton rows, and icon-led empty states. Stale token snapshots render as ~approximations with a neutral meter and never drive warning tones, matching the chat composer convention; the overview token sum counts only known snapshots (~ when partial, n/a when none). Label chips ellipsize instead of overflowing sticky columns; <=500px drops the avatar to preserve the key column budget. Closes openclaw#102517
Closes #102517
What Problem This Solves
The Control UI Sessions page rendered a flat roster with weak hierarchy: fleet state (live runs, unread sessions, token burn) was invisible without reading every row, the Tokens column printed raw integers (
123456 / 200000), context-window pressure was not surfaced anywhere in the table, the first load flashed "No sessions found." before the firstsessions.listresult, and long label chips could paint over the sticky status column on narrow layouts.Why This Change Was Made
Redesigns the main sessions view around scannable operator telemetry while keeping the existing table semantics, columns, filters, grouping, bulk actions, and row drawer intact. Token freshness follows the chat composer's established convention: stale snapshots (
totalTokensFresh: false) render as~approximations with a neutral meter and never drive warning tones, and the overview token sum counts only known snapshots (~when partial,n/awhen none) instead of fabricating zeros.User Impact
156k / 200k) plus a context-usage meter with ok/warn/danger tones at 65%/85%; exact numbers stay in the tooltip and the row drawer.Evidence
Screenshots (mocked Gateway, deterministic roster — desktop dark/light, expanded drawer, 390px mobile):
Note the stale-snapshot row (
~97k / 200k, neutral meter) and the partial overview sum (~454k).Validation:
uiVitest project on Blacksmith Testbox (Linux, Node 24): 143 files / 2334 tests passed.pnpm check:changeddelegated to Testbox: all lanes green (format, oxlint, tsgo, guards) — https://github.com/openclaw/openclaw/actions/runs/29001472367