Skip to content

CmuxNext: composer location strip lines up with the prompt; middle-cut folder, icon-only computer when narrow - #20791

Merged
teamleaderleo merged 119 commits into
feat-cmux-nextfrom
cg-composer/location-strip
Oct 15, 2026
Merged

teamleaderleo merged 119 commits into
feat-cmux-nextfrom
cg-composer/location-strip

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

The composer's location strip (folder, computer, branch on the card's top edge) sat 12 px right of the prompt's first letter, a "·" floated between the folder's chevron and the computer, and in a narrow pane it cut to "atla…" and "This…". The compact-composer design panel flagged all three. Since #20869 the strip shows only on a new chat before its first send, so this styling is the new-chat strip's.

Now:

  • The folder icon sits over the prompt's first letter and the branch chevron over the prompt's last column. The strip stands 9 px in from the card's sides, inside the card's 18 px corner; a 2.5 px foot in the strip's own fill and side hairlines covers the corner's drop, so no page shows between the strip and the card.
  • The "·" is gone. Folder and computer are two ghost buttons 2 px apart, told apart by their icons.
  • The strip steps at pane widths (compact-composer verdict 4), at or under:
    • 460 px: "This Mac" becomes the laptop icon alone. Its name stays in the tooltip and in the accessible label ("Computer: This Mac", on the menu button and the read-only face).
    • 340 px: the folder takes a short cap and cuts in the middle, keeping both ends ("atla…checkout"). The split works on code points, so it never splits a surrogate pair.
    • The branch keeps its name at every step; it shrinks only past half the strip.
      The widths are literals that match COMPOSER_FIT_STEPS (machineIconOnly, folderMiddleTruncate) in composerRowFit.ts; footer PR cmux-next composer: footer swaps whole units sooner, never an ellipsis (folds in #20548) #20802, which adds that table, has not merged, so a comment in composerLocation.css names it.
  • Above 340 px a folder cuts only when the strip runs out of room, and then in the middle too: the controls' fixed 190 px cap (145 px under a 480 px pane) no longer cuts a name beside empty strip.

Only the chat composer's strip (.acpmux-composer) moves to the prompt's edges; the New Tab composer keeps its own insets. The footer row is unchanged, and no hotkeys changed.

The steps (gallery agent-pane.composer-strip, new chat)

Computer at 461 / 460 px (project):

461 460
Latte
Mocha

Folder at 341 / 340 px (mid-folder, "atlas-checkout"):

341 340
Latte
Mocha

A long folder ("atlas-web-checkout-service", long-folder) whole at 760 px and cut in the middle at 290 px:

760 290
Latte
Mocha

(The footer row's "O." / "M." in the narrow stills is the footer's own fit, which #20802 reworks; it is not part of this PR.)

Tests

  • test/composer-location-strip.test.ts (Chromium, gallery stage):
    • Boundaries: at 461 px the computer's name shows whole with no sub-pixel ellipsis; at 460 px it is the icon alone, with "Computer: This Mac" as its accessible label and tooltip. At 341 px "atlas-checkout" shows whole; at 340 px its head is cut and "checkout" stays whole inside the strip. The branch is never clipped.
    • At 420 and 760 px the folder icon's ink and the branch chevron's ink are within 2 px of the prompt's edges, and there is no "·".
    • The long folder shows whole at 760 px and keeps "service" at 290 px.
    • A pixel column through the card's corner shows no page tone between the strip and the card.
  • src/agent-session/acpmux/ComposerContext.test.ts: splitForMiddleTruncation at the edges, including astral characters.
  • test/new-tab-composer-layout.test.tsx follows the computer's new accessible label.
  • bun run check in webviews/ is clean.

Localization audit: no new strings. The accessible label and tooltip reuse composer.computer and the existing machine label.

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 14, 2026 16:58
Boundary tests for the composer's location strip: its folder icon and branch
chevron line up with the prompt's edges, no gap shows where it stands inside
the card's corner, no "·" floats between folder and computer, and at
290-300 px the folder cuts in the middle, the computer shows its icon alone
and the branch keeps its name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ut folder, icon-only computer when narrow

- The strip's folder icon sits over the prompt's first letter and the branch
  chevron over its last column (strip inset 9 px, a foot covers the card's
  corner drop so it still stands on the card).
- The floating "·" between folder and computer is gone; the two are ghost
  buttons 2 px apart, told apart by their icons.
- A folder name cuts in the middle ("atl…web"); below a 320 px strip the
  computer shows its icon alone with its name in the tooltip and label; the
  branch keeps its name.

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

coderabbitai Bot commented Oct 14, 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: 975f3237-28de-4c35-a942-2d2a72e386c0

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

teamleaderleo commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator Author

Visual preview of 80007f1: in the maintainers' private review feed.

teamleaderleo added a commit that referenced this pull request Oct 15, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

… tail keeps the last word

The strip's folder and branch still carried the controls' fixed cap (190 px,
145 px under a 480 px pane), so a long folder name cut beside empty strip,
and a long branch cut before half the strip. They now cut only to fit. The
computer never shrinks (a sub-pixel shrink put an ellipsis on "This Mac").
The middle cut keeps the name's last word when it is 3 to 10 characters
("atlas-we…service", not "…ervice"). Adds a long-folder gallery variant and
boundary tests at 300, 400 and 760 px.

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

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

559 states changed: agent-pane.transcript/long-code, agent-pane.artifact-panel/markdown, agent-pane.artifact-panel/html, pages.home-channels/link-no-resolver-timeline, agent-pane.composer-context/computer-menu, ... · 16 new states · 70 play checks failed

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

State Before · after
agent-pane.transcript/long-code (Apple System Colors, webkit)
agent-pane.transcript/long-code (Apple System Colors, webkit)
agent-pane.artifact-panel/markdown (Apple System Colors, webkit)
agent-pane.transcript/long-code (Apple System Colors Light, webkit)
agent-pane.artifact-panel/html (Apple System Colors Light, webkit)
pages.home-channels/link-no-resolver-timeline (Apple System Colors, chromium)

553 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.transcript/long-code: /wt/cg-composer-location-strip/?entry=agent-pane.transcript#/agent-pane.transcript/long-code
  • agent-pane.artifact-panel/markdown: /wt/cg-composer-location-strip/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/markdown
  • agent-pane.artifact-panel/html: /wt/cg-composer-location-strip/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/html
  • pages.home-channels/link-no-resolver-timeline: /wt/cg-composer-location-strip/?entry=pages.home-channels#/pages.home-channels/link-no-resolver-timeline
  • agent-pane.composer-context/computer-menu: /wt/cg-composer-location-strip/?entry=agent-pane.composer-context#/agent-pane.composer-context/computer-menu
  • agent-pane.edited-files-settings/defaults: /wt/cg-composer-location-strip/?entry=agent-pane.edited-files-settings#/agent-pane.edited-files-settings/defaults
  • 108 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/markdown (Apple System Colors, webkit): play: no element for button "Open preview"
  • agent-pane.composer-context/computer-menu (Apple System Colors Light, chromium): play: no element for button "Computer"
  • agent-pane.composer-context/computer-menu (Apple System Colors Light, webkit): play: no element for button "Computer"
  • agent-pane.composer-context/computer-menu (Apple System Colors, chromium): play: no element for button "Computer"
  • agent-pane.composer-context/computer-menu (Apple System Colors, webkit): play: no element for button "Computer"
  • agent-pane.composer-context/computer-menu (Apple System Colors Light, chromium): play: no element for button "Computer"
  • 349 more on the diff page

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

1995 unchanged · base 4197cb7 · head 80007f1

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

all web/size checks green

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Not verified: macOS jobs did not run: compile and app tests were skipped on 80007f12ff; ci-status is green without them.

CI passes on 80007f12ff (run 38701146861 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

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 passes on 80007f12ff (https://github.com/manaflow-ai/cmux/actions/runs/38701146861). This covers only the fast guards, not CI: CI's result is the ci-status check, and the CI failure attribution comment names any failing test.

lawrencecchen and others added 15 commits October 14, 2026 20:33
…mulate {fit}, palette, device menu, CEF + WebKit) (cx-va1wd)

A browser tab can fit a desktop layout instead of a device: the daemon
keeps {fit: {aspect: [16, 9]}} on the tab and shows extra.emulation
{mode: fit, fit {aspect, min_width 1024, max_width 1920}}. The engine lays
the page out at clamp(view height x 16/9, 1024, 1920) CSS px, scales it to
the view width, and makes the layout as tall as the view over that scale,
so the page fills the pane with no bars. It recomputes on resize without a
reload. CEF sends the Emulation calls with the computed size and scale;
WebKit sizes the web view and scales its container. Surfaces: the
browserFitDesktop toggle (palette with a check, context menu, cmux browser
fit-desktop, MCP), a row in Emulate Device..., and cmux tab <tab> emulate
--fit 16:9 (MCP browser.tab.emulate fit). Palette rows of toggles that are
on show a check.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d by itself; responder source counts the current event only during its dispatch (cx-3hw0i.2)

A subagent pane's page focuses its composer as it loads; WebKit then asks the
window to make its web view first responder (WebPageProxy::makeFirstResponder,
seen in debug stacks of nx job 1014-202829-5378d2), and the focus model took
that as the user's choice: the new pane got the keyboard and the daemon focus
although its move ran with keep_focus. ShellWindow now refuses that request
when no input event is in dispatch, the focus model is not applying its own
target or waiting on an expectation, and the page is not in the focused pane.
FocusEvent.Source.current read NSApp.currentEvent, which stays the last key
after its dispatch, so such a change was logged as keyboard input; it now
counts the event only inside sendEvent.
browser-fit-v1 gates the action and the menu row, so an older daemon
never sees an unknown fit field. A fit that shows the page as is keeps the
WebKit view at the container's size (it stayed 0x0 or stale). The palette
check comes from a new opt-in, non-refusing Action.paletteState, so other
toggles keep their icons and no refusal shows while the palette builds.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… per operation in cases.rs) (cx-va1wd)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…web view the keyboard inside an input event, as AppKit's click does (cx-3hw0i.2)
… inline optional closure crashed the type checker) (cx-va1wd)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…matched daemon fails closed, not only codex (review note of 1ae9e97)
…d (details.extra.message), never a bare 'internal: internal'
…daemon (shared_acpmux already runs in the suite step)
lawrencecchen and others added 11 commits October 15, 2026 00:01
… (cx-hmrbt)

The signal probe test ran `ps -o ignored= -o blocked=` in the PTY child.
macOS ps has no `ignored` keyword: it prints its keyword list, and the
test failed with ParseIntError on every Mac. The product was correct.

The PTY child is now a third copy of the test binary that reads its own
dispositions (sigaction) and mask (pthread_sigmask) and prints them as two
hex bit sets. The assertion is stronger: the whole mask must be empty, not
only SIGHUP.
…(cx-ncc.106) (#20922)

* test: no row Copy over the Edited files card's controls (cx-ncc.106)

Fails on base: with focus on a card control (a click or Tab), the row's
floating Copy shows on :focus-within at the row's top-right, over View changes.

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

* fix: no floating row Copy over the Edited files card (cx-ncc.106)

The row's floating Copy sits at the row's top-right and shows on
:focus-within, so a click or Tab onto View changes or Show more put it
over View changes. The card keeps its own controls in that corner and the
turn footer already has Copy; a selected range still copies the card.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A failed Windows daemon build with a successful acpmux job left the acpmux exe
in assets/cmux-tui (present=false exit): the forbid check then failed publish
and the macOS/Linux tree. Remove every Windows file there before that exit.
The post-upload cmux-tui/<sha> and latest checks forbid the exe too. No acpmux
build for pull_request_target runs (publish-pr-tree publishes no Windows files).
The optional companion fetch tests 'is not None', as the publisher does.
…er (cx-gzh.31) (#20888)

* test(cmux-tui): a closed saved group reopens linked and in order (cx-gzh.31)

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

* fix(cmux-tui): a reopened tab group keeps its saved-group link and its order (cx-gzh.31)

A close records the group's saved-group link with its archive. Reopen
links the group it forms again back to that saved group, unless the saved
group is gone or another live group took it. Tabs a later partial reopen
brings back rejoin the live group in strip order (each is back at its
recorded place) instead of at the group's end.

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

* fix(cmux-tui): a partial reopen never shrinks the saved group; import SurfaceId (cx-gzh.31)

Review fixes: rejoin and relink no longer rebuild the saved record from
the tabs reopened so far (it still names every closed tab), and relink
checks the saved group and its other links inside the commit. The test
reads the saved group between the two reopens.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
#20478)

* test(acpmux): a local slash command or an unanswered cancel ends the turn

Red: Claude Code answers /permissions, /config and /clear with a result
that has no turn and no API time; the adapter takes it for a resumed
process's startup noise and the prompt never ends. And an agent that
never answers session/cancel keeps acpmux's turn open.

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

* test: Stop always frees the chat; Claude terminal-only commands stay in the composer

Red: acpmux's forced end says nothing in the pane, a turn still open after
Stop keeps showing as working, and /permissions goes to Claude. The hub
test moves to its own file (hub_integration.rs is at its line budget).

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

* fix: a local slash command or an unanswered Stop no longer softlocks a chat

- acpmux's Claude adapter: a result with no turn and no API time is startup
  noise only before the prompt's output; a local command's synthetic reply
  (or /clear's reset) comes first, so its result ends the prompt.
- acpmux ends a cancelled turn whose agent does not answer within 3 s, as
  cancelled with cancelForced (hub/cancel.rs).
- The pane says so, and a turn still open 5 s after Stop stops showing as
  working.
- In a Claude chat the composer keeps /permissions, bare /model, bare
  /config and the other terminal-only commands, and names the control to use.

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

* test(acpmux): compare the response id without allocating

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

* fix: show the forced-Stop notice after the turn's fold, not inside it

The notice row went in before the turn summary, so the collapsed
"You stopped" fold hid it.

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

* test: a Stop the agent answered leaves the next turn alone

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

* fix: an answered Stop no longer flags the next turn

Stop's grace timer outlived the turn it was for, so a prompt sent within
5 s of an answered Stop got the 'didn't answer Stop' notice and stopped
showing as working.

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

* test(acpmux): a late result for a stopped prompt ends only that prompt

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

* fix(acpmux): a stopped turn's late result no longer ends the next prompt

When acpmux ends a turn Claude Code has not answered Stop for, the next
prompt can go out before Claude Code's result for the stopped one. That
result answered every pending prompt, the new one included, and each
later turn ended one result early. Prompts still pending when a new one
goes out are now answered alone by a result that comes before Claude
Code reads the new prompt.

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

* test: a Claude Code variant's chat keeps /permissions in the composer

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

* fix: Claude Code variants keep terminal-only commands in the composer too

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

* test: a turn that starts after Stop is never judged by that Stop

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

* fix: a turn that starts after Stop is never judged by that Stop

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

* test: a transcript rebuild never undoes Stop's grace

Red: a lag resync inside Stop's grace replays the stopped turn's own
turn_started and cancels the grace (no forced-Stop notice after 10 s), and
one after the grace gave up shows the turn working again (Stop count 1).

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

* fix: a transcript rebuild never undoes Stop's grace

Stop records the last seq it saw; only a turn_started, turn_end or
turn_result after it ends the grace or the give-up. rebuild() (loadOlder,
lag resync) replays older turn events through reduce(), which cleared the
timer and reset stopGaveUp, so the chat showed working forever against an
acpmux that never ends the turn. Keeping it in reduce() still lets a real
turn end that arrives only through a lag resync answer Stop.

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

* chore: regenerate pane strings on the merged head

The base merge kept a stale generated strings.json that dropped base's
subagent and summary keys.

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

* chore: keep base's pane strings after the base merge

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

* chore(next): PR autofix at 6ef7316

- vp fmt webviews/src/pages/home-channels/AttachmentViews.tsx
- vp fmt webviews/src/pages/home-channels/Composer.tsx
- vp fmt webviews/src/pages/home-channels/HomeChannelsPage.tsx
- vp fmt webviews/src/pages/home-channels/attachmentService.ts
- vp fmt webviews/src/pages/home-channels/icons.tsx

Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38581725347

* test: composer gallery plays wait out a cold Vite's first compile

The first page of each composer play file waits on Vite compiling the
gallery, which takes over 30 s on a busy runner: composer-search-files-key
and composer-capture failed their first case on the readiness wait alone
(the play passes once the frame is ready).

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

* chore: keep base's pane strings after the base merge

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

* test: a surface that fills its pane may cast no shadow

Home channels' narrow layout (e111f3f, one pane below 720 px) gives
the full-width thread sheet box-shadow: none, and the elevation test read
every .lg-sheet shadow as needing --elevation-2. A surface still has to
cast its step somewhere, and any shadow it casts is that step.

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

* Revert "test: a surface that fills its pane may cast no shadow"

#20731 fixes this base red more strictly; #20478 takes it from base.

This reverts commit 1d67e29.

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

* chore(next): PR autofix at bdfdc2d

- vp fmt webviews/src/pages/home-channels/HomeChannelsPage.tsx

Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38636316112

* chore(next): PR autofix at af7c4af

- regenerated plans/cmux-next/action-surfaces.json
- regenerated plans/cmux-next/actions.md

Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38688070894

* chore(next): PR autofix at bf76b27

- regenerated webviews/src/agent-session/acpmux/generated/strings.json

Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38694056510

* Restore base's acpmux strings after the base merge

The merge reordered the catalog and dropped base keys; it is now base's
text plus this PR's four keys, and generated strings are regenerated.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: cmux-autofix[bot] <cmux-autofix[bot]@users.noreply.github.com>
… middle-cut), boundary tests

At or under a 460 px pane the computer shows its laptop icon alone, its
name in its accessible label and tooltip; at or under 340 px the folder
takes a short cap and cuts in the middle, keeping both ends. Literals that
match COMPOSER_FIT_STEPS (#20802 not merged yet). Since #20869 only a new
chat has the strip, so the long-folder fixture is a new chat and a
mid-folder fixture holds the 341/340 boundary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 15, 2026 07:30 — with GitHub Actions Inactive
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 15, 2026 07:47 — with GitHub Actions Inactive
teamleaderleo added a commit that referenced this pull request Oct 15, 2026
@teamleaderleo
teamleaderleo merged commit c50480f into feat-cmux-next Oct 15, 2026
116 of 119 checks passed
@teamleaderleo
teamleaderleo deleted the cg-composer/location-strip branch October 15, 2026 09:26
teamleaderleo added a commit that referenced this pull request Oct 15, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 15, 2026
Base's #20791 now gives the computer its own rule (its name in a wide
pane, its icon alone at 460 px or less), so this keeps base's location
strip whole and drops this PR's always-icon local computer; the model
chip and the quiet default lock stay.

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

Copy link
Copy Markdown
Contributor

cmux-next tour of 80007f12ff12842c055754fd696dc402ade9f95a (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.

teamleaderleo added a commit that referenced this pull request Oct 15, 2026
#20995)

#20791 renamed the button "Computer: This Mac", so the computer-menu
state's setup no longer found it and composer-type-scale failed on base.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 15, 2026
…the vendorless chip

#20791 (Leo, 10-15) decides when the computer's name gives way to its
icon, so the footer no longer hides it on its own. The New Tab model
chip drops its vendor like the composer's, and a middle-cut folder name
is read without its seam.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 4, 2026
…rip runs out of room

A container query on the strip's own width (acpmux-strip) replaces the
460 px viewport rule from #20791. Each step is the measured width the
controls need next to an uncut "Choose folder"; the Machine chip's text
goes before the Where chip's. The temporary measurement test is removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-244b9c62b2e8fedec46c
teamleaderleo added a commit that referenced this pull request Nov 4, 2026
…rip runs out of room (#33671)

* wip: measure the composer strip's chip widths (temporary)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-244b9c62b2e8fedec46c

* test(composer strip): at 430 px the Where and Machine chips keep their names (red)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-244b9c62b2e8fedec46c

* composer strip: Where and Machine chips keep their names until the strip runs out of room

A container query on the strip's own width (acpmux-strip) replaces the
460 px viewport rule from #20791. Each step is the measured width the
controls need next to an uncut "Choose folder"; the Machine chip's text
goes before the Where chip's. The temporary measurement test is removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-244b9c62b2e8fedec46c

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
cmux-tui-merge-tree — 80007f12 Deployed Oct 15, 2026 by teamleaderleo via publish the merge tree #1344
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.

2 participants