Skip to content

improve(ui): calmer sessions roster with dot status and drawer-level runtime#102664

Merged
steipete merged 1 commit into
mainfrom
claude/sessions-actions-menu
Jul 9, 2026
Merged

improve(ui): calmer sessions roster with dot status and drawer-level runtime#102664
steipete merged 1 commit into
mainfrom
claude/sessions-actions-menu

Conversation

@steipete

@steipete steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Closes #102654

What Problem This Solves

Feedback on the redesigned Sessions page (#102523): the status pills added chrome the roster does not need — next to kind badges and label chips, rows read as a wall of pills — and the Runtime column (agent runtime id such as pi/codex) is rarely consulted while scanning, costing ~130px per row while per-session detail already has a home in the row drawer.

Why This Change Was Made

Continues the calmer-roster direction: status becomes typographic (colored dot + plain label, no pill), and the roster keeps only scan-relevant columns while the drawer absorbs diagnostic detail. The row actions menu that landed in #102564 already collapsed the action buttons, so the actions column also shrinks to the chevron plus menu and its header goes visually quiet (screen-reader label kept).

User Impact

  • Status renders as a dot + label: pulsing green for Live, green dot with a neutral label for Done, muted Idle/Unknown, red Failed — in the roster and the drawer hero.
  • The Runtime column is gone; the row drawer now shows Runtime (agent runtime) and Run duration. Runtime text remains searchable from the filter box.
  • Rows are visibly calmer and the table needs less width (min-width 860→760px; responsive breakpoints reflowed for the 7-column roster).
  • No behavior changes: filters, sorting, grouping, selection, the row menu, and the drawer all work as before.

Evidence

Roster (dark) Row menu (#102564) with new status treatment
desktop dark menu
Drawer with Runtime + Run duration Mobile 390px Light theme
drawer mobile light

Validation:

  • Full ui Vitest project on Blacksmith Testbox (Linux, Node 24): 146 files / 2368 tests passed.
  • pnpm check:changed delegated to Testbox: all lanes green (format, oxlint, tsgo, guards).
  • Tests updated: header set, drawer Runtime/Run duration stats, runtime-search-into-drawer coverage, and browser-layout assertions that pin the no-pill status (no border, transparent background) across 375/430/768/1440px with no horizontal overflow.
  • Codex autoreview: clean, no accepted findings.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui size: M 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, 6:50 AM ET / 10:50 UTC.

Summary
The PR removes the Sessions table Runtime column, moves agent runtime and run duration into the drawer, restyles status as a dot plus label, and updates responsive CSS, docs, tests, and generated UI locale bundles.

PR surface: Source +34, Tests -7, Docs 0. Total +27 across 64 files.

Reproducibility: not applicable. as a bug reproduction; this is UI polish. The PR body screenshots and source diff show the requested visual behavior, and tests cover the runtime-search and drawer-stat paths.

Review metrics: none identified.

Stored data model
Persistent data-model change detected: 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, persistent cache schema: ui/src/i18n/.i18n/id.tm.jsonl, and 19 more. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #102654
Summary: This PR is the candidate implementation for the linked Sessions page polish issue; earlier merged Sessions redesign/menu PRs are context, not replacements.

Members:

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

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

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

Risk before merge

  • [P1] The remaining uncertainty is product acceptance of the protected maintainer-labeled visual-density change, not a concrete patch defect.

Maintainer options:

  1. Decide the mitigation before merge
    Land the focused UI polish after maintainer acceptance of the status/runtime presentation direction and exact-head validation remains green; otherwise narrow it to the accepted subset.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P2] Human maintainer review should decide the protected Sessions page presentation change; there is no narrow code repair for ClawSweeper to queue.

Maintainer decision needed

  • Question: Should maintainers accept this Sessions page visual-density direction: dot-plus-label status and moving Runtime from the roster into drawer details?
  • Rationale: The implementation appears coherent, but it changes a visible Control UI scanning surface and closes a maintainer-labeled product-polish issue.
  • Likely owner: steipete — steipete owns the recent Sessions UI redesign history and authored the linked product-polish issue and implementation.
  • Options:
    • Accept the focused polish (recommended): Proceed with this PR once exact-head CI and normal maintainer review are satisfied.
    • Narrow the presentation change: Ask for only the status treatment or only the Runtime-column move if maintainers want a smaller visual adjustment.
    • Defer the UI direction: Keep the current Sessions roster presentation and leave the linked issue open for more operator feedback.

Security
Cleared: The diff is limited to Control UI rendering/styles/tests, docs, and generated localization outputs; no secrets, dependency, workflow, install, or code-execution surface changed.

Review details

Best possible solution:

Land the focused UI polish after maintainer acceptance of the status/runtime presentation direction and exact-head validation remains green; otherwise narrow it to the accepted subset.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a bug reproduction; this is UI polish. The PR body screenshots and source diff show the requested visual behavior, and tests cover the runtime-search and drawer-stat paths.

Is this the best way to solve the issue?

Yes: this is the right implementation layer because the Sessions view, Sessions CSS, docs sentence, and focused UI tests own the changed presentation. Product acceptance remains the separate maintainer decision.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 0a8677ec9948.

Label changes

Label changes:

  • add P3: The PR is low-risk Control UI polish for scanability and density, not a broken workflow, outage, data loss, or security issue.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes inspected desktop, drawer, and mobile screenshots showing the after-change Sessions roster and drawer behavior, supplemented by focused UI validation notes.
  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes inspected desktop, drawer, and mobile screenshots showing the after-change Sessions roster and drawer behavior, supplemented by focused UI validation notes.
  • add rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes inspected desktop, drawer, and mobile screenshots showing the after-change Sessions roster and drawer behavior, supplemented by focused UI validation notes.

Label justifications:

  • P3: The PR is low-risk Control UI polish for scanability and density, not a broken workflow, outage, data loss, or security issue.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes inspected desktop, drawer, and mobile screenshots showing the after-change Sessions roster and drawer behavior, supplemented by focused UI validation notes.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes inspected desktop, drawer, and mobile screenshots showing the after-change Sessions roster and drawer behavior, supplemented by focused UI validation notes.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes inspected desktop, drawer, and mobile screenshots showing the after-change Sessions roster and drawer behavior, supplemented by focused UI validation notes.
Evidence reviewed

PR surface:

Source +34, Tests -7, Docs 0. Total +27 across 64 files.

View PR surface stats
Area Files Added Removed Net
Source 61 187 153 +34
Tests 2 24 31 -7
Docs 1 1 1 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 64 212 185 +27

What I checked:

  • PR source implements the drawer runtime split: At the PR head, session details now add Runtime from resolveAgentRuntimeLabel(row.agentRuntime) and a separate Run duration from formatRuntimeMs(row.runtimeMs), while the table column count drops to the 7-column default. (ui/src/pages/sessions/view.ts:624, 6bf7ed9d7a64)
  • PR source removes the visible Runtime roster column: The PR head table header renders Status, Updated, Tokens, and a screen-reader-only Actions header, and row rendering no longer emits session-runtime-cell. (ui/src/pages/sessions/view.ts:1115, 6bf7ed9d7a64)
  • PR source removes status pill chrome: The PR head status CSS keeps the dot and label but removes the prior padding, border, background, and full-radius pill styling from .session-status-badge. (ui/src/styles/sessions.css:559, 6bf7ed9d7a64)
  • Focused tests cover the moved runtime behavior: The updated sessions view test asserts runtime remains searchable, the roster lacks .session-runtime-cell, and the expanded drawer shows the agent runtime label. (ui/src/pages/sessions/view.test.ts:695, 6bf7ed9d7a64)
  • Current main context confirms this is a real follow-up change: Current origin/main still has the Runtime table header and row cell, and its drawer uses Runtime for run duration only, so the PR is not obsolete on main. (ui/src/pages/sessions/view.ts:1113, 0a8677ec9948)
  • Linked issue is the canonical product request: Live GitHub state shows the PR closes the open Sessions polish issue, which carries maintainer, P3, product-decision, and UX-friction labels.

Likely related people:

  • steipete: Authored and merged recent Sessions page redesign and context-menu work that defines the UI surface this polish PR changes. (role: recent feature owner and likely follow-up owner; confidence: high; commits: 5c3c5c0ee49a, e500a4f017bf; files: ui/src/pages/sessions/view.ts, ui/src/styles/sessions.css, ui/src/pages/sessions/view.test.ts)
  • Ayaan Zaidi: Current-main blame for the existing drawer detail and Runtime column lines points at an earlier commit that carried this Sessions view structure forward. (role: earlier area contributor; confidence: low; commits: 858975981865; files: ui/src/pages/sessions/view.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.

…runtime

Feedback pass on the sessions redesign: status pills become a plain colored
dot + label (green pulse for live, green dot with neutral label for done,
muted idle, red failed) in both the roster and the drawer hero, and the
Runtime column moves out of the table into the row drawer as Runtime (agent
runtime) plus Run duration. Runtime stays searchable. Responsive breakpoints
reflow for the 7-column roster and the actions column shrinks to the chevron
and row menu that landed in #102564.

Closes #102654
@steipete
steipete force-pushed the claude/sessions-actions-menu branch from 178d4ab to 6bf7ed9 Compare July 9, 2026 10:44
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦞 diamond lobster Very strong PR readiness with only minor 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 7abf1c7 into main Jul 9, 2026
163 of 171 checks passed
@steipete
steipete deleted the claude/sessions-actions-menu branch July 9, 2026 11:13
@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
…runtime (openclaw#102664)

Feedback pass on the sessions redesign: status pills become a plain colored
dot + label (green pulse for live, green dot with neutral label for done,
muted idle, red failed) in both the roster and the drawer hero, and the
Runtime column moves out of the table into the row drawer as Runtime (agent
runtime) plus Run duration. Runtime stays searchable. Responsive breakpoints
reflow for the 7-column roster and the actions column shrinks to the chevron
and row menu that landed in openclaw#102564.

Closes openclaw#102654
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: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: M 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 polish: dot + label status, Runtime column into the row drawer

1 participant