Changelog
Generated from CHANGELOG.md in the project repository. Never maintained twice.
0.3.0
26 September 2026
- addedVHS
.tapefiles as input:castwright build,validateanddevand the Vite plugin take them next to*.terminal.yaml. With--allow-execeach typed command runs as anexec:step and its output is recorded; commands typed betweenHideandShowrun silently before each visible one. A documented subset, listed in the VHS tapes reference.
0.2.1
25 September 2026
- fixed
--recordno longer folds long lines when it rewrites the file: a recorded line stays exactly as the program printed it, and the rest of the file keeps its layout.
0.2.0
25 September 2026
- addedDSL parser and
ScriptIR:*.terminal.yamlwithrun,type,key,output,wait,clear,promptandmarker, inline colour markup, raw ANSI, and validation errors carrying file, line, column and the offending source line. - addedCompiler from
Scriptto asciicast v2, deterministic by construction: no wall clock, no unseeded randomness, grapheme-cluster typing, and snapshot tests over the whole example corpus to keep it that way. - addedSeven bundled themes, embedded in the cast header so a
.castlooks right wherever it is played. - added
castwrightCLI:build,validateanddev. - added
<castwright-demo>, a framework-agnostic web player on xterm.js — lazy, pausing when scrolled out of view, with seek implemented as replay rather than a skip. - addedAccessibility: the element's light-DOM children are the terminal's final text, generated at build time; the live terminal is hidden from assistive technology; reduced motion shows the final frame immediately; the terminal is never a keyboard trap.
- added
chrome="none"andcontrols="hover"for a bare looping demo that still has a real, focus-revealed pause control. - addedVite plugin at
@casoon/castwright/vite, covering every bundler-based framework, and a thin Astro integration with<TerminalDemo />on top of it. - addedA self-contained player bundle, so the no-bundler path needs no CDN.
- added
castwright build --format svg: one self-contained animated SVG — real text, the cast's theme, no script, reduced-motion aware — that plays inside a plain<img>, as a GitHub README embeds it. Each terminal line animates only when it changes, so a minute of demo is around 120 kB.--no-chromeand--loop-delayshape it. - added
--format gifand--format mp4, throughaggandffmpeg, with an install hint when either is missing. - added
show:puts a file on screen, syntax-highlighted at build time with Shiki (an optional peer dependency) — withlines,langandtheme. - added
exec:runs a real command in a pseudo-terminal and records its output with real timing, only with--allow-exec/allowExec: true.--recordwrites the output back into the file asrun:+output: { raw }, so the demo replays the same bytes on every build. node-pty is an optional peer dependency. - addedThe player works under a strict
style-src(no'unsafe-inline'), such as Astro's hash-based CSP. In Firefox, 24-bit colours additionally needstyle-src-attr 'unsafe-inline'. - fixedSeeking or restarting during playback could leave two runs' worth of output on screen.
- fixedPage styles now override the player's defaults (
castwright-demo { --castwright-… }), as the theming guide describes. - fixedThe window frame is as wide as the terminal instead of stretching across a wide page.