Repository navigation
Agent composer: top strip variants (default, bump, plain) behind a Debug toggle - #20984
Conversation
agentPane.debug.topStripStyle (default | bump | plain) picks what stands on the composer card's top edge: the new chat's location strip, the New Tab's, and a started chat's queued prompts. The app sets data-top-strip on <html> for bump and plain; default sets nothing, so today's tab is unchanged. - bump (#20789): the strip, or the queue with no strip, stands 4px above the card inside its own closed hairline; the card draws its whole rim. - plain: no fill, rim or tab; muted text 4px above the card with its ink on the card's content edge (where the prompt's text starts). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Found 3 test failures on Blacksmith runners: Failures
|
|
Bead |
Gallery139 states changed: agent-pane.transcript/long-code, agent-pane.chat-width/standard, agent-pane.artifact-panel/markdown, agent-pane.transcript/shell-grouped-commands, agent-pane.edited-files-settings/changed, ... · 57 play checks failed Diff page and renders (the run's 133 more on the diff page. Live preview (follows this branch; start it with
Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):
314 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes. |
|
Unclear: CI failed on
Not re-run automatically: Written by |
…/top-strip-variants # Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneTunables.swift
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
red: web / Web status; do not merge until green; see lane-rules |
|
Agents: |






The design judge needs to compare looks for what stands on top of the agent composer: the location strip (folder · machine · branch) on a new chat and the New Tab, and the queued prompts once a chat has started. Today there is one look (a tab of the card's fill, flush on the card's top edge, sharing its rim), and #20789 proposed changing it outright.
This adds one Debug setting,
agentPane.debug.topStripStyle(Debug Settings > Pages), with three values. New agent tabs read it.default: today's tab. The app sets nothing on the page, so it renders exactly as before.bump: Composer: the location strip stands a few px apart from the card #20789's look. The strip (or, mid-chat, the queue) stands 4 px above the card inside its own closed hairline, and the card draws its whole rim.plain: no fill, no rim, no tab. Muted text floats 4 px above the card, its first ink on the card's content edge (where the prompt's text starts: 16 px in the chat, 18 px in the New Tab), as Codex and Claude Code desktop show context above their prompt. A queued row's actions take their own room at its end instead of fading over a tray.Nothing changes in Settings or Labs. This supersedes #20789, which changed the default look.
How it works
AgentPaneTunables.topStripStyleis a choice tunable. Forbumpandplainthe app setsdata-top-stripon the page's<html>(both hosts, through the same document attributes asagentPane.debug.foldLongThoughtsfrom #20948). Every variant rule incomposerLocation.cssis scoped under:root[data-top-strip], so without the attribute none of it applies.Borrowed from AI Elements
plainfollows AI Elements' restraint: an addon above the prompt (InputGroupAddon align="block-start") is plaintext-muted-foregroundwith no border or fill of its own, sharing the field's inline padding, so its text lines up with the prompt's. Muted at rest, the text color on hover (the strip's existing ghost buttons).Stills
Gallery (
agent-pane.composer-strip, variantsproject= new chat andqueued= mid-chat with two queued prompts),frame=component, toggle set on<html>.Contact sheets (all three values side by side):
Catppuccin Latte
Catppuccin Mocha
Per value:
Catppuccin Latte
defaultbumpplainCatppuccin Mocha
defaultbumpplainTests
webviews/test/composer-top-strip-variants.test.ts(Chromium): for the new chat strip, the mid-chat queue and the New Tab strip, at 760 and 400 px, each value draws the expected structure.default: flush (gap 0), filled, the hairline on the top and sides only, the card's rim masked under a strip.bump: a 2 to 6 px gap, filled, one closed hairline ring, the card's rim whole.plain: a 2 to 6 px gap, no fill, no rim, first ink within 1 px of the card's content edge. Ran locally withCMUX_BROWSER_TESTS=1together withcomposer-location-strip,agent-pane-bottom-stackandcomposer-edges: 46 pass, 0 fail (on the merged base).AgentPaneTopStripStyleTests(Swift Testing):defaultsets no attribute,bump/plainsetdata-top-stripbesidefold-long-thoughts, and the tunable is listed in Debug Settings.swift test --filter AgentPaneTopStripStyleTests: 3 pass.bun run checkinwebviews/passes for the changed files.🤖 Generated with Claude Code