Repository navigation
Releases
v0.12.1
Big bug fix 🐛
This release fixes #787.
See you next time,
Charm ⭐
Changelog
Fixed
Other stuff
- 24fa225: v0.12.1 (@andrinoff)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.12.1/checksums.txt'
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.12.1/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v0.12.0
Rows ’n’ Calls + Some Fixes
This release has a nice quality-of-life feature and some bugfixes. Let's check it out.
New! Rows and Cols
Now you can set the output size the 1980s way: using rows and columns. This is an alternative to using pixels.
Output examples/settings/columns.gif
Set Height 400
Set Columns 30
Set FontSize 32
# A count from 1 to 30, one digit per column, touches the left and
# right edges of the frame exactly with no wrap: 30 columns.
Hide
Type "clear; echo 123456789012345678901234567890"
Show
Sleep 1s
Enter
Sleep 2sSpecial thanks to star contributor and longtime community member @DaltonSW for the feature.
Fixed
- VHS action: fixed in v2.1.1. Make sure to check that out with this VHS version (
v0.12.0)! - Windows command console non longer hangs. Enjoy a hang free Windows VHS experience!
That's all for now,
Best of luck,
Charm XX ☀️
Changelog
New!
- f48d79b: feat(cli): assume .tape extension in filename arg if omitted (#654) (@DaltonSW)
- f0761c0: feat: rows/cols for axises (#763) (@DaltonSW)
Fixed
- 42f1776: fix(windows): chrome process idle no rendering (#781) (@andrinoff)
- 3294be0: fix: bump go to 1.26.7 (#784) (@andrinoff)
Docs
Other stuff
- 3546c13: ci: sync dependabot config (#776) (@charmcli)
- 6f0c046: ci: sync golangci-lint config (#723) (@github-actions[bot])
- db96d73: v0.12.0 (@andrinoff)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.12.0/checksums.txt'
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.12.0/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v0.11.0
Scroll? More keys?
This release includes two nice features that include scrolling the viewport and supporting Ctrl+<arrow> keys. You can now use the ScrollUp and ScrollDown commands to scroll the viewport. VHS will also now recognize Ctrl+Left/Up/Right/Down keys.
Thanks to @joshka-oai and @sectore for their gracious contributions and support 🙂
Changelog
New!
- bae3eb0: feat: add viewport scroll commands to tapes (#707) (@joshka-oai)
- 9e27976: feat: support
ctrl+ arrow keys (#673) (@sectore)
Fixed
- 55f824a: fix(docker): remove ubuntu font which is no longer available in alpine (@aymanbagabas)
- b8a1d86: fix(docker): update env variables to use '=' (@aymanbagabas)
- 9c80359: fix: lint issues (@aymanbagabas)
Other stuff
- 9efc235: Fix lexer regex escaping (#678) (@raphamorim)
- 0a14d2c: ci: sync dependabot config (#660) (@charmcli)
- 0bb2251: ci: sync dependabot config (#668) (@charmcli)
- a94d725: ci: sync golangci-lint config (@caarlos0)
- be49219: ci: sync golangci-lint config (#650) (@github-actions[bot])
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.11.0/checksums.txt'
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.11.0/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v0.10.0
Changelog
New Features
- d9fd05f: feat: support additional alt/ctrl/shift special characters (#582) (@raphamorim)
Bug fixes
- 5fd3e35: fix(ci): use meta lint workflow (@aymanbagabas)
- b461e7b: fix(record): propagate env of vhs process to record terminal (#572) (@tr3mor)
- ed7c8a9: fix(record): set PAGEX to PAGE_X for proper capitalization (#570) (@bashbunni)
- ab03c35: fix: lint (@caarlos0)
- 710bb76: fix: lint (#637) (@caarlos0)
- ce7286f: fix: lint issues (@caarlos0)
- fd38bed: fix: source nested tapes (#567) (@rsteube)
- 25d888f: fix: source not respecting arguments of sourced commands (#604) (@caarlos0)
- 2c7733e: fix: sync golangci-lint config (#573) (@github-actions[bot])
Dependency updates
Documentation updates
- e9647e8: docs: add "Enter" to cleanup example (#598) (@mdjohns)
- 9c6a385: docs: add contributing guidelines (#636) (@bashbunni)
Other work
- 90220f7: ci: add lint-sync job (@caarlos0)
- b41d47f: ci: fix build (#602) (@caarlos0)
- 1d29712: ci: remove lint-soft.yml (@caarlos0)
- 517bcda: ci: set goreleaser version (@caarlos0)
- 02e73ee: ci: sync dependabot config (#586) (@charmcli)
- 9583c54: ci: sync dependabot config (#587) (@charmcli)
- 380e0de: ci: sync dependabot config (#618) (@charmcli)
- 4fb70ff: ci: sync golangci-lint config (@caarlos0)
- ce18cfa: ci: sync golangci-lint config (#597) (@github-actions[bot])
- 987c1ab: ci: sync golangci-lint config (#599) (@github-actions[bot])
- 7929ef2: ci: sync golangci-lint config (#607) (@github-actions[bot])
- 24b40a4: ci: sync golangci-lint config (#629) (@github-actions[bot])
- 9901ed9: refactor: cleanup repeated code (#628) (@alaingilbert)
Verifying the artifacts
First, download the checksums.txt file, for example, with wget:
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.10.0/checksums.txt'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/charmbracelet/vhs/releases/download/v0.10.0/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/vhs/releases/download/v0.10.0/checksums.txt.sig' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.9.0
VHS v0.9.0
Hurry up and Wait
This release introduces the Wait keyword:
Output wait.gif
Require gum
Type "./slow.sh"
Enter
Wait+Screen@10s /Hello/
Type "echo Lets Go!"
Enter
Sleep 1This allows you to remove all the random Sleeps in your tape files!
You can now wait for specific conditions instead. This means more control while simplifying tape file creation.
More shells
There's also support for xonsh and osh, so you can now use them in
your tapes as well:
Output examples/settings/set-shell-xonsh.gif
Set FontSize 38
Set Height 225
Set Shell xonsh
Sleep 1s
Type "I am using xonsh."
Sleep 2sChangelog
New Features
- 9624cda: feat: add Wait to wait for expected output (#257) (@mastercactapus)
- 5ddc862: feat: added osh (#564) (@rsteube)
- 16ec55b: feat: added xonsh (#563) (@rsteube)
- 92db33b: feat: don't create 'out.gif' by default (#518) (@nolta)
- b8b780e: feat: nushell: adopt colored
>prompt (#565) (@rsteube) - 2ff7bbd: feat: warn when using
SETcommands not being the top decl (#508) (@Delta456)
Bug fixes
- 281a280: fix: gifs (@caarlos0)
- 607c258: fix: remove gifs (@caarlos0)
- ecc1150: fix: typo in WindowBar parser - fixes #543 (#544) (@popey)
Documentation updates
Other work
Verifying the artifacts
First, download the checksums.txt file, for example, with wget:
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.9.0/checksums.txt'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/charmbracelet/vhs/releases/download/v0.9.0/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/vhs/releases/download/v0.9.0/checksums.txt.sig' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.8.0
Environmental friendliness
Ever want to alter the environment in your .tape files? Now you can with the ENV directive:
Env HELLO "WORLD"
Type "echo $HELLO"
Enter
Sleep 1sBonus: change the prompt
Also thanks to @Delta456, you can now change the prompt by setting PROMPT in the environment:
Env PROMPT "〉"For details see: #469.
Changelog
New!
- 1fc8002: cmd: add support for
ENVcommand (#469) (@Delta456) - d56384f: set VHS_RECORD="true"while running (#478)(@rockorager)
- f6a3e29: sign & notarize macOS binaries (#494) (@caarlos0)
Fixed
- 859d89d: fix duplicate if statement (@maaslalani)
- ed69431: hide vhs publish info when exiting with tape errors (#466) (@Delta456)
- dd6b6b8: fix ShiftLeft when using Shift+Tab (#475) (@akarpovskii)
- 5a207ef: data rase + better error reporting (#480) (@mastercactapus)
Docs
- bea7f77: clean up installation instructions (@maaslalani)
- 586e3d6: correct typo in ffmepg.go (#479) (@Utagai)
Other stuff
- 597d932: disable dependabot grouping (@caarlos0)
- 41ce6be: feat: update deps, fix lint issues (#526) (@caarlos0)
Verifying the artifacts
First, download the checksums.txt file, for example, with wget:
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.8.0/checksums.txt'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/charmbracelet/vhs/releases/download/v0.8.0/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/vhs/releases/download/v0.8.0/checksums.txt.sig' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.7.2
Changelog
Bug fixes
Other work
- 9950678: Fix app crash when there is repeated
SLEEPat the end of the "lines" slice (#446) (@alaingilbert) - 2a1d303: Refactor Lexer, Parser, Token into packages (#427) (@maaslalani)
Verifying the artifacts
First, download the checksums.txt file, for example, with wget:
wget 'https://github.com/charmbracelet/vhs/releases/download/v0.7.2/checksums.txt'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/charmbracelet/vhs/releases/download/v0.7.2/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/vhs/releases/download/v0.7.2/checksums.txt.sig' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.7.1
Freeze Frame ❄️ 📸
With VHS v0.7.0, you can capture the any moment during tape execution. Just add in Screenshot <filename>.png to your tapes:
Type ls
Enter
# Capture the output of 'ls'
Screenshot files.png
# Now, continue as you normally would
Type 'cd ..'
EnterYour tape outputs a GIF, and outputs a file named files.png.
Copy-Paste Functionality!
VHS can now talk to your system clipboard. Please keep this in mind when executing tapes from unknown sources.
Warning
You should never curl pipe into VHS, it's similar to executing a bash script on your computer!
Copy "https://github.com/charmbracelet/huh"
Type 'curl '
Paste
EnterNew Modifiers + Keys Alert!
VHS v0.7.0 has some new additions: introducing the top level Shift+ modifier and the Insert + Delete keys!
# Shift things up a bit!
Shift+A
Shift+Tab
Shift+Enter
# Insert and delete to your hearts desire:
Insert
DeleteThoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.7.0
Freeze Frame ❄️ 📸
With VHS v0.7.0, you can capture the any moment during tape execution. Just add in Screenshot <filename>.png to your tapes:
Type ls
Enter
# Capture the output of 'ls'
Screenshot files.png
# Now, continue as you normally would
Type 'cd ..'
EnterYour tape outputs a GIF, and outputs a file named files.png.
Copy-Paste Functionality!
VHS can now talk to your system clipboard. Please keep this in mind when executing tapes from unknown sources.
Warning
You should never curl pipe into VHS, it's similar to executing a bash script on your computer!
Copy "https://github.com/charmbracelet/huh"
Type 'curl '
Paste
EnterNew Modifiers + Keys Alert!
VHS v0.7.0 has some new additions: introducing the top level Shift+ modifier and the Insert + Delete keys!
# Shift things up a bit!
Shift+A
Shift+Tab
Shift+Enter
# Insert and delete to your hearts desire:
Insert
DeleteThoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.6.0
Font Fallbacks, New modifiers, CursorBlink
This release of VHS features 3 new additions as well as several small bug fixes to make sure everything runs smoothly.
New Features
- bd35699: Apple Symbols font fallback for braille characters (@maaslalani)
- 4dd9a81:
Alt+Shiftmodifiers (#316) (@elmarsan) - 46cf42f: Cursor Blink settings (#324) (@tr3mor)
Font Fallback
VHS now falls back to using Apple Symbols on MacOS to render braille characters without empty dots.
Alt + Shift modifiers
Ctrl[+Alt][+Shift]+<char>
Ctrl commands can now be modified with Alt or Shift characters to perform different key press combinations.
Cursor Blink
Set CursorBlink false
To avoid cursor blinking, simply use the CursorBlink setting (defaults to true).
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.





