Skip to content

cmux NEXT sidebar: one leading icon column, header chevrons on the trailing column - #27292

Merged
teamleaderleo merged 5 commits into
feat-cmux-nextfrom
sidebar-icon-column
Oct 29, 2026
Merged

teamleaderleo merged 5 commits into
feat-cmux-nextfrom
sidebar-icon-column

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Leo, 2026-10-28, on a screenshot of the top of the sidebar (Search, a ⊘ row, "+ New…", then a workspace row with an app icon): "the alignment". Earlier the same day, on glyphs: "i feel like this is misaligned checkmark :( can we all audit the checkmarks and whatnot". Later, on two blue unread dots beside two red (i) marks: "eg look at this alignment :(".

What changes

One leading icon column. A new token, SidebarStyle.iconColumnCenterX(leading:), is the center of the one iconBox slot that starts at the row inset plus the pill inset. Every leading glyph centers what it draws on that column and on its row's center line:

  • band glyphs (Home and the other band rows)
  • a pinned workspace's pin
  • a pinned group's pin
  • a workspace row's icon, which already did

Before this PR, band glyphs and pins started their drawn ink at the inset instead of centering it. Measured on the fleet at the red commit, Home's glyph centered 2 pt and the pin 5 pt left of the workspace icons' center, at every density, in Minimal Mode on and off, and at both widths. Titles keep the one text column (SidebarStyle.leadingTextX).

Header chevrons on the trailing column. The status header, chat history, band section header and machine header (when it has no +) placed their chevrons with their own insets. Each one now centers on SidebarStyle.trailingColumnFrame, the column that every row's dot, spinner and error mark and the group header's chevron already share. The band section header gets its items' trailingTrim so that its chevron lands on its rows' column.

Trailing marks. On this base, the unread dot, the error (i) and Home's dot already share one center x in workspace and band rows. The new test confirms it, and also checks that each mark's art (dot, info, error, done) is centered in its box at 10, 20 and 30 px. The 2 pt drift on inner-tab dots that Leo's screenshot most likely shows was fixed by #26622 (landed 10-28), after which those dots share the trailing column.

Cloud mark. A machine mark already draws only while the sidebar lists more than one machine, and this Mac's rows draw none by default (sidebar.showLocalMachine is off). That matches the "only where it tells local from cloud apart" rule, so it is unchanged.

Audit, not changed here:

  • Color-swatch dots: they are color marks, not icons, and keep their own text offset.
  • The priority panel and the needs-you tray: they lay out their own action strips, outside the row column.
  • The Debug-only trailing badge style: its unread badge chains left of the column.

Takes back #23800 and Lawrence's 2026-10-28 "home and pinned are not aligned" commits (2cf09e1), in part. Their first-ink rule ("a pin's ink starts at the row inset") becomes "a leading glyph centers on the icon column", because Leo asked for one center x. Text columns are unchanged. plans/cmux-next/sidebar-owner.md is updated to the new rule.

Capture

State scripts/cmux-next/media/states/sidebar-icon-column.json: the showcase with the Debug row badge preview rows, so the sidebar shows unread dots (blue), needs-you dots (orange) and error (i) marks (red). These are the marks in Leo's "eg look at this alignment :(" screenshot. At this base they already share one trailing column, before and after. The showcase has no pinned rows, and the stills are at 1x, where Home's 2 pt move is 2 px. SidebarIconColumnTests carries the measured leading change.

Before at 698b3ef64cf0

Light Dark
light dark

After at 35226d0a9a40 (fleet build, capture mini, text checked for private data)

Light Dark
light dark

Review

Codex gpt-6-astra, high, fast, through the review-router route (lane-place found no working review box). At 35226d0 it returned BLOCK: in the card look, the band header took the trailing trim that its card's rows don't, so its chevron sat 4.5 pt right of their marks. Fixed in eea0ccb (SidebarRegionLayout.itemTrailingTrim, one rule for the rows and the header, tested in every look). The re-review at eea0ccb returned SHIP with no findings. After the fix, the 12 affected suites passed on the fleet at eea0ccb (step 22d7327609954036e338ddcb).

Tests

  • SidebarIconColumnTests (new):
    • leading glyphs share one center x;
    • each glyph sits on its title's center line;
    • the unread, error and Home marks share one trailing center x and their rows' center lines;
    • the status art is centered in its box.
  • HomePinnedRowAlignmentTests and SidebarUniformRowSpacingTests.thePinCentersOnAnUnpinnedRowsIconColumn now check the icon column instead of the ink start.

Performance

No perf numbers: not a performance change. It adds no timers, observers or per-frame work, only layout math on the same layout passes.

Risk

risk:normal. A small, contained sidebar look change: leading glyphs and pins move by up to 5 pt to one center, and four header chevrons move onto the trailing column. Nothing changes in behavior, hit targets or state.

Changelog

  • Fixed: sidebar icons, pins and header chevrons line up on one leading column and one trailing column.

Observed / Not run

  • Red: cmux-ci run --class light --script scripts/ci/package-test-lane.sh --ref 80b6deec9c53 --arg=suite --arg=Packages/macOS/CmuxNext --arg=SidebarIconColumnTests,HomePinnedRowAlignmentTests. SidebarIconColumnTests failed: Home 2 pt and the pin 5 pt off the icon column in all 12 cases. HomePinnedRowAlignmentTests passed.
  • Green: at d4c70d05133 (the head's Swift tree; the later commit adds only the capture state JSON), 20 of 21 suites passed (fleet step ea7e9ad73910b6820b78014c): SidebarIconColumnTests, HomePinnedRowAlignmentTests, SidebarUniformRowSpacingTests, PinnedRowsLookLikeRowsTests, SidebarTrailingColumnTests, GroupHeaderTrailingTests, SidebarChatHistoryTests, HostGroupHeaderStatusTests, MachineIconTests, SidebarGroupRailAlignmentTests, SidebarNestedGroupAlignmentTests, SidebarPinnedRowWidthTests, SidebarDragHeaderTests, SidebarLayoutFoldTests, HomeUnreadBlueDotTests, SidebarGroupMembersAlignTests, SidebarMinimalModeTests, HandSizedLabelClippingTests, SidebarGroupHeaderEveryDensityTests and SidebarRowTitleAndCloseTests. SidebarTrailingColumnGalleryTests ran no tests, as it also does at base 698b3ef64cf (fleet step 49e75c20bcc040df3a4e2bab, where the other 19 suites pass).
  • Captures: before at the base and after at the head, light and dark (above).

🤖 Generated with Claude Code

Agent session: agent session


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


Summary by cubic

Aligns the sidebar's leading glyphs (band icons, pins, workspace icons) on one shared icon column and header chevrons on the shared trailing column, fixing the misalignment Leo reported in review.

  • Adds SidebarStyle.iconColumnCenterX; leading glyphs now center their ink on the column instead of starting at the row inset, and on their row's center line.
  • Status, chat history, band section and machine header chevrons move to the shared trailing column; a band section header uses the same trailing trim rule as its rows (SidebarRegionLayout.itemTrailingTrim) so the chevron lines up with its marks in every look, the card look included.
  • Adds SidebarIconColumnTests covering leading, trailing and header alignment across densities and looks, and updates the Home/pinned and pin-spacing tests to check the column instead of the ink start.

Written for commit eea0ccb. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 4 commits October 29, 2026 00:00
…n (failing)

Leo 2026-10-28: "the alignment", "eg look at this alignment :(".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc7a5f5f0583aa302e45
Leo 2026-10-28: "eg look at this alignment :(".

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

Leo 2026-10-28: "the alignment"; "i feel like this is misaligned checkmark :( can we
all audit the checkmarks and whatnot"; "eg look at this alignment :(".

- SidebarStyle.iconColumnCenterX: band glyphs (Home and the band's rows), a pinned row's
  pin and a pinned group's pin center their ink on the column a workspace row's icon
  centers on, and on the row's center line. They started their ink at the inset, so Home
  sat 2 pt and the pin 5 pt left of the icons' center at every density.
- The status header's, chat history's, band section header's and machine header's (without
  its +) chevrons center on the shared trailing column instead of their own insets.
- Tests: SidebarIconColumnTests (red at 80b6dee: Home 2 pt and the pin 5 pt off), and the
  Home/pinned and pin-spacing tests now check the icon column instead of the ink start.

Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc7a5f5f0583aa302e45
Sidebar-Look: Leo 2026-10-28 "the alignment"; "eg look at this alignment :("

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc7a5f5f0583aa302e45
@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 29, 2026
@cursor

cursor Bot commented Oct 29, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review eea0ccb: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr27292 -f ref=sidebar-icon-column -f platform=macos -f backend_mode=local

red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 9d8337e to compare; do not merge until green; see lane-rules

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@blacksmith-sh

blacksmith-sh Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Found 7 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpt2dhafes/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpuntzprik/summary-missing.json (live):/summary-missing.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
View Logs

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

teamleaderleo added a commit that referenced this pull request Oct 29, 2026
…olumn

Review of #27292 (Codex gpt-6-astra): in the card look the region gives a section's rows
no trailing trim, but the header subtracted the configured trim, so its chevron sat
4.5 pt (compact) right of its rows' marks. SidebarRegionLayout.itemTrailingTrim is the one
rule both use. Test: SidebarIconColumnTests.aBandHeadersChevronCentersOnItsRowsColumn, every look.

Sidebar-Look: Leo 2026-10-28 "the alignment"

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

Review of #27292 (Codex gpt-6-astra): in the card look the region gives a section's rows
no trailing trim, but the header subtracted the configured trim, so its chevron sat
4.5 pt (compact) right of its rows' marks. SidebarRegionLayout.itemTrailingTrim is the one
rule both use. Test: SidebarIconColumnTests.aBandHeadersChevronCentersOnItsRowsColumn, every look.

Sidebar-Look: Leo 2026-10-28 "the alignment"

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

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Default changes

This pull request changes 3 defaults at eea0ccbc3b95 (what everyone gets without configuring anything):

  • tunable-source.CmuxNextSidebar/Sections/SidebarRegionLayout.swift:isCarded: (none) -> "fadbfe192ccb83f5bea4fe89b1d1b88e0fb66ebd77551025c34237e7751dc018"
  • tunable-source.CmuxNextSidebar/Sections/SidebarRegionLayout.swift:itemTrailingTrim: (none) -> "64da5e519cf92b1b632c7b94065bbcb6dbb73e41f00e806c14df2c1e53604cf3"
  • tunable-source.CmuxNextSidebar/Sections/SidebarRegionLayout.swift:make: "518afd4cc46fbe02ef0940f6fba5147160b21603f785350de401bf92ec0dff4d" -> "a46ed7c7734c76204a60f7a6d7a52c262ae1ae8d70e01808d6312536d5bb40c3"

Signed off on this commit by review (codex gpt-6-astra high, fast; review-router).

Merge receipt: merged as 1b56d73d08a7 with these defaults changed, signed off by review (codex gpt-6-astra high, fast; review-router).

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, fast; review-router): SHIP at eea0ccb

The first pass at 35226d0 blocked on the card-look header chevron (it took a trailing trim that its rows don't). That's fixed at this head, and the re-review found no remaining defect. The fleet ran 12 sidebar suites at this head and all passed (step 22d7327609954036e338ddcb). The cmux-next swift test red is the base compile red in BrowserEntryRetirementTests.swift:43 from #27166, which also fails on unrelated PR runs; #27301 fixes it.

@teamleaderleo
teamleaderleo merged commit 1b56d73 into feat-cmux-next Oct 29, 2026
162 of 172 checks passed
@teamleaderleo
teamleaderleo deleted the sidebar-icon-column branch October 29, 2026 09:12
@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40848323510 at 89e5f8a failed: cmux-next checks (god files, concurrency, crash safety, l10n).
Those jobs last passed at 83fb73e. This pull request is one of 4 merged since: #24804, #27280, #27292, #27303.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

1 inactive deployment
ci-routing-agent — eea0ccbc Deployed Oct 29, 2026 by teamleaderleo via namespace autofix #6093
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant