The bug, layer by layer
Layer 1 — the "folder" prefix is fiction
COMP_ID="Production/Landscape-16x9/ReleaseNotes/RN-v${SAFE_VERSION}" fallback="Templates/TPL-ReleaseNotes"
Remotion Studio's left-panel folder tree is cosmetic only. The CLI's render <id> resolves the bare id attribute — the <Folder name="..."> wrappers are never part of it. Every path-with-slashes has always been a typo.
Layer 2 — no per-version composition ever gets registered
The workflow first tries RN-v${SAFE_VERSION} (e.g. RN-v7600) before falling back to the template. The only per-version registration in Root.tsx is RN-v602, hand-rolled for v6.0.2. Nobody's added new ones. Every release since has cold-started into the fallback.
Layer 3 — the fallback was also wrong AND no square template existed
The landscape fallback said Templates/TPL-ReleaseNotes (still with the fictional prefix). Even worse, the square render fell back to the same landscape ID, relying on --width 1080 --height 1080 overrides to reshape a 1920×1080 composition — that doesn't actually work; Remotion renders at the composition's declared dimensions.
The fix
release-video.yml — use bare composition IDs
# landscape - SAFE_VERSION=$(echo "$VERSION" | tr -d '.') - COMP_ID="Production/Landscape-16x9/ReleaseNotes/RN-v${SAFE_VERSION}" - npx remotion render "$COMP_ID" ... || npx remotion render "Templates/TPL-ReleaseNotes" ... + npx remotion render "TPL-ReleaseNotes" \ + --props=/tmp/landscape-props.json --output=../out/landscape-raw.mp4 ... # square — same simplification + npx remotion render "TPL-ReleaseNotesSquare" \ + --props=/tmp/square-props.json --output=../out/square-raw.mp4 ...
orchestkit-demos/src/Root.tsx — register the missing square template
<Folder name="Templates">
...
<Composition id="TPL-ReleaseNotes" component={ReleaseNotes} ... />
+ <Composition id="TPL-ReleaseNotesSquare" component={ReleaseNotesSquare}
+ durationInFrames={FPS * 12} fps={FPS} width={1080} height={1080}
+ schema={releaseNotesSquareSchema} defaultProps={releaseNotesV602SquareConfig} />
</Folder>
Local verification (before commit)
| Step | Command | Result |
|---|---|---|
| 1 | npx remotion compositions | confirms TPL-ReleaseNotes + new TPL-ReleaseNotesSquare both registered |
| 2 | node scripts/changelog-to-props.mjs 7.60.0 --landscape | generates valid JSON, 5 highlights from release-please CHANGELOG |
| 3 | remotion render TPL-ReleaseNotes --props=... --frames=0-29 | 1.7 MB MP4 @ 1920×1080, exit 0 |
| 4 | remotion render TPL-ReleaseNotesSquare --props=... --frames=0-29 | 1.1 MB MP4 @ 1080×1080, exit 0 |
So the workflow is one git push away from going green for the first time. Previous releases (v7.58.0, v7.59.0, v7.60.0) will remain video-less — fix is forward-only.