Repository navigation
cmux NEXT Home: no stale divider line through the Chief chat after the list clamps - #23998
Conversation
…pt place live-qa on nightly 3a63d6d: a Home column too narrow for the list's 320 pt clamps the divider left, and a 1 px line stays at the old place, drawn through the see-through Chief chat. NSSplitView draws its divider in a layer of its own; the test reads those layers' frames after the clamp and after a width set outside layout, light and dark. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&host=cosmic-gray
NSSplitView places its divider's layer in its own layout pass. The Home split clamps the list after that pass (place() in layout()), so the layer stayed at the old position and drew a 1 pt line through the see-through Chief chat. Lay out once more after placing. No width, clamp or behavior changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&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)
red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 5363032; does not block |
|
Owned by chief-ui on cosmic-gray · session |
|
Found 12 test failures on Blacksmith runners: Failures
...and 2 more test failures. View all on Blacksmith
|
|
|
|
Review (claude-reviewer-23998): SHIP at a1b4d1b Correctness first, read-only review of
No blocking findings. CI on this head was still running at review time. |
|
Shipped in:
|
…n; the chat gets the width (#24006) * cmux NEXT Home: regression test, a lone Chief in a narrow column gets no avatar-only column Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&host=cosmic-gray * cmux NEXT Home: a lone Chief in a narrow column takes no avatar-only column; the chat gets the width The avatar-only list holding one conversation (and no note or requests) is hidden in HomeSidebarSplitView, with its divider, so the chat spans the split and compose stays at its top-left. A second conversation or a column wide enough for names brings the list back. Debug Settings > Home > "Avatar list for one conversation" (home.loneConversationRail, off) keeps the column. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&host=cosmic-gray * cmux NEXT Home: a list the person dragged to avatars keeps its column and divider Fold the lone conversation's list only when the window squeezes the person's own width to avatars; a width they dragged there keeps the divider to drag it back out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&host=cosmic-gray * cmux NEXT Home: the resize invariant test lists two conversations ResizeInvariantTests.theHomeTranscriptKeepsItsMinimumThroughResizes used an empty list, which now folds away once it would show avatars only (a lone Chief takes no column). The test checks the list shrinking to its avatar minimum, so it gives the list two conversations, as HomeLoneChiefRailTests does for the list that keeps its avatar column. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&host=cosmic-gray * cmux NEXT Home: the split divider tests cover the clamp and the lone-conversation fold HomeSidebarSplitDividerTests (from #23998) built the split around an empty list. On this branch an empty list folds away once the clamp would leave it avatars only, so the clamp test was really testing the fold. Its list now holds two conversations, as in ResizeInvariantTests. A new folded variant (one conversation, 400 pt) checks that the list folds and that no divider line stays at the old 320 pt place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&host=cosmic-gray * cmux NEXT Home: a folding list's divider layer moves in the same layout After the merge of #23998, layout() runs NSSplitView's layout a second time after place() so that the divider's layer follows a clamp. The lone- conversation fold returned before that second pass, so the hidden divider's layer could stay at the list's old edge. The fold now runs the same extra pass when it hides or shows the list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16057-0fea-7933-80f2-cec81447d873&host=cosmic-gray --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
live-qa on nightly 3a63d6d (Home/Chief pane 655-1100 px wide): a 1 px full-height line ran through the Chief chat at the list's old 320 pt place, black in light and dark, while the real divider sat at the clamped width.
Why
HomeSidebarSplitView.layout()callssuper.layout()first, and NSSplitView places its divider's layer there, at the current position. Then the split clamps the list (place(target)→setPosition), which moves the columns but not the divider layer until a later layout. The chat column is see-through, so the stale layer showed through it.Change
After
place(target)inlayout(), lay out once more so the divider layer follows. Widths, clamps and behavior don't change. (setWidthandresetWidthgo through a normal layout and were already correct; a test pins both.)Tests
HomeSidebarSplitDividerTestsreads the split's divider layers (the split view's own sublayers) after a clamp, and after a width set outside layout, in light and dark.cmux-ci run --class light --script scripts/ci/package-test-lane.sh --ref a2bf9726ead37c9e9c2ef32a12401d3143b5cfbf --arg=suite --arg=Packages/macOS/CmuxNext --arg=HomeSidebarSplitDividerTests:aClampedDividerLeavesNoLineAtItsOldPlacefails in light and dark (a divider layer stays at 320 pt and isn't at the list's width); the width-set test passes.--ref a1b4d1b641b96519e1a695e0bacb4e8498b594cc --arg=HomeSidebarSplitDividerTests,HomeNarrowSidebarTests: both suites pass (aws-m4pro-7).cmux-ci compile-check --ref a1b4d1b641b96519e1a695e0bacb4e8498b594cc --app: passed.Observed / Not run
Observed: the red and green runs above on the aws fleet (Xcode 26.6), and the app compile. Not run: the app on screen; a capture-mini before/after follows in a comment.
Changelog
Fixed: no stray line through the Chief chat when its pane is narrow.
No capture: the fix is a layer position, which the divider-layer frame tests read directly in light and dark; the real-app before/after is being taken on a capture mini and will be added as a comment.
live-qa report: the stray 1 px line at x=974 (feat-cmux-next nightly 3a63d6d).
Agent session: cosmic-gray
🤖 Generated with Claude Code