CaptureStudio 1.0.0 Still frames and moment finding for terminal recordings Techlosoft - Remote Ops Workspace WHAT IT IS ========== You have a recording. You need pictures of it. CaptureStudio reads a SessionForge cast, replays it into an in-memory terminal screen, and writes real PNG images of what that screen looked like. It also tells you WHICH moments are worth a picture, so you do not have to scrub through a seven minute deploy looking for the frame where the error appeared. There are no settings to learn. Point it at a cast: capturestudio moments deploy.jsonl capturestudio shots deploy.jsonl --auto --count 6 --out-dir frames/ The first command lists the interesting timestamps. The second writes six PNGs of them. That is the whole tool. Sibling tools cover the other angles. SessionForge records the cast in the first place. ScreenFlow renders a whole cast to an animated GIF. RecordDeck edits the timeline. CaptureStudio is the one that does STILL FRAMES and MOMENT FINDING - and unlike ScreenFlow it renders in COLOUR: 16-colour, 256-colour and 24-bit truecolour all land in the image. INSTALL ======= Pre-built binaries are in dist/. There is nothing to install - copy the one for your platform anywhere on your PATH and run it. dist/capturestudio-linux-amd64 Linux, x86-64 dist/capturestudio-darwin-arm64 macOS, Apple Silicon dist/capturestudio-darwin-amd64 macOS, Intel dist/capturestudio-windows-amd64.exe Windows, x86-64 On macOS and Linux you may need to mark it executable: chmod +x capturestudio-linux-amd64 To build from source you need Go 1.24 or newer. There are no dependencies of any kind - no third-party modules, no cgo, no font files - so no network access is required: go build -o capturestudio . The bitmap font is generated, not vendored. font.go is produced from the glyph artwork in fontgen.go and is checked in, so a plain `go build` needs nothing extra. To regenerate it after editing a glyph: go run fontgen.go > font.go && gofmt -w font.go COMMANDS ======== capturestudio moments [--count N] [--quiet S] [--json] capturestudio shot --at T --out frame.png [--scale N] [--theme dark|light] [--pad N] [--cols N] [--rows N] [--force] [--json] capturestudio shots --auto [--count N] --out-dir DIR capturestudio shots --at T [--at T ...] --out-dir DIR capturestudio contact-sheet --out sheet.png [--count N] [--across N] [--thumb-width N] capturestudio info [--json] capturestudio help | -h | --help | version moments Replays the cast, scores every burst of screen change, and lists the settle points - the frames at the end of a burst, once the screen has stopped moving. Prints the timestamp, the score, how many grid cells changed, how long the screen then stayed still, and a one-line preview of what changed. Writes no files and touches nothing. shot Reconstructs the screen at ONE timestamp and writes it as a PNG. shots Writes several PNGs in one go. With --auto the timestamps come from moment finding; otherwise give explicit --at times. Frames are numbered in chronological order: frame-01.png, frame-02.png, and so on. contact-sheet One PNG holding a numbered grid of thumbnails that summarises the whole recording, with a header line and a caption under each number giving the timestamp and score. This is the "what happened in this session" picture. info Cast header, grid size, event count, duration, byte totals split by stream, how many settle points were found, the recorded exit code, and a tally of any input sequences the emulator could not render. FLAGS --at