Work happens on both Windows and Linux, so a committed lockfile would do harm
rather than good here:
- Every dependency in package.json is pinned exactly (no ^ or ~), so a lockfile
has no floating ranges to guard. A plain `npm install` resolves identically
without it.
- The lock records platform-specific optional binaries for whichever OS built it
(@rollup/rollup-linux-x64-gnu vs -win32-x64-msvc, for instance). Committed from
one platform it is wrong on the other, and `npm ci` refuses rather than
adapting, since reproducing the recorded tree exactly is its entire purpose.
That is a strict mechanism pointed at the wrong target: it would break installs
across machines while guaranteeing versions that were already exact. Cloning is
rare here, so the reproducibility upside is small and the cross-platform cost is
immediate.
Both .gitignore and README now state the reasoning, including when to revisit (a
dependency loosened to a range, or transitive drift exact pinning cannot control).
Silently ignoring it would have invited the same question again.
Verified: `git check-ignore -v package-lock.json` matches, and a regenerated
lockfile leaves `git status` clean.
Make each directory answerable by path alone: src/ is what the Remotion build
compiles, scripts/ is what you run by hand.
Removed:
- `ffmpeg.sh` — never worked; every parameter was assigned `$1`, so bake/bypass
were broken from the start. Superseded by `scripts/ffmpeg_tools.py bake|still`.
- `src/lrc2srt.ts` — the TypeScript port; `scripts/lrc2srt.py` is the script that
was actually maintained, and it now handles the multi-timestamp cases the TS
version did.
- `scripts/bom-gen.ts` — superseded by `scripts/bom_gen.py`.
- `scripts/ffmpegusage.txt` — legacy command notebook. Every recipe in it is now
reproduced by `ffmpeg_tools.py`, including the `-map 0:v:0 -map 1:a:0 -c:v copy`
mux and the FLAC `-compression_level 12` case, so it has no unique content left.
Also drops the `bom-gen` alias from the dispatcher (dash-case was TypeScript
naming) and documents the boundary in README.md and REMOTION-QUICKSTART.md.
`npm run lint` (eslint src && tsc) passes with src/ reduced to Remotion input.
The repo is still being assembled as a templated workspace, so the branch
conventions are the intended end state rather than a current rule. Recording
that in the README so the 'master is protected and immutable' line is not read
as an active restriction while the template is still taking shape.