mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 12:54:29 +00:00
First of several focused PRs that flatten the runtime cycle between the capture stages and `renderOrchestrator.ts` (documented as a known follow-up across PRs 1.6 / 1.7 / 1.8 / 1.9). `updateJobStatus` was the most-imported orchestrator helper: 5 of the 6 capture / encode / assemble stages reach back into the orchestrator for it. Moving it to `render/shared.ts` (where the other small cross-cutting utilities already live) breaks the runtime cycle for five stages in one move: - captureStage - captureStreamingStage - captureHdrStage - encodeStage - assembleStage Each of those stages now imports `updateJobStatus` from `../shared.js` at runtime, and the only thing they pull from `renderOrchestrator.js` is type-only (`RenderJob`, `ProgressCallback`, etc.) — type imports are erased at runtime, so no cycle. The orchestrator's own internal call sites (`updateJobStatus(...)` for the inline progress updates and the `complete` / `failed` / `cancelled` transitions) are unchanged in body; they now import the function from the same shared module. Follow-up PRs will move: - `executeDiskCaptureWithAdaptiveRetry` + capture-retry helpers (breaks the captureStage cycle entirely) - The six HDR helpers + `resolveCompositeTransfer` (breaks captureHdrStage) - `collectVideoMetadataHints`, `collectVideoReadinessSkipIds`, `materializeExtractedFramesForCompiledDir` (breaks extractVideosStage) No behavior change. Verified inside `Dockerfile.test`: font-variant-numeric, many-cuts, gsap-letters-render-compat, hdr-regression — 4/4 PASS with identical audio correlations. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>