Repository navigation
Agent chat: header tools float in a subtle glass capsule once text scrolls under them - #34325
teamleaderleo wants to merge 7 commits into
Conversation
…ls under them (one-tab pane) Leo, 2026-11-03: "surely we can do a nice and unobtrusive apple glass type thing that's super subtle until there's text or something beneath right ... if u just look at how chatgpt ios does things". One capsule behind the tools, invisible at rest, faded in from the scroller's existing data-fade-top: the shared glass tint, popover frost and rim. Pure CSS, no new scroll work, no layout change. Gallery agent-pane.header/glass-* (pill chosen; circles and always-faint alternatives). Test: test/chat-header-glass.test.ts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Pending: CI is running on Last result: Unclear: Written by web and size checks: green |
|
Owned by an agent session · session |
|
Review (codex gpt-6.1-sol xhigh, router-review): BLOCK at 68599ee BLOCK at 68599ee Visual verdict: no images; Leo tries the build
Follow-ups:
|
Review: the two-tab fixture drops data-solo-tab, so the pseudo-element does not exist and its computed opacity is 1; assert content none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
Found 53 test failures on Blacksmith runners: Failures
...and 43 more test failures. View all on Blacksmith: run 41744562261, run 41744562094
|
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (codex gpt-6.1-sol xhigh, next-review, since=20261103T233735Z): BLOCK at 02083b9
BLOCK at 02083b9
Visual verdict: no images; Leo tries the build
-
[P1] [blocking]
webviews/src/agent-session/acpmux/header/header.css:189andheader.gallery.ts:67: The new rawz-index:-1values and gallery backdrop filters produce three layer-check violations. The checker passes before this diff and exits 1 at head. Existingwebviews/test/check-layers.test.ts:88asserts exit 0, so tests fail despite the branch’s advisory style checks. Usevar(--layer-backdrop)in both files and add reduced-transparency handling for the gallery circles. -
[P2] [follow-up]
webviews/scripts/agent-pane/capture-header-glass.mjs:1: Publish usable light/dark captures at rest and over text; none were available for visual review.
…layer token check:design-tokens and check:layers: -4px block and inline insets, var(--cmux-motion-micro) with var(--cmux-ease-out), z-index var(--layer-backdrop); the gallery's circles variant keeps a Reduce Transparency fallback. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
Review (codex, router-review): SHIP at 78ed940 Reviewer: codex gpt-6.1-sol xhigh, fast tier. SHIP at 78ed940 Visual verdict: SHIP — reviewed all supplied images; the capsule fits ChatGPT/Claude’s restrained floating controls. Existing before/after pairs are unchanged. No actionable correctness findings. Script syntax, layer, and motion checks passed; browser tests could not run because Bun is unavailable. Follow-ups: none |
…psules allowlist) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
A newer verdict blocks 47668e5 (no independent SHIP at the head).
…/header-tools-glass
|
Closing without merging. The surface this styled is gone from the base. #34327 shows a pane's tab strip at every tab count, so the transcript always starts below the tab row. #34392 then removed the lone-tab solo row ( The branch |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, 2026-11-03:
In a one-tab pane (#33142) the transcript runs up under the tab row, so text scrolled right under the header tools and collided with them. Now the tools sit in one glass capsule, as ChatGPT iOS floats its buttons:
data-fade-top): one rounded pill fades in behind the whole group in 160 ms. It uses the shared glass tint (--ds-glass-plain-tintof the theme surface),--ds-glass-popover-blur, the--glass-edgehairline and--elevation-1. Words under the tools go soft and dim, and the glyphs stay legible.::beforebehind the group, and no box moves; the test checks this. It adds no JS and no scroll work: the selector reuses the transcript's existingdata-fade-topthrough:has(). No observer or timer.Gallery
agent-pane.header:glass-pill-restandglass-pill-over-text: chosen.glass-none-over-text: before.glass-faint-restandglass-faint-over-text: always faint. Rejected: it puts a shape back behind the tools at rest.glass-circles-restandglass-circles-over-text: a disc per button. Rejected: four touching discs on a 26px pitch, the ⋮ becomes an oval, and it is busier than ChatGPT's one pill.Design references:
cmux/live/panels-subagent-glass-buttons-no-close,cmux/live/transcript-subagent-pill-no-close-button(the ChatGPT iOS reference),cmux/live/toolbar-session-info-button-background-2,cmux/live/toolbar-session-info-button-background(the plates Leo disliked).Design spec:
design/chat-header.md(leo-workspace).Tests:
webviews/test/chat-header-glass.test.ts(Chromium and WebKit) checks:Captures:
webviews/scripts/agent-pane/capture-header-glass.mjs.Agent session: agent session
🤖 Generated with Claude Code
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Makes the agent chat header tools float in a single frosted-glass capsule when transcript text scrolls under them, so rows no longer collide with the buttons in a one-tab pane.
The capsule stays invisible at rest (tools remain plain glyphs), fades in via the motion scale's micro token once text passes beneath, and sits on a
::beforebehind the buttons so nothing moves. It's pure CSS built on the transcript's existingdata-fade-top— no JS or scroll work. Reduce Transparency turns the capsule opaque without blur; Reduce Motion skips the fade. Multi-tab panes keep the plain row. Galleryagent-pane.headercovers the chosen pill over text plus always-faint and per-button circles alternatives; tests verify the capsule appears only over scrolled text and that the pill is a backing surface, not a control, on the no-capsules allowlist.Written for commit f63c77a. Summary will update on new commits.