-
Notifications
You must be signed in to change notification settings - Fork 844
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: bracketed paste #397
Conversation
As discussed with @muesli I changed the PR to always enable bracked paste, unless the option WithoutBracketedPaste is specified on the program. |
key.go
Outdated
// | ||
// The rune array is modified in-place. The returned slice | ||
// is the original slice shortened after the control characters have been removed. | ||
func SanitizeRunes(runes []rune, replaceNewLine rune) []rune { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any particular reason this function needs to be exported?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes it's for use here: charmbracelet/bubbles#214
I'm expecting any widget that wants to handle multi-rune input to need this (regardless of bracketed paste), so it deserves to be a common utility function.
This comment was marked as outdated.
This comment was marked as outdated.
Rebasing. |
1eacdc1
to
23fe7a1
Compare
This comment was marked as outdated.
This comment was marked as outdated.
71d1d7d
to
a38be3c
Compare
@muesli this is ready again. |
@muesli in case you haven't found it already, this patch has a shortcoming: certain terminal emulators feed the pasted datas as non-continuous writes to the terminal buffer, so the bubbletea code can sometimes read less than I will iterate and submit a better version. |
I have added a commit on top of the original branch. @muesli you can look at just the diff for the latest commit to see what you need to change on your branch. |
Bumping. I have a use-case similar to #800 and would love to be able to detect |
Please merge this! |
c0359b4
to
0af1b45
Compare
This introduces support for input via bracketed paste, where escape characters in the pasted input are not interpreted. Pasted input are marked as a special field in the KeyMsg. This is useful because pasted input may need sanitation in individual widgets.
Some terminal emulators feed the bracketed paste data in multiple chunks, which may not be aligned on a 256 byte boundary. So it's possible for `input.Read` to return less than 256 bytes read but while there's still more data to be read to complete a bracketed paste input.
0af1b45
to
0248b32
Compare
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [deps.dev/api/v3](https://togithub.com/google/deps.dev) | `v3.0.0-20240411010756-f6f382da6e02` -> `v3.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2fapi%2fv3/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2fapi%2fv3/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2fapi%2fv3/v3.0.0-20240411010756-f6f382da6e02/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2fapi%2fv3/v3.0.0-20240411010756-f6f382da6e02/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/maven](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fmaven/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fmaven/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fmaven/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fmaven/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/resolve](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fresolve/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fresolve/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fresolve/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fresolve/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/semver](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fsemver/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fsemver/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fsemver/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fsemver/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/charmbracelet/bubbletea](https://togithub.com/charmbracelet/bubbletea) | `v0.25.0` -> `v0.26.1` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcharmbracelet%2fbubbletea/v0.25.0/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcharmbracelet%2fbubbletea/v0.25.0/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/gkampitakis/go-snaps](https://togithub.com/gkampitakis/go-snaps) | `v0.5.3` -> `v0.5.4` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.3/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.3/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/jedib0t/go-pretty/v6](https://togithub.com/jedib0t/go-pretty) | `v6.5.8` -> `v6.5.9` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.8/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.8/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/urfave/cli/v2](https://togithub.com/urfave/cli) | `v2.27.1` -> `v2.27.2` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2furfave%2fcli%2fv2/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2furfave%2fcli%2fv2/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2furfave%2fcli%2fv2/v2.27.1/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2furfave%2fcli%2fv2/v2.27.1/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | golang.org/x/term | `v0.19.0` -> `v0.20.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fterm/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fterm/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fterm/v0.19.0/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fterm/v0.19.0/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [google.golang.org/protobuf](https://togithub.com/protocolbuffers/protobuf-go) | `v1.33.0` -> `v1.34.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fprotobuf/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fprotobuf/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fprotobuf/v1.33.0/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fprotobuf/v1.33.0/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charmbracelet/bubbletea (github.com/charmbracelet/bubbletea)</summary> ### [`v0.26.1`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.1) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.26.0...v0.26.1) This is a quick one to fix a Windows shortcoming in the last release acutely identified by our pal [@​jon4hz](https://togithub.com/jon4hz). Thank you! #### What's Changed - fix: support more shift and ctrl modifiers on windows by [@​jon4hz](https://togithub.com/jon4hz) in [https://github.com/charmbracelet/bubbletea/pull/995](https://togithub.com/charmbracelet/bubbletea/pull/995) **Full Changelog**: charmbracelet/bubbletea@v0.26.0...v0.26.1 *** <a href="https://charm.sh/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-badge.jpg" width="400"></a> Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat). ### [`v0.26.0`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.0) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.25.0...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](https://togithub.com/erikgeiser), a penetration tester and ex-particle physicist, wrote this awesome library called [coninput](https://togithub.com/erikgeiser/coninput) to majorly improve Bubble Tea input on Windows. [@​aymanbagabas](https://togithub.com/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](https://sw.kovidgoyal.net/kitty/keyboard-protocol/) and [Fixterms](https://www.leonerd.org.uk/hacks/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](https://togithub.com/erikgeiser) and [@​aymanbagabas](https://togithub.com/aymanbagabas), we’re now able to reach deep into Windows’ underpinnings, detect window resizes, and send [`tea.WindowSizeMsg`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#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](https://togithub.com/knz) noticed that Bubble Tea didn't support [Bracketed Paste](https://cirw.in/blog/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()`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#WithoutBracketedPaste) program option: ```go p := tea.NewProgram(myCuteModel, tea.WithoutBracketedPaste()) ``` You can also enable and disable it on demand with the [`EnableBracketedPaste()`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#EnableBracketedPaste) and [`DisableBracketedPaste()`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#DisableBracketedPaste) commands. #### 🌿 Multiline `tea.Println` In case you forgot, [`tea.Println`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#Println) (and it’s brother [`tea.Printf`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#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](https://togithub.com/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](https://togithub.com/charmbracelet/bubbletea/tree/master/examples/package-manager). #### 📀 Hello, z/OS Don’t you think it’s about time we all ran Bubble Tea apps on our mainframes? Thanks to [@​dustin-ward](https://togithub.com/dustin-ward) that dream is now a reality, so long as you have a [z/OS](https://www.ibm.com/products/zos) 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](https://togithub.com/knz) in [https://github.com/charmbracelet/bubbletea/pull/397](https://togithub.com/charmbracelet/bubbletea/pull/397) - use windows console input buffer + resize events on windows by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/878](https://togithub.com/charmbracelet/bubbletea/pull/878) - multiline `tea.Println()` messages by [@​Adjective-Object](https://togithub.com/Adjective-Object) in [https://github.com/charmbracelet/bubbletea/pull/490](https://togithub.com/charmbracelet/bubbletea/pull/490) - z/OS support by [@​dustin-ward](https://togithub.com/dustin-ward) in [https://github.com/charmbracelet/bubbletea/pull/913](https://togithub.com/charmbracelet/bubbletea/pull/913) ##### Changed - use go 1.18; update bubbles by [@​caarlos0](https://togithub.com/caarlos0) in [https://github.com/charmbracelet/bubbletea/pull/916](https://togithub.com/charmbracelet/bubbletea/pull/916) ##### Fixed - fix deadlock condition on model init panic by [@​eolso](https://togithub.com/eolso) in [https://github.com/charmbracelet/bubbletea/pull/926](https://togithub.com/charmbracelet/bubbletea/pull/926) - reduce console/term dependencies by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/897](https://togithub.com/charmbracelet/bubbletea/pull/897) - optimize batches with one item by [@​systay](https://togithub.com/systay) in [https://github.com/charmbracelet/bubbletea/pull/875](https://togithub.com/charmbracelet/bubbletea/pull/875) ##### New Contributors - [@​kevgo](https://togithub.com/kevgo) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/893](https://togithub.com/charmbracelet/bubbletea/pull/893) - [@​canack](https://togithub.com/canack) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/890](https://togithub.com/charmbracelet/bubbletea/pull/890) - [@​Pheon-Dev](https://togithub.com/Pheon-Dev) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/621](https://togithub.com/charmbracelet/bubbletea/pull/621) - [@​rusinikita](https://togithub.com/rusinikita) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/835](https://togithub.com/charmbracelet/bubbletea/pull/835) - [@​hedhyw](https://togithub.com/hedhyw) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/864](https://togithub.com/charmbracelet/bubbletea/pull/864) - [@​mat2cc](https://togithub.com/mat2cc) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/871](https://togithub.com/charmbracelet/bubbletea/pull/871) - [@​stefanlogue](https://togithub.com/stefanlogue) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/855](https://togithub.com/charmbracelet/bubbletea/pull/855) - [@​BigJk](https://togithub.com/BigJk) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/885](https://togithub.com/charmbracelet/bubbletea/pull/885) - [@​sharunkumar](https://togithub.com/sharunkumar) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/839](https://togithub.com/charmbracelet/bubbletea/pull/839) - [@​timmattison](https://togithub.com/timmattison) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/908](https://togithub.com/charmbracelet/bubbletea/pull/908) - [@​dustin-ward](https://togithub.com/dustin-ward) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/913](https://togithub.com/charmbracelet/bubbletea/pull/913) - [@​jaymorelli96](https://togithub.com/jaymorelli96) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/802](https://togithub.com/charmbracelet/bubbletea/pull/802) - [@​siddhantac](https://togithub.com/siddhantac) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/906](https://togithub.com/charmbracelet/bubbletea/pull/906) - [@​taigrr](https://togithub.com/taigrr) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/853](https://togithub.com/charmbracelet/bubbletea/pull/853) - [@​systay](https://togithub.com/systay) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/875](https://togithub.com/charmbracelet/bubbletea/pull/875) - [@​gabe565](https://togithub.com/gabe565) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/728](https://togithub.com/charmbracelet/bubbletea/pull/728) - [@​zMoooooritz](https://togithub.com/zMoooooritz) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/902](https://togithub.com/charmbracelet/bubbletea/pull/902) - [@​j178](https://togithub.com/j178) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/709](https://togithub.com/charmbracelet/bubbletea/pull/709) - [@​arisnacg](https://togithub.com/arisnacg) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/948](https://togithub.com/charmbracelet/bubbletea/pull/948) - [@​braheezy](https://togithub.com/braheezy) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/950](https://togithub.com/charmbracelet/bubbletea/pull/950) - [@​dhth](https://togithub.com/dhth) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/949](https://togithub.com/charmbracelet/bubbletea/pull/949) - [@​tearingItUp786](https://togithub.com/tearingItUp786) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/944](https://togithub.com/charmbracelet/bubbletea/pull/944) - [@​aschey](https://togithub.com/aschey) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/597](https://togithub.com/charmbracelet/bubbletea/pull/597) - [@​petergloor](https://togithub.com/petergloor) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/955](https://togithub.com/charmbracelet/bubbletea/pull/955) - [@​kaifulee](https://togithub.com/kaifulee) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/957](https://togithub.com/charmbracelet/bubbletea/pull/957) - [@​danenania](https://togithub.com/danenania) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/971](https://togithub.com/charmbracelet/bubbletea/pull/971) - [@​cuibuwei](https://togithub.com/cuibuwei) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/977](https://togithub.com/charmbracelet/bubbletea/pull/977) - [@​agvxov](https://togithub.com/agvxov) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/972](https://togithub.com/charmbracelet/bubbletea/pull/972) - [@​eolso](https://togithub.com/eolso) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/926](https://togithub.com/charmbracelet/bubbletea/pull/926) **Full Changelog**: charmbracelet/bubbletea@v0.25.0...v0.25.1 *** <a href="https://charm.sh/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-badge.jpg" width="400"></a> Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat). </details> <details> <summary>gkampitakis/go-snaps (github.com/gkampitakis/go-snaps)</summary> ### [`v0.5.4`](https://togithub.com/gkampitakis/go-snaps/releases/tag/v0.5.4) [Compare Source](https://togithub.com/gkampitakis/go-snaps/compare/v0.5.3...v0.5.4) #### What's Changed - fix: slice bounds out of range \[:5] by [@​zregvart](https://togithub.com/zregvart) in [https://github.com/gkampitakis/go-snaps/pull/98](https://togithub.com/gkampitakis/go-snaps/pull/98) #### New Contributors - [@​zregvart](https://togithub.com/zregvart) made their first contribution in [https://github.com/gkampitakis/go-snaps/pull/98](https://togithub.com/gkampitakis/go-snaps/pull/98) **Full Changelog**: gkampitakis/go-snaps@v0.5.3...v0.5.4 </details> <details> <summary>jedib0t/go-pretty (github.com/jedib0t/go-pretty/v6)</summary> ### [`v6.5.9`](https://togithub.com/jedib0t/go-pretty/releases/tag/v6.5.9) [Compare Source](https://togithub.com/jedib0t/go-pretty/compare/v6.5.8...v6.5.9) #### What's Changed - table: html row automerge support by [@​hindessm](https://togithub.com/hindessm) in [https://github.com/jedib0t/go-pretty/pull/319](https://togithub.com/jedib0t/go-pretty/pull/319) - table: update note about auto-merge by [@​hindessm](https://togithub.com/hindessm) in [https://github.com/jedib0t/go-pretty/pull/320](https://togithub.com/jedib0t/go-pretty/pull/320) #### New Contributors - [@​hindessm](https://togithub.com/hindessm) made their first contribution in [https://github.com/jedib0t/go-pretty/pull/319](https://togithub.com/jedib0t/go-pretty/pull/319) **Full Changelog**: jedib0t/go-pretty@v6.5.8...v6.5.9 </details> <details> <summary>urfave/cli (github.com/urfave/cli/v2)</summary> ### [`v2.27.2`](https://togithub.com/urfave/cli/releases/tag/v2.27.2) [Compare Source](https://togithub.com/urfave/cli/compare/v2.27.1...v2.27.2) #### What's Changed - Cleanup: Remove unnecessary intermediate variables by [@​1ambd4](https://togithub.com/1ambd4) in [https://github.com/urfave/cli/pull/1857](https://togithub.com/urfave/cli/pull/1857) - Docs:(issue\_1866) Fix documentation on filepath vs env preference by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1867](https://togithub.com/urfave/cli/pull/1867) - Fix:(issue\_1860) Remove hidden flags from flag categories by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1868](https://togithub.com/urfave/cli/pull/1868) - Fix repeated \[arguments...] in usage template in v2 by [@​edeustua](https://togithub.com/edeustua) in [https://github.com/urfave/cli/pull/1872](https://togithub.com/urfave/cli/pull/1872) - Update dependencies, actions steps, and usage for v2-maint by [@​meatballhat](https://togithub.com/meatballhat) in [https://github.com/urfave/cli/pull/1888](https://togithub.com/urfave/cli/pull/1888) #### New Contributors - [@​1ambd4](https://togithub.com/1ambd4) made their first contribution in [https://github.com/urfave/cli/pull/1857](https://togithub.com/urfave/cli/pull/1857) - [@​edeustua](https://togithub.com/edeustua) made their first contribution in [https://github.com/urfave/cli/pull/1872](https://togithub.com/urfave/cli/pull/1872) **Full Changelog**: urfave/cli@v2.27.1...v2.27.2 </details> <details> <summary>protocolbuffers/protobuf-go (google.golang.org/protobuf)</summary> ### [`v1.34.0`](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.33.0...v1.34.0) [Compare Source](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.33.0...v1.34.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMjEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM0MC4xMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [deps.dev/api/v3](https://togithub.com/google/deps.dev) | `v3.0.0-20240411010756-f6f382da6e02` -> `v3.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2fapi%2fv3/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2fapi%2fv3/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2fapi%2fv3/v3.0.0-20240411010756-f6f382da6e02/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2fapi%2fv3/v3.0.0-20240411010756-f6f382da6e02/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/maven](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fmaven/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fmaven/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fmaven/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fmaven/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/resolve](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fresolve/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fresolve/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fresolve/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fresolve/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/semver](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fsemver/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fsemver/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fsemver/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fsemver/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/charmbracelet/bubbletea](https://togithub.com/charmbracelet/bubbletea) | `v0.25.0` -> `v0.26.1` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcharmbracelet%2fbubbletea/v0.25.0/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcharmbracelet%2fbubbletea/v0.25.0/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/gkampitakis/go-snaps](https://togithub.com/gkampitakis/go-snaps) | `v0.5.3` -> `v0.5.4` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.3/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.3/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/jedib0t/go-pretty/v6](https://togithub.com/jedib0t/go-pretty) | `v6.5.8` -> `v6.5.9` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.8/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.8/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/urfave/cli/v2](https://togithub.com/urfave/cli) | `v2.27.1` -> `v2.27.2` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2furfave%2fcli%2fv2/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2furfave%2fcli%2fv2/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2furfave%2fcli%2fv2/v2.27.1/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2furfave%2fcli%2fv2/v2.27.1/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | golang.org/x/term | `v0.19.0` -> `v0.20.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fterm/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fterm/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fterm/v0.19.0/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fterm/v0.19.0/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [google.golang.org/protobuf](https://togithub.com/protocolbuffers/protobuf-go) | `v1.33.0` -> `v1.34.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fprotobuf/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fprotobuf/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fprotobuf/v1.33.0/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fprotobuf/v1.33.0/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charmbracelet/bubbletea (github.com/charmbracelet/bubbletea)</summary> ### [`v0.26.1`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.1) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.26.0...v0.26.1) This is a quick one to fix a Windows shortcoming in the last release acutely identified by our pal [@​jon4hz](https://togithub.com/jon4hz). Thank you! #### What's Changed - fix: support more shift and ctrl modifiers on windows by [@​jon4hz](https://togithub.com/jon4hz) in [https://github.com/charmbracelet/bubbletea/pull/995](https://togithub.com/charmbracelet/bubbletea/pull/995) **Full Changelog**: charmbracelet/bubbletea@v0.26.0...v0.26.1 *** <a href="https://charm.sh/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-badge.jpg" width="400"></a> Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat). ### [`v0.26.0`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.0) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.25.0...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](https://togithub.com/erikgeiser), a penetration tester and ex-particle physicist, wrote this awesome library called [coninput](https://togithub.com/erikgeiser/coninput) to majorly improve Bubble Tea input on Windows. [@​aymanbagabas](https://togithub.com/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](https://sw.kovidgoyal.net/kitty/keyboard-protocol/) and [Fixterms](https://www.leonerd.org.uk/hacks/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](https://togithub.com/erikgeiser) and [@​aymanbagabas](https://togithub.com/aymanbagabas), we’re now able to reach deep into Windows’ underpinnings, detect window resizes, and send [`tea.WindowSizeMsg`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#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](https://togithub.com/knz) noticed that Bubble Tea didn't support [Bracketed Paste](https://cirw.in/blog/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()`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#WithoutBracketedPaste) program option: ```go p := tea.NewProgram(myCuteModel, tea.WithoutBracketedPaste()) ``` You can also enable and disable it on demand with the [`EnableBracketedPaste()`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#EnableBracketedPaste) and [`DisableBracketedPaste()`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#DisableBracketedPaste) commands. #### 🌿 Multiline `tea.Println` In case you forgot, [`tea.Println`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#Println) (and it’s brother [`tea.Printf`](https://pkg.go.dev/github.com/charmbracelet/[email protected]#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](https://togithub.com/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](https://togithub.com/charmbracelet/bubbletea/tree/master/examples/package-manager). #### 📀 Hello, z/OS Don’t you think it’s about time we all ran Bubble Tea apps on our mainframes? Thanks to [@​dustin-ward](https://togithub.com/dustin-ward) that dream is now a reality, so long as you have a [z/OS](https://www.ibm.com/products/zos) 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](https://togithub.com/knz) in [https://github.com/charmbracelet/bubbletea/pull/397](https://togithub.com/charmbracelet/bubbletea/pull/397) - use windows console input buffer + resize events on windows by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/878](https://togithub.com/charmbracelet/bubbletea/pull/878) - multiline `tea.Println()` messages by [@​Adjective-Object](https://togithub.com/Adjective-Object) in [https://github.com/charmbracelet/bubbletea/pull/490](https://togithub.com/charmbracelet/bubbletea/pull/490) - z/OS support by [@​dustin-ward](https://togithub.com/dustin-ward) in [https://github.com/charmbracelet/bubbletea/pull/913](https://togithub.com/charmbracelet/bubbletea/pull/913) ##### Changed - use go 1.18; update bubbles by [@​caarlos0](https://togithub.com/caarlos0) in [https://github.com/charmbracelet/bubbletea/pull/916](https://togithub.com/charmbracelet/bubbletea/pull/916) ##### Fixed - fix deadlock condition on model init panic by [@​eolso](https://togithub.com/eolso) in [https://github.com/charmbracelet/bubbletea/pull/926](https://togithub.com/charmbracelet/bubbletea/pull/926) - reduce console/term dependencies by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/897](https://togithub.com/charmbracelet/bubbletea/pull/897) - optimize batches with one item by [@​systay](https://togithub.com/systay) in [https://github.com/charmbracelet/bubbletea/pull/875](https://togithub.com/charmbracelet/bubbletea/pull/875) ##### New Contributors - [@​kevgo](https://togithub.com/kevgo) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/893](https://togithub.com/charmbracelet/bubbletea/pull/893) - [@​canack](https://togithub.com/canack) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/890](https://togithub.com/charmbracelet/bubbletea/pull/890) - [@​Pheon-Dev](https://togithub.com/Pheon-Dev) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/621](https://togithub.com/charmbracelet/bubbletea/pull/621) - [@​rusinikita](https://togithub.com/rusinikita) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/835](https://togithub.com/charmbracelet/bubbletea/pull/835) - [@​hedhyw](https://togithub.com/hedhyw) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/864](https://togithub.com/charmbracelet/bubbletea/pull/864) - [@​mat2cc](https://togithub.com/mat2cc) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/871](https://togithub.com/charmbracelet/bubbletea/pull/871) - [@​stefanlogue](https://togithub.com/stefanlogue) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/855](https://togithub.com/charmbracelet/bubbletea/pull/855) - [@​BigJk](https://togithub.com/BigJk) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/885](https://togithub.com/charmbracelet/bubbletea/pull/885) - [@​sharunkumar](https://togithub.com/sharunkumar) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/839](https://togithub.com/charmbracelet/bubbletea/pull/839) - [@​timmattison](https://togithub.com/timmattison) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/908](https://togithub.com/charmbracelet/bubbletea/pull/908) - [@​dustin-ward](https://togithub.com/dustin-ward) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/913](https://togithub.com/charmbracelet/bubbletea/pull/913) - [@​jaymorelli96](https://togithub.com/jaymorelli96) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/802](https://togithub.com/charmbracelet/bubbletea/pull/802) - [@​siddhantac](https://togithub.com/siddhantac) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/906](https://togithub.com/charmbracelet/bubbletea/pull/906) - [@​taigrr](https://togithub.com/taigrr) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/853](https://togithub.com/charmbracelet/bubbletea/pull/853) - [@​systay](https://togithub.com/systay) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/875](https://togithub.com/charmbracelet/bubbletea/pull/875) - [@​gabe565](https://togithub.com/gabe565) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/728](https://togithub.com/charmbracelet/bubbletea/pull/728) - [@​zMoooooritz](https://togithub.com/zMoooooritz) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/902](https://togithub.com/charmbracelet/bubbletea/pull/902) - [@​j178](https://togithub.com/j178) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/709](https://togithub.com/charmbracelet/bubbletea/pull/709) - [@​arisnacg](https://togithub.com/arisnacg) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/948](https://togithub.com/charmbracelet/bubbletea/pull/948) - [@​braheezy](https://togithub.com/braheezy) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/950](https://togithub.com/charmbracelet/bubbletea/pull/950) - [@​dhth](https://togithub.com/dhth) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/949](https://togithub.com/charmbracelet/bubbletea/pull/949) - [@​tearingItUp786](https://togithub.com/tearingItUp786) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/944](https://togithub.com/charmbracelet/bubbletea/pull/944) - [@​aschey](https://togithub.com/aschey) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/597](https://togithub.com/charmbracelet/bubbletea/pull/597) - [@​petergloor](https://togithub.com/petergloor) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/955](https://togithub.com/charmbracelet/bubbletea/pull/955) - [@​kaifulee](https://togithub.com/kaifulee) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/957](https://togithub.com/charmbracelet/bubbletea/pull/957) - [@​danenania](https://togithub.com/danenania) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/971](https://togithub.com/charmbracelet/bubbletea/pull/971) - [@​cuibuwei](https://togithub.com/cuibuwei) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/977](https://togithub.com/charmbracelet/bubbletea/pull/977) - [@​agvxov](https://togithub.com/agvxov) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/972](https://togithub.com/charmbracelet/bubbletea/pull/972) - [@​eolso](https://togithub.com/eolso) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/926](https://togithub.com/charmbracelet/bubbletea/pull/926) **Full Changelog**: charmbracelet/bubbletea@v0.25.0...v0.25.1 *** <a href="https://charm.sh/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-badge.jpg" width="400"></a> Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat). </details> <details> <summary>gkampitakis/go-snaps (github.com/gkampitakis/go-snaps)</summary> ### [`v0.5.4`](https://togithub.com/gkampitakis/go-snaps/releases/tag/v0.5.4) [Compare Source](https://togithub.com/gkampitakis/go-snaps/compare/v0.5.3...v0.5.4) #### What's Changed - fix: slice bounds out of range \[:5] by [@​zregvart](https://togithub.com/zregvart) in [https://github.com/gkampitakis/go-snaps/pull/98](https://togithub.com/gkampitakis/go-snaps/pull/98) #### New Contributors - [@​zregvart](https://togithub.com/zregvart) made their first contribution in [https://github.com/gkampitakis/go-snaps/pull/98](https://togithub.com/gkampitakis/go-snaps/pull/98) **Full Changelog**: gkampitakis/go-snaps@v0.5.3...v0.5.4 </details> <details> <summary>jedib0t/go-pretty (github.com/jedib0t/go-pretty/v6)</summary> ### [`v6.5.9`](https://togithub.com/jedib0t/go-pretty/releases/tag/v6.5.9) [Compare Source](https://togithub.com/jedib0t/go-pretty/compare/v6.5.8...v6.5.9) #### What's Changed - table: html row automerge support by [@​hindessm](https://togithub.com/hindessm) in [https://github.com/jedib0t/go-pretty/pull/319](https://togithub.com/jedib0t/go-pretty/pull/319) - table: update note about auto-merge by [@​hindessm](https://togithub.com/hindessm) in [https://github.com/jedib0t/go-pretty/pull/320](https://togithub.com/jedib0t/go-pretty/pull/320) #### New Contributors - [@​hindessm](https://togithub.com/hindessm) made their first contribution in [https://github.com/jedib0t/go-pretty/pull/319](https://togithub.com/jedib0t/go-pretty/pull/319) **Full Changelog**: jedib0t/go-pretty@v6.5.8...v6.5.9 </details> <details> <summary>urfave/cli (github.com/urfave/cli/v2)</summary> ### [`v2.27.2`](https://togithub.com/urfave/cli/releases/tag/v2.27.2) [Compare Source](https://togithub.com/urfave/cli/compare/v2.27.1...v2.27.2) #### What's Changed - Cleanup: Remove unnecessary intermediate variables by [@​1ambd4](https://togithub.com/1ambd4) in [https://github.com/urfave/cli/pull/1857](https://togithub.com/urfave/cli/pull/1857) - Docs:(issue\_1866) Fix documentation on filepath vs env preference by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1867](https://togithub.com/urfave/cli/pull/1867) - Fix:(issue\_1860) Remove hidden flags from flag categories by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1868](https://togithub.com/urfave/cli/pull/1868) - Fix repeated \[arguments...] in usage template in v2 by [@​edeustua](https://togithub.com/edeustua) in [https://github.com/urfave/cli/pull/1872](https://togithub.com/urfave/cli/pull/1872) - Update dependencies, actions steps, and usage for v2-maint by [@​meatballhat](https://togithub.com/meatballhat) in [https://github.com/urfave/cli/pull/1888](https://togithub.com/urfave/cli/pull/1888) #### New Contributors - [@​1ambd4](https://togithub.com/1ambd4) made their first contribution in [https://github.com/urfave/cli/pull/1857](https://togithub.com/urfave/cli/pull/1857) - [@​edeustua](https://togithub.com/edeustua) made their first contribution in [https://github.com/urfave/cli/pull/1872](https://togithub.com/urfave/cli/pull/1872) **Full Changelog**: urfave/cli@v2.27.1...v2.27.2 </details> <details> <summary>protocolbuffers/protobuf-go (google.golang.org/protobuf)</summary> ### [`v1.34.0`](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.33.0...v1.34.0) [Compare Source](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.33.0...v1.34.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMjEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM0MC4xMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
First 3 commits from #568, #569 and #570.
Partial fix to #404
This introduces support for input via bracketed paste, where escape
characters in the pasted input are not interpreted.
Pasted input are marked as a special field in the KeyMsg.
This is because pasted input may need sanitation in individual widgets.
cc @maaslalani @muesli