Skip to content

fix(sidebar): attach workspace hover previews to the row - #26942

Merged
teamleaderleo merged 5 commits into
feat-cmux-nextfrom
lane/nx-sidebar-hover-gap-1028
Oct 29, 2026
Merged

teamleaderleo merged 5 commits into
feat-cmux-nextfrom
lane/nx-sidebar-hover-gap-1028

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Final landing verification

Final head f3769628205cedb74e2f2131d6b974cd21c29552 corrects the stale update-card parity test: the update card retains its one-device-pixel gap, while workspace previews touch their rows. The earlier broad exit 143 is not classified as a base red; focused execution below supplies the relevant final-head proof.

Review (Sol): SHIP at f3769628205cedb74e2f2131d6b974cd21c29552, complete final diff, no findings. Primary review confirmed the test-only delta and unchanged production blobs. Syntax and prepush pass.

Matching nine-suite GUI runs completed through scripts/ci/package-test-lane.sh, with gui-session-v1 and CMUX_TEST_REQUIRE_GUI=1:

  • Head f3769628205cedb74e2f2131d6b974cd21c29552, job ea94253eccc08490180c7e0c: 47 tests executed; eight suites passed. Workspace dismissal, pinned-row, rail, geometry, update-card gap, and dwell tests passed.
  • Base 2289f95c73d846c1761d3ca83ba94da658a14203, job a5c27017b724dcc8a9821d25: 47 tests executed; seven suites passed. movingDownPastTheRowsRightEndDismissesTheCard() fails on base and passes on head.
  • Both runs fail only the same two morph assertions in SidebarOneMorphingCardTests: goingFromAWorkspaceCardToTheUpdateCardMorphsTheOneCard() and goingFromTheUpdateCardToAWorkspaceCardMorphsBackAndParksTheHighlights() record empty animated sizes. scripts/ci/test_reds.py classify reports own: false with those exact two shared failures. Both runs completed all requested suites; no crash or cut-short result is excused.
  • Exact-head compile and fast gates passed. The static job fails only the unchanged base SwiftUI findings in HomeChatColorsPanel.swift and HomeChatColorsView.swift; the sources, checker and allowlist are identical at base and head.

Summary

Workspace hover previews touch the drawn workspace row, before the sidebar resize/drag thumb. Pinned workspaces use their drawn pill. Horizontal pixel snapping goes toward the row so fractional coordinates leave no seam; top alignment, dwell and preview contents stay the same. Group/rail previews use zero gap at their existing column anchor.

Leo, 2026-10-28:

“I mean the gap between the hover preview and the, you know, the workspace sidebar element thingy.”

Folded into S2. Reference: the cmux NEXT hover-preview treatment in cmux-design-references/apps/cmux/live/sidebar-hover-preview-session-list.png; keep our colours and glass. Non-sidebar update and PR cards retain their existing one-device-pixel gap.

Testing

  • Integrated feat-cmux-next at 2289f95c73d846c1761d3ca83ba94da658a14203; then-reviewed head d3f0e0762a994eb63ff5cac70cb0d191e05775ce. The product diff has the same stable patch ID as the previously reviewed fix. The only merge conflict was independent additions to the sidebar ownership notes; both were retained.
  • Review (Sol): SHIP at d3f0e0762a994eb63ff5cac70cb0d191e05775ce, whole final diff, no findings. Base hover sweep behavior is preserved.
  • Focused command: scripts/ci/package-test-lane.sh suite Packages/macOS/CmuxNext HoverCardEscapeGeometryTests,HoverCardRowAlignmentTests,HoverCardWindowClampTests,SidebarHoverCardEscapeTests,PinnedRowHoverCardTests,SidebarRailHoverCardTests, through the fleet with gui-session-v1 and CMUX_TEST_REQUIRE_GUI=1.
  • Green: fleet job 5c46d28d158411204dc4b893 at d3f0e076 passed all six suites (exit 0).
  • Red: the same suite runner with SidebarHoverCardEscapeTests at pre-fix 0fd91e18e1f85110f6a4bde9dc9d303cd06abfcd, job de1fad7638ed726dc5a7c447, executed six tests and failed the no-gap assertions: card starts at 440.0 pt while the row ends at 438.5 pt, a 1.5 pt gap. This valid assertion receipt replaces the earlier GUI-session-loss run b4cae97fbc9fb0d2a101fa39.
  • Swift syntax (13 files), git diff --check, and the static prepush gate passed. Hosted static-check job has only the base No new SwiftUI findings in HomeChatColorsPanel.swift and HomeChatColorsView.swift; both offending files, checker and allowlist are byte-identical to the integration base. Hosted pushed-commit checks passed.

Observed / Not run

Observed: final-head native test execution and independent whole-diff review. General local verification still reports localization debt; this PR changes no catalog, checker, rule or baseline inputs. The real before/after captures below remain bound to their stated original SHAs; no new capture was generated for this base merge. Product merge is governed by the exact-head review and focused head/base receipts below.

Risk: horizontal anchor and tracked hit geometry change for workspace previews. Existing screen clamps, top alignment, dwell and non-sidebar placement remain in use.

Captures

Real fleet captures use the same focused workspace-preview fixture and passed the mini privacy scan (no private terms).

After steps-b280978dd1 at 6287fdf3b289 (fleet build b5aea4f557f42ad5dab0bff5, capture mini, privacy checked)

Light Dark
light dark

Before steps-b280978dd1 at 3a7653b054ed (fleet build 9b15699f0e22c859756839ba, capture mini, privacy checked)

Light Dark
light dark

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


Summary by cubic

Sidebar workspace and group hover previews now sit flush with the row's drawn fill instead of one device pixel outside the sidebar's edge, so each preview reads as one surface attached to the row.

  • The shared placement rule covers workspace rows, pinned workspace pills, group headers, and the compact rail; cards keep their row's top alignment.
  • Pointer escape and placement use the same drawn fill, so moving below the row dismisses the preview.
  • Non-sidebar .beside cards (update cards, pull request badges) keep their existing one-pixel breathing room.
  • The hover-card capture tour now creates and focuses the new workspace before capturing its card, so the sample shows a real workspace preview.

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

View guided diff Turn on auto-fix

Agent session: agent session

2026-10-29 landing evidence

  • Exact head d3f0e0762a994eb63ff5cac70cb0d191e05775ce: fleet step 065089c9f6aca6e06b69082e passed all six focused hover-card suites (exit 0).
  • Base 2289f95c73d846c1761d3ca83ba94da658a14203: fleet step ca5a53fe4801f24192fda88b completed with only the existing SidebarHoverCardEscapeTests and SidebarRailHoverCardsTests base failures; the other four suites passed.
  • Independent Astra exact-head review is running for the final merge head; merge remains pinned to this SHA.

Agent session: agent session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-7pbvh3 created for this PR by the cmux coordinator.

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review f376962: HQ feed card · gallery before/after runs · checks

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=pr26942 -f ref=lane/nx-sidebar-hover-gap-1028 -f platform=macos -f backend_mode=local

red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 2289f95 to compare; do not merge until green; see lane-rules

Sidebar-Look: no visual change; regression coverage for Leo’s workspace preview gap.
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f0e2e06c2fc61fa2b914
Sidebar-Look: Leo: "the gap between the hover preview and ... the workspace sidebar element thingy". Touch the row before the drag-out thumb; snap inward so fractional edges leave no seam.
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f0e2e06c2fc61fa2b914
Sidebar-Look: no visual change; align pointer escape with the new drawn-fill placement. Exercise vertical dismissal on the list side, outside the now-flush preview.
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f0e2e06c2fc61fa2b914
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at 6287fdf

No blocking findings.

Reviewed the supplied diff and source files. Native tests were not run; additional repository reads were denied by the tool approval policy.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Orphaned: no activity for 14 h, and no lane holds a lease on it. The orphan sweep could not merge feat-cmux-next in: conflicts in plans/cmux-next/sidebar-owner.md. Listed for a lane to resolve.

Preserve the row-fill and pinned-pill no-gap anchors while retaining current-base hover sweep behavior.

Sidebar-Look: no visual change from the reviewed preview placement fix
Agent-Session: https://cmux.com/deeplink/agent?id=aid-acedf8848325f4f883bb
@blacksmith-sh

blacksmith-sh Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpd7busdvh/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmphlzv78qp/summary-fail.json (live):/summary-fail.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

The workspace preview now touches its row while the update card retains one device pixel of spacing. Assert each intended placement independently.

Sidebar-Look: no visual change
Agent-Session: https://cmux.com/deeplink/agent?id=aid-acedf8848325f4f883bb
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

For awareness: #27562 takes the other approach to the gap between the sidebar rows and the main pane. It adds the gutter strip to the sidebar (the container is one gutter wider and the window's sidebar pins subtract it, so the pane does not move) instead of moving the hover card over the drag thumb. Leo, 2026-10-29: "NOT MOVE / ADD THE FUCKING AREA TO THE SIDEBAR TO THE RIGHT". The two overlap on where the hover card sits next to the row.

@teamleaderleo
teamleaderleo merged commit 4d84096 into feat-cmux-next Oct 29, 2026
189 of 193 checks passed
@teamleaderleo
teamleaderleo deleted the lane/nx-sidebar-hover-gap-1028 branch October 29, 2026 21:32
@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40958608185 at 4d84096 failed: cmux-next checks (god files, concurrency, crash safety, l10n).
Those jobs last passed at 7f9242d. This pull request is one of 1 merged since: #26942.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

For the nx-sidebar lane, on Leo's pictures for "add the area to the sidebar to the right" (his words: "chatgpt, claude, us — let's be more like chatgpt"). Target, from ChatGPT's hovered row:

  • the row highlight runs up to a thin, even gap before the main pane card;
  • a small, muted trailing icon, inset from the row's end;
  • radii in the same family as the pane card.

Ours shows a big, bright ✕ instead.

Proposal: one PR, built in #27562. I'll replace its current pane-reach approach. #27561 already owns the trailing control geometry, so the muted, inset icon follows from it. #26942 stays yours for the hover-card anchor.

If you are already building this, reply here within about 10 minutes and I'll close #27562 instead. With no reply, I'll go ahead in #27562.

@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40959656345 at b844975 failed: cmux-next checks (god files, concurrency, crash safety, l10n).
Those jobs last passed at 7f9242d. This pull request is one of 3 merged since: #26942, #27453, #27534.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

teamleaderleo added a commit that referenced this pull request Oct 29, 2026
Resolve the generated defaults snapshot from current base sources while retaining the default-off rich-details setting and the existing #26942 anchor behavior.

Sidebar-Look: no visual change
Agent-Session: https://cmux.com/deeplink/agent?id=aid-585d2523f6018bb56480
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

1 inactive deployment
ci-routing-agent — f3769628 Deployed Oct 29, 2026 by teamleaderleo via namespace autofix #6455
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant