Desktop MP4 export renders frames from a hidden BrowserWindow via capturePage, pipes PNGs to a bundled ffmpeg (libx264/yuv420p/+faststart), and writes the file through an atomic temp-file swap. It shares scene validation (shared/renderValidation.cjs) and the render.html renderer with the standalone Puppeteer server, which is hardened in parallel. Render worker & main (electron/): - abortable render loop with an inactivity watchdog and cancel plumbing - atomic temp-file + rename so a cancel/failure never truncates a pre-existing target (#7); stdin EPIPE / early-exit / backpressure-hang handled (#8) - HiDPI frames normalized to canvas size (#10); odd dimensions padded to even (#13, also server); backgroundThrottling disabled (#12) - reject canvases larger than the display (#11); single-render guard; isolated render session that blocks network requests (#5) Tests: - Electron harnesses (scripts/verify-*.cjs) for capture, export, cancel, timeout, assets, background, capture-fidelity, resolution, odd-dims, aggregated by verify-desktop-render.cjs - server smoke + e2e and shared validation unit tests - headless hook (src/devtools/headless.ts) to run the in-app suite under browser/electron hosts; pixel-diff util + capture fixtures (test/) - dev_docs plans: integration, fixes (#7-#13), and the e2e/capture strategy Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
389 B
Plaintext
28 lines
389 B
Plaintext
node_modules
|
|
dist
|
|
dist-electron
|
|
dist-ssr
|
|
dist-archive
|
|
release
|
|
*.local
|
|
.vite
|
|
|
|
.DS_Store
|
|
*.log
|
|
|
|
# Local clipart working folder
|
|
/clipart/
|
|
|
|
# Logo working files (final PNGs live under src/assets/)
|
|
/logo.png
|
|
/logo.xcf
|
|
/logo_v2.xcf
|
|
/ruwio.png
|
|
.codex
|
|
misc/
|
|
|
|
# Locally staged ffmpeg binaries. Release-managed binaries can be force-added.
|
|
/bin/linux/ffmpeg
|
|
/bin/darwin/ffmpeg
|
|
/bin/win32/ffmpeg.exe
|