You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
polish(launcher): put the length into the settle, on an Apple spring
Slower, but deliberately not slower everywhere. Two halves of this
transition want opposite things.
The veil is mechanical. It is also the only thing standing between the
notes and the list, so it stays at 160ms: every frame after it reaches full
opacity the list is completely hidden, so time added beyond that point buys
something nobody can see — and time added before it puts the list back
underneath the notes text, which is the ghosting this whole approach exists
to remove. It keeps its bezier.
The content is the part worth watching, so that is where the length goes,
and it moves to a spring. Apple states springs as duration + bounce rather
than stiffness/damping, and the reason the result reads as an object
settling rather than a value being tweened is the asymmetric deceleration:
a spring keeps a trace of momentum right at the end where a bezier simply
stops. Bounce is 0.05 — a full-window surface that overshoots reads as
sloppy rather than playful, so what is taken from the spring is the settle,
not the wobble. Measured: monotonic, no overshoot.
Content now also comes forward from scale(0.985) while travelling its last
28px, which is what separates this from a slide along a rail. At full size
that is a couple of pixels of text — the amount you feel without seeing.
The list recedes slightly further (4.5%) on the same spring, so on the way
back the two layers settle as one movement rather than two.
Both directions settle at ~490ms, up from ~280ms, which is the top of the
200-500ms band a full-surface transition belongs in. Exit uses a shorter,
zero-bounce spring: the system getting out of the way should still outpace
the user deciding to leave.
The invariant from the previous commit is re-verified frame by frame at
60fps in both directions: whenever content opacity is above 0.05, veil
opacity is already above 0.97.
Reduced motion is deliberately NOT slowed — it stays a 160ms crossfade with
no springs and no transforms. Slower is the opposite of what that setting
asks for.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JAC7SCyAxu4vFYoGLa215T
0 commit comments