Repository navigation
Releases
v0.12.1
VHS v0.12.1 includes the current Charmbracelet VHS v0.12.1 source and the AgentStation SVG recording repairs.
Changes:
- Recording uses visible elapsed time across SVG, MP4, GIF, and WebM. Hidden spans do not extend playback.
- SVG dimensions fit the captured terminal grid and preserve margins, rounded corners, and window bars.
- A named installed font can embed automatically through optional Fontconfig. VHS loads the selected face before capture.
- Optional FontTools subsets terminal, cursor, and title glyphs. Failed subsetting falls back to the full selected face.
- Separate title fonts and collection face indices remain distinct. Explicit font files retain exact bytes and flag priority, including video-only capture.
- Font names use safe JavaScript, CSS, and XML serialization.
Set ProgressBar "#ff0000"adds an optional SVG playback bar. It supports validated RGB and RGBA colors and follows playback speed and loop offset.- SVG output preserves theme cursor colors and uses captured line spacing once.
Fontconfig and FontTools are optional. Automatic embedding requires an installed named family and Fontconfig. Install FontTools with WOFF2 support to enable automatic subsetting. Missing discovery keeps capture available with a diagnostic. Explicit --svg-font-file and VHS_SVG_FONT_FILE remain deterministic overrides.
CSS playback requires an animation-capable browser. Static SVG renderers display a full-width progress bar. Native pixel checks verify this behavior in librsvg 2.62.3. Inkscape rendering remains unverified.
Thank you, @xav-ie, for the timing, grid, font, and progress proposals. These are #6, #7, #8, and #9. The repairs preserve the published grid, font, and progress commits. The benefit audit also restored styling from the original SVG proposal in #1.
Validation: 336 native race cases, 106 maintained tape syntax checks, and hosted builds and lint pass. Native rendering evidence covers macOS and Chrome. Linux and Windows native rendering remains unverified in that suite.
Install:
brew trust --cask agentstation/tap/vhs
brew install --cask agentstation/tap/vhsExisting Homebrew users can update with:
brew update
brew upgrade --cask agentstation/tap/vhsOr install with Go:
go install github.com/agentstation/vhs@v0.12.1Docker:
docker run --rm -v "$PWD:/vhs" ghcr.io/agentstation/vhs:v0.12.1 demo.tapeRelease package checks also verify macOS arm64 capture and Linux arm64 Docker capture. Docker includes Fontconfig and uses the full selected font when FontTools is absent.
Platform binaries, shell completions, the manual, checksums, and SBOMs are available in the release assets.
v0.11.1
VHS Fork with SVG Support v0.11.1
This is a fork of charmbracelet/vhs that adds native SVG output support and additional features.
🚀 Fork Features
- Native SVG Output: Generate scalable, animated SVGs that are often smaller than GIFs
- Window Bar Customization: Custom titles and fonts with
Set WindowBarTitle - Enhanced CLI Options:
--no-svg-opt,--debug-console
Installation
Homebrew (macOS and Linux)
brew install agentstation/tap/vhsDocker
docker run --rm -v $PWD:/vhs ghcr.io/agentstation/vhs:v0.11.1 <cassette>.tapeDownload Binary
Download the appropriate binary for your platform from the assets below.
Using Go
go install github.com/agentstation/vhs@v0.11.1Changelog
Bug fixes
- 36343dd: fix: remove deprecated build tag syntax (@jackspirou)
Others
- 9efc235: Fix lexer regex escaping (charmbracelet#678) (@raphamorim)
- 3fc15b5: Merge upstream/main into main (@jackspirou)
- 1c98b68: chore(deps): bump github.com/hashicorp/go-version from 1.7.0 to 1.8.0 in the all group (charmbracelet#681) (@dependabot[bot])
- 80ee65e: chore(deps): bump github.com/mattn/go-runewidth from 0.0.16 to 0.0.17 in the all group (charmbracelet#666) (@dependabot[bot])
- 778b1aa: chore(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 in the all group (charmbracelet#679) (@dependabot[bot])
- 6ea687a: chore(deps): bump the all group with 2 updates (charmbracelet#664) (@dependabot[bot])
- 49a8615: chore(deps): bump the all group with 2 updates (charmbracelet#669) (@dependabot[bot])
- 4fcfc84: chore(deps): bump the all group with 2 updates (charmbracelet#670) (@dependabot[bot])
- c43235b: chore(deps): bump the all group with 2 updates (charmbracelet#677) (@dependabot[bot])
- cdd4924: chore(deps): bump the all group with 3 updates (charmbracelet#662) (@dependabot[bot])
v0.11.0
VHS Fork with SVG Support v0.11.0
This is a fork of charmbracelet/vhs that adds native SVG output support and additional features.
🚀 Fork Features
- Native SVG Output: Generate scalable, animated SVGs that are often smaller than GIFs
- Window Bar Customization: Custom titles and fonts with
Set WindowBarTitle - Enhanced CLI Options:
--no-svg-opt,--debug-console
Installation
Homebrew (macOS and Linux)
brew install agentstation/tap/vhsDocker
docker run --rm -v $PWD:/vhs ghcr.io/agentstation/vhs:v0.11.0 <cassette>.tapeDownload Binary
Download the appropriate binary for your platform from the assets below.
Using Go
go install github.com/agentstation/vhs@v0.11.0Changelog
New Features
- 0e6b452: feat: add backspace pattern detection and CSS animation (@jackspirou)
- 199c327: feat: add native SVG output support (@jackspirou)
- 70076bf: feat: add pattern-based SVG optimization for typing sequences (@jackspirou)
Bug fixes
- 18e5605: fix: add Git LFS support to release workflow (@jackspirou)
- 14dd04b: fix: add ffmpeg and ttyd as dependencies in homebrew cask (@jackspirou)
- 6cdec3c: fix: address linter suggestion - use strings.TrimSuffix (@jackspirou)
- 2edfc4c: fix: exclude SVG files from LFS to enable README display (@jackspirou)
- b7ccb9c: fix: improve backspace/deletion detection in typing patterns (@jackspirou)
- cb190e2: fix: resolve SVG keyframe collisions with dynamic precision (@jackspirou)
- 431e2cd: fix: resolve golangci-lint issues (@jackspirou)
Performance improvements
- 79baf9a: perf: optimize release workflow for faster deployments (@jackspirou)
Others
- dd1af4d: chore(deps): bump golang.org/x/crypto from 0.39.0 to 0.40.0 (charmbracelet#640) (@dependabot[bot])
- a84c469: chore(deps): bump golang.org/x/term from 0.32.0 to 0.33.0 (charmbracelet#639) (@dependabot[bot])
- 1b7db05: chore(deps): bump golang.org/x/term from 0.33.0 to 0.34.0 (charmbracelet#651) (@dependabot[bot])
v0.10.0-as.6
VHS Fork with SVG Support v0.10.0-as.6
This is a fork of charmbracelet/vhs that adds native SVG output support and additional features.
🚀 Fork Features
- Native SVG Output: Generate scalable, animated SVGs that are often smaller than GIFs
- Window Bar Customization: Custom titles and fonts with
Set WindowBarTitle - Enhanced CLI Options:
--no-svg-opt,--debug-console
Installation
Homebrew (macOS and Linux)
brew install agentstation/tap/vhsDocker
docker run --rm -v $PWD:/vhs ghcr.io/agentstation/vhs:v0.10.0-as.6 <cassette>.tapeDownload Binary
Download the appropriate binary for your platform from the assets below.
Using Go
go install github.com/agentstation/vhs@v0.10.0-as.6Changelog
Performance improvements
- 111aa2f: perf: optimize release workflow for faster deployments (@jackspirou)
v0.10.0-as.5
VHS Fork with SVG Support v0.10.0-as.5
This is a fork of charmbracelet/vhs that adds native SVG output support and additional features.
🚀 Fork Features
- Native SVG Output: Generate scalable, animated SVGs that are often smaller than GIFs
- Window Bar Customization: Custom titles and fonts with
Set WindowBarTitle - Enhanced CLI Options:
--no-svg-opt,--debug-console
Installation
Homebrew (macOS and Linux)
brew install agentstation/tap/vhsDocker
docker run --rm -v $PWD:/vhs ghcr.io/agentstation/vhs:v0.10.0-as.5 <cassette>.tapeDownload Binary
Download the appropriate binary for your platform from the assets below.
Using Go
go install github.com/agentstation/vhs@v0.10.0-as.5Changelog
New Features
- 9369ee5: feat: add backspace pattern detection and CSS animation (@jackspirou)
- c169860: feat: add pattern-based SVG optimization for typing sequences (@jackspirou)
Bug fixes
- ed70e0b: fix: improve backspace/deletion detection in typing patterns (@jackspirou)
- a8551d4: fix: resolve golangci-lint issues (@jackspirou)
v0.10.0-as.4
🎬 VHS v0.10.0-as.4
🐛 Bug Fixes
Fixed SVG keyframe collisions for large animations
- Problem: Large recordings (4000+ keyframes) had jerky/incorrect animations due to percentage collisions
- Solution: Implemented dynamic precision that adapts to animation complexity
- Impact: Smooth animations for any recording size with optimal file sizes
📊 Dynamic Precision System
| Animation Size | Precision | Use Case |
|---|---|---|
| < 100 keyframes | 1 decimal | Quick demos |
| < 1,000 keyframes | 2 decimals | Standard recordings |
| < 10,000 keyframes | 3 decimals | Long sessions |
| < 100,000 keyframes | 4 decimals | Extended recordings |
| ≥ 100,000 keyframes | 5 decimals | Extreme cases |
🎯 Results
- ✅ No more animation glitches
- ✅ Automatic optimization (no configuration needed)
- ✅ File sizes remain optimal for each recording type
- ✅ Full backward compatibility
📝 Example Impact
For a problematic 4161-keyframe recording:
- Before: 1001 unique percentages → jerky animation
- After: 4161 unique percentages → smooth animation
- File size: Minimal increase (~1-2%)
🔗 Related
- PR #3: Fix implementation
- Upstream discussion: charmbracelet#644
This is a custom release from the AgentStation fork of VHS
What's Changed
- Fix SVG keyframe collisions with dynamic precision by @jackspirou in #3
Full Changelog: v0.10.0-as.3...v0.10.0-as.4
v0.10.0-as.3
VHS Fork with SVG Support v0.10.0-as.3
This is a fork of charmbracelet/vhs that adds native SVG output support and additional features.
🚀 Fork Features
- Native SVG Output: Generate scalable, animated SVGs that are often smaller than GIFs
- Window Bar Customization: Custom titles and fonts with
Set WindowBarTitle - Enhanced CLI Options:
--no-svg-opt,--debug-console
Installation
Homebrew (macOS and Linux)
brew install agentstation/tap/vhsDocker
docker run --rm -v $PWD:/vhs ghcr.io/agentstation/vhs:v0.10.0-as.3 <cassette>.tapeDownload Binary
Download the appropriate binary for your platform from the assets below.
Using Go
go install github.com/agentstation/vhs@v0.10.0-as.3Changelog
Bug fixes
- ec21569: fix: add Git LFS support to release workflow (@jackspirou)
- 2497cc9: fix: convert example files to Git LFS pointers (@jackspirou)
v0.10.0-as.2
VHS Fork with SVG Support v0.10.0-as.2
This is a fork of charmbracelet/vhs that adds native SVG output support and additional features.
🚀 Fork Features
- Native SVG Output: Generate scalable, animated SVGs that are often smaller than GIFs
- Window Bar Customization: Custom titles and fonts with
Set WindowBarTitle - Enhanced CLI Options:
--no-svg-opt,--debug-console
Installation
Homebrew (macOS and Linux)
brew install agentstation/tap/vhsDocker
docker run --rm -v $PWD:/vhs ghcr.io/agentstation/vhs:v0.10.0-as.2 <cassette>.tapeDownload Binary
Download the appropriate binary for your platform from the assets below.
Using Go
go install github.com/agentstation/vhs@v0.10.0-as.2Changelog
Bug fixes
- 221f9ab: fix: add ffmpeg and ttyd as dependencies in homebrew cask (@jackspirou)
v0.10.0-as.1
VHS Fork with SVG Support v0.10.0-as.1
This is a fork of charmbracelet/vhs that adds native SVG output support and additional features.
🚀 Fork Features
- Native SVG Output: Generate scalable, animated SVGs that are often smaller than GIFs
- Window Bar Customization: Custom titles and fonts with
Set WindowBarTitle - Enhanced CLI Options:
--no-svg-opt,--debug-console
Installation
Homebrew (macOS and Linux)
brew install agentstation/tap/vhsDocker
docker run --rm -v $PWD:/vhs ghcr.io/agentstation/vhs:v0.10.0-as.1 <cassette>.tapeDownload Binary
Download the appropriate binary for your platform from the assets below.
Using Go
go install github.com/agentstation/vhs@v0.10.0-as.1Changelog
New Features
- 9773628: feat: add native SVG output support (@jackspirou)
Others
- dd1af4d: chore(deps): bump golang.org/x/crypto from 0.39.0 to 0.40.0 (charmbracelet#640) (@dependabot[bot])
- a84c469: chore(deps): bump golang.org/x/term from 0.32.0 to 0.33.0 (charmbracelet#639) (@dependabot[bot])