Repository navigation
fix(registry): register device timeline synchronously - #2546
Merged
miga-heygen merged 1 commit intoJul 28, 2026
Merged
Conversation
miga-heygen
reviewed
Jul 28, 2026
miga-heygen
left a comment
Contributor
There was a problem hiding this comment.
SSOT — determinism contract violation fixed
Clean fix. The timeline registration was deferred behind a double requestAnimationFrame inside onReady(), violating the synchronous timeline contract (determinism-rules.md: "Build timelines synchronously at page load"). The renderer's sub-composition poll could time out waiting for a timeline that only appeared after two animation frames — frames that headless Chrome may never fire reliably.
Verified
- Timeline still
paused: true✓ - Registration now synchronous (inline script, right after
tl = gsap.timeline(...)) ✓ onReady()retains only model-readiness concerns (paintReady,captureScreens()) — good separation of framework contract vs composition state ✓- Stale comments removed ✓
- All 40 CI checks green ✓
No issues found. Ship it.
— Miga
miguel-heygen
approved these changes
Jul 28, 2026
dahans-msft2
pushed a commit
to dahans-msft2/hyperframes
that referenced
this pull request
Aug 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
vfx-iphone-devicepaused timeline synchronouslyrequestAnimationFramegate from composition startupWhy
The block previously exposed
window.__timelines["devices-canvas"]only after both GLTF models loaded and two animation frames elapsed. That violates the synchronous timeline contract and can make renderers wait for the sub-composition polling timeout.Fixes the device-timeline portion of #2107.
Validation
bunx oxfmt registry/blocks/vfx-iphone-device/vfx-iphone-device.htmllintHyperframeHtml: 0 errors (2 existing tween-overlap warnings)npx hyperframes checkagainst a temporary project copy: Runtime 0 errors, Motion 0 errors; the overall command remains non-zero because the existing hidden screen-texture DOM triggers 18 layout occlusion findings unrelated to this change