Releases: charmbracelet/gum
v0.16.2
Changelog
Bug fixes
- 501402c: fix(choose): fix typo in environment variable
GUM_CCHOOSE_TIMEOUT
(#922) (@sadamczyk) - 0107dff: fix(filter): text input width is too small (#919) (@caarlos0)
- 8081f74: fix: logic to handle interrupt before timeout in error checking (#918) (@arithmeticmean)
Documentation updates
- 3c972b0: docs: add contributing guidelines (#920) (@bashbunni)
Other work
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.16.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/gum/releases/download/v0.16.2/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.16.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.16.1
Changelog
Bug fixes
- e292bbf: fix: detect timeout error and apply default option (#888) (@mikybars)
- 817c4bd: fix: lint issues (#909) (@caarlos0)
- 4fea9a0: fix: make empty line before help consistent (@caarlos0)
Documentation updates
- 39290a0: docs: use
$EDITOR
instead ofEDITOR
(#897) (@haya14busa)
Other work
- 6682e20: ci: sync dependabot config (#896) (@charmcli)
- a539127: ci: update lint jobs and settings (@caarlos0)
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.16.1/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/gum/releases/download/v0.16.1/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.16.1/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.16.0
Hey, little counter
This release contains some bug fixes as well as a small feature that adds an item position counter to the help. It's right there on the bottom left!

Changelog
New Features
- 984c84f: feat(table): show indicator on help keybindings (opt-in) (#839) (@raphamorim)
Bug fixes
- 204d219: fix(choose): order when using --label-delimiter (#867) (@caarlos0)
- 2b72e80: fix(confirm): ensure
--show-output
show the right answer (#853) (@andreynering) - 93f6857: fix(spin): preserve color output when
--show-output
is given (#850) (@andreynering) - d795b8a: fix(table): padding on item indicator (#841) (@caarlos0)
- 9705aa3: fix: generated completion invalid for fish shell (#837) (@raphamorim)
- bb098b2: fix(choose): generated completion invalid for fish shell (choose/options) (#838) (@raphamorim)
- 85a2980: fix(filter): wildcard escaping issue (#862) (@abelcha)
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.16.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/gum/releases/download/v0.16.0/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.16.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.15.2
Changelog
Bug fixes
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.15.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/gum/releases/download/v0.15.2/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.15.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.15.1
This is a small release fixing some bugs introduced in v0.15.0.
Changelog
Bug fixes
- 2846d19: Revert "feat(table): set --print if stdout is not a terminal (#762)" (#811) (@caarlos0)
- 30bc180: fix(confirm): do not print 'not confirmed' on exit 1 (#814) (@caarlos0)
- 3745655: fix(filter): wrong highlight when option has grapheme clusters (#799) (@caarlos0)
- 2da9527: fix(spin): clear title after finished (#815) (@caarlos0)
- 7e3216e: fix(viewport): remove extra line in viewport help (#816) (@caarlos0)
- c11af42: fix(write): ctrl+j not making new line (#819) (@caarlos0)
- 05c4bb9: fix: spin when not a tty (#813) (@caarlos0)
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.15.1/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/gum/releases/download/v0.15.1/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.15.1/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.15.0
No longer a sticky situation
This release contains a small boatload of fixes and quality-of-life features across the board by the great @caarlos0 and some awesome contributors.
Most importantly we detangled Gum and Huh. The two libraries were too tightly coupled creating a difficult environment to maintain. With this separation, Gum much easier to maintain, especially for contributors. Chew on that!
General Stuff
No more weird ANSI: gum
now strips ANSI sequences by default. Want โem back? just add --no-strip-ansi
.
We fixed some bugs with existing timeouts + they can now be used in confirm
, choose
, file
, filter
, input
, pager
, and spin
. You can specify the units, i.e. --timeout=750ms
, --timeout=1m30s
Choose
Sometimes you want the user-facing choice to be different than the outputted value. Now you can do that with --label-delimiter
:
$ printf 'Pocky:0\nRamen:1\nShrimp Chips:2\n' | gum choose --label-delimiter=':'
Want to select all options by default? Use --select='*'
.
$ printf 'Pocky\nRamen\nShrimp Chips\n' | gum choose --select='*'
Confirm
No you can print the chosen value with --show-output
:
$ gum confirm --show-output 'Do you agree?'
Do you agree? No
exit status 1
File
You can now add a header to your filepickers with the --header
set of flags.
gum file --header="Whatcha gonna pick?"
For details see gum file --help
.
Filter
Better delimiters, select all, and so on
Press ctrl+a to select all choices, esc to unfocus the filter field.
Want some defaults? Use --selected
to preselect choices. You can also use --input-delimiter
and --output-delimiter
for more flexibility around input and output.
$ echo "JS|Android|iOS" | gum filter --selected='*' --input-delimiter="|" --no-limit --output-delimiter=","
Freeform input
Filter's --no-strict
allows you to create a new option if no matches are found; it's essentially a free input field. Go crazy!
Sort: we fixed it
Filter's --sort
would sort by score which was causing some confusion for users. To clarify this behaviour, --sort
is deprecated in favour of --[no]-fuzzy-sort
.
Want to sort alphabetically? Leverage the sort
command in a pipeline:
$ cat input.txt | sort | gum filter --no-sort
Log
Now you can set a minimum log level with GUM_LOG_LEVEL
. Valid values are debug
, info
, warn
, error
, and fatal
.
Spin
You can now use --show-stdout
and --show-stderr
to print output:
$ gum spin --show-stdout --title "Running command..." -- sleep 10 && echo hello
Table
We expanded the table
API to allow users to control more fields in csv.Reader
through gum. This includes --lazy-quotes
and --fields-per-record
. This should fix issues with gum struggling to read CSV files properly. For details see gum table --help
.
We also made a bunch of rendering improvements such as growing the table rows based on --columns
, settings sane defaults widths, ignoring BOMs (byte order marks), and so on.
Changelog
New!
- feat(choose): --selected="*" to select all by @caarlos0 in #769
- feat(choose,filter): --input-delimiter --output-delimiter by @caarlos0 in #779
- feat(confirm): add --show-output by @vahnrr in #427
- feat(file): add --header by @caarlos0 in #768
- feat(file): show permissions and size by @caarlos0 in #717
- feat(filter): --select-if-one returns if single match by @caarlos0 in #778
- feat(filter): allow to focus out of filter by @caarlos0 in #776
- feat(filter): allow to pre-select items with --selected by @caarlos0 in #777
- feat(filter): ctrl+a to toggle select all by @caarlos0 in #770
- feat(log): support setting minimum log level with GUM_LOG_LEVEL by @caarlos0 in #723
- feat(spin): --show-stdout --show-stderr by @caarlos0 in #774
- feat(style): trim line spaces by @caarlos0 in #767
- feat(table): --lazy-quotes and --fields-per-record by @caarlos0 in #759
- feat(table): add help by @caarlos0 in #756
- feat(table): set --print if stdout is not a terminal by @caarlos0 in #762
- feat(version): adds command to check current gum version by @caarlos0 in #775
- feat: adding return column to table command by @deicon in #415
- feat: allow cursor option in file by @radar07 in #667
- feat: esc exit 1, ctrl+c exit 130, help arrow order by @caarlos0 in #771
- feat: handle focus/blur events by @caarlos0 in #749
- feat: improve handling ctrl+c and timeouts by @caarlos0 in #747
Fixed
- fix(choose): --ordered by @caarlos0 in #722
- fix(choose,confirm,file,filter,input,pager,spin): timeout default unit by @caarlos0 in #724
- fix(confirm) --timeout was ignored, now works as documented by @dpritchett in #697
- fix(confirm,choose,file,input): timeout handling by @caarlos0 in #718
- fix(filter): --no-strict not working, also weird behavior by @caarlos0 in #737
- fix(filter): abort on ctrl+q by @caarlos0 in #721
- fix(pager): do not strip ansi sequences by @caarlos0 in #754
- fix(pager): use help bubble by @caarlos0 in #748
- fix(spin): if not a tty, only print title, do not open tty for stdin by @caarlos0 in #763
- fix(spin): indenting lines when command is piped by @aymanbagabas in #636
- fix(spin): interrupt child process on ctrl+c by @caarlos0 in #732
- fix(stdin): trim space instead of \n by @caarlos0 in #761
- fix(table): grow table rows based on --columns by @caarlos0 in #760
- fix(table): ignore BOM by @caarlos0 in #757
- fix(table): only set height if > 0 by @caarlos0 in #716
- fix(table): set widths by @caarlos0 in #758
- fix(write): max height, max chars by @caarlos0 in #753
- fix: clarify filter --sort flag by @caarlos0 in #738
- fix: strip ansi sequences from stdin by @caarlos0 in #739
- fix: quote tmux session name in code sample by @oalders in #745
Other Stuff
- refactor: removing huh as a dep by @caarlos0 in #742
- chore(nix): update src hash by @ctn-malone in #733
New Contributors
- @dpritchett made their first contribution in #697
- @radar07 made their first contribution in #667
- @ctn-malone made their first contribution in #733
- @oalders made their first contribution in #745
Full Changelog: v0.14.5...v0.15.0
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.15.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/gum/releases/download/v0.15.0/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.15.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.14.5
This is a small maintenance release to bump dependencies, update linter config, and adjust GoReleaser configuration.
Changelog
Bug fixes
Dependency updates
- 6837ed2: feat(deps): bump github.com/charmbracelet/bubbletea from 0.27.0 to 1.0.0 (#661) (@dependabot[bot])
- 8ab6253: feat(deps): bump github.com/charmbracelet/bubbletea from 1.0.0 to 1.1.0 (#665) (@dependabot[bot])
- 65e46d6: feat(deps): bump github.com/charmbracelet/x/ansi from 0.2.2 to 0.2.3 (#656) (@dependabot[bot])
Other work
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.14.5/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/gum/releases/download/v0.14.5/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.14.5/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.14.4
Au revoir, bugs
This release fixes a buncha bugs and introduces a nice lil' quality-of-life feature.
Changelog
New!
- 8422c49: feat(filter): Add cyclic navigation (#483) (@piero-vic)
Fixed
- e095a91: fix(input): wrong height when using borders in the header (@caarlos0)
- d722a2f: fix: height 0 by default (#640) (@caarlos0)
- 046a4d3: fix: use 0 as default width (#634) (@caarlos0)
- 9db5c7f: fix: select all keybindings (#639) (@caarlos0)
- 96448e0: fix: show background style help (#641) (@caarlos0)
Deps
- dd5aa97: feat(deps): bump github.com/charmbracelet/bubbles (#654) (@dependabot[bot])
- 1a91d33: feat(deps): bump github.com/charmbracelet/glamour from 0.7.0 to 0.8.0 (#646) (@dependabot[bot])
- 2ee90c8: feat(deps): bump github.com/charmbracelet/lipgloss (#655) (@dependabot[bot])
- f55c314: fix(deps): update huh (@caarlos0)
Docs
Other stuff
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.14.4/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/gum/releases/download/v0.14.4/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.14.4/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.14.3
Fixinโ more bugs
Hot on the heels of the last release (very hot, in fact), hereโs one more quick point release to fix a regression in spinner.
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/gum/releases/download/v0.14.3/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/gum/releases/download/v0.14.3/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/gum/releases/download/v0.14.3/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.14.2
Fixinโ bugs
This is a maintenance release to pull in various fixes from huh upstream. As a bonus, macOS binaries are now also signed and notarized courtesy @goreleaser.
Thanks for using Gum!
Changelog
New
- sign and notarize macos binaries in #612
Changed
- use in-house utility packages in #616
Fixed
- drop left padding in choose in #597
- fix race conditon where spinner could mis-render in #621
- fix a bug where choose could crash when spacebar is pressed twice #587
- fix a bug where the foreground color could not be set in choose #614
- fix a bug where foreground could not be set in write #583
- fix a bug where keypresses could crash choose #580
- restore y/n keybindings to confirm #568
- restore centering to buttons in confirm #566
New Contributors
Full Changelog: v0.14.1...v0.14.2
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.