Skip to content

fix(cmux-next): sidebar rows drop hover controls when hover clears during a reload - #21643

Merged
teamleaderleo merged 4 commits into
feat-cmux-nextfrom
fix/sidebar-hover-controls-stick
Oct 19, 2026
Merged

teamleaderleo merged 4 commits into
feat-cmux-nextfrom
fix/sidebar-hover-controls-stick

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

A sidebar workspace row could keep its x, more button and chevron after the pointer left it, so it looked hovered with nothing over it. It happens whenever hover clears during a list reload (any model change, including a workspace switch) or a scroll.

The cause is #21316 ("perf: defer hover layout during sidebar applies"). It made WorkspaceRowView.hoverChanged() skip needsLayout = true while suppressHoverEffects or hoverFollowsScroll is set. The row only shows or hides those controls in layout(), and SidebarListView.apply clears hover through updateHover() inside that suppression window, so the row never laid out again. The fill cleared (it repaints through needsDisplay), but the controls stayed. #21543 fixed rows that leave the list, not rows that stay.

The row now always asks for layout on a hover change; AppKit folds that into the next pass. The synchronous layoutSubtreeIfNeeded() and title marquee stay suppressed during scrolls and applies, which was the hitch #21316 was after.

Test

WorkspaceRowHoverMotionTests.hoverClearedDuringAReloadHidesTheRowsControls hovers a row, reloads the list with no pointer over it, lays the row out and expects the x hidden. It is committed before the fix (4603042), so the first commit should be red on that test and the head green. Not run locally: the CmuxNext test target needs GhosttyKit, which this checkout doesn't build; CI is the evidence.

Changelog

  • Fixed: Sidebar rows no longer keep their close and menu buttons after the pointer leaves during a list update or scroll.

🤖 Generated with Claude Code


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


Summary by cubic

Fixes sidebar workspace rows keeping their close and menu buttons visible after the pointer leaves during a list reload or scroll.

  • The row now always requests a layout pass on hover changes; the synchronous layout and title marquee remain deferred during scrolls and list applies, preserving the earlier performance fix.
  • Adds a test covering a reload clearing hover with no pointer over the list.

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

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits October 18, 2026 06:29
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ars during a reload

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Receipt for af9bd05 (this PR's head; a new push replaces it)

  • Visual review: HQ feed card · gallery before/after runs
  • Checks: this head
  • 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=pr21643 -f ref=fix/sidebar-hover-controls-stick -f platform=macos -f backend_mode=local

@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: fecebc3c-03c5-4152-a56c-c6dda0c4872e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Not verified: macOS jobs did not run: compile and app tests were skipped on af9bd05b92; ci-status is green without them.

CI passes on af9bd05b92 (run 39209493242 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

build / release-compile is red here and on nearly every open feat-cmux-next PR right now (#21640, #21645, #21646, #21626, ...), so it's a base red, not this diff. Review subagent traced the new test: red on 4603042 (the x keeps alpha 1 because nothing lays the row out), green on the fix.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@blacksmith-sh

blacksmith-sh Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Found 3 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp9embnw17/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmpttfakjn3/summary-fail.json (live):/summary-fail.json (live): View Logs
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs

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

@teamleaderleo
teamleaderleo merged commit 6089251 into feat-cmux-next Oct 19, 2026
@teamleaderleo
teamleaderleo deleted the fix/sidebar-hover-controls-stick branch October 19, 2026 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev-build Build a fleet dogfood build of each push (newest head under load)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant