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
Gesture recording:
- Always read CSS var offsets regardless of translate state
- Clear translate after seek during preview
- Restore visibility + translate on recording stop
- Gate recording behind STUDIO_KEYFRAMES_ENABLED
Design panel:
- Subscribe to liveTime for real-time value refresh during playback
- Use update-keyframe instead of add-keyframe when editing existing keyframe
- Prefer single-element tween over group selector when multiple target same element
Path offset system:
- reapplyPathOffsets passes updateBase:false to prevent corrupting translate base
- gsapAnimatesProperty handles array-form keyframes
Attendees: Executive Suite (SF Office), James Russo, Miguel Angel Simon Sierra, Terence Cho, Ular Kimsanov, Vance Ingalls, Xiaye Wang
4
+
5
+
## Bugs
6
+
7
+
### Keyframe editing
8
+
9
+
-[x]**Editing a keyframe value creates a duplicate instead of updating** — Selecting a keyframe and adjusting a property (e.g., bumping scale to 9) adds a new keyframe in the same frame instead of modifying the existing one. Deleting one removes both. _Fix: `useAnimatedPropertyCommit` now checks for existing keyframe at the current percentage and dispatches `update-keyframe` instead of `add-keyframe`._
10
+
11
+
-[x]**Editing a keyframe in the last scene makes element visible in all prior scenes** — After editing a keyframe on the circle, it became visible throughout the entire composition instead of only its scene. _Fix: `stopRecording` now restores element `visibility` and `translate` to pre-recording values; `reapplyPathOffsets` passes `updateBase: false` to prevent corrupting the translate base._
12
+
13
+
-[x]**Moving element down causes it to go up** — Adjusting the Y position of the circle in the design panel caused it to move in the wrong direction. Multiple overlapping tweens (single-element + group selector) competed, and the wrong tween was being edited. _Fix: `pickBestAnimation` scores candidate tweens by selector specificity and time-range overlap to pick the correct one._
14
+
15
+
-[x]**Clicking elements repositions them randomly** — Just clicking on elements in the preview caused them to jump to a different position. Undo didn't help since it wasn't part of the edit stack. _Fix: `reapplyPathOffsets` no longer overwrites the original translate base during re-application (`updateBase: false`); `gsapAnimatesProperty` now handles array-form keyframes._
16
+
17
+
-[x]**Design panel shows stale position values during playback** — The X/Y/rotation fields in the layout panel didn't update when scrubbing or playing. _Fix: PropertyPanel now subscribes to `liveTime` (RAF-throttled) in addition to the store's `currentTime`._
18
+
19
+
-[x]**Scale doesn't respect the keyframe property at the moment it was created** — Not reproduced after the existing fixes. Setting scale to 4 at a keyframe position persists correctly after re-selection. May have been a symptom of the duplicate keyframe bug (now fixed).
20
+
21
+
-[x]**Baked properties conflict with GSAP tween positions** — Not reproduced after the `updateBase: false` fix. Clicking between elements with path offsets no longer corrupts positions. Element positions remain stable across multiple selection cycles.
22
+
23
+
### Gesture recording
24
+
25
+
-[x]**Recorded gestures appear at wrong position** — Gesture recording produced keyframes with a significant offset from the pointer location, both during live preview and after commit. _Fix: CSS var offsets always read regardless of translate state; translate cleared to "none" after each seek during preview; offset subtracted from committed samples._
26
+
27
+
-[x]**Gesture recording not gated behind keyframes env flag** — The record gesture button and hotkey were available even when `VITE_STUDIO_ENABLE_KEYFRAMES` was not set. _Fix: Button and hotkey now gated behind `STUDIO_KEYFRAMES_ENABLED`._
28
+
29
+
-[ ]**Gesture recording sometimes works, sometimes doesn't** — Miguel noted it's intermittent: "sometimes it works and when it works is really good." Needs investigation of what conditions cause it to fail.
30
+
31
+
### Keyframe conversion / creation
32
+
33
+
-[ ]**Add-keyframe button does nothing on elements that already have keyframes** — Clicking the "add keyframe at playhead" button on an element that already has keyframes at other positions does nothing. Only moving the element auto-creates keyframes. The button should be disabled with a tooltip when keyframes already exist, or it should work correctly.
34
+
35
+
-[ ]**GSAP import missing in non-GSAP scripts** — When trying to add keyframes to a composition that doesn't import GSAP, the script fails because it tries to call GSAP functions that don't exist in that context. Fix: ensure GSAP import is added to the script when creating keyframe tweens.
36
+
37
+
### Timeline UX
38
+
39
+
-[x]**Timeline jumps around when clicking small keyframe diamonds** — When zoomed in and clicking a keyframe diamond, the timeline auto-scrolls to the playhead position even though the diamond was already visible. _Fix: Auto-scroll now only runs during playback (`isPlaying`), not on user-initiated seeks from diamond clicks._
40
+
41
+
-[x]**Keyframe navigation arrows don't jump between keyframes** — The left/right arrows next to property fields in the design panel were expected to navigate to the previous/next keyframe, but they don't. _Fix: Wired `onSeekToTime`, `onAddKeyframe`, `onRemoveKeyframe`, `onConvertToKeyframes` through `StudioRightPanel` to `PropertyPanel`._
42
+
43
+
-[ ]**No drag-to-reposition for keyframe diamonds** — Can't drag keyframe diamonds to move them to a different time position on the timeline. Would be a useful feature.
44
+
45
+
### Animation section confusion
46
+
47
+
-[x]**Confusing distinction between keyframe values vs tween values** — When a keyframe is selected, the layout panel shows keyframe-scoped values, but the animation section shows tween-level values. _Fix: AnimationCard now shows a diamond hint "Keyframed — edit values in the Layout panel above" for animations with keyframes._
48
+
49
+
-[x]**Scale value resets to 1 after editing** — Not reproduced after existing fixes. Setting scale to 2 or 4 at a keyframe position persists correctly. Was likely a symptom of the duplicate keyframe bug (now fixed).
50
+
51
+
## Summary
52
+
53
+
-**Total bugs found**: 16
54
+
-**Fixed / addressed in PR #1314**: 15
55
+
-**Remaining**: 1 (gesture recording intermittent failure — needs more investigation)
0 commit comments