Releases: elixir-image/color
Release list
Image version 0.13.0
[0.13.0] — May 2nd, 2026
Added
-
Color.Palette.summarize/3— reduce an arbitrary list of colours to k representative colours by agglomerative bottom-up clustering in Oklab. Chromatic axes are weighted 2× over lightness in the distance metric (perceptual: hue mismatch dominates lightness mismatch); each cluster's representative is chosen with a centroid-aware rule (highest mass-weighted chroma for chromatic centroids, closest-to-centroid for achromatic). Available asColor.Palette.summarize/3(façade) or directly asColor.Palette.Summarize.summarize/3. -
Color.Palette.Cluster— public low-level clustering primitives (from_colors/2,merge_until/3,merge_pair/2,representative/2,distance/3). Exposed as a stable seam so libraries that produce their own clusters (notably K-means over image pixels in:image) can re-use the same Oklab metric and centroid-aware rep selection without algorithmic drift.Color.Palette.Summarizeis now a thin wrapper overCluster. -
/spectrumroute inColor.Palette.Visualizer— diagnostic view that renders an arbitrary colour list as a hue-frequency strip in Oklch, with achromatic entries shown separately by lightness. Useful for spotting hue gaps and chromatic/achromatic balance in any palette.
Changed
Color.Palette.sort/2's default:hue_originis now15.0°(was0.0°), placing the hue-circle cut just below pure red so the deepest reds anchor at the start of the strip and magentas/pinks (Oklch H < 15°) wrap past purple to the end. Passhue_origin: 0.0to restore the previous cut-at-zero behaviour. The default applies to both:hue_lightnessand:stepped_huestrategies.
Color version 0.12.1
[0.12.1] — April 25th, 2026
Bug Fixes
- Conditionally compile Visualizer and Standalone on optional deps.
Color version 0.12.0
[0.12.0] — April 23rd, 2026
Adds
-
Color.Palette.sort/2to sort colors. -
Add Color.Material and :material_pbr sort strategy for mixed finishes.
Color version 0.11.0
[0.11.0] — April 20th, 2026
Added
-
Add :chroma_ceiling option and expose :gamut in tonal visualizer.
-
Drop seed label on gamut plot and add white-point legend entry.
-
Propagate palette gamut and ceiling between tonal and gamut tabs
Color version 0.10.0
[0.10.0] — April 19th, 2026
Added
- Add
Color.Rec2020andColor.AppleRGBspaces and extendColor.Spectralwith B, C, F2, F7, F11 illuminants and blackbody/1.
Color version 0.9.0
[0.9.0] — April 16th, 2026
Bug Fixes
- Add the seed as a URL param so the seed travels to each tab in the visualizer.
Color version 0.8.0
[0.8.0] — April 16th, 2026
Bug Fixes
- Smooth the tonal lightness gradient for the palette.
Color version 0.7.0
[0.7.0] — April 16th, 2026
Changed
- Generate Tailwind 4 classes, not Tailwind 3.
Color version 0.5.0
[0.5.0] — April 14th, 2026
Added
-
Color.Palettemodule with three palette-generation algorithms for design systems and web sites. -
Color.Palette.Visualizer— a Plug-based web UI for previewing the three palette algorithms. Three views modelled on UI Colors (Tonal), Material Theme Builder (Theme), and Adobe Leonardo (Contrast).
Color version 0.4.0
Added
-
Color.LEDmodule with support for multi-channel addressable LED pixels that include extra white channels.Color.LED.RGBWcovers four-channel pixels (R, G, B, W) used by WS2814 and SK6812-RGBW.Color.LED.RGBWWcovers five-channel RGB+CCT pixels (R, G, B, WW, CW) used by WS2805 and several SK6812 variants. Both providefrom_srgb/2,to_srgb/1, andto_xyz/1.Color.LED.chip_options/1returns recommended extraction options for common chip variants (:ws2814_ww,:ws2814_nw,:ws2814_cw,:sk6812_ww,:sk6812_nw,:sk6812_cw,:ws2805). -
Color.ANSImodule for parsing and emitting ANSI SGR colour escape sequences. Supports 16-colour, 256-colour indexed, and 24-bit truecolor forms, with perceptual nearest-palette matching (CIEDE2000) when encoding to the 16- or 256-colour palette. Includesparse/1,to_string/2,wrap/3,nearest_256/1,nearest_16/1,palette_256/0,palette_16/0, and a typedColor.ANSI.ParseErrorexception. -
Top-level
Color.to_hex/1,Color.to_css/1,2, andColor.to_ansi/1,2convenience functions that accept any inputColor.new/1accepts and raise a typed exception on failure.
Changed
-
Changed the module
Color.CSSNamestoColor.CSS.Names -
Changed all colorspace module names to be the closest possible match to their standard names.