v0.11.0
Immutable Styles and Raw Speed, Baby
So! The big news in this release is:
Style
methods will now always return new stylesStyle
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()
!
// 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:
// 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
library by our own @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 in #276
Changed
- switch to term/ansi for text manipulation by @aymanbagabas in #268
- replace stripansi with ansi.Strip in table by @aymanbagabas in #271
- test for different GOOS & GOARCH by @aymanbagabas in #292
Fixed
- fix combining both conditional and unconditional wrapping by @aymanbagabas in #275
- fix UnderlineSpaces and StrikethroughSpaces by @Taz03 in #299
- always render horizontal border edges when enabled by @UnseenBook in #211
- fix possible nil panic by @maaslalani in #245
- fix transform operating on ANSI sequences by @meowgorithm in #274
- change propkeys from int to int64 by @hugoleodev in #291
New Contributors
- @benwaffle made their first contribution in #247
- @UnseenBook made their first contribution in #211
- @hugoleodev made their first contribution in #291
- @Taz03 made their first contribution in #299
Full Changelog: v0.10.0...v0.11.0
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.