The Deno runtime development ends in one year after the Cloudflare
acquisition.
- Port `render-template.ts` and `gen-screenshot.ts` from Deno APIs
to Node built-ins (`node:fs/promises`, `node:child_process`),
keeping the shebang `.ts` workflow via Node 24 native type stripping.
- Replace `npm:` import specifiers with a `package.json` + lockfile.
- Angle-bracket type assertion changed to `as` syntax.
(The brackets version is unsupported by Node.)
- Make `gen-screenshot.ts` fail loudly if `convert` or `optipng` exits
with a non-zero status. It won't ignore exit status the way it does
with `Deno.Command`.
- Add `package.json` as a `Makefile` prerequisite of `README.md`.
- Commit `.gitignore` so `node_modules/` stays untracked.
Verified: running `make` regenerates `README.md` byte-identically.
The full screenshot pipeline runs (Chromium, ImageMagick, OptiPNG).
Assisted-by: MiMo-V2.6-Flash via Strument