Skip to content

improve(ui): shrink the sidebar running ring on rows without an icon - #141383

Merged
steipete merged 2 commits into
mainfrom
steipete/ring-size-styling-b15b6e
Sep 7, 2026
Merged

steipete merged 2 commits into
mainfrom
steipete/ring-size-styling-b15b6e

Conversation

@steipete

@steipete steipete commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Related: #141098

What Problem This Solves

Resolves a problem where sidebar sessions without an icon, avatar, or owner chip showed their running state as a large empty circle beside the label. #141098 moved the running ring onto each row's own glyph, and rows with nothing inside the ring inherited the full 24px glyph size, which reads as a missing icon rather than as progress.

Why This Change Was Made

The shared glyph renderer now marks a content-less glyph as bare, and one CSS rule shrinks that ring to the 12px size the old trailing spinner had, centered in the same 20px lead slot so it stays aligned with neighboring avatars and unread dots. Rows with artwork keep the full ring around it. All bare-ring callers (top-level sessions, child rows, and the Codex/Claude catalog rows) share the renderer, so they change together.

User Impact

Running sessions with no icon show a compact spinner in the icon column instead of an oversized empty ring. Rows with icons or avatars are unchanged.

Evidence

Mocked Control UI dev server, Playwright measuring every .session-glyph__ring on the page: before the change every ring measured 24px; after it, bare rings measure 12px and rings around artwork still measure 24px. Captures below are fixture data from the mock scenario; the "before" is the same build with the new rule overridden back to the old inset, which is the only visual difference.

Before:

Before: full-size empty ring on icon-less rows

After:

After: compact 12px ring on icon-less rows

  • Codex autoreview at P2 threshold: scoped-clean, no findings.
  • node scripts/check-changed.mjs: lint, format, typecheck, dead-export scans passed.
  • chat-flow.sidebar-presentation.e2e.test.ts and session-management.sidebar.e2e.test.ts: 15/15 passed.

Rows with no icon, avatar, or owner chip drew the running ring at the
full 24px glyph size, which read as an empty circle beside the label.
The glyph renderer now marks a content-less glyph as bare, and the ring
collapses to the 12px size the trailing spinner used to have, centered
in the same lead slot so it lines up with neighboring avatars and unread
dots. Rows with artwork keep the full ring around it.

Release note: the Control UI sidebar draws a compact running ring on
sessions that have no icon instead of a large empty circle.
@steipete
steipete marked this pull request as ready for review September 7, 2026 17:19
@clawsweeper

clawsweeper Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui size: XS maintainer Maintainer-authored PR labels Sep 7, 2026
@clawsweeper clawsweeper Bot added P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. 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. labels Sep 7, 2026
@clawsweeper

clawsweeper Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 7, 2026, 1:46 PM ET / 17:46 UTC.

ClawSweeper review

What this changes

The Control UI sidebar uses a smaller running ring for rows without artwork, with matching documentation and browser geometry assertions.

Merge readiness

✅ Ready for maintainer review

This remains a useful, narrowly scoped visual improvement absent from current main. No actionable correctness or security defects were found, and the maintainer’s capture clarification resolves the previous proof follow-up.

Priority: P3
Reviewed head: 8bff85d95c3e2d4714e0280d0ce839e746ac5392

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused presentation change with relevant browser measurements and geometry coverage, with no actionable findings.
Proof confidence 🐚 platinum hermit (4/6) ✨ media proof bonus Sufficient (linked_artifact): Reported browser captures and measurements exercise the actual glyph renderer and CSS with synthetic sidebar sessions: bare rings become 12px and artwork rings remain 24px. The maintainer confirms inspecting the captures before upload; independent attachment retrieval failed here, which remains a reviewer limitation.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (linked_artifact): Reported browser captures and measurements exercise the actual glyph renderer and CSS with synthetic sidebar sessions: bare rings become 12px and artwork rings remain 24px. The maintainer confirms inspecting the captures before upload; independent attachment retrieval failed here, which remains a reviewer limitation.
Evidence reviewed 6 items Introduced scope: The verified merge-base-to-head delta contains only the glyph modifier, compact-ring CSS, browser geometry assertions, and sidebar documentation. Endpoint drift was excluded from ownership assessment.
Shared rendering boundary: Bare session and child indicators pass Lit’s nothing sentinel through the shared renderer; catalog rows do likewise. The 20px slot remains fixed while inset: 4px produces a centered 12px ring. Artwork, accessible labels, queued animation, and reduced-motion rules remain unchanged. This presentation change has no dependency on the Codex runtime contract.
Current-main necessity: Fetched main has neither the bare modifier nor its compact-ring rule; its shared ring uses inset: -2px around a 20px slot. The latest-release glyph source also lacks the modifier; its stylesheet could not be retrieved, so no broader release appearance claim is made.
Findings None None.
Security None None.

How this fits together

The Control UI sidebar combines session activity and artwork into a shared leading indicator. Its renderer and styles determine how running and queued sessions appear beside their titles.

flowchart TD
  A[Session activity] --> C[Shared sidebar indicator]
  B[Row artwork] --> C
  C --> D{Artwork present?}
  D -->|Yes| E[Ring around artwork]
  D -->|No| F[Compact centered ring]
Loading

Before merge

None.

Agent review details

Security

None.

PR surface

Source +8, Tests +9, Docs 0. Total +17 across 4 files.

View PR surface stats
Area Files Added Removed Net
Source 2 9 1 +8
Tests 1 13 4 +9
Docs 1 1 1 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 4 23 6 +17

Review metrics

None.

Technical review

Best possible solution:

Keep compact bare rings in the shared renderer while preserving artwork rings, slot alignment, and existing activity semantics.

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

Not applicable as a functional bug: this adjusts presentation, and current source confirms the larger ring used for artwork-free rows.

Is this the best way to solve the issue?

Yes. A shared modifier and CSS rule address all bare-ring callers without duplicating rendering logic or changing layout.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against c79ad267ba62.

Labels

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. Reported browser captures and measurements exercise the actual glyph renderer and CSS with synthetic sidebar sessions: bare rings become 12px and artwork rings remain 24px. The maintainer confirms inspecting the captures before upload; independent attachment retrieval failed here, which remains a reviewer limitation.

Label justifications:

  • P3: This is low-risk sidebar appearance polish with no change to session execution or stored settings.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (linked_artifact): Reported browser captures and measurements exercise the actual glyph renderer and CSS with synthetic sidebar sessions: bare rings become 12px and artwork rings remain 24px. The maintainer confirms inspecting the captures before upload; independent attachment retrieval failed here, which remains a reviewer limitation.
  • proof: sufficient: Contributor real behavior proof is sufficient. Reported browser captures and measurements exercise the actual glyph renderer and CSS with synthetic sidebar sessions: bare rings become 12px and artwork rings remain 24px. The maintainer confirms inspecting the captures before upload; independent attachment retrieval failed here, which remains a reviewer limitation.

Evidence

What I checked:

  • Introduced scope: The verified merge-base-to-head delta contains only the glyph modifier, compact-ring CSS, browser geometry assertions, and sidebar documentation. Endpoint drift was excluded from ownership assessment. (ui/src/components/session-glyph.ts:23, 8bff85d95c3e)
  • Shared rendering boundary: Bare session and child indicators pass Lit’s nothing sentinel through the shared renderer; catalog rows do likewise. The 20px slot remains fixed while inset: 4px produces a centered 12px ring. Artwork, accessible labels, queued animation, and reduced-motion rules remain unchanged. This presentation change has no dependency on the Codex runtime contract. (ui/src/styles/components.css:284, 8bff85d95c3e)
  • Current-main necessity: Fetched main has neither the bare modifier nor its compact-ring rule; its shared ring uses inset: -2px around a 20px slot. The latest-release glyph source also lacks the modifier; its stylesheet could not be retrieved, so no broader release appearance claim is made. (ui/src/components/session-glyph.ts:21, c79ad267ba62)
  • Visual evidence and previous review: The supplied body describes before/after captures from the mocked Control UI dev server and measured bare rings shrinking from 24px to 12px while artwork rings remain 24px. The maintainer confirms synthetic fixtures and inspection before upload at improve(ui): shrink the sidebar running ring on rows without an icon #141383 (comment). Both supplied attachment URLs failed retrieval in this review; that reviewer limitation does not invalidate the reported browser observations. Production code is unchanged from the previous reviewed head; the new commit updates the geometry check. (8bff85d95c3e)
  • Relevant merged history: The supplied GitHub context verifies improve(ui): show sidebar running state on the row icon instead of the trailing edge #141098 as merged. Its change moved running state to leading glyphs; this PR provides a distinct size refinement. Main history also records Peter Steinberger’s adjacent unread-indicator work. Line-introduction attribution was not established. (ui/src/components/session-leading-indicator.ts:179, 701687f6b710)
  • Read-only validation: The updated browser assertion checks ring width, centering, and title distance from the unchanged slot. Diff whitespace checks passed and the checkout remained clean. Tests were inspected, not executed. (ui/src/e2e/session-management.trailing-state.e2e.test.ts:191, 8bff85d95c3e)

Likely related people:

  • steipete: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • 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.

History

Review history (1 earlier review cycle)
  • reviewed 2026-09-07T17:25:13.783Z sha 65f6763 :: blocked before merge. :: none

@steipete

steipete commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Maintainer note on the two before-merge items: the before/after captures were produced on the mocked Control UI dev server (fixture sessions only, no real data) and inspected before upload. The review environment cannot fetch GitHub user-attachments, which is why they could not be verified there. The measurements in the Evidence section were taken from the same Playwright run that produced the images: every bare ring measures 12px after the change, every ring around artwork still measures 24px.

The trailing-state check measured the gap between the running ring and
the title, which the compact bare ring changes. Assert the new contract
instead: a 12px ring centered in the 20px lead slot, with the title
keeping its distance from the slot rather than from the ring.
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Sep 7, 2026
@steipete
steipete merged commit 179694d into main Sep 7, 2026
225 of 227 checks passed
@steipete
steipete deleted the steipete/ring-size-styling-b15b6e branch September 7, 2026 18:33
@steipete

steipete commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Sep 8, 2026
…penclaw#141383)

* improve(ui): shrink the sidebar running ring on rows without an icon

Rows with no icon, avatar, or owner chip drew the running ring at the
full 24px glyph size, which read as an empty circle beside the label.
The glyph renderer now marks a content-less glyph as bare, and the ring
collapses to the 12px size the trailing spinner used to have, centered
in the same lead slot so it lines up with neighboring avatars and unread
dots. Rows with artwork keep the full ring around it.

Release note: the Control UI sidebar draws a compact running ring on
sessions that have no icon instead of a large empty circle.

* test(ui): pin the compact bare ring geometry in the sidebar e2e check

The trailing-state check measured the gap between the running ring and
the title, which the compact bare ring changes. Assert the new contract
instead: a 12px ring centered in the 20px lead slot, with the title
keeping its distance from the slot rather than from the ring.
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: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS 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.

1 participant