Skip to content

fix(studio): menus and popovers ease their scale in, not only their opacity - #7583

Merged
miguel-heygen merged 2 commits into
mainfrom
fix/menu-scale-transition
Nov 14, 2026
Merged

miguel-heygen merged 2 commits into
mainfrom
fix/menu-scale-transition

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

Design: menus and popovers open from 85% scale over their open duration; the product's design lead set those values.

What changed

floatingMotion (shared by Menu, Popover, Select and Tooltip) sets the enter and exit state with the standalone scale property but transitioned opacity,transform. scale is its own CSS property, so it never transitioned: opacity eased and the scale snapped to 100% after the first frame. The transition list is now opacity,scale; nothing in the shared classes uses transform.

Before

A menu opening with Desktop's values (250 ms, 85% start): scale stays none at 0, 60, 120, 250 and 400 ms, only opacity eases, so the menu appears at full size.

Before

After

Same menu and values: scale reads 0.85, 0.96, 0.99, then none at 250 ms, easing with the opacity.

After

What I measured

Sampling getComputedStyle(menu).scale every animation frame after opening a menu gave 0.85, 0.85, 1, 1 before the change, a snap. Menu tests: 17 of 17 pass with the fix.

fails without the fix: with the transition list put back to opacity,transform, the new test "transitions every property its starting and ending styles set" fails (1 failed, 16 passed).

What I did NOT exercise

Only the Menu test file was run, on one machine, not the full studio suite. The captures are filmstrips made by seeking the menu's CSS transitions to fixed times in Chromium, not a screen recording.

Size

A one-property fix in a different package from any open PR of mine; nothing else can carry it.

@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 267 (base branch 267), smooth 107 of those

The gate passes.
Smoothness is reported in the artifact, not gated. A case fails only if it fails 2 of 3 runs.

Quarantined, measured but not gated (8)

Unstable (1)

  • seqplainkeys-none-pct-r0-nested-z100: tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo false, teleport true / tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true / tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true

@heygengenesis heygengenesis Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving at acf2315e. No blockers.

  • The cause is right. floatingMotion sets the starting style with the standalone scale property, which is separate from transform. Listing transform in the transition never animated it. Changing the list to opacity,scale covers the only two properties the starting and ending styles set. No caller adds a translate, rotate or transform starting style that the old list would have animated. The callers are Menu, Select and Tooltip, plus Popover through Menu's shared classes.
  • Fails without the fix: I confirmed this locally. With the list put back to opacity,transform, the new test fails with expected [ 'opacity', 'transform' ] to include 'scale' (1 failed, 16 passed). With the fix, all 17 tests pass.
  • The newest CI, PR captures, regression and Windows runs at this head are green. Earlier runs on this head were cancelled or failed, and newer runs replaced them.

Non-blocking: the test reads the class string with a regex. It catches [prop:…] arbitrary values and the opacity/scale/translate/rotate- utilities, but not a raw transform utility. That is enough for a guard on one helper.

@miguel-heygen
miguel-heygen added this pull request to the merge queue Nov 14, 2026
Merged via the queue into main with commit 062515b Nov 14, 2026
149 of 151 checks passed
@miguel-heygen
miguel-heygen deleted the fix/menu-scale-transition branch November 14, 2026 03:47
@heygengenesis heygengenesis Bot mentioned this pull request Nov 14, 2026
1 of 2 tasks
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