Repository navigation
cmux-next sidebar: a long group or list shows its first rows then Show N more - #23671
Conversation
…t the end of their list (red) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…at the end of their list A group's members and a section's loose rows keep their manual order; the ones marked Done (Mark as Done, SidebarTaskStatus.done) list behind one "Done (N)" row at the end, which a click opens below it. The active workspace keeps its place. No fold while filtering or with the session tree. Debug toggle sidebar.doneFold, on by default. The row helpers visible/listsTabs/disclosure move from make onto SidebarLayoutOptions so SidebarLayout.swift shrinks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
… its place (red) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…pace selected elsewhere shows Review of #23633: drops resolve by the drawn rows' model indexes, so a drag lays the list out with every Done workspace in its place. A selection patch whose new active workspace is listed but not drawn hands over to a layout, which keeps the active workspace in place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…over it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…again Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…N more (red) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…w N more Past sidebar.groupRowLimit rows (Debug tunable, 10 by default, 0 shows all) a group's members or a section's loose rows show their first rows, the ones that need you and the active one, then a "Show N more" row; a click lists every row with a "Show fewer" row. Done workspaces fold first and count toward neither. The rows show whole while a drag runs, a group past the limit folds by a full layout, and needing you is a row move past the limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…bar-done-fold # Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Logic/SidebarTunables.swift
# Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Logic/SidebarTunables.swift
|
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)
Pending: CI is running on Last result: Passes: CI passes on Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: |
|
Owned by chief-sidebar on cosmic-gray · session |
|
Bead |
|
Review (claude-review-subagent): BLOCK at 1db9108 Scope: only what S5 adds, Blocking: the loose-list limit hides whole groups, along with the active workspace or a row that needs you inside them.
Checked, OK
Nits
|
This comment has been minimized.
This comment has been minimized.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
… its groups always show Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
|
Review (claude-review-subagent): SHIP at d6c52f8 Read The blocker is fixed
The test's expected order matches Unaffected
Nits (none block)
|
…d.title added) The catalog had come out with its keys reordered, a +4082/-3951 diff for one added key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
…trings added) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
|
Review (claude-review-subagent): SHIP at c903dc2 Scope: only the new commits since the last SHIP (d6c52f8..c903dc2: merge 814cd17 of #23633's head 1a7130a, then c903dc2). Read with local git and a Python json comparison; nothing built.
No findings. |
|
Found 11 test failures on Blacksmith runners: Failures
...and 1 more test failures. View all on Blacksmith
|
A limit of 10 by default hid rows that existing behavior depends on (SidebarCloseWhileScrolledTests scrolls to row 20 of 40). Ship the limit as an opt-in Debug tunable; turning it on is its own change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
|
Review (claude-review-subagent): SHIP at 80da4b3 Delta c903dc2..80da4b3, read with local git only, nothing built.
No findings. |
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 (claude-review-subagent): SHIP at 9333d3e Base-merge review, checked with local git only (no build). Previous SHIP was at 80da4b3. (a) The
(b) S5's delta is unchanged. The changed lines of (c) Base composes with S5.
(d) Catalog. Observed / Not runObserved: the git tree, diff and merge-tree comparisons above, at 9333d3e. Not run: any build or test. Swift compile and tests stay with CI. |
|
Review (codex gpt-6.1-sol): BLOCK at 9333d3e
The tests cover pure layout cases but do not cover either active-exception removal or Group by Folder. I checked the exact merge-base diff, the relevant whole sidebar/layout/view/model files, the added tests and localization catalog, and re-read the live PR head; I did not build or run suites. |
…roup by Folder has no row limit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&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. |
|
Review (claude-review-subagent): SHIP at 5e0c538 Independent re-review at the head. The delta from 594ce43 (the previous SHIP) is comments only. Diff against base ca294a9: 24 files, all in the sidebar package plus SidebarShowMoreTests. SidebarLayout.swift is 461 lines on both base and head. Codex BLOCK at 9333d3e, judged at this head:
Fleet compile at this head: Observed / Not runObserved: git diffs, the base and head sources, all callers of patchSelection, and wc -l. Not run: builds and tests on the Mac (CI covers them). |
|
base-red-watch: |
Brings in Show more (#23671, f14426c). Every switch over SidebarRowKey takes .status and .showMore; Group by Status's movesRows now runs its status check, then the base's SidebarModel.movesRows(from:to:groupsByFolder:listsTabs:) (folder, Done fold, row limit, listed tabs), so the base rules live in one place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd1-a2ac-74f1-85e7-0322693c12bd&host=cosmic-gray
Conflicts: - SidebarLayout.swift: the loose rows keep the tree walk (treeRows) and take base's row limit (#23671): foldingDone gets limits:, and every negative entry (Done, Show N more) draws through appendFold. - WorkspaceRowContent.swift: treeFold/rollUp beside base's chip, which is now only for the accessibility label (#23767). - WorkspaceRowView.swift: base's subviews without elapsedLabel (#23812), plus treeFoldButton and rollUp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-88e4-7fc2-b58e-9a55abdaced8&host=cosmic-gray
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
This branch is built on #23633 (the Done fold); until that merges, the diff here includes it. The S5 commits: dc4d3f2 (the test), e212336, then d770b56 (test) and d6c52f8 (fix) for the review's finding, c903dc2 (the string catalog kept in base order) and 80da4b3 (off by default).
This is slice S5 of Leo's sidebar-organization ask (item A, per-group "Show more").
What changes
A group's members, or a section's loose rows, longer than the row limit show their first rows, then a "Show N more" row. Click it to list every row, with a "Show fewer" row at the end that folds them again.
SidebarWorkspace.agentChip) and the active workspace stay shown past the limit, in their order.SidebarModel.movesRows, moved toSidebarModel+RowMoves.swift). A group past the limit folds by a full layout instead of the splice. Changing the limit lays the list out again.SidebarDoneFoldRowView), no drop target, no rename; its list's menu on right-click. Open state is the list's view state (SidebarListView.openShowMore).sidebar.groupRowLimit, 0 (off) by default; set it (10 reads well) to turn Show more on. A default of 10 hid rows that existing behavior depends on (SidebarCloseWhileScrolledTestsscrolls to row 20 of 40 and failed on a display host at d6c52f8), so turning it on by default is its own change.Capture
14 loose workspaces, the limit set to 10 through
debug.tunables, "Task 01" active: the first 10 rows, the active row kept past the limit, then "Show 3 more".Capture
steps-5f31262a71at1db910810772(fleet build, capture mini, text checked for private data)The fix after it (d6c52f8) changes only sections that hold groups, so this capture still shows the head's behavior.
Tests
Tests/CmuxNextAppTests/SidebarShowMoreTests.swift(committed first):Red then green on the fleet (
scripts/ci/run-swift-testing-suites.sh Packages/macOS/CmuxNext):groupsPastASectionsLimitStayShownfails at d770b56 and passes at d6c52f8. The fleet compile passed at 1db9108; the compile at 80da4b3 is running.Takes back #23633: not a take-back. S5 adds
.showMoreto S4'scase .doneFoldline inSidebarRowViewPool.swift, so the Show more row reuses the done-fold row view; S4's behavior is unchanged.Changelog
Agent session: cosmic-gray
🤖 Generated with Claude Code