Repository navigation
sidebar: keep the selected row clear of the footer - #15013
Conversation
The AppKit workspace list checked the selected row against visibleRect and scrolled with scrollRowToVisible, and both count the strips under the scroll view's content insets as visible: the titlebar scrim on top and the footer (account, help, Upgrade) at the bottom. A selected row pushed down by a reorder, such as another workspace jumping to the top on a notification, stayed behind the footer. Scroll it fully between the insets instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 1 remain after this review. 📝 WalkthroughWalkthroughSelected workspace rows are scrolled within the unobscured clip-view area. The scroll origin accounts for top and bottom insets, oversized rows, and document boundaries. Tests cover these cases. ChangesSidebar row scrolling
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to No actionable issue remains identified for the selected-row scrolling change. Merge after normal checks. 🚥 Pre-merge checks | ✅ 24 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (24 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 10.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 10 functions across 2 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
|
All contributors have signed the CLA ✍️ ✅ |
CI failure attributionCI passes on Written by |
Review follow-ups: documentRect can report the clip size when the table is shorter, and a row taller than the area between the insets should show its top. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
…under-footer # Conflicts: # cmux.xcodeproj/project.pbxproj
|
Merge receipt for |
c490fb4 Add an opt-in subtle sidebar selection highlight (manaflow-ai#14890) b78dae5 ci: evict parked pull request builds oldest first instead of a free-disk floor (manaflow-ai#15039) 31b6fc9 test: close the TabManagers the session snapshot tests create (manaflow-ai#15038) e64eb93 ci: send every retry of an owned-mini job to Blacksmith, once (manaflow-ai#15035) 17f0f90 Test: pin persisted Kimi custom kind on exact remote restore (manaflow-ai#15034) f9d5bb5 Switch between cmux and cmux NIGHTLY from inside the app (manaflow-ai#14995) 756847a sidebar: keep the selected row clear of the footer (manaflow-ai#15013) 1431a1e One dialog per close, and Feed banner clicks open the agent (manaflow-ai#14960) 74d4719 ci: route cli-product-tests to the gui runners like the shards (manaflow-ai#15011) b78e8aa ci: park each pull request's build on its root and route its re-push back to it (manaflow-ai#15020) 60e45e7 web tests: run every child process asynchronously (manaflow-ai#15001) 55724f0 ci: side lanes take the light minis' side runners first (manaflow-ai#15019) 3be8bdd Restoring a remote workspace terminal hands it this machine's working directory (manaflow-ai#8634) a9e555c Reattach 0.64.25 tmux-profile SSH workspaces after upgrading (manaflow-ai#14938) fe20e20 fix: mark workspace-level notifications read on workspace focus (manaflow-ai#12427) # Conflicts: # .github/workflows/app-host-test-rerun.yml # .github/workflows/auth-refresh-tests.yml # .github/workflows/ci-macos.yml # .github/workflows/ci.yml # .github/workflows/cloud-command-deadlines.yml # .github/workflows/cloud-machine-tests.yml # .github/workflows/cloud-task-local-tests.yml # .github/workflows/cmux-tui.yml # .github/workflows/iroh-v2.yml # .github/workflows/relay-tls.yml # .github/workflows/reload-build.yml # .github/workflows/remote-daemon.yml # .github/workflows/terminal-hang-diagnostics.yml
* ci: retry the picker's kept-base fetch and record how it went Every mini publishes root stamps now (snapshot 17:40Z: all 10 std minis), but the picker still scored most candidates "unknown": its one blobless fetch of the kept merge bases failed on some runs (17:31Z, #15013: 1 of 14 bases compared), and then every root costs the unknown start and nothing pins. The same fetch replayed in a fresh depth-2 checkout takes 0.7 s, so the failure is intermittent. fetch_bases() now tries a second time for what the first left missing, and reports missing/left/attempts/seconds/stderr, which admission's record carries as route.picker.bases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: leave the picker's fetch room for its retry and the diffs (review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: the picker test's fetch_bases stub returns a report Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Summary
In the AppKit workspace list, the selected row can end up behind the sidebar footer (account, help, Upgrade), drawn under the buttons and faded by the bottom scrim:
scrollSelectedRowToVisibleIfNeededchecked the row againsttable.visibleRectand scrolled withscrollRowToVisible. Both count the strips under the scroll view's content insets as visible: the titlebar scrim on top and the footer overlay at the bottom. So when a reorder pushed the selected row down (here, another workspace jumped to the top when its notification arrived), the row sat behind the footer and was treated as already visible.It now computes the area between the insets and scrolls by exactly the overlap, clamped to the list's scroll range (
SidebarWorkspaceTableController.selectedRowScrollOrigin).Testing
cmuxTests/SidebarSelectedRowScrollTests.swift: a row between the insets does not scroll; a row behind the footer scrolls up just enough; a row under the titlebar scrim scrolls down; both ends clamp. Running on CI (not locally, per the no-local-tests rule on this Mac).Changelog
Fixed: The selected workspace no longer hides behind the sidebar footer after the list reorders.
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Fixes the selected workspace row scrolling behind the sidebar footer after a reorder, such as when another workspace jumps to the top on a notification.
Bug Fixes
visibleRectandscrollRowToVisiblecounted the strips under the content insets as visible, so a selected row behind the footer never scrolled.Written for commit e2384e6. Summary will update on new commits.
Summary by CodeRabbit