Publishing to Cloudflare R2
shipcut publish uploads a run's video, shots and manifest to a Cloudflare R2 bucket, through R2's S3 API with no SDK.
Every video on this page plays from there.
What changed, newest first. Every video here is a shipcut run of a real app, recorded from a script in its repo.
shipcut publish uploads a run's video, shots and manifest to a Cloudflare R2 bucket, through R2's S3 API with no SDK.
Every video on this page plays from there.
A page's fetch() used to hold the virtual clock for five seconds, and a form could come back empty. Now shipcut asks Chromium for an empty frame right after each one, and that lets the responses through.
shipcut recorded this video right after the fix.
shipcut polish draws the pointer, a wave on each click, the step's title beside the pointer, a zoom towards the clicks and a rounded window on a background.
All of it comes from the run's event log after capture, so it moves at 30 frames a second however slowly the page paints.
shipcut run --frame-by-frame moves the page's clock 1/30 of a second per frame, so a machine with no GPU records every frame of every animation.
It needs Chromium's headless shell. It is built and tested on Linux; Chrome on macOS cannot be driven frame by frame.