Bracketed Paste, Windows Improvements, Mainframes, and more
What do tapioca balls, IBM mainframes, and the Microsoft Windows Console API have in common? Bubble Tea v0.26.0, that’s what. Let’s get to it.
⚡️ Windows Input Improvements
A few years ago @erikgeiser, a penetration tester and ex-particle physicist, wrote this awesome library called coninput to majorly improve Bubble Tea input on Windows. @aymanbagabas has implemented the library in Bubble Tea and input on Windows is roughly 1000 times better now. In the short term, this means that for Windows users inputting non-Latin characters (like Greek, Cyrillic, Korean, Chinese and so on) stuff will “just work.”
The bigger news, however, is that this paves the way for Windows parity with our forthcoming support for super high fidelity input via Kitty Keyboard and Fixterms.
🍳 Hot Windows Resize Events
Terminal emulators on Windows don’t support the SIGWINCH
signal, which is sent when the terminal is resized. It’s been a huge bummer for a really long time. Thanks (again) to @erikgeiser and @aymanbagabas, we’re now able to reach deep into Windows’ underpinnings, detect window resizes, and send tea.WindowSizeMsg
s accordingly! This is a glorious moment for Bubble Tea on Windows indeed.
🫠 Bracketed Paste
While building a query editor for a CockroachDB client, @knz noticed that Bubble Tea didn't support Bracketed Paste. Performance-wise, that sucks because it means pasting large bodies of text (like SQL queries) will normally be seen as a bunch of little successive keypresses. That’s where Bracketed Paste comes in. When enabled at the terminal-level Bracketed Paste lets you slam down a bunch of text with one big, fat input event.
Bubble Tea enables bracketed paste by default, however you can opt out of it with the WithoutBracketedPaste()
program option:
p := tea.NewProgram(myCuteModel, tea.WithoutBracketedPaste())
You can also enable and disable it on demand with the EnableBracketedPaste()
and DisableBracketedPaste()
commands.
🌿 Multiline tea.Println
In case you forgot, tea.Println
(and it’s brother tea.Printf
) is a Cmd
that lets you print unmanaged output above a Bubble Tea program, similar to what you see with package managers like apt-get
. Thanks to @Adjective-Object (who also implemented tea.Println
in the first place) now you can send multi-line output, too. For a tea.Println
refresher see the package manager example.
📀 Hello, z/OS
Don’t you think it’s about time we all ran Bubble Tea apps on our mainframes? Thanks to @dustin-ward that dream is now a reality, so long as you have a z/OS mainframe. We're thrilled to announce that Bubble Tea is now fully supported on z/OS.
🌹 Bug fixes
Bugfixes are the unsung heroes that sometimes get buried below the feature listings. This release has them and they’re good ones; see the changelog below for details.
Changelog
New!
- bracketed paste by @knz in #397
- use windows console input buffer + resize events on windows by @aymanbagabas in #878
- multiline
tea.Println()
messages by @Adjective-Object in #490 - z/OS support by @dustin-ward in #913
Changed
Fixed
- fix deadlock condition on model init panic by @eolso in #926
- reduce console/term dependencies by @aymanbagabas in #897
- optimize batches with one item by @systay in #875
New Contributors
- @kevgo made their first contribution in #893
- @canack made their first contribution in #890
- @Pheon-Dev made their first contribution in #621
- @rusinikita made their first contribution in #835
- @hedhyw made their first contribution in #864
- @mat2cc made their first contribution in #871
- @stefanlogue made their first contribution in #855
- @BigJk made their first contribution in #885
- @sharunkumar made their first contribution in #839
- @timmattison made their first contribution in #908
- @dustin-ward made their first contribution in #913
- @jaymorelli96 made their first contribution in #802
- @siddhantac made their first contribution in #906
- @taigrr made their first contribution in #853
- @systay made their first contribution in #875
- @gabe565 made their first contribution in #728
- @zMoooooritz made their first contribution in #902
- @j178 made their first contribution in #709
- @arisnacg made their first contribution in #948
- @braheezy made their first contribution in #950
- @dhth made their first contribution in #949
- @tearingItUp786 made their first contribution in #944
- @aschey made their first contribution in #597
- @petergloor made their first contribution in #955
- @kaifulee made their first contribution in #957
- @danenania made their first contribution in #971
- @cuibuwei made their first contribution in #977
- @agvxov made their first contribution in #972
- @eolso made their first contribution in #926
Full Changelog: v0.25.0...v0.25.1
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.