Repository navigation
cmux NEXT sidebar: agent-started sessions nest under their parent by default - #24287
teamleaderleo wants to merge 11 commits into
Conversation
|
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)
red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on e4fc509 to compare; do not merge until green; see lane-rules |
|
Found 7 test failures on Blacksmith runners: Failures
|
|
Bead |
|
Review (codex xhigh): BLOCK at d41b76f Findings
Non-blocking
|
|
Review (codex xhigh): BLOCK at a18f826 Findings
Non-blocking
|
|
Review (codex xhigh): BLOCK at 2b7e5de Findings
Non-blocking
|
|
Review (codex xhigh): SHIP at 12a19aa Findings: none. The merge resolution in The full diff was reviewed against the new base, including the deep tree ordering/folding and roll-up paths ( Verification was read-only at exact head |
|
|
|
Review (codex xhigh): BLOCK at d4c5c0e Finding 1 — The post-SHIP comparison is otherwise unchanged: |
|
|
|
Orphaned: no activity for 15 h, and no lane holds a lease on it. Adopted by the orphan sweep: merged |
|
|
|
|
|
|
|
Owned by an agent session · session |
1cb88c3 to
e907619
Compare
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. |
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. |
Default changesThis pull request changes 5 defaults at
Needs a review. It passes with an independent review receipt on this commit: a comment or review whose first line is Regenerate the snapshot with |
Agent-started workspaces nest under the workspace whose agent started them, at any depth, with only person-started sessions at the top level. A parent below depth 1 starts folded behind a count chip and its state roll-up; the user's open/fold persists per parent. Debug Settings sidebar.lineageNesting (on by default) turns nesting off. sidebar.sessionTree keeps its keycaps, chat history and pull request reads. The Done fold and row limit move whole subtrees with their top-level row. Leo-ask: ask-18a79e54a3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-3eb9-7ce3-a6c8-07fec063b18a&host=cosmic-gray Sidebar-Look: no visual change
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-3eb9-7ce3-a6c8-07fec063b18a&host=cosmic-gray Sidebar-Look: no visual change
….sessionTree on Review findings at d41b76f: SidebarTreeRollUp.isEmpty counts total; the deep tree roll-up expectation includes total; the keycap row test enables sidebar.sessionTree, and a new test pins that nesting alone draws no keycaps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-3eb9-7ce3-a6c8-07fec063b18a&host=cosmic-gray Sidebar-Look: no visual change
Review finding at a18f826: hidesInFold and reveal walked the global parents map, so a row whose parent sits in another list (drawn as a root there) read as hidden and its selection opened folds in the other list; a cycle did too. Both now walk only the ancestors the layout nests it under (same list, no cycle), through SidebarModel.sharesList. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-3eb9-7ce3-a6c8-07fec063b18a&host=cosmic-gray Sidebar-Look: no visual change
Review finding at 2b7e5de: a pairwise same-list test let a chain hop lists through a workspace listed twice. hidesInFold and reveal now take one membership test per list holding the row (SidebarModel.listsHolding, O(1) through the row index) and walk each list on its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-3eb9-7ce3-a6c8-07fec063b18a&host=cosmic-gray Sidebar-Look: no visual change
Review finding at d4c5c0e: the tree feed starts after restored windows, so the first render's reveal ran with no lineage and a later tree change did not retry it; a depth-2 selection stayed in its parent's fold. A change of parents now re-reveals the selection (a fold the person makes keeps). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-3eb9-7ce3-a6c8-07fec063b18a&host=cosmic-gray Sidebar-Look: no visual change
Sidebar-Look: no visual change
Keep the roll-up total meaning explicit in French and avoid new identical-English localization debt. The existing validate_localization check rejects the old value and accepts the new value. Sidebar-Look: no visual change
Track selected rows drawn ancestor paths after applying grouping preferences. Moving a selected session under a deep parent opens its new folds, while manual folds and unrelated structural changes keep their state. Add a regression covering the move, explicit fold, and unrelated row insertion. Sidebar-Look: no visual change
5f443c6 to
17c0923
Compare
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. |
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (independent gpt-6-astra high): SHIP at 17c0923
I am the independent reviewer session that performed this review, publishing my own completed verdict. This is a read-only static review of the complete 22-file diff against base 4c12180 and its affected callers and integration paths. The PR head was checked before publication and still matches the reviewed head.
No remaining concrete correctness blockers were found.
The earlier selected-workspace/list-membership finding is repaired in this head. Rendering applies list preferences and grouping before SidebarSelectionTreeReveal computes each selected workspace's per-list ancestor paths. Moving the same selected workspace into a deep lineage list opens its new ancestors; unchanged ancestry preserves explicit manual folds and unrelated structural updates. I inspected the regression covering that move and fold preservation, and the raw model-list indexing used by the ancestry walk. Group by Status remains a separate flat layout path.
The whole-diff review also covered default-on lineage nesting, late lineage arrival after restored selection, list-relative ancestor walks, cycle and foreign-list handling, deep fold persistence and toggle behavior, Done folding and row limits over whole tree runs, roll-up totals including idle descendants, accessibility/localization changes, needs-you reveal wiring, and the preserved base label frame(forAlignmentRect:) behavior.
GitHub PR reads remain gated by the existing session-tree, Priority-view, or enabled row-badge settings. Lineage nesting alone publishes tree state using empty PR answers and stops the PR recheck store; it does not enable those reads. Keycaps and chat history retain the session-tree setting gate.
Validation performed by this reviewer: static source/diff/caller inspection and git diff --check, which was clean. I ran no builds, test suites, CI reruns, or native UI validation, and this verdict inherits no CI result. The owner's fleet verification and landing checks remain separate evidence.
Reviewed head: 17c0923
Agent session: agent session
|
Review (codex gpt-6-astra high, next-review): BLOCK at d11e0bd
|
|
Closing: superseded by #28103, a carry of this PR's commits with the fold-filtering P1/P2 fixes and current feat-cmux-next merged in. Its owner session is gone (stuck, counted gone), and there's been no activity since 2026-10-29 22:28Z. |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo's words (ask-18a79e54a3):
Leo-ask: ask-18a79e54a3
PR 3 of the session-lineage brief (leo-workspace
briefs/2026-10-20-gui-push/session-lineage.md). It builds on #21836's deep tree (folds, roll-ups) and #23633's Done fold, and doesn't duplicate either.What changes
sidebar.sessionTree, which is off. Now a workspace whose agent was started by another workspace's agent (acpmuxspawnedBy, plus remote daemons' parents, the same data cmux NEXT sidebar: the session tree at real depth, with folds and roll-ups #21836 reads) lists under that workspace at any depth. Only workspaces a person started stay top level.sidebar.sessionTree.collapsedlist is joined by asidebar.sessionTree.openedlist for deep parents the user opened. Both are pruned to live parents. Selecting a hidden session (Cmd-K, a notification, Cmd-number) opens the folds above it, asrevealalready did.sidebar.lineageNesting), on by default. Off, every workspace is top level again, even withsidebar.sessionTreeon.sidebar.sessionTreekeeps its other parts. Keycaps, chat history (Pinned/Earlier) and the tree's pull-request reads are unchanged and still opt-in. Nesting on its own makes no GitHub calls.Not in this PR: the subtree roll-up wording ("N running · M need you · K merged") and Parked are PRs 4 and 5 of the brief. Lineage beyond
spawnedBycomes from #24150 and #24136, which are still open; this PR doesn't depend on them.Tests
SidebarLineageNestingTests(new) covers:revealopening deep ancestorsThe existing
SidebarDeepTreeTestsandSidebarSessionTreeTestskeep passing as written.Exact-head verification and captures
Head:
17c0923e1f0e4525aeaf5fd6bd97c4481e8bdc0f. Independent Astra review: SHIP. Native fleet step7f255fcd841cb3f22f52a001passed all four focused suites:SidebarLineageNestingTests,SidebarDeepTreeTests,SidebarSessionTreeTests, andSidebarNeedsYouTests. Static pre-push and Objective-C selector checks passed.The real app captures below use the existing
needsYouparent-child fixture withsidebar.sessionTree=falseon both commits. Before (4c12180f1237a344e69f73d743c5f4f3c3969f60), all sessions are flat. After, Settings pass and Release notes nest under Release week, and their children Shrink large files and Changelog start folded behind count chips. This demonstrates the new default; it is fixture-seeded evidence, not a live agent spawn recording. Reference: Claude's linked-session nesting (apps/claude/live/sidebar-linked-session-nesting.png); private reference media is not reproduced here.Remaining checks: the independent reviewer published its exact-head SHIP, and the defaults guard passed. After #25861 merged, one retry of the failed broad Swift job failed again: no test-run summary, 926 tests unfinished, plus failures in
SidebarPriorityMotionTests.aRowRetargetedWhileItOpensClipsUntilWhole(line 223) andFileExplorerEditTests.newFileAndNewFolderMakeUntitledItemsAndSelectThem(lines 74–75). This incomplete run is not excused as a base red. The frozen head does not include #25861's run-loop guard; incorporating that recovery requires a new head and review. The focused four-suite success above remains separate evidence. Both the Swift dependency hold (#26809) and the outstanding exact-head validation hold remain; no further rerun or source change has been made.Risk: nesting changes default sidebar organization and the handling of deep folds; explicit/manual folds, selected-workspace reveal, same-list ancestry, and PR-read gating are covered by the focused tests.
Changelog
Changed: Sessions an agent starts now nest under the session that started them in the sidebar, with deeper levels folded. Debug Settings can turn this off.
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Makes agent-started sessions nest under the workspace whose agent started them, by default. Previously nesting only ran behind the opt-in
sidebar.sessionTreesetting; now every workspace an agent started lists under its parent at any depth, and only person-started sessions stay at the top level. A parent below the top level starts folded behind a count chip and its state roll-up; open/fold state persists per parent.New Features
sidebar.lineageNesting(on by default) turns nesting off; nesting alone makes no GitHub calls and draws no keycaps or chat history, which staysidebar.sessionTree's.Written for commit d11e0bd. Summary will update on new commits.
Agent session: agent session