Repository navigation
media: extract the shared rendiv kit - #171
Merged
Merged
Conversation
- media/kit holds the mechanics all three video projects repeat: CLI and ffmpeg resolution, filter parsing, still and render calls, segment stitching. The pitch deck in project-management pulls it through the design pin it already uses, so there is one copy rather than three - patch-rendiv resolves its root from the working directory. It took it from its own location, so the tutorials postinstall patched the explainer's node_modules and left its own unpatched: ep1 stills failed on any path containing a backslash escape - parseArgs keeps a flag's value out of the positional filters. Both callers had open-coded this and both dropped the first filter when the flag was absent - render-series no longer hardcodes ffmpeg.exe - renderSegmented refuses a non-zero overlap, and assertNoBlackFrames checks the stitched file: a cross-dissolve rendered segment by segment fades in over nothing and encodes as black at every boundary
Contributor
Explainer framesBeats, in reading orderRendered from |
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.

media/kitholds the rendiv mechanics the explainer, the tutorial series and the Prototype Fund pitch deck all repeat. The pitch deck lives in the privateproject-managementrepo and already pins this one for the design system, so it pulls the kit through the same pin instead of keeping a third copy.Bugs this fixes
node_modules.postinstallran../explainer/scripts/patch-rendiv.mjs, which resolved its root relative to the script, so it patched the explainer's install. Latent until a checkout path contains a backslash escape;media/tutorialsunder a path with\tfails every render withRollup failed to resolve import "C:<TAB>mp...".patch-rendivnow resolves the root from the working directory, which is what npm sets for a lifecycle script.--themeand--suffixate the first positional filter. Both callers open-codedargv.indexOf(flag)and skipped indexi + 1; with the flag absentiis-1, soi + 1is0and the first filter was dropped.build-all.mjs ep1silently rendered nothing. Now oneparseArgs.render-series.mjshardcodedffmpeg.exe, so it could not run on a Linux runner.Segmented rendering
renderSegmentedrenders each segment as its own composition and concatenates with-c copy, so editing one segment costs one segment's render.It is only sound when segments hard-cut. A cross-dissolve composites the outgoing scene under the incoming one; rendered alone, a segment's entry fade resolves against a transparent canvas and encodes as black. Measured on the pitch deck: a black flash at all 8 boundaries and no dissolve anywhere, with both the render and the concat reporting success. So
renderSegmentedrefuses a non-zero overlap andassertNoBlackFrameschecks the stitched file.The explainer and the tutorial episodes cross-dissolve, so both keep rendering the whole timeline in one pass; their behaviour is unchanged.
Verified
npm run stills -- 04-clarity(explainer),npm run sheetnpm run stills -- --theme light ep1(tutorials), 18 stills, after the patch fixnpm run typecheckin both projectsparseArgsagainst the four argument shapes the callers use