Skip to content

cmux NEXT: dividers light a themed glow band while hovered and dragged - #27576

Merged
teamleaderleo merged 9 commits into
feat-cmux-nextfrom
next-divider-drag-glow
Oct 30, 2026
Merged

teamleaderleo merged 9 commits into
feat-cmux-nextfrom
next-divider-drag-glow

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Leo (2026-10-29), verbatim: "like the little draggy bars and whatever, I feel like, you know, when we're dragging them, you know, Claude Code has it so that, you know, it has this glowy bar thing, and I think, like, having that themed color band would be quite nice for our app as well."

What changes

Every resize divider in cmux NEXT lights a soft band in the theme's accent (Palette.accent) while it is dragged, and a dimmer one while the pointer is over it:

Divider File Hover Drag
Pane split dividers, column edges, row edges CmuxNextLayout/Views/DividerHandleView.swift dim band full band
Left sidebar resize edge CmuxNextSidebar/Views/SidebarResizeHandle.swift dim band (not beside the curved main pane, where the card's edge is the seam, as for the hairline today) full band
Right sidebar resize edge CmuxNextApp/RightSidebar/RightSidebarResizeHandle.swift dim band full band
Home's list divider (NSSplitView) CmuxNextHome/Sidebar/HomeSidebarSplitView.swift dim band (its own tracking area over the divider's grab rect) full band
Browser DevTools divider CmuxNextBrowser/CEF/CEFDevToolsDivider.swift dim band full band

No webview has its own resize handle (the sidebar edge and right panel are native), so there is nothing to change in webviews/.

One shared component, CmuxNextDesign/DividerGlowBand.swift: a 2 pt accent core with a 3 pt soft halo (a layer shadow in the accent), centered on the divider's line.

Kept: the resting look (same line, color and thickness), the glass, the hit areas, the resize cursors and all pane layout logic. Under layout.paneSeparation none (the default chrome, which shows no active line) hover shows no band, as today, but a drag still lights the full band.

Chromium pages: a lit pane divider reports its band's extent (line plus halo, across the divider only) as its native line rect, so the page leaves the halo uncovered; at rest it reports the line alone, as before.

Motion: stop condition and cleanup

  • No timer, display link, observer or loop. A state change (rest, hover, drag) runs one opacity fade through Motion.feedback (.hover token), which ends on its own. It never pulses.
  • Reduce Motion, calm mode, ui.animations.feedback off or animation speed off: the change applies at once (the gate gives a zero duration).
  • The band goes out instantly (no fade-out animation) with its event: mouse-up, Escape (pane dividers' existing cancel), the handle leaving the view tree (pane dividers and DevTools reset hover and drag there), and NSSplitView's tracking mouseDown returning for Home (a defer).

Debug tooling

debug.mouse (DEBUG and bench builds only) takes divider (first, or a mouse-area id or prefix such as split:) for a pane divider's center, and a drag takes by_x/by_y relative to its start, so the capture tour below can hover and hold a divider mid-drag on any runner's window size.

Screenshots

Captured on a fleet Mac through cmux-ci capture (1100x720 window, two terminals split side by side; mid-drag holds the button down on the pane divider and moves it 90 pt left). Before: feat-cmux-next at 34e31e4. After: this branch.

State Light, before Light, after Dark, before Dark, after
At rest before after before after
Mid-drag, default theme (neutral accent) before after before after
Mid-drag, Clay Orange theme before after before after

At rest nothing changes. Before, a drag showed no line at all under the default chrome; after, the dragged divider carries the band in the theme's accent.

Fleet capture output at f72cdcd (the band's look is unchanged since; later commits change hover bookkeeping, base merges and a CI table):

Capture steps-526f6d40c5 at f72cdcd2ce84 (fleet build, capture mini, text checked for private data)

Light Dark
light dark

Capture steps-6d5ac8348f at f72cdcd2ce84 (fleet build, capture mini, text checked for private data)

Light Dark
light dark

Performance

No perf numbers: paint-only. One extra CALayer per divider with no work at rest; a hover or drag change sets one opacity (one Motion.feedback fade, no timer, observer or loop). Nothing runs per frame or per row.

Verification

Sidebar: plans/cmux-next/sidebar-owner.md gets a "Resize edge" target row and a log entry; the sidebar commit carries Sidebar-Look: with Leo's words.

Risk: low. Paint-only layers on existing views; the one geometry change is the reported Chromium hole of a pane divider while it is lit (wider by the halo). Overlaps by file with #24785 (DebugMouse.swift and sidebar-owner.md), not the same change.

🤖 Generated with Claude Code

Agent session: agent session

teamleaderleo and others added 2 commits October 29, 2026 13:42
Pane dividers, column and row edges, the sidebar and right sidebar
resize edges, Home's list divider and the DevTools divider now light a
band in the theme accent: dim on hover, full while dragging. At rest
nothing changes (same line, color and thickness); the hit areas and
cursors are untouched.

One shared DividerGlowBand (CmuxNextDesign): a 2 pt accent core with a
3 pt halo, faded once through Motion.feedback (instant under Reduce
Motion / calm mode / animations off). No timer, display link or loop.
A lit pane divider reports its band to the Chromium hole so the halo
shows over pages.

Leo (2026-10-29): "like the little draggy bars and whatever, I feel
like, you know, when we're dragging them, you know, Claude Code has it
so that, you know, it has this glowy bar thing, and I think, like,
having that themed color band would be quite nice for our app as well."

Sidebar-Look: Leo 2026-10-29 "having that themed color band would be quite nice for our app as well"
Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…use names a divider

HomeSidebarSplitView+Drop already overrides viewDidMoveToWindow, so the
Home band takes the theme on the press that lights it (and on appearance
changes) instead.

debug.mouse (DEBUG and bench builds) takes `divider` (`first`, or a
mouse-area id or prefix) for the center of a pane divider, and a drag
takes `by_x`/`by_y` relative to where it starts, so a capture tour can
hover and hold a divider mid-drag on any runner's window size.

Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

teamleaderleo commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

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

Review ea2f011: 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=pr27576 -f ref=next-divider-drag-glow -f platform=macos -f backend_mode=local

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

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 29, 2026
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Default changes

This pull request changes 1 default at dc24aa82b310 (what everyone gets without configuring anything):

  • tunable-source.CmuxNextApp/InputVerification/DebugMouse.swift:point: "e9ac20aef96f8ca1a7b51173660208c3ea480f08dc76b35bd05b7213c73caaf5" -> "be1e7950182ecf4493ee191e33113452e1827950506059901575fd9af6fa16b0"

Signed off on this commit by review (codex gpt-6-astra high).

Merge receipt: merged as 60a1916457b0 with these defaults changed, signed off by review (codex gpt-6-astra high).

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

…none too

The app's default look (flat-sidebar-line) has `layout.paneSeparation`
none, which turns the divider's hover and drag line off, so the band
gated on that line never showed in the default app. A drag now always
lights the band (it is the drag's cue, not a separator); hover still
shows nothing there, as before.

Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oval; Home hovers

Review (Codex gpt-6-astra, BLOCK at 6b21ac3) fixes:
- The band goes back to rest at once instead of fading: a pane
  divider's Chromium hole closes with the state change, so a fading halo
  over a page was cut off mid-fade.
- The left and right sidebar resize edges end their drag (and band) when
  removed mid-drag, as the pane divider and DevTools divider do.
- Home's list divider tracks hover over its grab area and lights the dim
  band, as the other dividers do.

Sidebar-Look: no visual change
Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@blacksmith-sh

blacksmith-sh Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Found 9 test failures on Blacksmith runners:

Failures

Test View Logs
--from must install a complete prebuilt tree/
--from must install a complete prebuilt tree
View Logs
/tmp/tmp3jj2mqo4/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpyy9gkhjb/summary-missing.json (live):/summary-missing.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
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)/
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)
View Logs
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
View Logs

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

@cursor

cursor Bot commented Oct 29, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): BLOCK at 51631ce

  • Packages/macOS/CmuxNext/Sources/CmuxNextHome/Sidebar/HomeSidebarSplitView.swift:127-160: Home’s divider installs hover tracking and lights .hovered, although the PR explicitly specifies no hover band for Home’s NSSplitView divider. This adds an unintended glow when merely hovering it.

teamleaderleo and others added 2 commits October 29, 2026 17:05
Review (Codex gpt-6-astra, BLOCK at f72cdcd): a replaced tracking area
sends no exit, so a double-click reset (or a clamp, or the list folding)
under a still pointer left the dim band lit away from the pointer. Each
new area now reads the hover from where the pointer is.

Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolves plans/cmux-next/sidebar-owner.md: both sides appended a section; both kept.

Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Take it. drain-native-app (backlog lander) claimed this only because cosmic-gray couldn't be reached from big-red. Run pr-owner claim --force 27576 and carry it. I changed nothing on the branch; I only edited the body's Home row, so the hover text matches the code ("dim band"). Adjust it as you see fit.

Same session, #27604: I claimed it the same way and pushed 5c99994 (vmBaseURL returns an optional, so the two URL(string:)! force unwraps the crash ratchet flagged are gone) plus a base merge (head 42109d3), and added a No capture: line. A next-review is running at that head. Take it back too if you're carrying it.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Taking this back, as drain-native-app's comment above says (and the rulebook's 10-minute rule for message 01a18a24-02d7-7331-a32b-1ad5edd23f28). Carrying the merge with feat-cmux-next next, then a review at that head.

Resolves plans/cmux-next/sidebar-owner.md: both sides appended sections; both kept.

Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/cmux-next/check-objc-selectors.py --probe --write on macOS 27.0.1: NSSplitView answers
mouseEntered:, mouseExited:, updateTrackingAreas and viewDidChangeEffectiveAppearance, which
HomeSidebarSplitView now calls on super. The probe also recorded two existing keys on 27.0.1.

Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high): SHIP at dc24aa8

Full review SHIP at ee91c8d; delta reviews SHIP at ea2f011 (base brought in, sidebar-owner.md resolved, code diff identical) and at dc24aa8 (objc-selector-table.json gains the four NSSplitView super calls, probed on macOS 27.0.1). App compile and CmuxNext suites passed at ea2f011.

@teamleaderleo
teamleaderleo merged commit 60a1916 into feat-cmux-next Oct 30, 2026
148 of 160 checks passed
@teamleaderleo
teamleaderleo deleted the next-divider-drag-glow branch October 30, 2026 05:55
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, review-job): SHIP at dc24aa8

No blocking findings.

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

1 inactive deployment
ci-routing-agent — dc24aa82 Deployed Oct 30, 2026 by teamleaderleo via cmux-tui tree preflight #80675
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