Differences From VHS
Betamax follows the useful parts of the VHS authoring model: tape files, typed input, waits, themes, frame styling, GIF output, screenshots, and simple examples. The differences below focus on actual user-visible behavior, not implementation details that produce the same result.
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 shape. They add product and
service surface area that is separate from Betamax’s primary goal: deterministic 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. That keeps container encoding reliable and avoids adding native video
encoder complexity to the first cut. GIF, PNG, screenshots, terminal parsing, rasterization, and
state JSON are still handled in process.
Use Outputs for installation notes and output selection guidance.