Skip to content

Hover intent: tooltips and hover cards wait, then stay warm, app-wide - #20528

Merged
teamleaderleo merged 27 commits into
feat-cmux-nextfrom
op-next-theme/hover-intent
Oct 14, 2026
Merged

teamleaderleo merged 27 commits into
feat-cmux-nextfrom
op-next-theme/hover-intent

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Tooltips and hover cards used to show at once on every control or row the pointer passed, so a sweep across a toolbar or down a list left a trail of them. They now follow one hover-intent policy, the same in the app and in its pages, modeled on AppKit. The tooltip itself is now frosted glass.

Tooltips

  • The first tooltip waits 450 ms.
  • While one is showing, moving to a neighbor shows the neighbor's tooltip at once (the group is warm).
  • Warmth cools 500 ms after the last tooltip hides.
  • A click, a key or a scroll hides the tooltip at once and cools the group, as AppKit does.
  • Motion:
    • The first tooltip of a group fades in over the fadeIn token (120 ms) and rises 2 pt.
    • A warm neighbor's tooltip appears at once, with no second fade.
    • Leaving fades it out faster, over the fadeOut token (80 ms).
    • Reduce Motion keeps the fade and drops the rise.
  • Surface (one token, native and pages, TooltipSurface):
    • Frosted glass: NSVisualEffectView behind the window natively, and backdrop-filter: blur(24px) in pages.
    • The tint is the popup surface at the lowest alpha that keeps the primary text at 4.5:1 or better over pure black and over pure white. The blur can only average what's underneath, so those two are the worst case.
    • The rim is one device pixel (--cmux-hairline from Composer and New Tab rims draw one device pixel, concentric at every scale #20481).
    • The shadow is elevation 1 from Subtle elevation: one shared shadow scale, no big halos #20519: --elevation-1 in pages and PopupStyle.elevation1 natively (0 1px 2px, black at 7%, 12% in dark). Base had given the title tooltip --elevation-2; a tooltip is the smallest surface, so it takes step 1.
    • Reduce Transparency draws the opaque popup surface instead.
  • Labeled controls get no tooltip. A control whose visible label already says the tooltip text shows none (PR dock chips; tooltips only where nothing else names the control #20375's rule, applied at runtime). Natively this covers a titled button or a text field. In pages it covers an element whose own text matches.

Sidebar workspace cards

  • They keep the 1 s dwell, and an open card still slides from row to row.
  • A pointer heading into the card no longer hands the card to a row it crosses on the way. A move counts as heading into the card when it lands inside the safe triangle and its step toward the card is at least half its step along it.
  • A pointer resting on the card keeps it open.
  • Leaving the card starts a 200 ms grace before it closes.

Row highlights in pages appear on the frame the pointer reaches the row, with no fade-in, so a fast sweep no longer leaves half-faded tints. The fade on leaving stays, and native sidebar rows keep their cross-fade from #20315.

Why these numbers

AppKit's tooltip waits NSInitialToolTipDelay, about 1 s at the default setting, and after that the next view's tooltip shows at once. Leo asked for 400–500 ms, and 450 ms sits comfortably on both sides of the trade:

  • A sweep still shows nothing. A pointer crossing a 24–30 pt toolbar button at sweep speed (300–1000 pt/s) is on it for 30–100 ms, far under the delay.
  • A deliberate rest gets its answer in under half a second.

The other values:

  • The 500 ms warm time is about the gap a reader leaves between two buttons.
  • The card dwell stays at the existing 1 s.
  • The 200 ms grace and the 300 ms aim window are in the usual menu-aim range.
Constant Value Native tunable Web
Tooltip delay 450 ms motion.tooltip.delay HOVER_INTENT.tooltipDelay
Tooltip warm (cool-down) 500 ms motion.tooltip.warm HOVER_INTENT.tooltipWarm
Card dwell 1000 ms motion.hoverCard.dwell (existing) HOVER_INTENT.cardDwell
Card grace on leave 200 ms motion.hoverCard.grace HOVER_INTENT.cardGrace
Card aim (pause allowed while heading in) 300 ms motion.hoverCard.aim HOVER_INTENT.cardAim
Fade in / out 120 / 80 ms MotionFade.fadeIn / .fadeOut --ui-popup-open / --ui-popup-close
Tooltip blur 24 px TooltipSurface.blurRadius --tooltip-blur
Least tint alpha 86% TooltipSurface.minimumTintAlpha --tooltip-tint fallback
Shadow elevation 1 (0 1px 2px, 7%) TooltipSurface.shadow = PopupStyle.elevation1 --tooltip-shadow: var(--elevation-1)

Every value is a tunable or a design token, not a user setting.

  • The timing lives in Swift (HoverIntentTiming.standard) and in the web constant HOVER_INTENT. webviews/test/hover-intent-parity.test.ts fails when the two drift.
  • webviews/test/tooltip-surface.test.ts does the same for the surface constants.
  • Pages get the per-theme tint from the host as --cmux-tooltip-tint (WebTheme).

The primitive

Native, CmuxNextDesign/HoverIntent/HoverIntent.swift:

  • HoverIntentTiming reads the timing through the tunables.
  • HoverIntent<Target> is a pure reducer that owns the delay and the warm group. Its owner runs the effects on one DemandTimer, and the clock is injectable.
  • CGRect.isAimedAt(from:to:) is the safe triangle plus the heading test.
  • TooltipPresenter runs on HoverIntent.
  • HoverCardMachine and HoverCardCoordinator use the timing and the aim test.
  • TooltipPanel draws TooltipSurface and runs the fades through Motion.set, so check-motion stays green.

Web, webviews/src/ui/hoverIntent.ts:

  • HoverIntent, plus HoverGroup for the warm group. Pages share one tooltip group, and cooling the group also drops other intents' pending waits.
  • The useHoverIntent hook.
  • aimingAt, the safe triangle.
  • An injectable HoverClock.
  • The surface and fades are CSS in pages/shared/desktop.css (--tooltip-*, data-starting-style, data-ending-style, and data-instant for a warm neighbor).

Timers moved onto it

Where Before Now
TooltipPresenter (every native themedToolTip / .themedHelp) instant HoverIntent: 450 ms, then warm
WorkspaceHoverCardController.delay motion.hoverCard.dwell read inline HoverIntentTiming.current.cardDwell
HoverCardMachine.leaveWindow 150 ms literal cardGrace (200 ms), plus aimWindow and a hold while the pointer is on the card
ui/Tooltip TooltipProvider (Base UI) delay={0} delay=450, timeout=500 (Base UI's warm window)
ui/titleTooltips.ts (every title in pages) next frame HoverIntent on the shared tooltip group
ui/Toolbar.tsx hint its own 500 ms / 400 ms group useHoverIntent on the shared group; keyboard focus shows it at once
Agent pane thread minimap turn preview 110 ms POPOVER_DELAY_MS useHoverIntent (450 ms, then follows ticks at once)
Markdown link hover card 250 ms setTimeout HoverIntent for the pointer; the caret's card keeps 250 ms
Agent pane submenu safe triangle (acpmux/useHoverIntent.ts) its own geometry aimingAt from ui/hoverIntent.ts; its 150 ms submenu delay is unchanged

Left as they are:

  • Tab-strip hover cards keep their own Chrome-style TabPreviewPolicy delay. They already run through HoverCardMachine, so they get the grace and the aim test (with the heading check, so sliding along the strip still hands the card over at once).
  • The Settings background-tile preview keeps its 150 ms dwell. It's a live preview, not a hover card.
  • NSMenuItem.toolTip stays AppKit's own.
  • The group editor bubble (its ⋯ and right-click openers and its show/dismiss path) and group-chip hover are untouched, at Lawrence's chief's request.
  • No layout changes. The sidebar is being redone separately.
  • Base UI tooltips (<Tooltip>) keep Base UI's own warm window, which has the same 450/500 ms timing, separate from the title-tooltip group.

A tooltip far from the pointer no longer wins

While recording I found that the toolbar's first tooltip took about 1 s on base, and a warm neighbor's tooltip appeared and then vanished. The cause was the sidebar's bottom "Default" row: AppKit reported its visibleRect as {{-8,-692},{208,720}}, past its 34 × 24 bounds, so its .inVisibleRect tracking area covered the whole sidebar. As the deepest tracker it beat the toggle and New Workspace, and its tooltip was placed off the window until the 500 ms recheck picked the real one. TooltipPresenter now only lets trackers whose view is under the pointer compete (and falls back to all of them if none is). Base has the same bug, which the before clips show.

Overlap with #20375

#20375 (open) also edits webviews/src/ui/titleTooltips.ts and Tooltip.tsx (TOOLTIP_DELAY 1000, TOOLTIP_WARM 400) and adds test/tooltip-rules.ts. Whichever lands second resolves the conflict. This PR's timing is Leo's 450 ms, from HOVER_INTENT.

Testing

Red and green ran the same commands. Each red commit comes before its fix in the branch.

Native (fleet: cmux-ci run --class light --script scripts/ci/run-swift-testing-suites.sh --arg Packages/macOS/CmuxNext)

Red, first round, at 76ccbaeee84d (aws-m4pro-9):

  • TooltipHoverIntentTests had 6 issues. A sweep showed ["Back", "Forward", "Reload", "Share", "Downloads"], and the first tooltip showed with no delay.
  • SidebarHoverCardDwellTests failed: the diagonal path into the card slid it to ws-2, and the card closed while the pointer rested on it.

Red, second round, at bdd850384de2 (aws-m4pro-9):

  • TooltipHoverIntentTests failed because the tooltip waited 800 ms instead of 450 ms.
  • TooltipSurfaceTests failed: no --cmux-tooltip-tint, and no tooltip after 500 ms.
  • ThemedTooltipTests failed: the fill was opaque instead of the frosted tint.

Red for the strengthened review tests, at 13410b2baca7 (a not-for-merge branch: the red commit plus the two tests), on aws-m4pro-2:

  • movingDownTheListWithDriftSlidesTheCardAtOnce failed: the card stayed on row 0.
  • aLabeledControlInsideATooltipViewShowsNeither failed: it showed the container's "Page actions".

Red for the Default-row bug, at 6a3c382d94b0 (the red test on its own) on aws-m4pro-3: aDeeperTooltipAwayFromThePointerDoesNotWin failed with (presenter.shown?.text → "Default") == "Back".

Green:

  • At 081bbaf on aws-m4pro-7, a display host, so no motion skips: every suite passed, including TooltipSurface, TooltipHoverIntent, ThemedTooltip, SubtleElevation, SidebarHoverCardDwell and SpareNewTabChatOpensTabs.
  • At the head 33444f2de1fe on aws-m4pro-2: 306 of 306 suites passed, including aDeeperTooltipAwayFromThePointerDoesNotWin.
    • An earlier round there on aws-m4pro-3 timed out once each in BranchStateResourcesTests and PinnedPageTests (waiting on a pinned tab). Both passed in every other round, and this PR doesn't touch them.
  • Every round exits 1 only on the fleet's same-tree guard (AcpmuxBundleReplacedTests skipped for want of a published cmux-tui tree). That's infra.
  • This PR also fixes a base compile red in SpareNewTabChatOpensTabsTests, which passed tag: to AgentTabStore(build:).

Web (heavy --mem 4G bun test; browser tests use CMUX_BROWSER_TESTS=1 heavy --mem 6G, Chromium)

Red at ae4b3073af6e:

  • src/ui/titleTooltips.test.ts failed 3 cases.
  • test/hover-intent-cards.test.tsx failed 1 (the minimap preview showed after 110 ms).
  • test/hover-row-sweep.test.ts failed 2: a sweep sampled 27 half-faded fills.

Red at bdd850384de2:

  • titleTooltips.test.ts failed 2: the 450 ms delay, and a key not dropping a waiting toolbar hint.
  • test/tooltip-surface.test.ts failed 4:
    • no 120 ms fade or 2 px rise;
    • no fade under Reduce Motion;
    • a solid rgb(52, 49, 68) fill instead of the tint, with no blur;
    • the constants differed from the Swift ones.

Red at aaa5d137f8ea: tooltip-surface.test.ts showed a click leaving the tooltip fading ({hidden: false, ending: true}).

Green:

  • PR CI web / react-apps-check at 33444f2de1fe ran 270 test files. Every file this PR adds or changes passes: titleTooltips, hover-intent-parity, hover-intent-cards, hover-row-sweep, tooltip-surface, popup-surface, subtle-elevation, chat-header-tooltips and ui-a11y. The one red is theme-colors.test.ts, on agent-session/acpmux/composerStates.css:28, a line that came from New Tab composer: quiet focus rim and theme-surface fill #20561 on base and isn't in this branch.
  • After merging base (Subtle elevation: one shared shadow scale, no big halos #20519), the focused runs passed: subtle-elevation.test.ts and tooltip-surface.test.ts (6/6, Chromium).

Final head 6248e28573c0: the tip a5f878e69fc7 merged in, with ci-target-graph.json restored to the tip's (the merge had dropped CmuxNextAgentLanes).

  • The release compile passed on it (cmux-ci isolated, check-release-compile.sh).
  • Run again on it, subtle-elevation, popup-surface, hover-intent-parity and titleTooltips passed 50/50.
  • react-apps-check there stopped at lint, on seven control-has-associated-label warnings in base's home-channels/ChiefSheet.tsx and ConversationSheets.tsx.

Guards: crash_ratchet.py, check-concurrency.sh, check-system-blue and check-motion all pass.

Clips

Each clip is before (left, feat-cmux-next) and after (right, this PR), both recorded the same way on a capture mini at about 60 fps with the art wallpaper on. Native hovers are driven with debug.pointer_hover. Pages are hovered with a new debug-only debug.agent_pane {action:"hover"}, which fires the page's pointer events, because an inactive capture-slot app gets no real mouse moves. Base was built from feat-cmux-next plus only the three debug commits. Times are from frame onsets.

Fast sweep: sidebar rows, then title-bar and pane-toolbar buttons at sweep speed. Before, the pane toolbar leaves a trail of tooltips (Changes, Terminal, Browser); after, nothing shows.

Fast sweep

sweep.mp4 (full quality)

Slow dwell, native: rest on the sidebar toggle, slide to New Workspace, leave, rest again. After: the first tooltip shows 0.50 s after the rest, New Workspace shows at once (warm), and after cooling the next rest waits again (3.27 to 3.75 s). Before: the first takes about 0.85 s, and New Workspace's tooltip shows then vanishes at the recheck (the Default-row bug above).

Slow dwell, native

dwell-native.mp4 (full quality)

Slow dwell, page toolbar: over the art wallpaper. Before: instant (0.33 to 0.35 s). After: 0.31 to 0.83 s, then neighbors at once.

Slow dwell, page toolbar

dwell-page.mp4 (full quality)

Sidebar cards: rest on a workspace row (1 s card), then slide down. The card follows row to row once open, in both.

Sidebar cards

cards.mp4 (full quality)

Jump to latest, busy wallpaper: after a fling up a real chat. Before: instant. After: 0.50 s, on the frosted glass surface, then fades out over 80 ms.

Jump to latest, busy wallpaper

jump-wallpaper.mp4 (full quality)

Jump to latest, light theme (Rose Pine Dawn): the same over a light page; the tint keeps the label readable.

Jump to latest, light theme (Rose Pine Dawn)

jump-light.mp4 (full quality)

Page toolbar, light theme: the page dwell again under Rose Pine Dawn.

Page toolbar, light theme

dwell-page-light.mp4 (full quality)

Changelog

Changed: Tooltips and hover cards wait briefly before showing, then show instantly for neighbors, like macOS.

🤖 Generated with Claude Code

teamleaderleo and others added 3 commits October 14, 2026 01:37
Tooltips show at once on every control a sweep passes, a neighbor never
waits for a warm group, a labeled button repeats its label, and a pointer
heading diagonally into the workspace card slides it to the row it
crosses, then the card closes under the pointer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e (red)

Title tooltips show on the first frame on every control a sweep passes, a
labeled control repeats its text, the minimap's turn preview shows after
110 ms and cools at once, and a fast sweep lights each row with a
half-faded fill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One policy for the app and its pages (HoverIntentTiming in CmuxNextDesign,
HOVER_INTENT in webviews/src/ui/hoverIntent.ts, a test keeps them equal):

- Tooltips wait 800 ms before the first shows (AppKit's
  NSInitialToolTipDelay is about 1 s), then a neighbor's shows at once
  while the group is warm; warmth cools 500 ms after the last one hid. A
  click, key or scroll cools it. A control whose own label says the
  tooltip shows none (#20375's rule).
- Sidebar hover cards keep the 1 s dwell and slide row to row while
  warm. A pointer heading into the card along the safe triangle no longer
  hands it to a row it crosses (300 ms aim), a pointer resting on the card
  keeps it, and leaving starts a 200 ms grace.
- Web rows light on the frame the pointer reaches them, with no fade-in
  (desktop.css), so a fast sweep flashes no half-lit rows.
- Moved onto the primitive: TooltipPresenter, the WorkspaceHoverCard
  dwell, HoverCardMachine's leave window, Base UI's TooltipProvider, title
  tooltips, toolbar hints, the minimap's turn preview, the markdown link
  card, and the submenu safe triangle geometry.

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

coderabbitai Bot commented Oct 14, 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: 6c9388de-ca4d-424b-b643-bb74b1bc13ab

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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@blacksmith-sh

This comment has been minimized.

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Unclear: web / react-apps-check failed: no known signature; failed step: Check webviews (Oxlint, Oxfmt, type check).

CI failed on 6248e28573 (run 38606843157 attempt 1): 1 unknown.
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped.

Job Verdict Why
web / react-apps-check unknown no known signature; failed step: Check webviews (Oxlint, Oxfmt, type check)

Not re-run automatically: web / react-apps-check is not a machine failure.

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.

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

cmux-next tour of 81a3b26c0ac887b6c7b600cef301fe62d937e1d3 (run)

The tour job failed before the tour ran (build or setup); the run log has the output.

The tour produced no media.

Tours are data in scripts/cmux-next/media/tours: add a step or a tour file to show your feature.

teamleaderleo and others added 4 commits October 14, 2026 02:36
…d glass (red)

Leo 2026-10-14: the first tooltip waits about 400-500 ms, fades in over the
fade-in token rising 2 pt, a warm neighbor's is there at once, and it fades
out quicker; Reduce Motion keeps the fade with no rise. The tooltip is
frosted glass whose tint keeps the text 4.5:1 over pure black and pure
white, opaque under Reduce Transparency, one surface for pages and the app.

Review fixes covered here: a titled control inside a view with a tooltip
shows neither; moving down the sidebar with drift toward the card slides
the card at once; a key typed while a toolbar hint waits drops it; the
hover-card grace check now advances the clock.

TooltipSurface (the token) and a TooltipPanel shim of the names the tests
read land here so the test target compiles; behavior is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first tooltip of a group now waits 450 ms (was 800; Leo asked for
400-500): a sweep across a toolbar still sits 30-100 ms on each button, far
under it, while a deliberate rest answers in under half a second. It fades
in over the fade-in token (120 ms) rising 2 pt; a warm neighbor's is there
at once with no fade; it fades out over the fade-out token (80 ms). Reduce
Motion keeps the fade and drops the rise. Pages: the popup-open and
popup-close times, and the warm group's hint marks itself data-instant.

One tooltip surface, native and pages (TooltipSurface): frosted glass
(NSVisualEffectView behind the window; backdrop-filter blur 24px) under the
popup surface at the least alpha that keeps the primary text 4.5:1 over
pure black and pure white (--cmux-tooltip-tint for pages), a
one-device-pixel separator rim, and an elevation-1 shadow (0 1px 2px black
at 7%). Reduce Transparency draws the opaque popup surface.

Review fixes: the safe triangle counts a move as aiming only when it heads
for the card more than it runs along it, so tab and sidebar cards slide at
once again; a titled control inside a view with a tooltip shows neither; a
show that finds its view gone leaves the intent cold; a cooled group drops
its other intents' waits; the instant row-hover rule matches only class
names ending in -row, -item or -option.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#20481 landed --cmux-hairline (one device pixel); the tooltip rim uses it
instead of a local 2x media query.

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

cursor Bot commented Oct 14, 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 and others added 4 commits October 14, 2026 02:44
The drift slide now starts by the list's right edge, where the old safe
triangle is widest, and the labeled control inside a tooltip view waits
past AppKit's delay too; on the red commit both passed vacuously.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of the fades: a click, key, scroll or app switch faded the tooltip
over 80 ms, so it lingered over the menu a click opened; AppKit's goes at
once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of the fades:
- A click, key, scroll or app switch hides the tooltip at once (native
  hideNow, pages' dismiss), as AppKit's; only leaving it fades it out.
- New text on a tooltip that is fading in no longer cuts the fade short.
- The toolbar hint's card stays mounted once loaded and closes through
  open=false, so Base UI fades it out (and in again next time).
- The rim width comes from the screen the tooltip shows on, not the one it
  last showed on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
debug.pointer_hover delivered tracking-area events but left the pointer
itself where the real mouse was, so a shown tooltip's recheck (which read
NSEvent.mouseLocation) put it away after half a second on a headless
capture host. The tooltip recheck now reads PointerHover.pointer(in:) (the
real pointer, or DEBUG's synthesized one), and pointer_hover sets that
synthesized pointer, as debug.mouse does.

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

cursor Bot commented Oct 14, 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.

cmux-autofix[bot] and others added 5 commits October 14, 2026 10:03
Fleet hosts with no display drop layer animations, as the dialog fade
tests note; the fade tests skip there and require an on-screen window.

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

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

red: web / Web status; do not merge until green; see lane-rules
red: web / react-apps-check; do not merge until green; see lane-rules

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

CI fast guards failed on 6248e28573 (https://github.com/manaflow-ai/cmux/actions/runs/38606843157). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally. This comment is updated in place on each push.

WebKit's tracking area has an owner that is not a responder, so debug.mouse
move never reached the agent pane's page on a capture slot.

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

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

312 states changed: agent-pane.artifact-panel/markdown, agent-pane.artifact-panel/html, agent-pane.trust-ask/trusted, agent-pane.transcript/long-code, agent-pane.artifact-panel/closed, ... · 1 new state · 51 broken states · 108 play checks failed

Diff page and renders (the run's gallery-pr artifact)

State Before · after
agent-pane.artifact-panel/markdown (Apple System Colors, webkit)
agent-pane.artifact-panel/html (Apple System Colors, webkit)
agent-pane.artifact-panel/markdown (Apple System Colors, chromium)
agent-pane.trust-ask/trusted (Apple System Colors Light, chromium)
agent-pane.trust-ask/trusted (Apple System Colors, chromium)
agent-pane.transcript/long-code (Apple System Colors Light, webkit)

306 more on the diff page.

Live preview (follows this branch; start it with scripts/gallery-live.sh up <branch> from an hq checkout):

  • agent-pane.artifact-panel/markdown: /wt/op-next-theme-hover-intent/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/markdown
  • agent-pane.artifact-panel/html: /wt/op-next-theme-hover-intent/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/html
  • agent-pane.trust-ask/trusted: /wt/op-next-theme-hover-intent/?entry=agent-pane.trust-ask#/agent-pane.trust-ask/trusted
  • agent-pane.transcript/long-code: /wt/op-next-theme-hover-intent/?entry=agent-pane.transcript#/agent-pane.transcript/long-code
  • agent-pane.artifact-panel/closed: /wt/op-next-theme-hover-intent/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/closed
  • agent-pane.transcript/side-chat-acpmux: /wt/op-next-theme-hover-intent/?entry=agent-pane.transcript#/agent-pane.transcript/side-chat-acpmux
  • 141 more on the diff page

Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):

  • agent-pane.artifact-panel/markdown (Apple System Colors, webkit): play: no element for button "Open preview"
  • agent-pane.artifact-panel/html (Apple System Colors, webkit): play: no element for button "Open preview"
  • agent-pane.artifact-panel/markdown (Apple System Colors, chromium): play: no element for button "Open preview"
  • agent-pane.trust-ask/trusted (Apple System Colors Light, chromium): step 1 click button "Undo": layout shift 0.0171 (limit 0)
  • agent-pane.trust-ask/trusted (Apple System Colors, chromium): step 1 click button "Undo": layout shift 0.0171 (limit 0)
  • agent-pane.trust-ask/trusted (Apple System Colors Light, chromium): step 1 click button "Undo": layout shift 0.0105 (limit 0)
  • 589 more on the diff page

606 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes.

5666 unchanged · base 2e420aa · head 81a3b26

teamleaderleo and others added 3 commits October 14, 2026 08:01
# Conflicts:
#	webviews/src/pages/shared/desktop.css
…er (base red)

AgentTabStore takes build: since its tag parameter was replaced; the test still
passed tag:, so CmuxNextAppTests did not compile on feat-cmux-next.

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

cursor Bot commented Oct 14, 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 and others added 4 commits October 14, 2026 09:14
On a capture slot the sidebar toggle's tooltip was 'Default': the sidebar's
bottom Default item reports a visible rect past its bounds, so its tracking
area spans the sidebar, and the deepest tracker the pointer entered won.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AppKit reported the sidebar's bottom Default item's visible rect past its
bounds, so its tracking area covered the whole sidebar and, being the deepest,
its tooltip won over the toggle's, New Workspace's and every row's, and
showed by the window's bottom edge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
debug.agent_pane {action: hover, x, y} sends a mouse moved event straight to the
agent page's web view, which takes it in a window that is not key; a posted
move reached no view there.

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

cursor Bot commented Oct 14, 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.

WebKit takes no mouse moves in a window that is not key, and a capture slot's
never is, so the hover goes to the page as pointer and mouse events at the point.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@blacksmith-sh

blacksmith-sh Bot commented Oct 14, 2026

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
test/theme-colors.test.ts/theme-colors.test View Logs

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

@cursor

cursor Bot commented Oct 14, 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.

…opped CmuxNextAgentLanes)

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

cursor Bot commented Oct 14, 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
teamleaderleo merged commit 1b3084e into feat-cmux-next Oct 14, 2026
126 of 146 checks passed
@teamleaderleo
teamleaderleo deleted the op-next-theme/hover-intent branch October 14, 2026 17:40
teamleaderleo added a commit that referenced this pull request Oct 14, 2026
Base #20528 (hover intent) replaces this PR's tooltip delay and warm window
(TOOLTIP_DELAY/TOOLTIP_WARM): take base's titleTooltips/Tooltip. Base #20454
moved the composer's pickers; drop their tooltips that repeat the face again,
and mark the ones that add a path or a time with tooltip-allow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant