Textarea element had a bug, where you used to be able to go 1 word backwards, even if there was nothing, which resulted in the whole TUI freezing. It was now fixed by @OxQuasar!
There are a couple nice features in today's release. Let's check em out!
If a tree falls in the forest…
At last, the tree Bubble from all star contributor @dlvhdr’s is here! He built it for DiffNav and graciously contributed to Bubbles. We've been working with Dolev for a long time and were totally stoked when he offerd to contribute.
Select all, ctrl+c, ctrl+v…done!
Our own @andrinoff added a bunch of awesome stuff to Textarea, including the long awaited text selection. Select, copy, and cut your way into mini text editing.
The exciting news in this release is support for the brand new Program Status Protocol, otherwise known as OSC 7501, released just a few days ago. The protocol is designed to allow terminal applications to report what they're doing (e.g. idle, working, waiting on the user, finished, or failed) and why.
The obvious case for the design is AI agents, but are lots of other use cases for this, and we’re excited to see what you build with it.
It’s subtle, but here’s Crush in Superlogical’s Rex with the feature integrated (notice the dot in the first tab).
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [charm.land/bubbles/v2](https://github.com/charmbracelet/bubbles) | `v2.1.1` → `v2.2.1` |  |  |
| [charm.land/bubbletea/v2](https://github.com/charmbracelet/bubbletea) | `v2.0.7` → `v2.1.1` |  |  |
| [github.com/urfave/cli/v3](https://github.com/urfave/cli) | `v3.10.1` → `v3.14.0` |  |  |
| [golang.org/x/term](https://pkg.go.dev/golang.org/x/term) | [`v0.45.0` → `v0.47.0`](https://cs.opensource.google/go/x/term/+/refs/tags/v0.45.0...refs/tags/v0.47.0) |  |  |
---
### Release Notes
<details>
<summary>charmbracelet/bubbles (charm.land/bubbles/v2)</summary>
### [`v2.2.1`](https://github.com/charmbracelet/bubbles/releases/tag/v2.2.1)
[Compare Source](https://github.com/charmbracelet/bubbles/compare/v2.2.0...v2.2.1)
### Tiny Monday bugfix
Textarea element had a bug, where you used to be able to go 1 word backwards, even if there was nothing, which resulted in the whole TUI freezing. It was now fixed by [@​OxQuasar](https://github.com/OxQuasar)!
#### Changelog
##### Fixed
- [`f613411`](https://github.com/charmbracelet/bubbles/commit/f6134114d735cf40e95c15ff62e7359e46d04fc9): fix(textarea): stop word-left at input boundary ([#​1036](https://github.com/charmbracelet/bubbles/issues/1036)) ([@​OxQuasar](https://github.com/OxQuasar))
##### Docs
- [`87d4458`](https://github.com/charmbracelet/bubbles/commit/87d445838781700cb25e3fc3a6b26006eab97b41): docs: update godoc link in readme to new package ([@​meowgorithm](https://github.com/meowgorithm))
##### Other stuff
- [`10489b5`](https://github.com/charmbracelet/bubbles/commit/10489b5fafe92bfaea873297cab8ac8b5c5237f4): readme: drop tree section for now ([@​meowgorithm](https://github.com/meowgorithm))
- [`4909481`](https://github.com/charmbracelet/bubbles/commit/490948109eb4731927ba2f4cd464d8175a9630d7): v2.2.1 ([@​andrinoff](https://github.com/andrinoff))
***
<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>
Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@​charmcli), [Bluesky](https://bsky.app/profile/charm.land).
### [`v2.2.0`](https://github.com/charmbracelet/bubbles/releases/tag/v2.2.0)
[Compare Source](https://github.com/charmbracelet/bubbles/compare/v2.1.1...v2.2.0)
### A new Bubble and some new Textarea stuff
There are a couple nice features in today's release. Let's check em out!
#### If a tree falls in the forest…
At last, the tree Bubble from all star contributor [@​dlvhdr](https://github.com/dlvhdr)’s is here! He built it for [DiffNav](https://github.com/dlvhdr/diffnav) and graciously contributed to Bubbles. We've been working with Dolev for a long time and were totally stoked when he offerd to contribute.
<p><img width="500" src="https://github.com/user-attachments/assets/10f36c36-4669-45ef-b957-f214ca27c34f" /></p>
#### Select all, ctrl+c, ctrl+v…done!
Our own [@​andrinoff](https://github.com/andrinoff) added a bunch of awesome stuff to Textarea, including the long awaited *text selection*. Select, copy, and cut your way into mini text editing.
<p><img width="600" src="https://github.com/user-attachments/assets/49b241cb-468a-483a-8ace-5d0742869cd9" /></p>
For more info see [the docs](https://pkg.go.dev/charm.land/bubbles/v2@​v2.2.0/textarea).
And special thanks to [@​zoriya](https://github.com/zoriya) for adding <kbd>ctrl+left/right</kbd> bindings.
xoxo,
Charm! 💌
#### Changelog
##### New!
- [`8cea431`](https://github.com/charmbracelet/bubbles/commit/8cea431500a8837c241cbe8ad71601aa8f00a0d9): feat(textarea): support ctrl + left/right/backspace ([#​1020](https://github.com/charmbracelet/bubbles/issues/1020)) ([@​zoriya](https://github.com/zoriya))
- [`037ad37`](https://github.com/charmbracelet/bubbles/commit/037ad37bb0aa6e8ec544df6d3af752755f0a72d9): feat: textarea selection ([#​1029](https://github.com/charmbracelet/bubbles/issues/1029)) ([@​andrinoff](https://github.com/andrinoff))
- [`e97af08`](https://github.com/charmbracelet/bubbles/commit/e97af08ee293131e7b71f7e3006c06a81a2584b8): feat: tree bubble ([#​893](https://github.com/charmbracelet/bubbles/issues/893)) ([@​dlvhdr](https://github.com/dlvhdr))
##### Fixed
- [`6484e49`](https://github.com/charmbracelet/bubbles/commit/6484e49c0a051fe100cb16c0e184cabd4b53a6f0): fix(filepicker): don't blank the view when height is unset ([#​1026](https://github.com/charmbracelet/bubbles/issues/1026)) ([@​andrinoff](https://github.com/andrinoff))
##### Other stuff
- [`355f960`](https://github.com/charmbracelet/bubbles/commit/355f960a27f9b0bf455b3ddea66dc987db62317d): ci: sync dependabot config ([#​896](https://github.com/charmbracelet/bubbles/issues/896)) ([@​charmcli](https://github.com/charmcli))
- [`ef8af03`](https://github.com/charmbracelet/bubbles/commit/ef8af03870c1817d3b0b4fa0578b661a576e0220): v2.2.0 ([@​andrinoff](https://github.com/andrinoff))
***
<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>
Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@​charmcli), [Bluesky](https://bsky.app/profile/charm.land).
</details>
<details>
<summary>charmbracelet/bubbletea (charm.land/bubbletea/v2)</summary>
### [`v2.1.1`](https://github.com/charmbracelet/bubbletea/releases/tag/v2.1.1)
[Compare Source](https://github.com/charmbracelet/bubbletea/compare/v2.1.0...v2.1.1)
### Terminal size query vulnerability
This patch version fixes a vulnerability reported by [@​Reload3d](https://github.com/Reload3d). You can find the details of the exploit [here](https://github.com/charmbracelet/bubbletea/security/advisories/GHSA-qc58-pfg9-7pph).
Best regards,
Charm XX 💫
#### Changelog
##### Fixed
- [`9c6c325`](https://github.com/charmbracelet/bubbletea/commit/9c6c325f83348ee7215fb7a7aca3bc6316217056): fix: ingnore implausible terminal resize reports ([#​1887](https://github.com/charmbracelet/bubbletea/issues/1887)) ([@​andrinoff](https://github.com/andrinoff))
##### Other stuff
- [`67b4c7a`](https://github.com/charmbracelet/bubbletea/commit/67b4c7a8a2b34a0b1ce15261b0c705bc7e1a04b7): v2.1.1 ([@​andrinoff](https://github.com/andrinoff))
***
<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>
Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@​charmcli), [Bluesky](https://bsky.app/profile/charm.land).
### [`v2.1.0`](https://github.com/charmbracelet/bubbletea/releases/tag/v2.1.0)
[Compare Source](https://github.com/charmbracelet/bubbletea/compare/v2.0.10...v2.1.0)
### Hello OSC 7501
The exciting news in this release is support for the brand new [Program Status Protocol](https://www.superlogical.com/rex/docs/build/program-status), otherwise known as `OSC 7501`, released just a few days ago. The protocol is designed to allow terminal applications to report what they're doing (e.g. idle, working, waiting on the user, finished, or failed) and why.
The obvious case for the design is AI agents, but are lots of other use cases for this, and we’re excited to see what you build with it.
It’s subtle, but here’s [Crush](https://github.com/charmbracelet/crush) in Superlogical’s [Rex](https://www.superlogical.com/updates/public-testing-beginning) with the feature integrated (notice the dot in the first tab).
<p><img width="700" src="https://github.com/user-attachments/assets/85680681-9397-456b-8283-4eed19635681" /></p>
#### Bugfixes
Also, this release brings some very important fixes done by [@​AdamMagued](https://github.com/AdamMagued), [@​simpleqt](https://github.com/simpleqt) and [@​GreedyC](https://github.com/GreedyC).
Cheers!
Charm 🌞
#### Changelog
##### New!
- [`41bc626`](https://github.com/charmbracelet/bubbletea/commit/41bc6265643a4709ad355581b01e6bb70b2ed8ea): feat: OSC 7501 ([#​1841](https://github.com/charmbracelet/bubbletea/issues/1841)) ([@​andrinoff](https://github.com/andrinoff))
##### Fixed
- [`96d69d2`](https://github.com/charmbracelet/bubbletea/commit/96d69d2f7eb182bb311be08fc56ed2c208239aff): fix(tty): fall back to default dimensions when terminal size is 0x0 ([#​1836](https://github.com/charmbracelet/bubbletea/issues/1836)) ([@​AdamMagued](https://github.com/AdamMagued))
- [`ff51ba4`](https://github.com/charmbracelet/bubbletea/commit/ff51ba4c51f85875761b15a64f9ab9aa0eaa9fa1): fix: prevent signal goroutine deadlock on shutdown ([#​1806](https://github.com/charmbracelet/bubbletea/issues/1806)) ([@​simpleqt](https://github.com/simpleqt))
##### Docs
- [`33f6a40`](https://github.com/charmbracelet/bubbletea/commit/33f6a40ec035111bc11d5fd5304cac1359af44e0): docs: fix command and environment godoc examples ([#​1833](https://github.com/charmbracelet/bubbletea/issues/1833)) ([@​GreedyC](https://github.com/GreedyC))
##### Other stuff
- [`f9df43c`](https://github.com/charmbracelet/bubbletea/commit/f9df43c4f2c021d8740a2628d59cd810a862eb98): v2.1.0 ([@​andrinoff](https://github.com/andrinoff))
***
<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>
Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@​charmcli), [Bluesky](https://bsky.app/profile/charm.land).
### [`v2.0.10`](https://github.com/charmbracelet/bubbletea/releases/tag/v2.0.10)
[Compare Source](https://github.com/charmbracelet/bubbletea/compare/v2.0.9...v2.0.10)
### Change to no input programs
This is a small change to programs with no `WithInput`. Removed capability queries, which resulted in leaking of raw ANSI escape sequences.
#### Changelog
##### Fixed
- [`8b10e22`](https://github.com/charmbracelet/bubbletea/commit/8b10e22689cdaf2c6f7adc70c8fe2241fe0f9404): fix: skip capability queries when input is disabled ([#​1801](https://github.com/charmbracelet/bubbletea/issues/1801)) ([@​drawmeanelephant](https://github.com/drawmeanelephant))
##### Other stuff
- [`d5bfd5c`](https://github.com/charmbracelet/bubbletea/commit/d5bfd5c2ff7480a6b94536c1cf4e73569b8d523e): v2.0.10 ([@​andrinoff](https://github.com/andrinoff))
***
<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>
Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@​charmcli), [Bluesky](https://bsky.app/profile/charm.land).
### [`v2.0.9`](https://github.com/charmbracelet/bubbletea/releases/tag/v2.0.9)
[Compare Source](https://github.com/charmbracelet/bubbletea/compare/v2.0.8...v2.0.9)
### Small patches 🩹
#### Keybinds missing!
MouseButton11 and media record buttons were improperly handled, now fixed! (thanks to [@​Ricardo-M-L](https://github.com/Ricardo-M-L) and [@​bunlongheng](https://github.com/bunlongheng))
#### Weird UI artifacts with some terminals 👽
Sometimes, when switching between tabs in your terminal for example, the screen would not clear, now fixed!
... And some small corrections to docs!
Happy coding 🤖
#### Changelog
##### Fixed
- [`dc4b017`](https://github.com/charmbracelet/bubbletea/commit/dc4b01750c5262f511164148e24de2cc7aabff47): fix(key): map media record to ultraviolet code ([#​1757](https://github.com/charmbracelet/bubbletea/issues/1757)) ([@​Ricardo-M-L](https://github.com/Ricardo-M-L))
- [`1862dfb`](https://github.com/charmbracelet/bubbletea/commit/1862dfba1151de8f583b598d2ed1cfedf3f5b405): fix: assign MouseButton11 = uv.MouseButton11 ([#​1754](https://github.com/charmbracelet/bubbletea/issues/1754)) ([@​bunlongheng](https://github.com/bunlongheng))
- [`930e18c`](https://github.com/charmbracelet/bubbletea/commit/930e18c9668417db1908c7a694ee49676116b46e): fix: don't panic in ProgressBarState.String() for out-of-range values ([#​1748](https://github.com/charmbracelet/bubbletea/issues/1748)) ([@​ankit090701](https://github.com/ankit090701))
- [`faf4dcf`](https://github.com/charmbracelet/bubbletea/commit/faf4dcf54a92bab2fe3bf6f4715adf44f2fc245d): fix: pendingErase in cursedRenderer ([#​1755](https://github.com/charmbracelet/bubbletea/issues/1755)) ([@​andrinoff](https://github.com/andrinoff))
- [`0d3e281`](https://github.com/charmbracelet/bubbletea/commit/0d3e281d1436499b40df085a352bb81b3c9de7d0): fix: restore kitty keyboard stack on exit ([#​1750](https://github.com/charmbracelet/bubbletea/issues/1750)) ([@​deepakganesh78](https://github.com/deepakganesh78))
- [`0ef9fc9`](https://github.com/charmbracelet/bubbletea/commit/0ef9fc90dcb665e6ecfb160fa2b3fb4652b9b04c): fix: typo in doc ([#​1756](https://github.com/charmbracelet/bubbletea/issues/1756)) ([@​andrinoff](https://github.com/andrinoff))
##### Docs
- [`d40db14`](https://github.com/charmbracelet/bubbletea/commit/d40db141fa4dc3644d116fcea819e1b94ea15b19): docs: fix background color detection example in doc comment ([@​meowgorithm](https://github.com/meowgorithm))
- [`882727b`](https://github.com/charmbracelet/bubbletea/commit/882727b7304802aebf4513bde83a2d7751c81687): docs: fix links to tutorials & examples ([#​1645](https://github.com/charmbracelet/bubbletea/issues/1645)) ([@​mhdna](https://github.com/mhdna))
##### Other stuff
- [`708ee75`](https://github.com/charmbracelet/bubbletea/commit/708ee757a83cec3dcff684f7d9837479ec567ef1): ci: fix examples workflow ([#​1734](https://github.com/charmbracelet/bubbletea/issues/1734)) ([@​kobihikri](https://github.com/kobihikri))
- [`351d215`](https://github.com/charmbracelet/bubbletea/commit/351d2159f8d8a85613aa2a6e98c8c63df3c98623): ci: sync dependabot config ([#​1763](https://github.com/charmbracelet/bubbletea/issues/1763)) ([@​charmcli](https://github.com/charmcli))
- [`6fb1f47`](https://github.com/charmbracelet/bubbletea/commit/6fb1f47b6c7b598835f5d56597877f10cb980e9e): examples/sequence: fix milisecond typo in SleepPrintln ([@​makoto-developer](https://github.com/makoto-developer))
- [`73b6d91`](https://github.com/charmbracelet/bubbletea/commit/73b6d91ac1c3854dd4af046ab5f9e51d3b3b4290): v2.0.9 ([@​andrinoff](https://github.com/andrinoff))
***
<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>
Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@​charmcli), [Bluesky](https://bsky.app/profile/charm.land).
### [`v2.0.8`](https://github.com/charmbracelet/bubbletea/releases/tag/v2.0.8)
[Compare Source](https://github.com/charmbracelet/bubbletea/compare/v2.0.7...v2.0.8)
### Graphemes, schmraphemes
No terminal can render emojis perfectly, but we can try. This release improves some very specific edge cases around emoji rendering. Enjoy!
#### Changelog
- [`db569ad`](https://github.com/charmbracelet/bubbletea/commit/db569adcb41d0eae251587e6a5f0cc3c7d77e8eb): fix(deps): bump ultraviolet for emoji-related rendering improvements
***
<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>
Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@​charmcli), [Bluesky](https://bsky.app/profile/charm.land).
</details>
<details>
<summary>urfave/cli (github.com/urfave/cli/v3)</summary>
### [`v3.14.0`](https://github.com/urfave/cli/releases/tag/v3.14.0)
[Compare Source](https://github.com/urfave/cli/compare/v3.13.0...v3.14.0)
#### What's Changed
- chore(deps): bump mkdocs-git-revision-date-localized-plugin from 1.5.4 to 1.6.0 in the python-packages group by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2436](https://github.com/urfave/cli/pull/2436)
- fix: set BoolWithInverseFlag in a short option group by [@​lazerg](https://github.com/lazerg) in [#​2440](https://github.com/urfave/cli/pull/2440)
- Keep arguments after a bare dash by [@​official-burak](https://github.com/official-burak) in [#​2419](https://github.com/urfave/cli/pull/2419)
- fix: handle a multi-byte flag at the end of a short option group by [@​SulimanAbdulrazzaq](https://github.com/SulimanAbdulrazzaq) in [#​2438](https://github.com/urfave/cli/pull/2438)
- fix: complete persistent flags in shell completion by [@​sb123sb123](https://github.com/sb123sb123) in [#​2437](https://github.com/urfave/cli/pull/2437)
- fix: restore Unwrap on the error returned by Exit by [@​fadiroot](https://github.com/fadiroot) in [#​2444](https://github.com/urfave/cli/pull/2444)
- fix: reject a parent's Local flag inside a short option group by [@​fadiroot](https://github.com/fadiroot) in [#​2445](https://github.com/urfave/cli/pull/2445)
- fix: report a flag that needs an argument but is not last in a short group by [@​yu2971512385-ui](https://github.com/yu2971512385-ui) in [#​2443](https://github.com/urfave/cli/pull/2443)
- Use prefixFor so flag suggestions agree with help on rune count by [@​januththedev](https://github.com/januththedev) in [#​2448](https://github.com/urfave/cli/pull/2448)
- fix: reject duplicate flag names by [@​deepakganesh78](https://github.com/deepakganesh78) in [#​2396](https://github.com/urfave/cli/pull/2396)
- fix: date a time-only timestamp today when Timezone is not UTC by [@​breken-ai](https://github.com/breken-ai) in [#​2450](https://github.com/urfave/cli/pull/2450)
- fix: let a subcommand's command-line value replace a persistent flag's env/file value by [@​breken-ai](https://github.com/breken-ai) in [#​2449](https://github.com/urfave/cli/pull/2449)
- Add urfave\_cli\_no\_template build tag by [@​kolyshkin](https://github.com/kolyshkin) in [#​2441](https://github.com/urfave/cli/pull/2441)
- fix: skip empty source values for flags that cannot parse them by [@​abo3losh1](https://github.com/abo3losh1) in [#​2451](https://github.com/urfave/cli/pull/2451)
#### New Contributors
- [@​lazerg](https://github.com/lazerg) made their first contribution in [#​2440](https://github.com/urfave/cli/pull/2440)
- [@​official-burak](https://github.com/official-burak) made their first contribution in [#​2419](https://github.com/urfave/cli/pull/2419)
- [@​SulimanAbdulrazzaq](https://github.com/SulimanAbdulrazzaq) made their first contribution in [#​2438](https://github.com/urfave/cli/pull/2438)
- [@​sb123sb123](https://github.com/sb123sb123) made their first contribution in [#​2437](https://github.com/urfave/cli/pull/2437)
- [@​fadiroot](https://github.com/fadiroot) made their first contribution in [#​2444](https://github.com/urfave/cli/pull/2444)
- [@​yu2971512385-ui](https://github.com/yu2971512385-ui) made their first contribution in [#​2443](https://github.com/urfave/cli/pull/2443)
- [@​januththedev](https://github.com/januththedev) made their first contribution in [#​2448](https://github.com/urfave/cli/pull/2448)
- [@​deepakganesh78](https://github.com/deepakganesh78) made their first contribution in [#​2396](https://github.com/urfave/cli/pull/2396)
- [@​breken-ai](https://github.com/breken-ai) made their first contribution in [#​2450](https://github.com/urfave/cli/pull/2450)
- [@​abo3losh1](https://github.com/abo3losh1) made their first contribution in [#​2451](https://github.com/urfave/cli/pull/2451)
**Full Changelog**: <https://github.com/urfave/cli/compare/v3.13.0...v3.14.0>
### [`v3.13.0`](https://github.com/urfave/cli/releases/tag/v3.13.0)
[Compare Source](https://github.com/urfave/cli/compare/v3.12.0...v3.13.0)
#### What's Changed
- Trim the key of a map flag when TrimSpace is set by [@​youdie006](https://github.com/youdie006) in [#​2431](https://github.com/urfave/cli/pull/2431)
- Fix inverse bool flag counting with an external counter by [@​jakezwang](https://github.com/jakezwang) in [#​2432](https://github.com/urfave/cli/pull/2432)
- feat: add Deprecated field to flags and commands by [@​anandghegde](https://github.com/anandghegde) in [#​2429](https://github.com/urfave/cli/pull/2429)
- fix: parse single-rune Unicode flags by [@​znnnnnnn-wil](https://github.com/znnnnnnn-wil) in [#​2434](https://github.com/urfave/cli/pull/2434)
#### New Contributors
- [@​jakezwang](https://github.com/jakezwang) made their first contribution in [#​2432](https://github.com/urfave/cli/pull/2432)
- [@​anandghegde](https://github.com/anandghegde) made their first contribution in [#​2429](https://github.com/urfave/cli/pull/2429)
- [@​znnnnnnn-wil](https://github.com/znnnnnnn-wil) made their first contribution in [#​2434](https://github.com/urfave/cli/pull/2434)
**Full Changelog**: <https://github.com/urfave/cli/compare/v3.12.0...v3.13.0>
### [`v3.12.0`](https://github.com/urfave/cli/releases/tag/v3.12.0)
[Compare Source](https://github.com/urfave/cli/compare/v3.11.0...v3.12.0)
#### What's Changed
- feat: add Command.ArgValidator for tree-wide argument validation by [@​dearchap](https://github.com/dearchap) in [#​2377](https://github.com/urfave/cli/pull/2377)
- Single-value arguments can be marked as required by [@​idelchi](https://github.com/idelchi) in [#​2393](https://github.com/urfave/cli/pull/2393)
- docs: clarify that named Arguments are excluded from cmd.Args() by [@​dearchap](https://github.com/dearchap) in [#​2411](https://github.com/urfave/cli/pull/2411)
- fix: never run command action on shell completion past a double dash by [@​dearchap](https://github.com/dearchap) in [#​2412](https://github.com/urfave/cli/pull/2412)
- chore(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.0 by [@​app/dependabot](https://github.com/app/dependabot) in [#​2413](https://github.com/urfave/cli/pull/2413)
- Support custom FlagStringer for MutuallyExclusiveFlags by [@​SHIVANSHGARG07](https://github.com/SHIVANSHGARG07) in [#​2414](https://github.com/urfave/cli/pull/2414)
- Add TextFlag for encoding.TextMarshaler/TextUnmarshaler values by [@​ChrisJr404](https://github.com/ChrisJr404) in [#​2415](https://github.com/urfave/cli/pull/2415)
- chore(deps): bump github.com/stretchr/testify from 1.12.0 to 1.12.1 by [@​app/dependabot](https://github.com/app/dependabot) in [#​2416](https://github.com/urfave/cli/pull/2416)
- chore(deps): bump the python-packages group with 2 updates by [@​app/dependabot](https://github.com/app/dependabot) in [#​2417](https://github.com/urfave/cli/pull/2417)
- Show inherited persistent flags in child help by [@​justadityaraj](https://github.com/justadityaraj) in [#​2421](https://github.com/urfave/cli/pull/2421)
- fix: preserve whitespace in positional arguments by [@​lenamonj](https://github.com/lenamonj) in [#​2423](https://github.com/urfave/cli/pull/2423)
- fix: preserve whitespace in equals-form flag values by [@​BenYang12](https://github.com/BenYang12) in [#​2425](https://github.com/urfave/cli/pull/2425)
- fix: complete subcommand flags after positional arguments by [@​fzlzjerry](https://github.com/fzlzjerry) in [#​2426](https://github.com/urfave/cli/pull/2426)
- Fix a year-less timestamp layout losing January 1 by [@​youdie006](https://github.com/youdie006) in [#​2427](https://github.com/urfave/cli/pull/2427)
- docs: add go-size-analyzer, module version, and reflection by [@​imsumedhaa](https://github.com/imsumedhaa) in [#​2428](https://github.com/urfave/cli/pull/2428)
#### New Contributors
- [@​idelchi](https://github.com/idelchi) made their first contribution in [#​2393](https://github.com/urfave/cli/pull/2393)
- [@​SHIVANSHGARG07](https://github.com/SHIVANSHGARG07) made their first contribution in [#​2414](https://github.com/urfave/cli/pull/2414)
- [@​ChrisJr404](https://github.com/ChrisJr404) made their first contribution in [#​2415](https://github.com/urfave/cli/pull/2415)
- [@​justadityaraj](https://github.com/justadityaraj) made their first contribution in [#​2421](https://github.com/urfave/cli/pull/2421)
- [@​lenamonj](https://github.com/lenamonj) made their first contribution in [#​2423](https://github.com/urfave/cli/pull/2423)
- [@​BenYang12](https://github.com/BenYang12) made their first contribution in [#​2425](https://github.com/urfave/cli/pull/2425)
- [@​youdie006](https://github.com/youdie006) made their first contribution in [#​2427](https://github.com/urfave/cli/pull/2427)
- [@​imsumedhaa](https://github.com/imsumedhaa) made their first contribution in [#​2428](https://github.com/urfave/cli/pull/2428)
**Full Changelog**: <https://github.com/urfave/cli/compare/v3.11.0...v3.12.0>
### [`v3.11.0`](https://github.com/urfave/cli/releases/tag/v3.11.0)
[Compare Source](https://github.com/urfave/cli/compare/v3.10.1...v3.11.0)
#### What's Changed
- fix: correct a typo in the help message for the powershell autocompletion by [@​suzuki-shunsuke](https://github.com/suzuki-shunsuke) in [#​2383](https://github.com/urfave/cli/pull/2383)
- Escape backslashes in fish completion descriptions by [@​mahirhir](https://github.com/mahirhir) in [#​2378](https://github.com/urfave/cli/pull/2378)
- chore(deps): bump actions/setup-go from 6 to 7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2389](https://github.com/urfave/cli/pull/2389)
- chore(deps): bump mkdocs-material from 9.7.6 to 9.7.7 in the python-packages group by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2391](https://github.com/urfave/cli/pull/2391)
- chore(deps): bump actions/setup-python from 6 to 7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2390](https://github.com/urfave/cli/pull/2390)
- fix: skip all hidden flags in shell completion, not just bool flags by [@​vidigoat](https://github.com/vidigoat) in [#​2388](https://github.com/urfave/cli/pull/2388)
- Fix nil pointer dereference for interface-typed flag values by [@​mrueg](https://github.com/mrueg) in [#​2400](https://github.com/urfave/cli/pull/2400)
- Fix index out of range panic when Run is given no arguments by [@​mrueg](https://github.com/mrueg) in [#​2401](https://github.com/urfave/cli/pull/2401)
- fix: honor BoolWithInverseFlag DefaultText by [@​fzlzjerry](https://github.com/fzlzjerry) in [#​2403](https://github.com/urfave/cli/pull/2403)
- Fix Issue [#​2385](https://github.com/urfave/cli/issues/2385) by [@​BrandonIrizarry](https://github.com/BrandonIrizarry) in [#​2386](https://github.com/urfave/cli/pull/2386)
- fix: inherit HideHelpCommand in subcommands by [@​utkarshalpha](https://github.com/utkarshalpha) in [#​2395](https://github.com/urfave/cli/pull/2395)
- test: cover Run-with-no-arguments paths ([#​2406](https://github.com/urfave/cli/issues/2406)) by [@​dearchap](https://github.com/dearchap) in [#​2407](https://github.com/urfave/cli/pull/2407)
- test: add shell-completion case for hidden BoolWithInverseFlag by [@​dearchap](https://github.com/dearchap) in [#​2408](https://github.com/urfave/cli/pull/2408)
- test: fix ineffective mutex error-string assertion and add mirror cases by [@​dearchap](https://github.com/dearchap) in [#​2410](https://github.com/urfave/cli/pull/2410)
#### New Contributors
- [@​mahirhir](https://github.com/mahirhir) made their first contribution in [#​2378](https://github.com/urfave/cli/pull/2378)
- [@​vidigoat](https://github.com/vidigoat) made their first contribution in [#​2388](https://github.com/urfave/cli/pull/2388)
- [@​fzlzjerry](https://github.com/fzlzjerry) made their first contribution in [#​2403](https://github.com/urfave/cli/pull/2403)
- [@​BrandonIrizarry](https://github.com/BrandonIrizarry) made their first contribution in [#​2386](https://github.com/urfave/cli/pull/2386)
- [@​utkarshalpha](https://github.com/utkarshalpha) made their first contribution in [#​2395](https://github.com/urfave/cli/pull/2395)
**Full Changelog**: <https://github.com/urfave/cli/compare/v3.10.1...v3.11.0>
</details>
---
### Configuration
📅 **Schedule**: (in timezone Europe/Berlin)
- Branch creation
- "before 6am on monday"
- 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://github.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 CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yNy4wIiwidXBkYXRlZEluVmVyIjoiNDQuMjcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
v2.1.1→v2.2.1v2.0.7→v2.1.1v3.10.1→v3.14.0v0.45.0→v0.47.0Release Notes
charmbracelet/bubbles (charm.land/bubbles/v2)
v2.2.1Compare Source
Tiny Monday bugfix
Textarea element had a bug, where you used to be able to go 1 word backwards, even if there was nothing, which resulted in the whole TUI freezing. It was now fixed by @OxQuasar!
Changelog
Fixed
f613411: fix(textarea): stop word-left at input boundary (#1036) (@OxQuasar)Docs
87d4458: docs: update godoc link in readme to new package (@meowgorithm)Other stuff
10489b5: readme: drop tree section for now (@meowgorithm)4909481: v2.2.1 (@andrinoff)Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.2.0Compare Source
A new Bubble and some new Textarea stuff
There are a couple nice features in today's release. Let's check em out!
If a tree falls in the forest…
At last, the tree Bubble from all star contributor @dlvhdr’s is here! He built it for DiffNav and graciously contributed to Bubbles. We've been working with Dolev for a long time and were totally stoked when he offerd to contribute.
Select all, ctrl+c, ctrl+v…done!
Our own @andrinoff added a bunch of awesome stuff to Textarea, including the long awaited text selection. Select, copy, and cut your way into mini text editing.
For more info see the docs.
And special thanks to @zoriya for adding ctrl+left/right bindings.
xoxo,
Charm! 💌
Changelog
New!
8cea431: feat(textarea): support ctrl + left/right/backspace (#1020) (@zoriya)037ad37: feat: textarea selection (#1029) (@andrinoff)e97af08: feat: tree bubble (#893) (@dlvhdr)Fixed
6484e49: fix(filepicker): don't blank the view when height is unset (#1026) (@andrinoff)Other stuff
355f960: ci: sync dependabot config (#896) (@charmcli)ef8af03: v2.2.0 (@andrinoff)Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
charmbracelet/bubbletea (charm.land/bubbletea/v2)
v2.1.1Compare Source
Terminal size query vulnerability
This patch version fixes a vulnerability reported by @Reload3d. You can find the details of the exploit here.
Best regards,
Charm XX 💫
Changelog
Fixed
9c6c325: fix: ingnore implausible terminal resize reports (#1887) (@andrinoff)Other stuff
67b4c7a: v2.1.1 (@andrinoff)Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.1.0Compare Source
Hello OSC 7501
The exciting news in this release is support for the brand new Program Status Protocol, otherwise known as
OSC 7501, released just a few days ago. The protocol is designed to allow terminal applications to report what they're doing (e.g. idle, working, waiting on the user, finished, or failed) and why.The obvious case for the design is AI agents, but are lots of other use cases for this, and we’re excited to see what you build with it.
It’s subtle, but here’s Crush in Superlogical’s Rex with the feature integrated (notice the dot in the first tab).
Bugfixes
Also, this release brings some very important fixes done by @AdamMagued, @simpleqt and @GreedyC.
Cheers!
Charm 🌞
Changelog
New!
41bc626: feat: OSC 7501 (#1841) (@andrinoff)Fixed
96d69d2: fix(tty): fall back to default dimensions when terminal size is 0x0 (#1836) (@AdamMagued)ff51ba4: fix: prevent signal goroutine deadlock on shutdown (#1806) (@simpleqt)Docs
33f6a40: docs: fix command and environment godoc examples (#1833) (@GreedyC)Other stuff
f9df43c: v2.1.0 (@andrinoff)Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.10Compare Source
Change to no input programs
This is a small change to programs with no
WithInput. Removed capability queries, which resulted in leaking of raw ANSI escape sequences.Changelog
Fixed
8b10e22: fix: skip capability queries when input is disabled (#1801) (@drawmeanelephant)Other stuff
d5bfd5c: v2.0.10 (@andrinoff)Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.9Compare Source
Small patches 🩹
Keybinds missing!
MouseButton11 and media record buttons were improperly handled, now fixed! (thanks to @Ricardo-M-L and @bunlongheng)
Weird UI artifacts with some terminals 👽
Sometimes, when switching between tabs in your terminal for example, the screen would not clear, now fixed!
... And some small corrections to docs!
Happy coding 🤖
Changelog
Fixed
dc4b017: fix(key): map media record to ultraviolet code (#1757) (@Ricardo-M-L)1862dfb: fix: assign MouseButton11 = uv.MouseButton11 (#1754) (@bunlongheng)930e18c: fix: don't panic in ProgressBarState.String() for out-of-range values (#1748) (@ankit090701)faf4dcf: fix: pendingErase in cursedRenderer (#1755) (@andrinoff)0d3e281: fix: restore kitty keyboard stack on exit (#1750) (@deepakganesh78)0ef9fc9: fix: typo in doc (#1756) (@andrinoff)Docs
d40db14: docs: fix background color detection example in doc comment (@meowgorithm)882727b: docs: fix links to tutorials & examples (#1645) (@mhdna)Other stuff
708ee75: ci: fix examples workflow (#1734) (@kobihikri)351d215: ci: sync dependabot config (#1763) (@charmcli)6fb1f47: examples/sequence: fix milisecond typo in SleepPrintln (@makoto-developer)73b6d91: v2.0.9 (@andrinoff)Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v2.0.8Compare Source
Graphemes, schmraphemes
No terminal can render emojis perfectly, but we can try. This release improves some very specific edge cases around emoji rendering. Enjoy!
Changelog
db569ad: fix(deps): bump ultraviolet for emoji-related rendering improvementsThoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
urfave/cli (github.com/urfave/cli/v3)
v3.14.0Compare Source
What's Changed
New Contributors
Full Changelog: https://github.com/urfave/cli/compare/v3.13.0...v3.14.0
v3.13.0Compare Source
What's Changed
New Contributors
Full Changelog: https://github.com/urfave/cli/compare/v3.12.0...v3.13.0
v3.12.0Compare Source
What's Changed
New Contributors
Full Changelog: https://github.com/urfave/cli/compare/v3.11.0...v3.12.0
v3.11.0Compare Source
What's Changed
New Contributors
Full Changelog: https://github.com/urfave/cli/compare/v3.10.1...v3.11.0
Configuration
📅 Schedule: (in timezone Europe/Berlin)
🚦 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 if that's undesired.
This PR has been generated by Mend Renovate CLI.
ℹ️ Artifact update notice
File name: go.mod
In order to perform the update(s) described in the table above, Renovate ran the
go getcommand, which resulted in the following additional change(s):Details:
github.com/charmbracelet/ultravioletv0.0.0-20260811164956-006e29f97886->v0.0.0-20261008173134-6b8d4baf91b4github.com/charmbracelet/x/ansiv0.11.8->v0.11.9github.com/mattn/go-runewidthv0.0.24->v0.0.30github.com/xo/terminfov0.0.0-20220910002029-abceb7e1c41e->v1.0.0golang.org/x/sysv0.47.0->v0.49.02bc30aa10ato48256ba31eView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.