Skip to content

Chained sub-composition slots: id-ref data-start ignored in render media scheduling #3361

Description

@valeriangalliat

Describe the bug

Documented relative data-start on composition hosts (data-composition-src slots that chain with data-start="hook") is ignored during render media scheduling.

After sub-compositions are inlined, collectRenderMedia resolves each host's timeline window with parseFloat(data-start). Non-numeric id-refs (hook, performance, intro + 0.5) become 0, so every scene's embedded <video> is scheduled at global 0–2s instead of its resolved window (e.g. 2–4s, 4–6s).

Symptom: multi-scene exports show the first scene, then go black for the remainder. The same project with numeric slot starts (0, 2, 4) renders correctly — proving id-ref resolution is the variable.

This is the composition-host slot path (renderMediaCollector / resolveHostWindow). Open PR #3252 fixes compileTimingAttrs for sibling <video> elements but does not cover host slot scheduling.

Link to reproduction

https://github.com/ArcadeHQ/hyperframes-repros/tree/patch/chained-scene-slots

Steps to reproduce

  1. git clone https://github.com/ArcadeHQ/hyperframes-repros && cd hyperframes-repros && git checkout patch/chained-scene-slots
  2. npx hyperframes@0.8.4 render --quality draft --workers 1 --output renders/out.mp4
  3. Sample frames: ffmpeg -ss 1 -i renders/out.mp4 -frames:v 1 renders/at-1.png (red), -ss 3 (black), -ss 5 (black)
  4. Control: cp index-numeric.html index.html, re-render — red at 1s, blue at 3s, green at 5s

Expected behavior

Each scene's video is extracted and frame-injected at its resolved global window (0–2s red, 2–4s blue, 4–6s green).

Actual behavior

Only the first scene's footage is scheduled. The MP4 is red for ~2s, then black through the end.

Environment

✓ Version          0.8.4 (latest)
✓ Node.js          v24.19.0 (darwin arm64)
✓ FFmpeg           ffmpeg 8.1.2 at /opt/homebrew/bin/ffmpeg
✓ FFprobe          ffprobe 8.1.2 at /opt/homebrew/bin/ffprobe
✓ Chrome           cache: .../chrome-headless-shell/mac_arm-152.0.7977.42/...

Additional context

Related open PR: #3252 (timing compiler id-ref fix — different code path).

A fix likely belongs alongside id-ref-aware host timing (similar to resolving data-start references against sibling slots / data-composition-id targets in the inlined document).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions