diff --git a/frontend/src/components/preview/preview-player.tsx b/frontend/src/components/preview/preview-player.tsx index 9330bd9..a140657 100644 --- a/frontend/src/components/preview/preview-player.tsx +++ b/frontend/src/components/preview/preview-player.tsx @@ -88,6 +88,23 @@ export function PreviewPlayer() { const selectedFrame = storyboard?.frames.find((f) => f.id === selectedFrameId) + // Sync currentTime when user selects a frame (not during playback) + useEffect(() => { + if (isPlaying || !storyboard?.frames.length || !selectedFrameId) return + + // Calculate start time of selected frame + let startTime = 0 + for (const frame of storyboard.frames) { + if (frame.id === selectedFrameId) break + startTime += frame.duration + } + + // Only update if different (avoid infinite loop) + if (Math.abs(currentTime - startTime) > 0.1) { + setCurrentTime(startTime) + } + }, [selectedFrameId, isPlaying]) + // Audio playback sync useEffect(() => { if (!audioRef.current) return