Skip to content

beginframe issue #1641

Description

@chrisvincodes

Describe the bug

HyperFrames beginFrame renders still frames with no movement — early timestamps produce blank/white frames, only late timestamps have content

Issue Description
When rendering a HyperFrames composition with 10+ scenes using hyperframes render (beginFrame capture), the output MP4 has no movement — all frames from t=0 to t=N are identical still images stitched together. Frame extraction confirms:
- t=1–57s: 12,460 bytes each (blank/white frames)
- t=60+: 48,088 bytes (actual content)

The issue is not caused by visibility tweens or CSS changes. Even after removing all tl.set('#sceneN', { visibility: 'hidden' }) calls, the render still produces only blank frames for the first ~57 seconds.







Confirmed frame sizes from draft.mp4 (68s, 11 scenes):
- t=1–57s: 12,460 bytes (blank)
- t=60s: 48,088 bytes (content)

Link to reproduction

na

Steps to reproduce

Steps to Reproduce
1. npx hyperframes init a new project
2. Create 10+ scenes with GSAP timelines (clip-level opacity transitions, position: fixed clips)
3. npx hyperframes render --quality high --output output.mp4
4. Extract frames: ffmpeg -i output.mp4 -ss N -vframes 1 frame.jpg
5. Observe: early timestamps (t=0–57) are blank 12KB frames; only late timestamps have content

Expected behavior

Expected Behavior
All scenes should render with correct animation at every timestamp, producing a video with smooth scene transitions and animated elements throughout.

Actual behavior

Actual Behavior
The headless browser renders a blank canvas for timestamps t=0–57. The static-dedup in beginFrame marks these as "reused frames," suggesting the seek lands on the wrong temporal state in complex multi-scene GSAP timelines.

Environment

Environment
    - OS: Linux (6.8.0-117-generic)
    - HyperFrames: 0.6.119
    - Node.js: (latest)
    - Browser: Puppeteer/Chromium (headless, via beginFrame)
    - Composition: 11 scenes, clip-level GSAP timelines, position: fixed clips, opacity transitions, ~2000 total frames at 30fps

Additional context

Lint Output

13 error(s), 3 warning(s)
Key errors:
- multiple_root_compositions: index.html, mini_test.html (extra file pollutes render)
- scene_layer_missing_visibility_kill: all 10 scenes (but adding visibility tweens makes it worse)


Additional Context
- Minimal 3-scene compositions render correctly with the same --no-clip-visibility flags
- The bug appears specifically in complex multi-scene (10+) GSAP timelines with clip-level position: fixed elements
- forceScreenshot: true (screenshot mode) was also tested — same blank-frame result
- The composition plays correctly in a live browser — the issue is specific to headless capture
- A previous session (hermes-skills-reel) documented this as a confirmed pre-existing bug in HyperFrames beginFrame

Tags
beginframe, blank-frames, headless-browser, multi-scene, gsap, render

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions