If you are closely following Bubble Tea's development, you may have already noticed that we have been really busy fixing a lot of issues and merged more than just a couple of feature requests in recent weeks. This v0.23.0
release is in fact our biggest update since the initial release of the package: in the last 3 months over 100 commits have reached us by more than 30 individual contributors! Thank you everyone! 💕
Here's a quick overview of what has changed:
Custom Outputs
Don't want to render your beautiful TUI to stdout
? A buffer or an alternative file descriptor like stderr
seems more
appropriate? We got you covered now:
Render to stderr
p := tea.NewProgram(model, tea.WithOutput(os.Stderr))
Render to a Buffer
var buf bytes.Buffer
p := tea.NewProgram(model, tea.WithOutput(&buf))
Run Like the Wind
We've introduced the aptly named method Program.Run
which replaces and deprecates the existing Program.Start
and
Program.StartReturningModel
methods. This unifies and clarifies the blocking behavior of the Bubble Tea program execution.
The old methods will continue to work for now, but please update your programs accordingly:
p := tea.NewProgram(model, tea.WithOutput(os.Stderr))
model, err := p.Run() // instead of p.Start or p.StartReturningModel
...
Bug Fix Galore!
The initialization and tear-down methods of tea.Program
have been revised and some long-standing problems have been resolved. We couldn't list every single fix in the release notes, so please check out the full changelog below!
🤗 Thanks
We would like to particularly thank @knz who is the sole author of more than a dozen PRs since the last release. Outstanding work!
Changelog
New
- Render to custom outputs, io.Writers and buffers (
tea.WithOutput
) - Support for new keys: Ctrl(+Alt) - Page, Home, End, and Insert keys
- Signal handler is optional with program option
tea.WithoutSignalHandler
tea.ClearScreen
,tea.ShowCursor
commands- Exported
BatchMsg
Fixed!
- Race conditions in console renderer
- Issues restoring terminal state on shutdown
- Kill not resulting in an error returned by
Program.Run
- Repaint behavior
- Skip over unrecognized CSI sequences
- Function keys on urxvt
- Function keys on Linux console
- Rendering issues with overflowing output buffers
- Ensure final render on clean shutdown
- Cursor visibility on altscreen state switch
- Deadlock in
Program.Send
on shutdown
Deprecated
Program.Start
,Program.StartReturningModel
: please useProgram.Run
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.