github charmbracelet/bubbletea v0.23.0

latest releases: v2.0.0-alpha.2, v1.2.2, v1.2.1...
2 years ago

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 use Program.Run

The Charm logo

Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.

Don't miss a new bubbletea release

NewReleases is sending notifications on new releases.