Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
v0.26.0
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.WindowSizeMsgs 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())
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.
... (truncated)
Commits
f946f1a fix: support more shift and ctrl modifiers (#995)
21881ab chore(deps): bump golangci/golangci-lint-action from 4 to 5 (#990)
702b43d chore(deps): bump golang.org/x/term from 0.17.0 to 0.19.0 (#974)
5f66b48 chore(deps): bump golang.org/x/sys from 0.17.0 to 0.19.0 (#973)
de16215 chore(deps): bump golang.org/x/sync from 0.6.0 to 0.7.0 (#975)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/charmbracelet/bubbletea from 0.25.0 to 0.26.1.
Release notes
Sourced from github.com/charmbracelet/bubbletea's releases.
... (truncated)
Commits
f946f1a
fix: support more shift and ctrl modifiers (#995)21881ab
chore(deps): bump golangci/golangci-lint-action from 4 to 5 (#990)702b43d
chore(deps): bump golang.org/x/term from 0.17.0 to 0.19.0 (#974)5f66b48
chore(deps): bump golang.org/x/sys from 0.17.0 to 0.19.0 (#973)de16215
chore(deps): bump golang.org/x/sync from 0.6.0 to 0.7.0 (#975)511a1ae
fix(ci): go mod tidy before build5a887a1
chore(deps): bump golang.org/x/net from 0.17.0 to 0.23.0 in /examples (#981)1c6e74d
fix: deadlock condition on model init panicd61e697
chore(readme): add tgpt to 'in the wild' (#972)78972c5
docs(readme): add prs to 'in the wild' (#978)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show