lipstick-0.1.0.0: CHANGELOG.md
# Revision history for lipstick
## [0.1.0.0] - 2026-11-09
First version: a port of lipgloss v2.
* Styles as optparse-applicative-style modifiers (`Mod`): text attributes,
padding and margins (with fill characters), borders (presets, per-side
colours, gradients), width and height, alignment, wrapping or truncation,
inline rendering, tab width, `transform`, unset modifiers and getters.
Text attributes work on every kind of thing, and `maxWidth`/`maxHeight`
on every kind but `Inline` text.
* Blocks: rendering to a structured block of styled spans, joining, placing,
framing and measuring; ANSI only on output.
* Inline text with nested styles, `fromAnsi` for text with escape sequences,
`breakAfter` for extra break characters, `styleRanges` and `styleIndices`.
* Blocks are laid out in the width they are given: text wraps to fit,
`fillWidth` / `grow` share out spare columns, `stretchHeight` matches the
height of a row, and the `RenderEnv` carries the output's width.
* Unicode 16.0.0 grapheme clusters (UAX #29) and East Asian Width, from
tables generated by `scripts/GenUnicodeTable.hs`.
* Tables: cells are blocks; header, column and row rules, cell styles by
position, fitting a width, height with scrolling, truncation.
* Text settings (alignment, wrapping, break characters, tab width,
transform, inline) are inherited by the text inside a framed block.
* Lists and trees (`Outline`): enumerators, indenters, item, enumerator and
indenter styles, width, item offsets.
* Layers: offsets, z-order, `transparent` layers, sublayers, hit testing.
* `Lipstick.Grid`: the laid-out lines, cells and styled spans of a block,
for other outputs.
* Colours: hex and palette literals, light/dark and per-profile colours,
downsampling, `blend`, `blend2D`, `darken`, `lighten`, `complementary`.
* Output: colour profile detection (`NO_COLOR`, `CLICOLOR_FORCE`,
`COLORTERM`, `TERM`), ANSI processing on Windows, background detection
from `COLORFGBG` or by asking the terminal, hyperlinks.