v1.2.0: Hardening pass
A comprehensive hardening pass: correctness, security, and performance. API is fully backward-compatible; no worker scripts or MCP integrations need changes.
Critical fixes
- Dashboard no longer crashes at render completion (
const overallPctreassignment bug) - Hardened the dashboard static-file server against path traversal (URL-decode, null-byte filter, segment-level
..rejection,path.relativecheck) - Removed shell interpolation from the cross-platform browser launcher (
spawnwith argv array instead ofexecwith a template string)
Correctness
writeFramesurfaces stdin/stream errors instead of hanging on a never-resolved Promisefinish()no longer hangs if ffmpeg already closed before it was calledSIGINT/SIGTERMhandlers scoped to eachrenderParallelcall (no leak)- MCP server reports real package version (read from package.json)
- Structured
fast-forward-startmessage type (was fragile substring match) fs.rmSync({recursive, force})for temp cleanup on Windows- Concat list file in
os.tmpdir()with random suffix (no collisions) - Stricter fps/duration/port validation
- Capped stderr buffers at 8KB
Performance
- Parallel worker JSON fetches in dashboard (was sequential,
N × RTTper tick) ffmpeg -encoderscached perdetectGPUrun (~5× fewer subprocess spawns)basic-workerprecomputes per-bar colors (~25% faster frame generation at 1080p)writeFrameskips Promise alloc on synchronous writesProgressTrackerwritesglobal.jsononce per tick (was twice)
Security
- Dashboard binds to
127.0.0.1only Content-Security-Policyon every responseX-Content-Type-Options: nosniff,Referrer-Policy: no-referrer- CORS: same-origin only, not wildcard
- HTTP method restriction (GET/HEAD only)
- Documented MCP server's filesystem-access posture
Meta
CHANGELOG.mdadded- Smoke test suite (
npm test) + MCP stdio smoke test - Loose-pinned deps so users get patch releases
- Added
ffmpeg-render-pro-mcpbin alias + corrected MCP install snippets - Quick Start leads with
npm install -g - Fixed placeholder README badge links
Verification
- 39/39 smoke tests
- 5/5 MCP stdio tests
- 21/21 dashboard HTTP security tests (7 traversal attack vectors blocked)
- 10/10 edge-case input validation
- 4 real renders produced valid h264 MP4s at 640×360, 1920×1080, 1080×1920
- Deterministic output confirmed byte-identical across runs with the same seed
See CHANGELOG.md for the full list.