Repository navigation
Releases
v2.1.1
Terminal size query vulnerability
This patch version fixes a vulnerability reported by @Reload3d. You can find the details of the exploit here.
Best regards,
Charm XX 💫
Changelog
Fixed
- 9c6c325: fix: ingnore implausible terminal resize reports (#1887) (@andrinoff)
Other stuff
- 67b4c7a: v2.1.1 (@andrinoff)
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.1.0
Hello OSC 7501
The exciting news in this release is support for the brand new Program Status Protocol, otherwise known as OSC 7501, released just a few days ago. The protocol is designed to allow terminal applications to report what they're doing (e.g. idle, working, waiting on the user, finished, or failed) and why.
The obvious case for the design is AI agents, but are lots of other use cases for this, and we’re excited to see what you build with it.
It’s subtle, but here’s Crush in Superlogical’s Rex with the feature integrated (notice the dot in the first tab).
Bugfixes
Also, this release brings some very important fixes done by @AdamMagued, @simpleqt and @GreedyC.
Cheers!
Charm 🌞
Changelog
New!
- 41bc626: feat: OSC 7501 (#1841) (@andrinoff)
Fixed
- 96d69d2: fix(tty): fall back to default dimensions when terminal size is 0x0 (#1836) (@AdamMagued)
- ff51ba4: fix: prevent signal goroutine deadlock on shutdown (#1806) (@simpleqt)
Docs
Other stuff
- f9df43c: v2.1.0 (@andrinoff)
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.10
Change to no input programs
This is a small change to programs with no WithInput. Removed capability queries, which resulted in leaking of raw ANSI escape sequences.
Changelog
Fixed
- 8b10e22: fix: skip capability queries when input is disabled (#1801) (@drawmeanelephant)
Other stuff
- d5bfd5c: v2.0.10 (@andrinoff)
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.9
Small patches 🩹
Keybinds missing!
MouseButton11 and media record buttons were improperly handled, now fixed! (thanks to @Ricardo-M-L and @bunlongheng)
Weird UI artifacts with some terminals 👽
Sometimes, when switching between tabs in your terminal for example, the screen would not clear, now fixed!
... And some small corrections to docs!
Happy coding 🤖
Changelog
Fixed
- dc4b017: fix(key): map media record to ultraviolet code (#1757) (@Ricardo-M-L)
- 1862dfb: fix: assign MouseButton11 = uv.MouseButton11 (#1754) (@bunlongheng)
- 930e18c: fix: don't panic in ProgressBarState.String() for out-of-range values (#1748) (@ankit090701)
- faf4dcf: fix: pendingErase in cursedRenderer (#1755) (@andrinoff)
- 0d3e281: fix: restore kitty keyboard stack on exit (#1750) (@deepakganesh78)
- 0ef9fc9: fix: typo in doc (#1756) (@andrinoff)
Docs
- d40db14: docs: fix background color detection example in doc comment (@meowgorithm)
- 882727b: docs: fix links to tutorials & examples (#1645) (@mhdna)
Other stuff
- 708ee75: ci: fix examples workflow (#1734) (@kobihikri)
- 351d215: ci: sync dependabot config (#1763) (@charmcli)
- 6fb1f47: examples/sequence: fix milisecond typo in SleepPrintln (@makoto-developer)
- 73b6d91: v2.0.9 (@andrinoff)
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.8
Graphemes, schmraphemes
No terminal can render emojis perfectly, but we can try. This release improves some very specific edge cases around emoji rendering. Enjoy!
Changelog
- db569ad: fix(deps): bump ultraviolet for emoji-related rendering improvements
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.7
A few lil’ stability patches
Hi! This is a patch release with a few solid improvements around stability and correctness.
- @lrstanley, one of our faves, fixed a race condition around mice in the Cursed Renderer
- @lawrence3699 fixed a panic that could happen when input's not available
- We fixed a correctness issue with regard to mouse releases when Kitty Keyboard was active (thanks, @mitchellh)
Thanks for using Bubble Tea, and if you see anything awry please do let us know!
—Charm 👋
Changelog
Fixed
- c60f0c5: fix: prevent data race with cursedRenderer.onMouse (#1691) (@lrstanley)
- 074596e: fix: skip input reader restore when input is disabled (#1680) (@lawrence3699)
- 878d7df: fix(deps): bump ultraviolet for kitty keyboard fix (@meowgorithm)
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.6
This release fixes an issue with how Bubble Tea handled wide characters. Before, a wide character might be skipped or cause an infinite loop causing the CPU to spike. See fdcd0cf and charmbracelet/ultraviolet#109 for more details.
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.5
A small release to remove accidental unwanted debug log file. See 1ed724a and charmbracelet/ultraviolet@b516641 for details.
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.4
This release includes a small fix related to width calculation in x/ansi. See c788fe9 and charmbracelet/x@6921c75 for more details.
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.3
Extra Extra Extended Keyboard Enhancements!
This release adds support for the full set of Keyboard Enhancements. Now you can enable any enhancements on top of the default disambiguate one.
func (m model) View() tea.View {
var v tea.View
v.KeyboardEnhancements.ReportAlternateKeys = true
v.KeyboardEnhancements.ReportAllKeysAsEscapeCodes = true
return v
}Smarter Renderer
We also fixed a few renderer related bugs and made the Cursed Renderer smarter. Now, we always reset the terminal tab stops for the Bubble Tea program process context. People using tabs -N in their shell profiles shouldn't be affected.
See the full changelog below.
Changelog
New!
- 05df5ae: feat: support extended keyboard enhancements (#1626) (@aymanbagabas)
Fixed
- a3d7807: fix(ci): only run build-examples on non-dependabot PRs (@aymanbagabas)
- 7df1e65: fix(examples): migrate imports to charm.land for the glamour example (#1642) (@mhdna)
- ee06e98: fix(examples): resolve nil pointer dereference (#1663) (@mattpcaswell)
- ac355fe: fix(renderer): restore tab stops if hard tabs are enabled (#1677) (@aymanbagabas)
- 729f05c: fix: add missing signal.Stop in suspendProcess to prevent signal channel leak (Closes #1673) (#1674) (@kuishou68)
Docs
- bbe4faf: docs(example): add textarea dynamic height example (#1639) (@meowgorithm)
- e19d255: docs: fix README wording (#1624) (@Rohan5commit)
Other stuff
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

