Repository navigation
cmux NEXT sidebar: one row gap after groups, folders and pins; the pin lines up with the rows - #23800
Conversation
… the pin lines up Red: under a group's last row, a folder, the Pinned block and the pinned chats the layout adds its own padding to the row spacing, and a pinned row's pin ink starts inside the rows' content inset. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
…s; pin lines up Rows keep one gap, the list row spacing, under a group, a Group by Folder folder, the Pinned block and the pinned chats: groupBottomPadding is gone, a list block has no bottom padding (the list puts the row spacing under it), and the pinned chats add no section gap. The pinned row's pin is placed by its measured ink, so it starts where an unpinned row's content starts and centers on its row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
|
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)
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by web and size checks: green |
|
Bead |
|
Owned by an agent session · session |
|
Found 15 test failures on Blacksmith runners: Failures
...and 5 more test failures. View all on Blacksmith: run 39786657921, run 39786657551
|
|
Review (claude-subagent): SHIP at 5ca9bed Correctness first. I read the code with git at the head and did not build anything. What I checked
Nits (not blocking)
|
…by gapShift Review follow-up on #23800: a drop gap that is the only thing under a list block counted as rows under it, so the rows below moved a section gap more than the drag's hit test assumes. The gap now opens right under the block. Also fixes a stale drag comment and compares the pinned title in list coordinates in the test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
|
|
|
Review (claude-subagent): SHIP at cbbada1 This reviews the diff 5ca9bed..cbbada1 (read only, no builds). I checked the new
Nit (not blocking, a one-token fix recommended): a gap on a section's empty drop zone
Nits 2, 5 and 6 from my last review are fine to leave as they are. |
… rows below still Review follow-up on #23800: with every item of a titled section dragged out, the drop's gap in its empty zone's place now opens where the zone was (one row spacing under the block), as on base, instead of moving the rows below up by a section gap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
|
Review (claude-subagent): SHIP at cce18bc This reviews the diff cbbada1..cce18bc (read only, no builds). It changes only I checked each case again, using B for the block's maxY, rs for
The verdicts from my earlier reviews at 5ca9bed and cbbada1 stand. Nits 2, 5 and 6 are fine to leave as they are. |
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex xhigh, correctness first): SHIP at c027960
|
…o (base #20905 used the removed groupBottomPadding) Merging feat-cmux-next brought #20905's status layout, which still added SidebarLayoutMetrics.groupBottomPadding after each status section; this PR removes that padding, so the app no longer compiled. A status section now ends like a group: the next header follows the last row by the row spacing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
…gh SidebarGrouping (base made groupsByFolder read-only) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
Bugbot needs on-demand usage enabledBugbot 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. |
|
|
Base's SidebarEmptyGroupTests (5819b62) expected the removed groupBottomPadding. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
Bugbot needs on-demand usage enabledBugbot 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. |
…form-spacing # Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Views/SidebarListView+Drag.swift
The target look gains a Row gaps row and the log names the three earlier commits of this branch that changed the sidebar views without a trailer. Sidebar-Look: ALL THIS RELATIVELY UNNECESSARY SPACING AFTER GROUPS AND AFTER PINS Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b6dd9baa949f76f9d9ab
… row spacing A drag that empties the Pinned block shows its drop zone (or the drop's gap in its place); the next row adds a section gap on top of the zone's row spacing (10 / 14 pt instead of 2). Fails on the parent commit. The view tests also restore the motion override they set instead of setting it for the whole suite. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b6dd9baa949f76f9d9ab
The drop zone (or the drop's gap in its place) under an emptied block already ends with the row spacing; the next section added a section gap on top of it. The layout now carries what follows a block: the row spacing under a bare block, nothing under its drop zone, a section gap under its groups. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b6dd9baa949f76f9d9ab
… by Status keep the row spacing An emptied section without a title has a 0 pt block and its drop zone alone; Group by Status puts a section gap under the Pinned block or its drop zone. Both add a section gap where the row spacing belongs. Fails on the parent commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b6dd9baa949f76f9d9ab
…bove Group by Status A document section that ends in its drop zone (or the drop's gap) adds nothing more under it, with or without a block above the zone, and Group by Status takes the same spacing as any section under a block: the row spacing under a bare block, none under a drop zone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b6dd9baa949f76f9d9ab
|
Review (codex gpt-6-astra xhigh): SHIP at 06251dd With compact metrics, section spacing is 8 pt, row spacing 2 pt, and top padding 4 pt.
The empty-status/ Run: |
|
|
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, on the cmux NEXT sidebar: "ALL THIS RELATIVELY UNNECESSARY SPACING AFTER GROUPS AND AFTER PINS". Every two consecutive rows in the sidebar list are now one row spacing apart (
space1, 2 pt), including under a group's last member, under a Group by Folder folder's last row, under the Pinned block's last row (or its drop zone during a drag) and under the session tree's last pinned chat. Before, each of those ends added its own gap on top of the row spacing:groupBottomPadding6 / 8 ptgroupBottomPadding6 / 8 pttopPadding4 / 6 pt, instead of the row spacingtopPadding4 / 6 pt, or +sectionSpacing8 / 12 pt for an untitled onesectionSpacing8 / 12 ptsectionSpacing8 / 12 ptgroupBottomPaddingis gone fromSidebarLayoutMetricsandSidebarDensityTokens(no other reader). A list block now has no bottom padding: the list puts its row spacing (or the next block's own top edge, unchanged) under the block's last item.SidebarLayout.makecarries what follows a document section (afterBlock): the row spacing under a bare block, nothing under its drop zone or drop gap (that row already ends with it), a section gap under its groups; Group by Status takes the same (statusRows(spacing:)). Gaps between sections that have headers, and between two top blocks, are unchanged. The fold splice (SidebarLayout.folding) and the double-click-in-empty-space target follow the same rule, so a fold still splices to exactly whatmakelays out.Pinned row: its pin was drawn in a 12 pt square at the rows' content inset, and the pin glyph's ink sits about 3 pt inside that square, so the pin read as indented from the other rows' text and icons. The pin is now placed by its measured ink (
SidebarGlyphInk, already used for icon-only items): the ink starts exactly where an unpinned row's icon or title starts and centers on the row the way that row's content does. The pinned row's icon and title move with the pin (same gap after it as before). Vertical centering was already right; it is now asserted.Risk: low-to-normal (
risk:normal). Spacing constants and one glyph offset in the cmux NEXT sidebar; no row model, data or layout-engine change, and no setting. What could go wrong: a row or the drag's drop gap a few points off in a section/block combination the tests do not cover (the drag hit test reads the drawn rows andgapShift, which keep their meaning). Undo is a revert; nightly carries the fix forward.Adopted from its closed owner lane (cosmic-gray/sidebar-rows); brought onto feat-cmux-next at 0c1814b. The one conflict (
SidebarListView+Drag.swift) was a comment edit inside group-reorder code base has since removed; base's side taken. Checked against the open sidebar PRs: #24513 (merged, group line chrome) and #24371 (pinned workspaces as list rows, hold) do not change these gaps.Tests
SidebarUniformRowSpacingTests(CmuxNextAppTests), each committed before its fix:rowSpacing; a fold splice equalsmake; a drop's gap alone under the Pinned block moves the rows below by exactlygapShift.rowSpacing. Group by Status under a bare Pinned block and under its drop zone: the first status header follows byrowSpacing.SidebarViewwith a Pinned block of two workspace rows, a group and loose rows), at both densities: the measured gaps between the last pinned row and the next row, and between the group's last row and the next row, equal the row spacing; the pin's ink starts at an unpinned row's content x and centers on its row as that row's content does.SidebarStatusGroupingTests.aStatusSectionsLastRowAndTheNextHeaderKeepTheRowSpacing: a status section's end adds no padding.Observed / Not run
cmux-ci run --class light --script scripts/ci/run-swift-testing-suites.sh --arg Packages/macOS/CmuxNext(step 4730433c).SidebarUniformRowSpacingTestsfailed with 15 issues, each the old gap or the pin offset.theRowUnderThePinnedDropZoneKeepsTheRowSpacing8 pt over the row spacing (gap and zone). Red at e0f6eab (untitled drop zone and Group by Status tests, before their fix): step 4e0a235b, 8 pt (0 pt block, zone and gap) and 6 / 8 pt (status header under the block / its drop zone).SidebarUniformRowSpacingTestspasses (all cases). The package run itself exits 1 on other suites (ActionRun, BrowserTabMirror, ScreenReplace and others): see the base comparison comment.scripts/cmux-next/prepush-gate.pyat the head: no new violations (the Sidebar-Look owner check passes: the commits are logged inplans/cmux-next/sidebar-owner.md, which gains a "Row gaps" target).Capture
Steps file (fleet build, capture mini): Home pinned, a workspace "Pinned one", a loose row, a new group with two members, then a loose row. Before is base
0c1814b668e, after isd9c103d22e79(the later commits change only drag/drop-zone and Group by Status spacing, which this scene does not show). Under the pinned Home row the row pitch drops from 32 to 26 pt (compact, the extra 6 pt gone), the group's members and the row after the group sit one row spacing apart, and the pin moves left to the rows' text start.After
steps-192f41d575atd9c103d22e79(fleet build, capture mini, text checked for private data)Before at base
0c1814b668e1Changelog
Changed: The cmux NEXT sidebar keeps one even gap between rows, with no extra space after groups, folders or pinned rows, and the pin on a pinned row lines up with the other rows.
🤖 Generated with Claude Code
Agent session: agent session