Releases: charmbracelet/vhs
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 1s
Bonus: 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
ENV
command (#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.txt
If 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.txt
Done! 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
SLEEP
at 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.txt
If 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.txt
Done! 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 ..'
Enter
Your 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
Enter
New 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
Delete
Thoughts? 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 ..'
Enter
Your 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
Enter
New 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
Delete
Thoughts? 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
+Shift
modifiers (#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.
v0.5.0
VHS Sorcery ๐ช
This release of VHS includes a brand new Source
command:
You can now include (Source
) other tape files into other tape files to reuse collections of commands that you find yourself repeating. This allows you to build tape modules and compose parent tape files.
To get started, let's create two tape files:
touch source.tape
touch demo.tape
In source.tape
place any commands you repeat often
Type "I'm being summoned."
Sleep 500ms
Enter
Then, in demo.tape
, you can Source source.tape
which will execute all the commands found in the sourced tape file.
Output out.gif
Set Height 1000
Source source.tape # this will execute all commands in ./source.tape
Type "That's all folks"
Enter
When you run vhs demo.tape
it will perform all the commands within the tape file and when it reaches the Source
invocation it will execute all the commands in type.tape
:
Other features
- feat:
Alt+Enter
by @maaslalani in #305
Bug Fixes
This release of VHS fixes a bug that caused incorrect background rendering (#249).
In addition to using the latest version of VHS, you will also need to upgrade ttyd
to use the latest commit on main
.
- fix: use user shell for VHS record by @maaslalani in #279
- fix: powershell run command by @gaskeo in #290
- fix: output tape to stdout by @maaslalani in #294
- fix: record sleep only in supported time units by @tr3mor in #300
New Contributors
- @gaskeo made their first contribution in #290
- @bashbunni made their first contribution in #285
- @Xiol made their first contribution in #284
- @tr3mor made their first contribution in #300
Full Changelog: v0.4.0...v0.5.0
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.4.0
Terminal Decorations ๐จ
The latest version of VHS includes a ton of new settings for you to play around with! These settings allow you to decorate your GIFs and make them look even more like terminal emulators.
This release also includes a new Alt
command, a --quiet
flag for silent outputs, and bug fixes when starting up different shells.
New Settings
Margin
: Adds a margin around the outside of your terminal, whilePadding
allows you to add padding inside the terminal.MarginFill
: Adds a background color to the outside of the terminal. To change the background color of the terminal itself, useSet Theme
and specify the background.WindowBar
: Adds a terminal window frame/bar to the top of the GIF. This value can be one ofColorful
,ColorfulRight
,Rings
, orRingsRight
.WindowBarSize
: Sets how theWindowBar
should appear.BorderRadius
: Sets the border radius of the terminal.
Set Margin 80
Set MarginFill "#674EFF"
Set WindowBar "Colorful"
Set WindowBarSize 40
Set BorderRadius 8
Launch with Shell
This version of VHS performs the Shell
change upon launch, rather than switching shells after starting the ttyd
process. This change should result in slightly faster recordings and reduce the occurrence of buggy flashes at the start of GIFs that appeared occasionally when shell switching was slow.
Set Shell zsh
Alt command
VHS now supports pressing the Left Alt key with the newly introduced Alt
command. It behaves similarly to pressing Ctrl along with another key.
Alt+V
Quiet Output
If you prefer to create your VHS GIFs without any output, simply add the -quiet
flag. This will minimize any output to just the essentials.
vhs demo.tape --quiet
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.3.0
Hosted & Shareable GIFs
Now you can automatically publish your GIFs to vhs.charm.sh
and get a unique URL for your GIFs to share with your friends, coworkers, and the internet.
More details on the new โจ Mystical Charmโข Blog โจ
To get started use:
vhs cassette.tape --publish
After the generation, you will get a unique URL for your GIF hosted on Charmโข servers.
If you would like to, before publishing, see the GIF locally or simply forgot to use the --publish
flag, you can use the publish
command which allows you to simply publish GIFs. The following will give you a unique URL similar to the above, without needing to generate the GIF from the tape again.
vhs publish output.gif
Output Flag
If you need a quick way to produce an output to a location without editing a tape file, simply use the --output
flag to set the location of the output on the fly. This is useful when you need to change the output name or file type and don't want to edit the tape file.
vhs demo.tape --output new-location.gif --output new-format.mp4
Additional Changes
ttyd
listens on loopback interface only (thanks @rcw5)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.2.0
Lights, Camera, Action!
Write tape files by simply using the terminal! โจ
VHS Record
VHS v0.2.0
comes with brand new recording functionality. ๐น
To get started, run:
vhs record > record.tape
Perform any actions you want to see in your demo. And, then exit
the terminal session to finish.
After the session is recorded, you can make edits to the .tape
file that was just recorded and then use VHS to generate the GIF file.
vhs < record.tape
Brand New Themes
Now, Set Theme
may also take a named theme to use as the color scheme. To use this feature, pass a string from vhs themes
to the Set Theme
command.
Set Theme dracula
Change Shells
VHS now allows you to use a shell other than bash
for your demos. You can use the Set Shell
command in the tape file to change shells.
Set Shell zsh
Fixes
- Exit VHS process gracefully in event of error or cancellation
- Fix leakless windows browser for go-rod
- Use powershell / cmd prompt on windows
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.1.1
Configure your VHS server
This release includes many options to configure your VHS server (vhs serve
). Most notably, protect your VHS server by setting VHS_AUTHORIZED_KEYS_PATH
to a file with a list of authorized public keys.
VHS_PORT
: The port to listen on (1976
)VHS_HOST
: The host to listen on (localhost
)VHS_GID
: The Group ID to run the server as (current user's GID)VHS_UID
: The User ID to run the server as (current user's UID)VHS_KEY_PATH
: The path to the SSH key to use (.ssh/vhs_ed25519
)VHS_AUTHORIZED_KEYS_PATH
: The path to the authorized keys file (empty, publicly accessible)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.