Differences from VHS
Betamax supports VHS-style tape files with typed input, waits, themes, frame styling, GIF output, and screenshots. This page lists the differences to consider when moving tapes from VHS.
Summary
Section titled “Summary”| Area | VHS | Betamax |
|---|---|---|
| Terminal stack | Browser terminal stack | PTY plus libghostty-vt, rendered in process |
| GIF and PNG | Supported | Supported in process |
| MP4 and WebM | Supported | Supported through ffmpeg |
| State snapshots | Not a primary feature | JSON viewport, scrollback, cursor, and styles |
Source |
Executes included tapes | Parsed, then rejected with a clear not-implemented error |
record |
Records interactive sessions | Intentionally not implemented |
serve |
Starts a server workflow | Intentionally not implemented |
publish |
Upload/share workflow | Intentionally not implemented |
Same authoring ideas
Section titled “Same authoring ideas”The core tape flow should feel familiar if you know VHS:
Outputdeclares artifacts.Setcontrols dimensions, theme, timing, typography, and frame styling.Type,Enter, key commands,Sleep, and waits drive the terminal.HideandShowkeep setup or teardown out of the final animation.Screenshotwrites checkpoint PNGs.
Betamax also keeps the simple recording-shell idea. Common shells are started in a cleaner recording environment where possible so the default prompt is stable and VHS-like instead of a host-specific shell prompt.
Intentional omissions
Section titled “Intentional omissions”record, serve, and publish are not planned for the first stable release. Betamax focuses on
local rendering and terminal testing.
Source is parsed because existing VHS tapes may contain it. Betamax fails explicitly when running
such a tape so users get a targeted migration error instead of an unknown command or silent skip.
Betamax additions
Section titled “Betamax additions”State JSON is the main addition. Output demo.json writes final terminal state, and
State checkpoint.json writes state at a specific point in the tape. The format includes plain text
for easy assertions plus compact styled spans for style-aware snapshot tests.
See Terminal testing and State JSON for that workflow.
Video tradeoff
Section titled “Video tradeoff”MP4 and WebM use ffmpeg, so video output requires it on PATH. Betamax handles
GIF, PNG, screenshots, terminal parsing, rendering, and state JSON in process.
Use Outputs for installation notes and output selection guidance.