shipcut

Changelog

What changed, newest first. Every video here is a shipcut run of a real app, recorded from a script in its repo.

  1. 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.

    Heystol: an owner sets up a new venue and opens its page.
  2. Requests no longer stall a frame-by-frame recording

    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.

    Heystol: an owner creates an event, and a guest books a seat.
  3. A video that looks edited by hand

    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.

    Heystol: a guest books a table.
  4. Every frame, on a virtual clock

    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.

    Heystol: an owner drags a booking to another time on the board.