Flag-gated keyframe system (v0.6.93, VITE_STUDIO_ENABLE_KEYFRAMES=true). Sequence that broke once:
- Select an element whose position/scale is owned by an authored entrance tween (
gsap.from(..., { scale: 1.35, opacity: 0, filter: blur })).
- "Convert y to keyframes" → "Add scale keyframe" → "Enable arc motion".
- Layout panel showed NaNpx for X/Y/W/H and the element vanished from the canvas (only recoverable via undo stack / reload).
Not deterministic — a later attempt on the same element with the same steps applied cleanly. Likely a race between the conversion re-seek and the arc mutation reading layout mid-flight.
Related papercut: every keyframe mutation (convert/add) re-seeks the playhead to the keyframe's 0% time. When that lands mid-entrance (blur/opacity ramp), the canvas looks broken right after a successful edit. Preserving the playhead position (or seeking to the current keyframe, not 0%) would read much better.
Flag-gated keyframe system (v0.6.93, VITE_STUDIO_ENABLE_KEYFRAMES=true). Sequence that broke once:
gsap.from(..., { scale: 1.35, opacity: 0, filter: blur })).Not deterministic — a later attempt on the same element with the same steps applied cleanly. Likely a race between the conversion re-seek and the arc mutation reading layout mid-flight.
Related papercut: every keyframe mutation (convert/add) re-seeks the playhead to the keyframe's 0% time. When that lands mid-entrance (blur/opacity ramp), the canvas looks broken right after a successful edit. Preserving the playhead position (or seeking to the current keyframe, not 0%) would read much better.