charmbracelet/lipgloss (github.com/charmbracelet/lipgloss)
### [`v0.11.0`](https://togithub.com/charmbracelet/lipgloss/releases/tag/v0.11.0)
[Compare Source](https://togithub.com/charmbracelet/lipgloss/compare/v0.10.0...v0.11.0)
### Immutable Styles and Raw Speed, Baby
So! The big news in this release is:
- `Style` methods will now *always* return new styles
- `Style` and ANSI operations under the hood are faster
There are also a handful of great lil' bug fixes. Read on for more.
#### Immutable Styles
Every `Style` method now returns a completely new style with its own underlying data structure no matter what. This means working with Styles is a lot easier. No more need for `Copy()`!
```go
// Before
s := lipgloss.NewStyle().Bold(true)
newStyle := s.Copy()
// After
s := lipgloss.NewStyle().Bold(true)
newStyle := s // this is a true copy
```
Okay, but why are styles easier to work with now? Consider this:
```go
// Before
baseStyle := lipgloss.NewStyle().Background(lipgloss.Color("59"))
styleAtRuntime := baseStyle.Copy().Width(m.Width)
// After
baseStyle := lipgloss.NewStyle().Padding(1, 2)
styleAtRuntime := baseStyle.Width(m.Width)
```
It might seem small, but eliminating the risk of mutations in persistent styles in an enormous usability improvement.
##### How to upgrade
There's nothing to do, however `Style.Copy()` is now deprecated and only returns itself, so you can just remove `Style.Copy()` calls. If you need to *just* copy a style without any changes to it you can simply `b := a`.
#### Faster ANSI
Sometimes watch companies brag about their "in-house" watch movement. Well, now we're bragging about our in-house-amazing [`x/ansi`](https://togithub.com/charmbracelet/x/tree/main/ansi) library by our own [@aymanbagabas](https://togithub.com/aymanbagabas). It's a fine-tuned, low-level way to manage ANSI sequencing and, because we're pretty nerdy, weβre *super* excited about it.
***
#### What's Changed
##### New!
- always return copies of styles by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/276](https://togithub.com/charmbracelet/lipgloss/pull/276)
##### Changed
- switch to term/ansi for text manipulation by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/268](https://togithub.com/charmbracelet/lipgloss/pull/268)
- replace stripansi with ansi.Strip in table by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/271](https://togithub.com/charmbracelet/lipgloss/pull/271)
- test for different GOOS & GOARCH by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/292](https://togithub.com/charmbracelet/lipgloss/pull/292)
##### Fixed
- fix combining both conditional and unconditional wrapping by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/275](https://togithub.com/charmbracelet/lipgloss/pull/275)
- fix UnderlineSpaces and StrikethroughSpaces by [@Taz03](https://togithub.com/Taz03) in [https://github.com/charmbracelet/lipgloss/pull/299](https://togithub.com/charmbracelet/lipgloss/pull/299)
- always render horizontal border edges when enabled by [@UnseenBook](https://togithub.com/UnseenBook) in [https://github.com/charmbracelet/lipgloss/pull/211](https://togithub.com/charmbracelet/lipgloss/pull/211)
- fix possible nil panic by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/lipgloss/pull/245](https://togithub.com/charmbracelet/lipgloss/pull/245)
- fix transform operating on ANSI sequences by [@meowgorithm](https://togithub.com/meowgorithm) in [https://github.com/charmbracelet/lipgloss/pull/274](https://togithub.com/charmbracelet/lipgloss/pull/274)
- change propkeys from int to int64 by [@hugoleodev](https://togithub.com/hugoleodev) in [https://github.com/charmbracelet/lipgloss/pull/291](https://togithub.com/charmbracelet/lipgloss/pull/291)
#### New Contributors
- [@benwaffle](https://togithub.com/benwaffle) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/247](https://togithub.com/charmbracelet/lipgloss/pull/247)
- [@UnseenBook](https://togithub.com/UnseenBook) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/211](https://togithub.com/charmbracelet/lipgloss/pull/211)
- [@hugoleodev](https://togithub.com/hugoleodev) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/291](https://togithub.com/charmbracelet/lipgloss/pull/291)
- [@Taz03](https://togithub.com/Taz03) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/299](https://togithub.com/charmbracelet/lipgloss/pull/299)
**Full Changelog**: https://github.com/charmbracelet/lipgloss/compare/v0.10.0...v0.11.0
***
Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.technology/@charm), or [Discord](https://charm.sh/discord).
Configuration
π Schedule: Branch creation - At any time (no schedule defined), 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.
π 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.10.0
->v0.11.0
Release Notes
charmbracelet/lipgloss (github.com/charmbracelet/lipgloss)
### [`v0.11.0`](https://togithub.com/charmbracelet/lipgloss/releases/tag/v0.11.0) [Compare Source](https://togithub.com/charmbracelet/lipgloss/compare/v0.10.0...v0.11.0) ### Immutable Styles and Raw Speed, Baby So! The big news in this release is: - `Style` methods will now *always* return new styles - `Style` and ANSI operations under the hood are faster There are also a handful of great lil' bug fixes. Read on for more. #### Immutable Styles Every `Style` method now returns a completely new style with its own underlying data structure no matter what. This means working with Styles is a lot easier. No more need for `Copy()`! ```go // Before s := lipgloss.NewStyle().Bold(true) newStyle := s.Copy() // After s := lipgloss.NewStyle().Bold(true) newStyle := s // this is a true copy ``` Okay, but why are styles easier to work with now? Consider this: ```go // Before baseStyle := lipgloss.NewStyle().Background(lipgloss.Color("59")) styleAtRuntime := baseStyle.Copy().Width(m.Width) // After baseStyle := lipgloss.NewStyle().Padding(1, 2) styleAtRuntime := baseStyle.Width(m.Width) ``` It might seem small, but eliminating the risk of mutations in persistent styles in an enormous usability improvement. ##### How to upgrade There's nothing to do, however `Style.Copy()` is now deprecated and only returns itself, so you can just remove `Style.Copy()` calls. If you need to *just* copy a style without any changes to it you can simply `b := a`. #### Faster ANSI Sometimes watch companies brag about their "in-house" watch movement. Well, now we're bragging about our in-house-amazing [`x/ansi`](https://togithub.com/charmbracelet/x/tree/main/ansi) library by our own [@aymanbagabas](https://togithub.com/aymanbagabas). It's a fine-tuned, low-level way to manage ANSI sequencing and, because we're pretty nerdy, weβre *super* excited about it. *** #### What's Changed ##### New! - always return copies of styles by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/276](https://togithub.com/charmbracelet/lipgloss/pull/276) ##### Changed - switch to term/ansi for text manipulation by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/268](https://togithub.com/charmbracelet/lipgloss/pull/268) - replace stripansi with ansi.Strip in table by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/271](https://togithub.com/charmbracelet/lipgloss/pull/271) - test for different GOOS & GOARCH by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/292](https://togithub.com/charmbracelet/lipgloss/pull/292) ##### Fixed - fix combining both conditional and unconditional wrapping by [@aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/275](https://togithub.com/charmbracelet/lipgloss/pull/275) - fix UnderlineSpaces and StrikethroughSpaces by [@Taz03](https://togithub.com/Taz03) in [https://github.com/charmbracelet/lipgloss/pull/299](https://togithub.com/charmbracelet/lipgloss/pull/299) - always render horizontal border edges when enabled by [@UnseenBook](https://togithub.com/UnseenBook) in [https://github.com/charmbracelet/lipgloss/pull/211](https://togithub.com/charmbracelet/lipgloss/pull/211) - fix possible nil panic by [@maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/lipgloss/pull/245](https://togithub.com/charmbracelet/lipgloss/pull/245) - fix transform operating on ANSI sequences by [@meowgorithm](https://togithub.com/meowgorithm) in [https://github.com/charmbracelet/lipgloss/pull/274](https://togithub.com/charmbracelet/lipgloss/pull/274) - change propkeys from int to int64 by [@hugoleodev](https://togithub.com/hugoleodev) in [https://github.com/charmbracelet/lipgloss/pull/291](https://togithub.com/charmbracelet/lipgloss/pull/291) #### New Contributors - [@benwaffle](https://togithub.com/benwaffle) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/247](https://togithub.com/charmbracelet/lipgloss/pull/247) - [@UnseenBook](https://togithub.com/UnseenBook) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/211](https://togithub.com/charmbracelet/lipgloss/pull/211) - [@hugoleodev](https://togithub.com/hugoleodev) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/291](https://togithub.com/charmbracelet/lipgloss/pull/291) - [@Taz03](https://togithub.com/Taz03) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/299](https://togithub.com/charmbracelet/lipgloss/pull/299) **Full Changelog**: https://github.com/charmbracelet/lipgloss/compare/v0.10.0...v0.11.0 *** Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.technology/@charm), or [Discord](https://charm.sh/discord).Configuration
π Schedule: Branch creation - At any time (no schedule defined), 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.
π Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.