github.com/charmbracelet/gum
v0.17.0
#105 most downloaded on Go modules
charmbracelet/gum
What this package is like to depend on
Last release 4 days ago
20 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Some releases are documented
notes for 9 of 26 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
182 releases · first in 2022
25 releases in the last 12 months
see the full history below
Release timeline
182 releases · Jul 2022 to Aug 2026Releases
latest 60 of 182-
v0.17.1-0.20260820072550-4f904647703a20 Aug 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260817210622-f6dd28ec27d517 Aug 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260812203939-7423ddf1c81012 Aug 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260615090713-716d8b5d022115 Jun 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260511120158-52589883138911 May 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260504140608-591ded27921204 May 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260422141433-30cc51695bcd22 Apr 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260413091638-ed78cffe351c13 Apr 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260406130110-b0471e842b5406 Apr 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260406123259-b19fc5e7833606 Apr 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260330144813-dd35798a373630 Mar 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260320124258-fc8e9a5c96e320 Mar 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260314150923-4409974788c614 Mar 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260216110003-06d72ec6462716 Feb 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260121150127-057099caf0e521 Jan 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260121144034-7fafddf384fa21 Jan 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260121142502-8502bbd8080121 Jan 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20260121135202-7871625c9d2e21 Jan 2026 pre-releaseNothing published for this version
-
v0.17.1-0.20251207001745-0ad76ee88ccd07 Dec 2025 pre-releaseNothing published for this version
-
v0.17.1-0.20251005154102-4a5553eb21f405 Oct 2025 pre-releaseNothing published for this version
-
v0.17.1-0.20251005153053-845f6b2ec8f405 Oct 2025 pre-releaseNothing published for this version
-
v0.17.1-0.20250909141422-0e98776744b309 Sep 2025 pre-releaseNothing published for this version
-
v0.17.005 Sep 2025Release notes
Open source →Pad Everything
This is a small feature release that adds
--paddingto as many commands as possible. For example:Padding arguments work similarly to CSS values:
- With one value, padding applies to all sides (
--padding="4") - With two values, padding applies vertically and horizontally, respectively (
--padding="4 10") - With four values, padding applies top, right, bottom, and left, respectively (
--padding="4 10")
Which commands can be padded? These:
chooseconfirmfilefilterinputpagerspinstyletablewrite
Special thanks to @caarlos0 for banging this one out in record time, for none other than @dhh. 💎
Changelog
New Features
Other work
- 09940da: ci: sync dependabot config (#956) (@charmcli)
- 8c12c2a: ci: sync golangci-lint config (#946) (@github-actions[bot])
Verifying the artifactsFirst, download the
checksums.txtfile, for example, withwget:wget 'https://github.com/charmbracelet/gum/releases/download/v0.17.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.17.0/checksums.txt.pem' \ --signature 'https://github.com/charmbracelet/gum/releases/download/v0.17.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 usingsha256sum: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, Discord, Slack, The Fediverse.
- With one value, padding applies to all sides (
-
v0.16.3-0.20250818130028-50fff7815a2918 Aug 2025 pre-releaseNothing published for this version
-
v0.16.3-0.20250630114458-99397479f14b30 Jun 2025 pre-releaseNothing published for this version
-
v0.16.223 Jun 2025Release notes
Open source →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 artifactsFirst, download the
checksums.txtfile, for example, withwget: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 usingsha256sum: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.
- 501402c: fix(choose): fix typo in environment variable
-
v0.16.2-0.20250602115204-f1e274c05f1202 Jun 2025 pre-releaseNothing published for this version
-
v0.16.130 May 2025Release notes
Open source →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
$EDITORinstead ofEDITOR(#897) (@haya14busa)
Other work
- 6682e20: ci: sync dependabot config (#896) (@charmcli)
- a539127: ci: update lint jobs and settings (@caarlos0)
Verifying the artifactsFirst, download the
checksums.txtfile, for example, withwget: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 usingsha256sum: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-0.20250328181452-0fca68e8fe8928 Mar 2025 pre-releaseNothing published for this version
-
v0.16.010 Mar 2025Release notes
Open source →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-outputshow the right answer (#853) (@andreynering) - 93f6857: fix(spin): preserve color output when
--show-outputis 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 artifactsFirst, download the
checksums.txtfile, for example, withwget: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 usingsha256sum: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.228 Jan 2025Release notes
Open source →Changelog
Bug fixes
Verifying the artifactsFirst, download the
checksums.txtfile, for example, withwget: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 usingsha256sum: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-0.20250123171236-e1d07d5ad52623 Jan 2025 pre-releaseNothing published for this version
-
v0.15.122 Jan 2025Release notes
Open source →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 artifactsFirst, download the
checksums.txtfile, for example, withwget: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 usingsha256sum: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-0.20250115050610-3dcc8b3f370a15 Jan 2025 pre-releaseNothing published for this version
-
v0.15.1-0.20250113193105-c93da09e137713 Jan 2025 pre-releaseNothing published for this version
-
v0.15.013 Jan 2025Release notes
Open source →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:
gumnow 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, andspin. You can specify the units, i.e.--timeout=750ms,--timeout=1m30sChoose
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
--headerset 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
--selectedto preselect choices. You can also use--input-delimiterand--output-delimiterfor more flexibility around input and output.$ echo "JS|Android|iOS" | gum filter --selected='*' --input-delimiter="|" --no-limit --output-delimiter=","
Freeform input
Filter's
--no-strictallows 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
--sortwould sort by score which was causing some confusion for users. To clarify this behaviour,--sortis deprecated in favour of--[no]-fuzzy-sort.Want to sort alphabetically? Leverage the
sortcommand 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 aredebug,info,warn,error, andfatal.Spin
You can now use
--show-stdoutand--show-stderrto print output:$ gum spin --show-stdout --title "Running command..." -- sleep 10 && echo hello
Table
We expanded the
tableAPI to allow users to control more fields incsv.Readerthrough gum. This includes--lazy-quotesand--fields-per-record. This should fix issues with gum struggling to read CSV files properly. For details seegum 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 artifactsFirst, download the
checksums.txtfile, for example, withwget: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 usingsha256sum: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.6-0.20250107142820-da325ae345db07 Jan 2025 pre-releaseNothing published for this version
-
v0.14.6-0.20241217174324-0f8f67f96e5217 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241213200342-6d405c49b1b913 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241212190219-d1bfd569ca9812 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241212131228-74c1079c9db612 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241211004700-2741e2eebbeb11 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241206181348-a5fb6b17989006 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241204133422-29250f8feb1904 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241203144024-63a3e8c8ce3203 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241203042834-90919986f21a03 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241202041650-fef37dae1f9b02 Dec 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241127175821-c3e836f0dd2627 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241126165327-f61d1007136e26 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241126154344-01f36b58a43126 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241122041911-1156c33ad5f922 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241121045603-8ed2ca5e0d7721 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241120043721-06bdaba08f5f20 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241118201006-098d09a270d718 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241118170255-1ffe8b7e70ee18 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241118134915-c868aa1c6ce818 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241118120748-60a4b3bf93f718 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241115185327-7bdd1896169315 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241113044449-c3ce2f97bf9813 Nov 2024 pre-releaseNothing published for this version
-
v0.14.6-0.20241111045718-03d3bcf178c011 Nov 2024 pre-releaseNothing published for this version