charmbracelet/bubbles (github.com/charmbracelet/bubbles)
### [`v0.19.0`](https://togithub.com/charmbracelet/bubbles/releases/tag/v0.19.0)
[Compare Source](https://togithub.com/charmbracelet/bubbles/compare/v0.18.0...v0.19.0)
### Bugs? Squashed (along with a few nice lil’ features).
Community-Driven Development?! Yep, the majority of the changes in this release were done by the community. *Thank you* all for your contributions that made this release possible.
#### Progress: custom chars
You can now customize the filled and empty characters of the progress bar.
```go
p := progress.New(progress.WithFillCharacters('>', '.'))
```
![progress bar example](https://togithub.com/user-attachments/assets/ee1a1351-ebee-4f39-8543-af464e60b099)
#### Table improvements
##### Help is on the way
Table now includes a short and full help view so it's easier than ever to tell your users how to interact with the table.
```go
// Render a table with its help.
t := table.New()
view := t.View() + "\n" + t.HelpView()
```
##### Accessing columns
You can also now get the table's columns (this already existed for rows).
```go
package table
// Columns returns the current columns.
func (m Model) Columns() []Column
```
#### List: page navigation is fixed!
Previously, `list.NextPage()` and `list.PrevPage()` didn't work because the methods did not have pointer receivers. We've fixed this…by making them pointer receivers!
⚠️ Note that this is a minor API change and you *might* need to update your app to pass a pointer receiver to your model rather than a copy. Details in [#458](https://togithub.com/charmbracelet/bubbles/issues/458).
```go
package progress
// NextPage moves to the next page, if available.
func (m *Model) NextPage()
// PrevPage moves to the previous page, if available.
func (m *Model) PrevPage()
```
***
#### What’s Changed
##### Changed
- Textarea: Improve setting width by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/496](https://togithub.com/charmbracelet/bubbles/pull/496)
- Textinput: fix out of range panic if no matched suggestions by [@rdnt](https://togithub.com/rdnt) in [https://github.com/charmbracelet/bubbles/pull/473](https://togithub.com/charmbracelet/bubbles/pull/473)
- List: Fix no-op list pagination functions by [@nekopy](https://togithub.com/nekopy) in [https://github.com/charmbracelet/bubbles/pull/458](https://togithub.com/charmbracelet/bubbles/pull/458)
- Table: Clarify position constant in JoinHorizontal by [@aditipatelpro](https://togithub.com/aditipatelpro) in [https://github.com/charmbracelet/bubbles/pull/577](https://togithub.com/charmbracelet/bubbles/pull/577)
- Progress: make full/empty fill characters configurable by [@rwinkhart](https://togithub.com/rwinkhart) in [https://github.com/charmbracelet/bubbles/pull/409](https://togithub.com/charmbracelet/bubbles/pull/409)
- Dependencies: switch to x/ansi for text manipulation by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbles/pull/505](https://togithub.com/charmbracelet/bubbles/pull/505)
##### Added
- Textarea: add help to textarea key bindings by [@TravisYeah](https://togithub.com/TravisYeah) in [https://github.com/charmbracelet/bubbles/pull/418](https://togithub.com/charmbracelet/bubbles/pull/418)
- Textarea: Add multiline placeholder by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/302](https://togithub.com/charmbracelet/bubbles/pull/302)
- Table: Add column return function by [@abeleinin](https://togithub.com/abeleinin) in [https://github.com/charmbracelet/bubbles/pull/369](https://togithub.com/charmbracelet/bubbles/pull/369)
- Table: Implement help.Keymap interface and add quit mapping by [@prgres](https://togithub.com/prgres) in [https://github.com/charmbracelet/bubbles/pull/440](https://togithub.com/charmbracelet/bubbles/pull/440)
- Ctrl+Left/Right for WordForward/Backward by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/bubbles/pull/387](https://togithub.com/charmbracelet/bubbles/pull/387)
- Use goreleaser for releases by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbles/pull/526](https://togithub.com/charmbracelet/bubbles/pull/526)
##### Fixed
- Table: Render Row Tests by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/bubbles/pull/487](https://togithub.com/charmbracelet/bubbles/pull/487)
- Table: Only render columns with a positive width by [@fabio42](https://togithub.com/fabio42) in [https://github.com/charmbracelet/bubbles/pull/465](https://togithub.com/charmbracelet/bubbles/pull/465)
- Table: Fix inheritence of SelectedStyle in StyleFunc by [@gabrielfu](https://togithub.com/gabrielfu) in [https://github.com/charmbracelet/bubbles/pull/539](https://togithub.com/charmbracelet/bubbles/pull/539)
- Table: Don't include header height in the total table size by [@prgres](https://togithub.com/prgres) in [https://github.com/charmbracelet/bubbles/pull/434](https://togithub.com/charmbracelet/bubbles/pull/434)
- Table: Fix premature viewport scroll by [@dzeleniak](https://togithub.com/dzeleniak) in [https://github.com/charmbracelet/bubbles/pull/429](https://togithub.com/charmbracelet/bubbles/pull/429)
- Textarea: Fix end of buffer character by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/491](https://togithub.com/charmbracelet/bubbles/pull/491)
- Textarea: Set textarea default EndOfBufferCharacter to ' ' by [@blvrd](https://togithub.com/blvrd) in [https://github.com/charmbracelet/bubbles/pull/510](https://togithub.com/charmbracelet/bubbles/pull/510)
- Textarea: End of Buffer alignment by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/bubbles/pull/486](https://togithub.com/charmbracelet/bubbles/pull/486)
- Textinput: don't block input on validation by [@GabrielNagy](https://togithub.com/GabrielNagy) in [https://github.com/charmbracelet/bubbles/pull/185](https://togithub.com/charmbracelet/bubbles/pull/185)
- Viewport: Fix division by zero in scrollpercentage by [@zMoooooritz](https://togithub.com/zMoooooritz) in [https://github.com/charmbracelet/bubbles/pull/494](https://togithub.com/charmbracelet/bubbles/pull/494)
- Help: Fix centering by [@gabe565](https://togithub.com/gabe565) in [https://github.com/charmbracelet/bubbles/pull/516](https://togithub.com/charmbracelet/bubbles/pull/516)
- Progress: Stop spring defaults from overriding WithStringOptions by [@nervo](https://togithub.com/nervo) in [https://github.com/charmbracelet/bubbles/pull/540](https://togithub.com/charmbracelet/bubbles/pull/540)
- Cursor: Make SetMode method in cursor library handle invalid mode values correctly by [@anirudhaCodes](https://togithub.com/anirudhaCodes) in [https://github.com/charmbracelet/bubbles/pull/477](https://togithub.com/charmbracelet/bubbles/pull/477)
##### Test coverage :white_check_mark:
- Add tests for textarea view by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/485](https://togithub.com/charmbracelet/bubbles/pull/485)
- Add tests for paginator by [@anirudhaCodes](https://togithub.com/anirudhaCodes) in [https://github.com/charmbracelet/bubbles/pull/480](https://togithub.com/charmbracelet/bubbles/pull/480)
- Add tests for textInput Tests by [@KevM](https://togithub.com/KevM) in [https://github.com/charmbracelet/bubbles/pull/500](https://togithub.com/charmbracelet/bubbles/pull/500)
- Improve textarea tests by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/490](https://togithub.com/charmbracelet/bubbles/pull/490)
#### New Contributors
- [@rdnt](https://togithub.com/rdnt) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/473](https://togithub.com/charmbracelet/bubbles/pull/473)
- [@rwinkhart](https://togithub.com/rwinkhart) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/409](https://togithub.com/charmbracelet/bubbles/pull/409)
- [@mikelorant](https://togithub.com/mikelorant) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/485](https://togithub.com/charmbracelet/bubbles/pull/485)
- [@anirudhaCodes](https://togithub.com/anirudhaCodes) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/480](https://togithub.com/charmbracelet/bubbles/pull/480)
- [@nekopy](https://togithub.com/nekopy) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/458](https://togithub.com/charmbracelet/bubbles/pull/458)
- [@TravisYeah](https://togithub.com/TravisYeah) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/418](https://togithub.com/charmbracelet/bubbles/pull/418)
- [@abeleinin](https://togithub.com/abeleinin) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/369](https://togithub.com/charmbracelet/bubbles/pull/369)
- [@fabio42](https://togithub.com/fabio42) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/465](https://togithub.com/charmbracelet/bubbles/pull/465)
- [@prgres](https://togithub.com/prgres) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/440](https://togithub.com/charmbracelet/bubbles/pull/440)
- [@zMoooooritz](https://togithub.com/zMoooooritz) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/494](https://togithub.com/charmbracelet/bubbles/pull/494)
- [@dzeleniak](https://togithub.com/dzeleniak) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/429](https://togithub.com/charmbracelet/bubbles/pull/429)
- [@KevM](https://togithub.com/KevM) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/500](https://togithub.com/charmbracelet/bubbles/pull/500)
- [@gabe565](https://togithub.com/gabe565) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/516](https://togithub.com/charmbracelet/bubbles/pull/516)
- [@blvrd](https://togithub.com/blvrd) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/510](https://togithub.com/charmbracelet/bubbles/pull/510)
- [@nervo](https://togithub.com/nervo) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/540](https://togithub.com/charmbracelet/bubbles/pull/540)
- [@gabrielfu](https://togithub.com/gabrielfu) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/539](https://togithub.com/charmbracelet/bubbles/pull/539)
- [@aditipatelpro](https://togithub.com/aditipatelpro) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/577](https://togithub.com/charmbracelet/bubbles/pull/577)
**Full Changelog**: https://github.com/charmbracelet/bubbles/compare/v0.18.0...v0.19.0
***
Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@charm), or on [Discord](https://charm.sh/chat).
Configuration
📅 Schedule: Branch creation - "before 4pm on friday" in timezone Europe/London, Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
v0.18.0
->v0.19.0
Release Notes
charmbracelet/bubbles (github.com/charmbracelet/bubbles)
### [`v0.19.0`](https://togithub.com/charmbracelet/bubbles/releases/tag/v0.19.0) [Compare Source](https://togithub.com/charmbracelet/bubbles/compare/v0.18.0...v0.19.0) ### Bugs? Squashed (along with a few nice lil’ features). Community-Driven Development?! Yep, the majority of the changes in this release were done by the community. *Thank you* all for your contributions that made this release possible. #### Progress: custom chars You can now customize the filled and empty characters of the progress bar. ```go p := progress.New(progress.WithFillCharacters('>', '.')) ``` ![progress bar example](https://togithub.com/user-attachments/assets/ee1a1351-ebee-4f39-8543-af464e60b099) #### Table improvements ##### Help is on the way Table now includes a short and full help view so it's easier than ever to tell your users how to interact with the table. ```go // Render a table with its help. t := table.New() view := t.View() + "\n" + t.HelpView() ``` ##### Accessing columns You can also now get the table's columns (this already existed for rows). ```go package table // Columns returns the current columns. func (m Model) Columns() []Column ``` #### List: page navigation is fixed! Previously, `list.NextPage()` and `list.PrevPage()` didn't work because the methods did not have pointer receivers. We've fixed this…by making them pointer receivers! ⚠️ Note that this is a minor API change and you *might* need to update your app to pass a pointer receiver to your model rather than a copy. Details in [#458](https://togithub.com/charmbracelet/bubbles/issues/458). ```go package progress // NextPage moves to the next page, if available. func (m *Model) NextPage() // PrevPage moves to the previous page, if available. func (m *Model) PrevPage() ``` *** #### What’s Changed ##### Changed - Textarea: Improve setting width by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/496](https://togithub.com/charmbracelet/bubbles/pull/496) - Textinput: fix out of range panic if no matched suggestions by [@rdnt](https://togithub.com/rdnt) in [https://github.com/charmbracelet/bubbles/pull/473](https://togithub.com/charmbracelet/bubbles/pull/473) - List: Fix no-op list pagination functions by [@nekopy](https://togithub.com/nekopy) in [https://github.com/charmbracelet/bubbles/pull/458](https://togithub.com/charmbracelet/bubbles/pull/458) - Table: Clarify position constant in JoinHorizontal by [@aditipatelpro](https://togithub.com/aditipatelpro) in [https://github.com/charmbracelet/bubbles/pull/577](https://togithub.com/charmbracelet/bubbles/pull/577) - Progress: make full/empty fill characters configurable by [@rwinkhart](https://togithub.com/rwinkhart) in [https://github.com/charmbracelet/bubbles/pull/409](https://togithub.com/charmbracelet/bubbles/pull/409) - Dependencies: switch to x/ansi for text manipulation by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbles/pull/505](https://togithub.com/charmbracelet/bubbles/pull/505) ##### Added - Textarea: add help to textarea key bindings by [@TravisYeah](https://togithub.com/TravisYeah) in [https://github.com/charmbracelet/bubbles/pull/418](https://togithub.com/charmbracelet/bubbles/pull/418) - Textarea: Add multiline placeholder by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/302](https://togithub.com/charmbracelet/bubbles/pull/302) - Table: Add column return function by [@abeleinin](https://togithub.com/abeleinin) in [https://github.com/charmbracelet/bubbles/pull/369](https://togithub.com/charmbracelet/bubbles/pull/369) - Table: Implement help.Keymap interface and add quit mapping by [@prgres](https://togithub.com/prgres) in [https://github.com/charmbracelet/bubbles/pull/440](https://togithub.com/charmbracelet/bubbles/pull/440) - Ctrl+Left/Right for WordForward/Backward by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/bubbles/pull/387](https://togithub.com/charmbracelet/bubbles/pull/387) - Use goreleaser for releases by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbles/pull/526](https://togithub.com/charmbracelet/bubbles/pull/526) ##### Fixed - Table: Render Row Tests by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/bubbles/pull/487](https://togithub.com/charmbracelet/bubbles/pull/487) - Table: Only render columns with a positive width by [@fabio42](https://togithub.com/fabio42) in [https://github.com/charmbracelet/bubbles/pull/465](https://togithub.com/charmbracelet/bubbles/pull/465) - Table: Fix inheritence of SelectedStyle in StyleFunc by [@gabrielfu](https://togithub.com/gabrielfu) in [https://github.com/charmbracelet/bubbles/pull/539](https://togithub.com/charmbracelet/bubbles/pull/539) - Table: Don't include header height in the total table size by [@prgres](https://togithub.com/prgres) in [https://github.com/charmbracelet/bubbles/pull/434](https://togithub.com/charmbracelet/bubbles/pull/434) - Table: Fix premature viewport scroll by [@dzeleniak](https://togithub.com/dzeleniak) in [https://github.com/charmbracelet/bubbles/pull/429](https://togithub.com/charmbracelet/bubbles/pull/429) - Textarea: Fix end of buffer character by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/491](https://togithub.com/charmbracelet/bubbles/pull/491) - Textarea: Set textarea default EndOfBufferCharacter to ' ' by [@blvrd](https://togithub.com/blvrd) in [https://github.com/charmbracelet/bubbles/pull/510](https://togithub.com/charmbracelet/bubbles/pull/510) - Textarea: End of Buffer alignment by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/bubbles/pull/486](https://togithub.com/charmbracelet/bubbles/pull/486) - Textinput: don't block input on validation by [@GabrielNagy](https://togithub.com/GabrielNagy) in [https://github.com/charmbracelet/bubbles/pull/185](https://togithub.com/charmbracelet/bubbles/pull/185) - Viewport: Fix division by zero in scrollpercentage by [@zMoooooritz](https://togithub.com/zMoooooritz) in [https://github.com/charmbracelet/bubbles/pull/494](https://togithub.com/charmbracelet/bubbles/pull/494) - Help: Fix centering by [@gabe565](https://togithub.com/gabe565) in [https://github.com/charmbracelet/bubbles/pull/516](https://togithub.com/charmbracelet/bubbles/pull/516) - Progress: Stop spring defaults from overriding WithStringOptions by [@nervo](https://togithub.com/nervo) in [https://github.com/charmbracelet/bubbles/pull/540](https://togithub.com/charmbracelet/bubbles/pull/540) - Cursor: Make SetMode method in cursor library handle invalid mode values correctly by [@anirudhaCodes](https://togithub.com/anirudhaCodes) in [https://github.com/charmbracelet/bubbles/pull/477](https://togithub.com/charmbracelet/bubbles/pull/477) ##### Test coverage :white_check_mark: - Add tests for textarea view by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/485](https://togithub.com/charmbracelet/bubbles/pull/485) - Add tests for paginator by [@anirudhaCodes](https://togithub.com/anirudhaCodes) in [https://github.com/charmbracelet/bubbles/pull/480](https://togithub.com/charmbracelet/bubbles/pull/480) - Add tests for textInput Tests by [@KevM](https://togithub.com/KevM) in [https://github.com/charmbracelet/bubbles/pull/500](https://togithub.com/charmbracelet/bubbles/pull/500) - Improve textarea tests by [@mikelorant](https://togithub.com/mikelorant) in [https://github.com/charmbracelet/bubbles/pull/490](https://togithub.com/charmbracelet/bubbles/pull/490) #### New Contributors - [@rdnt](https://togithub.com/rdnt) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/473](https://togithub.com/charmbracelet/bubbles/pull/473) - [@rwinkhart](https://togithub.com/rwinkhart) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/409](https://togithub.com/charmbracelet/bubbles/pull/409) - [@mikelorant](https://togithub.com/mikelorant) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/485](https://togithub.com/charmbracelet/bubbles/pull/485) - [@anirudhaCodes](https://togithub.com/anirudhaCodes) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/480](https://togithub.com/charmbracelet/bubbles/pull/480) - [@nekopy](https://togithub.com/nekopy) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/458](https://togithub.com/charmbracelet/bubbles/pull/458) - [@TravisYeah](https://togithub.com/TravisYeah) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/418](https://togithub.com/charmbracelet/bubbles/pull/418) - [@abeleinin](https://togithub.com/abeleinin) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/369](https://togithub.com/charmbracelet/bubbles/pull/369) - [@fabio42](https://togithub.com/fabio42) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/465](https://togithub.com/charmbracelet/bubbles/pull/465) - [@prgres](https://togithub.com/prgres) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/440](https://togithub.com/charmbracelet/bubbles/pull/440) - [@zMoooooritz](https://togithub.com/zMoooooritz) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/494](https://togithub.com/charmbracelet/bubbles/pull/494) - [@dzeleniak](https://togithub.com/dzeleniak) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/429](https://togithub.com/charmbracelet/bubbles/pull/429) - [@KevM](https://togithub.com/KevM) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/500](https://togithub.com/charmbracelet/bubbles/pull/500) - [@gabe565](https://togithub.com/gabe565) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/516](https://togithub.com/charmbracelet/bubbles/pull/516) - [@blvrd](https://togithub.com/blvrd) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/510](https://togithub.com/charmbracelet/bubbles/pull/510) - [@nervo](https://togithub.com/nervo) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/540](https://togithub.com/charmbracelet/bubbles/pull/540) - [@gabrielfu](https://togithub.com/gabrielfu) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/539](https://togithub.com/charmbracelet/bubbles/pull/539) - [@aditipatelpro](https://togithub.com/aditipatelpro) made their first contribution in [https://github.com/charmbracelet/bubbles/pull/577](https://togithub.com/charmbracelet/bubbles/pull/577) **Full Changelog**: https://github.com/charmbracelet/bubbles/compare/v0.18.0...v0.19.0 *** Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@charm), or on [Discord](https://charm.sh/chat).Configuration
📅 Schedule: Branch creation - "before 4pm on friday" in timezone Europe/London, Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.