A wheel step in the middle of a transition restarted the ease-out
curve at full speed, so a run of quick steps kicked at each one.
A pan called finish() first and made the zoom jump to its target.
Both made the zoom and the gliding lists feel jerky.
- A new step starts from the speed the view already has and then
eases out. Quick steps in one direction move in one stroke. A step
the other way still starts from rest.
- A pan takes the transition along. The zoom goes on while dragging
and lands where it was heading, moved by the pan. This covers all
eight pan places: scene and container, graph, plugin board,
texture and pixel art, timeline, pattern, song and sound.
- finish() is gone, it has no callers left. Dragging the scrollbar,
a jump to a row, another document or a new view size still end
the transition as before.
Found: on a second step the old curve jumped to 2.47 times the
speed the view had just before.
Tests:
- npm run check on stein2: 299 files, 4598 tests (5 new)
- e2e 46 on stein2: ALL PASSED, 24 checks (1 new). A pan by 40/30
px during a 1000 ms zoom step leaves it moving (2.33 on the way
from 2 to 3), it lands on 3 with the world point moved by the pan.
- Counter-checks: with the pace reset to 3 the new unit test fails
with 2.47 instead of at most 1.1. Without carry the pan test fails.
- melektaus-atx went offline mid-run, so both ran on stein2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>