Skip to content

feat(ui): redesign sessions page with overview tiles, kind avatars, and context meters#102523

Merged
steipete merged 1 commit into
mainfrom
claude/focused-mcnulty-e1f849
Jul 9, 2026
Merged

feat(ui): redesign sessions page with overview tiles, kind avatars, and context meters#102523
steipete merged 1 commit into
mainfrom
claude/focused-mcnulty-e1f849

Conversation

@steipete

@steipete steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

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 first sessions.list result, 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/a when none) instead of fabricating zeros.

User Impact

  • Overview tiles above the roster summarize loaded sessions, live runs, unread sessions, and total tokens; live/unread tiles pick up semantic tones when non-zero.
  • Each row gets a kind avatar (direct/group/cron/global glyph, tinted to match the kind badges) with a pulsing dot while the session has an active run.
  • The Tokens column shows compact values (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.
  • Initial load shows skeleton shimmer rows instead of flashing the empty state; empty states are icon-led with the existing "Show all" reset.
  • Label chips now ellipsize instead of overflowing the sticky columns; on ≤500px the avatar yields its space back to the 106px key column.

Evidence

Screenshots (mocked Gateway, deterministic roster — desktop dark/light, expanded drawer, 390px mobile):

Desktop (dark) Row drawer
desktop dark drawer
Desktop (light) Mobile 390px
desktop light mobile

Note the stale-snapshot row (~97k / 200k, neutral meter) and the partial overview sum (~454k).

Validation:

  • Full ui Vitest project on Blacksmith Testbox (Linux, Node 24): 143 files / 2334 tests passed.
  • pnpm check:changed delegated to Testbox: all lanes green (format, oxlint, tsgo, guards) — https://github.com/openclaw/openclaw/actions/runs/29001472367
  • New regression tests: overview tile counts, meter tones + aria labels, stale-snapshot handling, partial/absent token sums, kind avatars + live dot, initial-load skeleton; updated responsive browser-layout fixture (375/430/768/1440px, no horizontal overflow).
  • Codex autoreview: two accepted findings (stale snapshots driving danger tones; unknown token totals coerced to zero) fixed and re-reviewed.

…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
@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui size: XL maintainer Maintainer-authored PR labels Jul 9, 2026
@clawsweeper

clawsweeper Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 9, 2026, 3:57 AM ET / 07:57 UTC.

Summary
The branch redesigns the Control UI Sessions page with overview tiles, row kind avatars, compact token/context meters, initial-load skeletons, responsive label handling, generated i18n updates, tests, CSS, and docs.

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
Persistent data-model change detected: persistent cache schema: ui/src/i18n/.i18n/ar.tm.jsonl, persistent cache schema: ui/src/i18n/.i18n/de.tm.jsonl, persistent cache schema: ui/src/i18n/.i18n/es.tm.jsonl, persistent cache schema: ui/src/i18n/.i18n/fa.tm.jsonl, persistent cache schema: ui/src/i18n/.i18n/fr.tm.jsonl, persistent cache schema: ui/src/i18n/.i18n/hi.tm.jsonl, and 22 more. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #102517
Summary: This PR is the open candidate implementation for the linked Sessions page redesign issue.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Refresh or rebase against current main before merge because GitHub reports the branch behind.

Risk before merge

  • [P1] The branch is behind current main, so maintainers should refresh or re-review the exact merge result before landing.

Maintainer options:

  1. Decide the mitigation before merge
    Land the redesign after maintainer product approval and exact-head refresh, or narrow the PR if maintainers want only part of the telemetry treatment.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P2] Manual review is appropriate because this is a protected maintainer-labeled UI direction PR with no concrete automation-repair finding.

Maintainer decision needed

  • Question: Should OpenClaw accept this Sessions page redesign as the Control UI direction for the linked Sessions issue?
  • Rationale: This is a user-facing feature redesign with a protected maintainer label, so automation should not decide product acceptance even though the patch review found no blocking defect.
  • Likely owner: steipete — steipete has the strongest recent feature-history signal for the Sessions page and authored the linked feature proposal and candidate PR.
  • Options:
    • Accept and land after refresh (recommended): Approve the redesigned Sessions view as the desired direction, refresh against current main, and land if required checks remain green.
    • Narrow the redesign: Ask the contributor to keep only the specific telemetry pieces maintainers want now and defer broader visual treatment.
    • Reject this direction: Close or retitle the PR if maintainers do not want the Sessions page to move toward overview tiles and context meters.

Security
Cleared: The diff is limited to Control UI view/style/tests/docs/i18n and does not change CI, dependency resolution, package publishing, secrets, permissions, or code-execution paths.

Review details

Best 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 changes

Label changes:

  • add P3: This PR is a low-risk Control UI feature/polish redesign for operator scanability, not a blocked runtime, security, data-loss, or urgent workflow regression.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes desktop and mobile screenshots that I downloaded and inspected; they directly show the after-fix Sessions UI with overview tiles, avatars, context meters, and responsive layout.
  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes desktop and mobile screenshots that I downloaded and inspected; they directly show the after-fix Sessions UI with overview tiles, avatars, context meters, and responsive layout.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes desktop and mobile screenshots that I downloaded and inspected; they directly show the after-fix Sessions UI with overview tiles, avatars, context meters, and responsive layout.

Label justifications:

  • P3: This PR is a low-risk Control UI feature/polish redesign for operator scanability, not a blocked runtime, security, data-loss, or urgent workflow regression.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes desktop and mobile screenshots that I downloaded and inspected; they directly show the after-fix Sessions UI with overview tiles, avatars, context meters, and responsive layout.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes desktop and mobile screenshots that I downloaded and inspected; they directly show the after-fix Sessions UI with overview tiles, avatars, context meters, and responsive layout.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes desktop and mobile screenshots that I downloaded and inspected; they directly show the after-fix Sessions UI with overview tiles, avatars, context meters, and responsive layout.
Evidence reviewed

PR surface:

Source +510, Tests +237, Docs 0. Total +747 across 68 files.

View PR surface stats
Area Files Added Removed Net
Source 65 720 210 +510
Tests 2 242 5 +237
Docs 1 1 1 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 68 963 216 +747

What I checked:

  • Repository policy applied: Root, UI, and docs AGENTS.md were read; the UI guide treats non-English locale bundles and .i18n files as generated output, which matches the PR's generated i18n updates. (ui/AGENTS.md:7, 18b24edea627)
  • Current main does not already implement the redesign: Current main still has the old Sessions header live-count path and no sessions-overview/renderTokensCell/session-avatar implementation, so this PR is not obsolete on main. (ui/src/pages/sessions/view.ts:723, 18b24edea627)
  • Current main token formatting is still raw: The existing presenter formats session tokens as raw total/context integers, matching the linked issue's current-behavior complaint and showing the compact meter work remains unique to this PR. (ui/src/lib/presenter.ts:29, 18b24edea627)
  • PR implements the requested UI behavior in the owner view: The PR adds session kind avatars, token/context meter rendering, overview tile computation, and initial-load skeleton rows inside the Sessions view without changing gateway or protocol contracts. (ui/src/pages/sessions/view.ts:247, 0a7c8babb2ff)
  • PR adds focused regression coverage: The PR adds tests for overview tile counts, context-meter tones and labels, stale token snapshots, partial token totals, avatar live dots, and initial-load skeleton rows. (ui/src/pages/sessions/view.test.ts:1253, 0a7c8babb2ff)
  • Responsive and visual styles are covered in the changed surface: The PR adds tile, avatar, label-ellipsis, skeleton, and context-meter CSS, plus a browser-layout fixture that includes the overview, avatar, and token meter markup. (ui/src/styles/sessions.css:36, 0a7c8babb2ff)

Likely related people:

  • steipete: Recent merged history on the Sessions page includes the table/drawer redesign, grouping, unread controls, and session-control work; the current PR also targets the same owned surface. (role: feature owner and recent area contributor; confidence: high; commits: 6f0f98545c58, 88f1ec38d4a5, f607ba0691b2; files: ui/src/pages/sessions/view.ts, ui/src/pages/sessions/sessions-page.ts, ui/src/styles/sessions.css)
  • shakkernerd: The Sessions page history includes the route-owned Control UI architecture refactor that established nearby page lifecycle and state structure. (role: adjacent Control UI architecture contributor; confidence: medium; commits: 65e12328aa20; files: ui/src/pages/sessions/view.ts, ui/src/pages/sessions/sessions-page.ts)
  • vincentkoc: Recent commits touched Control UI helpers and internal export cleanup around the same sessions page surface. (role: recent adjacent contributor; confidence: medium; commits: 2ba622ca3019, 6418e196b123; files: ui/src/pages/sessions/view.ts, ui/src/pages/sessions/sessions-page.ts, ui/src/lib/presenter.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. labels Jul 9, 2026
@steipete
steipete merged commit 5c3c5c0 into main Jul 9, 2026
143 of 151 checks passed
@steipete
steipete deleted the claude/focused-mcnulty-e1f849 branch July 9, 2026 08:19
@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 10, 2026
…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui docs Improvements or additions to documentation maintainer Maintainer-authored PR P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XL status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Sessions page: roster overview tiles, kind avatars, and context-usage meters

1 participant