From 7e97ad9ff663e7841a1bce069859d93fada15422 Mon Sep 17 00:00:00 2001 From: Val Date: Wed, 19 Aug 2026 16:18:52 -0700 Subject: [PATCH] fix(producer,core): honor relative data-start id-refs in render media scheduling compileTimingAttrs/injectDurations used parseFloat, so data-start="intro" wrote a NaN data-end and extract preferred that over duration; parseNumeric now skips the id-ref (parseVideoElements already resolves it). collectRenderMedia's resolveHostWindow likewise read host data-start with parseFloat, so chained sub-composition slots (data-start="hook") stacked at 0-2s and every scene after the first rendered black. It now resolves host starts through the shared resolveReferencedStart, matching the media parsers. Fixes #3361. --- .../core/src/compiler/timingCompiler.test.ts | 20 ++++++++++ packages/core/src/compiler/timingCompiler.ts | 39 +++++++++++-------- packages/engine/src/index.ts | 6 +++ .../engine/src/services/referenceResolver.ts | 2 +- .../src/services/videoFrameExtractor.test.ts | 11 ++++++ .../src/services/htmlCompiler.test.ts | 29 ++++++++++++++ .../src/services/renderMediaCollector.test.ts | 19 +++++++++ .../src/services/renderMediaCollector.ts | 29 ++++++++++---- 8 files changed, 129 insertions(+), 26 deletions(-) create mode 100644 packages/producer/src/services/renderMediaCollector.test.ts diff --git a/packages/core/src/compiler/timingCompiler.test.ts b/packages/core/src/compiler/timingCompiler.test.ts index 6ddbfe7098..c8165578d6 100644 --- a/packages/core/src/compiler/timingCompiler.test.ts +++ b/packages/core/src/compiler/timingCompiler.test.ts @@ -133,6 +133,17 @@ describe("compileTimingAttrs", () => { expect(compiled).not.toContain("data-hf-auto-start"); }); + it("leaves data-end off a relative data-start id-ref", () => { + const html = + '