From 2565fba59ad333fc0bbcaf5a43623a336ba6dd53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Fri, 24 Apr 2026 11:51:07 -0400 Subject: [PATCH 1/4] fix: preserve template-wrapped sub-composition media offsets --- packages/engine/src/services/audioMixer.ts | 3 +- .../src/services/videoFrameExtractor.ts | 5 +- packages/engine/src/utils/htmlTemplate.ts | 11 ++ .../src/services/htmlCompiler.test.ts | 115 ++++++++++++++++++ .../producer/src/services/htmlCompiler.ts | 7 +- 5 files changed, 135 insertions(+), 6 deletions(-) create mode 100644 packages/engine/src/utils/htmlTemplate.ts diff --git a/packages/engine/src/services/audioMixer.ts b/packages/engine/src/services/audioMixer.ts index 726726425..a3ccb804c 100644 --- a/packages/engine/src/services/audioMixer.ts +++ b/packages/engine/src/services/audioMixer.ts @@ -11,6 +11,7 @@ import { extractAudioMetadata } from "../utils/ffprobe.js"; import { downloadToTemp, isHttpUrl } from "../utils/urlDownloader.js"; import { DEFAULT_CONFIG, type EngineConfig } from "../config.js"; import { runFfmpeg } from "../utils/runFfmpeg.js"; +import { unwrapTemplate } from "../utils/htmlTemplate.js"; import type { AudioElement, AudioTrack, MixResult } from "./audioMixer.types.js"; export type { AudioElement, AudioTrack, MixResult } from "./audioMixer.types.js"; @@ -24,7 +25,7 @@ interface ExtractResult { export function parseAudioElements(html: string): AudioElement[] { const elements: AudioElement[] = []; - const { document } = parseHTML(html); + const { document } = parseHTML(unwrapTemplate(html)); // Parse