Repository navigation
Conversation
…rSeek starts On check pages the async media-metadata rebind races the sweep: its resolveRootTimelineFromDocument nests and un-pauses the scene timelines, so GSAP renders each at the root's playhead (0) between a renderSeek and the read. Identical runs then give different findings, and some describe the t=0 frame instead of the sampled time. Still-capture pages already mark themselves with __HF_REPLAY_SKIPPED_FRAMES before navigation. Gate the rebind on that flag paired with renderCaptureSeekStarted, the same pair shape as isExportRenderDrivingFrames, so Studio's static-seek preview keeps the self-correction it needs. Tests: two regression tests in init.test.ts (HF#7706). The rebind is ignored once a capture page has started seeking, and still applies before any seek. Full init.test.ts 281/281 pass; runtime typecheck clean.
This branch has not been deployed
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.
What broke
On projects built from
data-composition-srcscenes plus audio/video clips,hyperframes check --no-cachegave different findings on every run of an unchanged project, and some described the t=0 frame instead of the sampled time.The cause is the async media-metadata rebind: its debounced timer calls
resolveRootTimelineFromDocument(), which nests and un-pauses the scene timelines. UnderrenderSeekthe scenes are driven standalone while the root stays at 0, so GSAP renders each scene at its parent's playhead and the frame jumps to t=0 between the seek and the read. The timer is skipped only whenisExportRenderDrivingFrames()is true, and check pages set no__HF_EXPORT_RENDER_SEEK_CONFIG.What changed
Still-capture pages already mark themselves with
__HF_REPLAY_SKIPPED_FRAMESbefore navigation (openSettledCompositionPage). The rebind now also returns early once such a page has started driving frames withrenderSeek(isStillCaptureDrivingFrames), the same pair shape asisExportRenderDrivingFrames, so Studio's static-seek preview keeps the self-correction it needs. The transport loop is untouched.How verified
Two regression tests in
packages/core/src/runtime/init.test.ts(HF#7706): the rebind is ignored once a capture page has started seeking (fails on the old code: the rebind fires), and still applies before any seek. Fullinit.test.ts: 281/281 pass. Runtime typecheck clean, oxlint/oxfmt clean.Fixes #7706