Skip to content

Agent composer: topStripStyle=tray, a filled tray tucked under the card (Debug toggle) - #21069

Merged
teamleaderleo merged 11 commits into
feat-cmux-nextfrom
cg-composer/top-strip-tray
Oct 16, 2026
Merged

teamleaderleo merged 11 commits into
feat-cmux-nextfrom
cg-composer/top-strip-tray

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Adds tray as a fourth value of the Debug toggle agentPane.debug.topStripStyle (default | bump | plain | tray). The default stays default, so nothing changes unless someone picks tray in Debug settings.

With tray, the new chat's location strip, the New Tab's strip and a started chat's queued prompts become one filled tray. It sits 8 px in from the card's sides and tucks 12 px under the card's top edge. The card is raised over it, with its whole rim. The look comes from cg-design-judge's top-strip board (tray won 3-1, 185/240), plus the judge's three fixes:

  • The folder icon and the queue numbers sit on the prompt's text column: 16 px into the chat card, 18 px into the New Tab card. Measured as the icon box plus its 1.5 px ghost bearing (ui/ghost.css).
  • The new chat strip and the queue share one inset and one tuck, defined once (--acpmux-tray-inset, --acpmux-tray-tuck).
  • In light themes the fill is one small step from the card's near-white surface (light-dark(text 5% over --acpmux-composer-surface, --acpmux-composer-tray)), not the heavy tray tone. Dark themes keep the composer's tray tone.

The CSS is scoped under html[data-top-strip="tray"] in composerLocation.css. The Swift side adds the enum case and its Debug title.

Tests

  • 5c44e05 (tests only): composer-top-strip-variants.test.ts runs tray on the new chat strip, the queue and the New Tab strip, at 760 and 400 px, in Catppuccin Latte, Apple System Colors Light and Catppuccin Mocha. Each case checks four things: the tray is tucked under the card with the card on top; the first ink is within 0.5 px of the prompt's text; the fill differs from the card's in light themes; the insets are symmetric. A separate test checks that the new chat strip and the queue share one inset. Locally: 20 fail before the fix. AgentPaneTopStripStyleTests lists the four values in order and doesn't compile without the case.
  • ba80ddc (implementation): 47/47 browser tests and 4/4 Swift tests pass, as does bun run check. The default and bump cases in the same file are unchanged and still pass.
  • The test file declares a 300 s per-file limit (// cmux-web-test-timeout: 300). Its 47 browser cases, each a fresh page at about 2 s on the CI runner, ran past the default 120 s.
  • Tagged build cg-composer: debug.tunables set agentPane.debug.topStripStyle tray is accepted and persists across a relaunch. A new agent tab's page matches html[data-top-strip="tray"] .acpmux-composer-strip. Screen capture isn't permitted on that host, so the stills below are gallery renders.

Stills

Hero, light and dark (760 px, new chat):

New chat

Theme 760 px 400 px
Catppuccin Latte
Apple light
Catppuccin Mocha

Queued (started chat)

Theme 760 px 400 px
Catppuccin Latte
Apple light
Catppuccin Mocha

Top-left corner, zoomed (Latte, Apple light, Mocha; new chat then queued):

🤖 Generated with Claude Code

teamleaderleo and others added 6 commits October 15, 2026 04:12
The default tab's foot (.acpmux-composer > .acpmux-composer-strip::after,
side hairlines below the strip) still paints under data-top-strip=plain:
a short stroke stands in the 4 px gap above both of the card's top
corners on the new chat strip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Under agentPane.debug.topStripStyle=plain the default tab's foot
(.acpmux-composer > .acpmux-composer-strip::after) kept its side
hairlines, so a 2.5 px stroke stood in the gap above both of the card's
top corners, visible in light themes. plain now drops the foot; default
and bump are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fourth Debug value: the strip and the queue share one inset, tuck
under the card's top edge with the card's rim drawn over them, put
their first ink on the prompt's text column (within 0.5 px), and take
a fill of their own in light themes. Chromium, Latte, Apple light and
Mocha, at 760 and 400 px; Swift lists the value after the others.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A fourth agentPane.debug.topStripStyle value (default unchanged). The
new chat's location strip, the New Tab's and a started chat's queue
become one tray: 8 px in from the card's sides, tucked 12 px under its
top edge, the card raised over it with its whole rim. Per
cg-design-judge's verdict: the folder icon and the queue numbers sit
on the prompt's text column (16 px chat, 18 px New Tab), one inset for
the strip and the queue, and a light-theme fill one small step from
the card's surface instead of the heavy tray tone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: be376ce2-10b7-47a0-94e0-47c0998c988f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-qkuez created for this PR by the cmux coordinator.

@blacksmith-sh

blacksmith-sh Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
test/check-system-blue.test.ts/check-system-blue.test View Logs
test/check-system-blue.test.ts/check-system-blue.test View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

123 states changed: agent-pane.artifact-panel/versions, agent-pane.artifact-panel/markdown, agent-pane.transcript/long-code, agent-pane.header-tools/customize-menu, agent-pane.composer-turn-cycle/cycle, ... · 53 play checks failed

Diff page and renders (the run's gallery-pr artifact)

State Before · after
agent-pane.artifact-panel/versions (Apple System Colors, chromium)
agent-pane.artifact-panel/markdown (Apple System Colors, chromium)
agent-pane.transcript/long-code (Apple System Colors Light, webkit)
agent-pane.transcript/long-code (Apple System Colors Light, webkit)
agent-pane.transcript/long-code (Apple System Colors, chromium)
agent-pane.transcript/long-code (Apple System Colors Light, chromium)

117 more on the diff page.

Live preview (follows this branch; start it with scripts/gallery-live.sh up <branch> from an hq checkout):

  • agent-pane.artifact-panel/versions: /wt/cg-composer-top-strip-tray/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/versions
  • agent-pane.artifact-panel/markdown: /wt/cg-composer-top-strip-tray/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/markdown
  • agent-pane.transcript/long-code: /wt/cg-composer-top-strip-tray/?entry=agent-pane.transcript#/agent-pane.transcript/long-code
  • agent-pane.header-tools/customize-menu: /wt/cg-composer-top-strip-tray/?entry=agent-pane.header-tools#/agent-pane.header-tools/customize-menu
  • agent-pane.composer-turn-cycle/cycle: /wt/cg-composer-top-strip-tray/?entry=agent-pane.composer-turn-cycle#/agent-pane.composer-turn-cycle/cycle
  • agent-pane.composer/context-menu: /wt/cg-composer-top-strip-tray/?entry=agent-pane.composer#/agent-pane.composer/context-menu
  • 62 more on the diff page

Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):

  • agent-pane.artifact-panel/versions (Apple System Colors, chromium): play: no element for button "Open preview"
  • agent-pane.artifact-panel/markdown (Apple System Colors, chromium): play: no element for button "Open preview"
  • agent-pane.artifact-panel/versions (Apple System Colors Light, webkit): play: no element for button "Open preview"
  • agent-pane.new-chat-no-shift/send-to-streaming (Apple System Colors, webkit): step 2 press Enter: anchor .acpmux-model moved 49.3 px (limit 1)
  • agent-pane.bottom-stack/trust-then-individual (Apple System Colors Light, chromium): step 1 click button "Trust": layout shift 0.0924 (limit 0) · step 3 click .acpmux-access-grant-remove: layout shift 0.0924 (limit 0)
  • agent-pane.bottom-stack/trust-then-permission (Apple System Colors, chromium): step 1 click button "Trust": layout shift 0.2200 (limit 0) · step 3 click .acpmux-access-grant-remove: layout shift 0.2200 (limit 0)
  • 271 more on the diff page

361 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes.

2100 unchanged · base bf891a8 · head 2b06f19

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

red: web / Web status; do not merge until green; see lane-rules
red: web / react-apps-check; do not merge until green; see lane-rules

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Unclear: web / react-apps-check failed: no known signature; failed step: Test webviews. This PR merged before its CI finished: fix forward on main.

CI failed on 2b06f19b10 (run 38865237383 attempt 1): 1 unknown.
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped.

Job Verdict Why
web / react-apps-check unknown no known signature; failed step: Test webviews

Not re-run automatically: web / react-apps-check is not a machine failure.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

CI fast guards failed on cb7bf8f4e1 (https://github.com/manaflow-ai/cmux/actions/runs/38761028093). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally. This comment is updated in place on each push.

teamleaderleo and others added 4 commits October 15, 2026 07:15
With tray the file runs 47 browser cases, each a fresh page at about 2 s
on the CI runner, past the default 120 s per-file limit
(run-webviews-tests.sh).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…/top-strip-tray

# Conflicts:
#	webviews/test/composer-top-strip-variants.test.ts
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Design check from the top-strip board (cg-design-judge), against the PR's stills: all three fixes hold.

  • Text column: the folder icon and the queue numbers start on the prompt's text column at 760 in Apple light and Mocha.
  • One inset: the new chat strip and the queue share the same inset and tuck.
  • Light fill: the light-theme fill is now one quiet step off the card instead of the heavy grey the judges flagged.

Non-blocking: in Mocha the tray fill sits very close to the card fill, so the tray reads mostly by its outline. That's fine for a Debug option; worth a slightly darker step if tray ever becomes the default. #21031's corner is clean in the after still too.

@teamleaderleo
teamleaderleo merged commit be15287 into feat-cmux-next Oct 16, 2026
107 of 109 checks passed
@teamleaderleo
teamleaderleo deleted the cg-composer/top-strip-tray branch October 16, 2026 07:14
@github-actions

Copy link
Copy Markdown
Contributor

cmux-next tour of 2b06f19b108b3ef4febaed79c800d887f1365ecf (run)

The tour job failed before the tour ran (build or setup); the run log has the output.

The tour produced no media.

Tours are data in scripts/cmux-next/media/tours: add a step or a tour file to show your feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant