feat(slop): three output shapes and a full-length cut, so YouTube is reachable
PLN: "i wanna floor youtube with individual clips for each good rec we have". The renderer could not do that: it had exactly ONE output shape, 1080x1920 vertical, and no way to render a whole track. WHY IT WAS STUCK AT ONE SHAPE The geometry was hardcoded in three separate places -- the Playwright viewport, the CDP screencast cap, and the ffmpeg -vf. Adding a shape meant finding all three and keeping them consistent forever, so nobody did. They now derive from one SHAPES table: vertical 1080x1920, square 1080x1080, landscape 1920x1080. The viewport is the load-bearing one and the reason this is not just a crop. Hydra COMPOSES for the frame it is given, so the shape has to be chosen before the scene renders -- a 16:9 scene centre-cropped to 9:16 throws away most of the motion, and the reverse is equally true. The viewport is now output/dpr, which at the default dpr 2 is 540x960 for vertical: byte-identical to the old behaviour, so existing renders are unchanged. FULL-LENGTH `--dur full` (ad-hoc) and `--cut full` (idea path) render start-to-end, with the length measured by ffprobe rather than assumed. `--cut full` stays on the idea path deliberately so a YouTube cut still inherits that idea's playsets and fx instead of silently falling back to the ad-hoc defaults. THE BUG THIS WOULD HAVE CAUSED, AVOIDED The output filename now carries the shape. Without that, rendering square, vertical and landscape of one cut writes the same path three times and leaves only the last -- a batch that quietly produces a third of what it claims. An unknown --shape throws at startup, before a multi-minute realtime capture, not after it. VALIDATED END TO END node --check clean vertical -> viewport 540x960 identical to before --shape hexagon throws at line 80, pre-capture --dur full on a 446.777729s file planned "+446.8s" 15s square test render 1080x1080 h264 30fps, aac 48k NOTE for anyone running this: the playwright browser cache on this box is EMPTY, so it needs SLOP_CHROME=/usr/bin/chromium (the script already supports it) plus the hexa dev server on :5173 under node 22. Capture is realtime, so a full render costs the track's duration PER SHAPE.
Showing
Please
register
or
sign in
to comment