Skip to content
Permalink
develop
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

Note: Unlisted patch versions only involve non-code or otherwise excluded changes and/or version bumps of transitive dependencies.

5.1.0 (2022-06-09)

🚀 Features

  • update multiColorGradient() (f47a59d)
    • add support for automatic conversion to packed ARGB/ABGR ints (for use with indexed color models in @thi.ng/pixel)

5.0.0 (2022-03-11)

🛑 Breaking changes

  • rename color matrix fns (00fdc31)
  • BREAKING CHANGE: rename color matrix fns
    • add Mat suffix, e.g. grayscale() => grayscaleMat()

🚀 Features

  • add color theme strategies (22057e5)
    • add strategy fns:
      • complementaryStrategy()
      • splitComplementaryStrategy()
      • monochromeStrategy()
      • triadicStrategy()
      • tetradicStrategy()
      • squareStrategy()
  • add variations() generator (91d760f)
  • add max chroma LCH fns (ab4e67a)
  • add/update color ops (33cb4a1)
    • add invert(), isRgbGamut(), lighten(), rotate() ops
    • add tint(), tone(), shade() ops
    • update impls for isBlack/Gray/White()
    • add/re-use internal multimethod dispatch fns
  • update ChannelSpec and hue-based modes (01d93dc)
    • add hue flag for channel spec
    • update .clamp() impl to wrap hue in [0..1] interval
    • add/update LCH conversion paths

4.1.0 (2021-11-17)

🚀 Features

  • Using workspaces for local tools (bf7a404) Improving the overall build ergonomics
    • introduced a tools workspaces
    • imported it in all needed packages/examples
    • inclusive project root

♻️ Refactoring

  • testrunner to binary (4ebbbb2) this commit reverts (partly) changes made in: ef346d7a8753590dc9094108a3d861a8dbd5dd2c overall purpose is better testament ergonomics: instead of having to pass NODE_OPTIONS with every invocation having a binary to handle this for us.

4.0.9 (2021-11-10)

♻️ Refactoring

  • update all countdown loops (a5f374b)

4.0.1 (2021-10-13)

♻️ Refactoring

  • update imports in all tests/pkgs (effd591)
  • update imports in all pkgs (5fa2b6f)
    • add .js suffix for all relative imports

4.0.0 (2021-10-12)

🛑 Breaking changes

  • major update of ALL pkgs (export maps, ESM only) (0d1d6ea)
  • BREAKING CHANGE: discontinue CommonJS & UMD versions
    • only ESM modules will be published from now on
    • CJS obsolete due to ESM support in recent versions of node:
      • i.e. launch NodeJS via:
      • node --experimental-specifier-resolution=node --experimental-repl-await
      • in the node REPL use await import(...) instead of require()
    • UMD obsolete due to widespread browser support for ESM Also:
    • normalize/restructure/reorg all package.json files
    • cleanup all build scripts, remove obsolete
    • switch from mocha to @thi.ng/testament for all tests

🚀 Features

  • Int32/ABGR/ARGB updates/fixes (d20e77c)
    • update TypedColor (add IEqualsDelta, Iterable parents)
    • add shared Int32.eqDelta() impl
    • add ARGB/ABGR normalized channel value accessors
    • fix various bugs in defInt() factory
      • return correct type if no args given
      • update return type in .mapBuffer()
    • add internal __scale8bit() helper fn
  • add mandatory toRgb conversions (6c4c13b)
    • due to defColor() dynamically registering related conversions for a given color mode, deep imports might not make conversion routes available
    • new mandatory toRgb key in ColorSpec offers a fallback solution

♻️ Refactoring

  • rename/migrate internal fns (5faa747)
  • restructure package (bf9edcb)
    • migrate/lift /src/ops source files to /src for easier use
  • sideeffect-free defmulti specs (9909909)
  • update deps & imports in various pkgs (e1cf29e)
    • largely related to recent updates/restructuring of these packages:
      • api
      • defmulti
      • errors
      • logger
  • update imports (transducers) (0bc002c)
  • update imports (c642082)
  • update imports (00188f4)
  • update imports (1736278)
  • update all test stubs (f2d6d53)
  • update all tests in all pkgs (8b582bc)

3.2.0 (2021-08-04)

🚀 Features

  • add/update swatch functions (391ae4a)
    • add dotsH/V()
    • update swatchesH/V(), add gap arg

3.1.12 (2021-04-03)

♻️ Refactoring

3.1.0 (2021-02-24)

🚀 Features

3.0.1 (2021-02-22)

🩹 Bug fixes

  • update compileThemePart() (b8ceed6)
    • don't mutate original theme part if given as object

3.0.0 (2021-02-20)

🛑 Breaking changes

  • update types, CSS formatting (f0502a2)
  • BREAKING CHANGE: remove obsolete resolveAsCss(), use css() instead
    • update MaybeColor alias
    • update TypedColor
    • merge resolveAsCss() cases into css()
    • fix color factory for int args
  • major restructure, new types/conversions (6389f7c)
  • BREAKING CHANGE: replace color classes w/ dynamically generated impls
    • add ColorSpec, ColorType, ColorFactory types
    • add defColor() color type factory based on declarative ColorSpec
    • all color types now based on defColor()
    • remove obsolete AColor class
    • color factories now also act as converters
    • add color() factory to wrap color in class for given mode
    • remove CSS and Int types (use plain strings/ints now, and use css() or resolveAsCss() to convert to CSS strings)
    • parseCss() now returns ParsedColor (circumvents circular deps)
    • replace convert() w/ new simplified version
    • add/update generic isGray(), isBlack(), isWhite(), luminance()
  • major update/rename all types/conversions (4143c8f)
  • BREAKING CHANGE: update/rename all color types/conversions
    • rename YCbCrA => YCC
    • remove A suffix from all color types (e.g. HSVA => HSV, XYZA => XYZ etc.)
    • accordingly, rename all conversions (e.g. rgbaHsva() => rgbHsv())
    • rename .alpha accessor in all color types (previously a mixture of .a vs .alpha, now always latter)
    • standardize casing in all function names (now always camelCase) e.g. asCSS() => asCss()
    • resolveAsCss() untyped default now sRGB
    • rename distSatHsv() => distHsvSat()
    • rename distLumaHsv() => distHsvLuma()
    • rename distLumaRGB() => distRgbLuma()
    • add distChannel() HOF
    • add basic convert() support for Lab<>LCH<>CSS
    • add/update docstrings
    • rename RANGES => COLOR_RANGES
    • update colorFromRange(), colorsFromRange() and colorsFromTheme() to return wrapped HSV colors
  • add multiColorGradient(), update cos version (dc88f37)
  • BREAKING CHANGE: multiCosineGradient() args now given as options object
    • add MultiGradientOpts
    • add support for per-interval easing
    • add support for result color coercion
  • new parseCSS(), add SRGBA, update conversions (f748d65)
  • BREAKING CHANGE: parseCSS() now returns wrapped color types, not raw RGBA arrays as previously
    • parseCSS() now returns SRGBA, HSLA, LAB or LCH color types and supports more CSS syntax opts
    • all asXXX() functions also return wrapped colors, only asCSS() still returns strings
    • add SRGBA type/color mode reserve existing RGBA for linear colors (non-gamma corrected)
    • rename existing conversions, now using SRGBA (i.e. srgbaCss(), srgbaInt()), add new versions for (now linear) RGBA
    • parseCSS() RGB colors now result in SRGB instances, use asRGBA() or srgbRgba() to convert to linear RGB

🚀 Features

  • replace proximity functions (7a0be62)
    • add new proximity() HOF to replace proximityHsv/Rgb()
  • add/update distance functions (6d15065)
    • add distCIEDE2000()
    • add distCMC()
    • rename distRgb() => distEucledian3
    • add distEucledian4
  • update ColorMix & gradient types/functions (829fcf6)
  • add/update conversions (e979044)
  • update ColorFactory, TypedColor (8c5f8fb)
    • add Symbol.toStringTag impl
    • expose .class in color factories
    • add support for longer conversions (2-4 steps) in defConversions()
  • generic isBlack/Gray/White, LCH color ranges (598afdf)
    • update ColorRange, ColorRangeOpts and related fns to switch HSV -> LCH
  • add generic analog() (for all color types) (117a5bc)
  • use RGB fallbacks for Lab/LCH CSS (53ddaeb)
    • keep existing conversions, but disable until browser support is ready
  • add Int32.alpha accessor, minor update int->srgb (b65f9ee)
  • add TypedColor/ColorFactory.range impls (7ecfa0c)
  • convert mix() to defmulti, color mode aware (faed98b)
  • add gradient and mix fns (f31966c)
    • add cosineGradientBuffer()
    • add multiColorGradientBuffer()
    • add defMix(), mixHsl(), mixLch() fns
    • remove obsolete mixAlpha() (use porter-duff pkg for alpha blending)
  • add setPrecision(), LCH cleanup (778f84a)
  • improve int ARGB/ABGR support (6460e4d)
    • add CSS conversions
    • add ARGB<>ABGR swapping
    • add converters for RGB/SRGB
  • add ARGB32/ABGR32 int types/conversions (1993beb)
    • rename existing int conversion fns
    • add versions for ARGB/ABGR orders
    • add/update luminance fns
    • minor update defConversions()
  • add sortMapped() for mapped memory cols (9a548ec)
  • add lab D50/65 conv, update HSx<>CSS conv (014e41d)
    • add labLabD50_65/D65_50()
    • add lab65 -> CSS conversion (always as D50)
    • since there's no official requirement, allow direct conversions from sRGB to various HSx modes (also to be backward compatible)
  • split Lab & XYZ types into D50/D65 (29e1e74)
    • add LabD50/D65, add XYZD50/XYZD65
    • rename factory fns (labD50/D65, xyzD50/D65)
    • update/simplify ColorSpec in all color type defs
    • add tools/limits.ts to sample RGB gamut limits, add to color defs
    • add TypedColor.clamp(), update defColor()
    • fix Oklab<>XYZ conversions (use D65 as default)
  • update/restructure types, add buffer mapping (cebaafa)
    • add ColorFactory.mapBuffer()
    • add ColorFactory/TypedColor.random()
    • update all color class declarations
    • split api.ts into /api subdir
    • update css()
  • add/update luminance & YCC conversion (89ca131)
    • add SRGB luminance versions, update RGB version to use linear weights
    • update RGB<>YCC conversion fns (configurable luma)
    • update grayscale(), luminanceAlpha() default coeffs to use linear RGB weights
  • add/update Lab/XYZ/LCH conversions (9feb251)
    • add D50/D65 white points & matrices
    • add Lab<>XYZ<>RGB conversions (for diff white points)
    • update/fix Lab/LCH CSS formatting
    • update mulV33 to NOT clamp result by default
  • add rgbSrgbApprox() and vice versa (c1efada)
  • add XYY mode (7a743f2)
    • currently only conversions from/to XYZ
  • add AColor.set() (7e7a05c)
  • add AColor.toJSON() (ee96412)
    • better handling for memory mapped colors
  • add wavelengthXyza() (d29ce23)
  • add SystemColors and defaults (16bad21)
  • update CSS_NAMES (7ea0cf0)
  • add barebones support for LAB & LCH (6e3b8c9)
  • add XYZ/Oklab conversions, update/fix XYZ matrices (e07a038)
    • add/refactor oklab conversions (XYZ / RGBA / CSS)
    • RGB_XYZ / XYZ_RGB matrices were row-major, now correctly column major
  • add Oklab color space support (57a5bad)

🩹 Bug fixes

  • kelvinRgb() results are sRGB (31cd4b5)
  • don't clamp Oklab/XYZ<>RGB conversions (fab3639)
  • unconstrained analog() for some modes (439265b)
  • rescale labXyz(), use D50 for LCH->RGB (9e59545)
  • fix typo in parseHex, update parse helpers (a7315c0)
  • div-by-zero in XYY<>XYZ conversions (8a71c6e)
  • update Lab/LCH rules in parseCss() (cb7f15e)
  • update resolveAsCss() (0e7e955)
    • constrain arg type, add string test/case
  • normalize LCH hue channel (c0b9e9d)
  • fix resolveAsCSS() (7b1eeff)
    • color mode field is a string now, not number anymore
    • wi/o this fix any non-RGB color would be wrongly interpreted as RGBA

Performance improvements

  • make defColor() fixed for 4 channels (4ea77ef)

♻️ Refactoring

  • update color range presets (9353c93)
    • adjust/balance settings for LCH (from former HSV configs)
  • update parseHex 3/4 digit handling (7424906)
  • update types (729db15)
  • update LAB<>LCH conversions (eb03c89)
  • add ColorRangeOpts.base, update related fns (e06c7ee)
    • move base arg into ColorRangeOpts
    • update colorFromRange(), colorsFromRange(), colorsFromTheme()
  • update colorFromRange(), asThemePart() (2e4e14d)
  • add/rename luminance consts, add docs (9d43274)
  • replace ensureHue() w/ fract() (1499904)
  • update int-int fns, docs, readme (1ef7341)
    • re-use swapLane13() for ARGB<>ABGR
    • update deps
    • update CSS ref links
    • update readme
  • rename fns in gradient gen tool (69e2287)
  • update sortMapped() (6b5fed9)
  • update backing buffer types (b5661db)
    • use NumericArray (see related change in 0e4edb793)
  • rename dynamic class in defColor() (4c846d6)
  • update css() (655dd32)
  • simplify defColor() factory fn (afc300c)
  • simplify int24Css() (ebe3948)
  • update ColorSpec handling (d5d605e)
    • make ChannelSpecs optional, update defaults handling in defColor()
  • rename GRADIENTS => COSINE_GRADIENTS (22fe0de)
    • migrate multiColorGradient() to separate file
  • update args for swatch fns (e5b1b9b)
  • add/update pkg exports (f6826dd)
  • minor update mode getter impls (bacc446)

2.1.0 (2021-01-02)

🚀 Features

  • update ColorRangeOpts, add docstrings (350fbe5)
  • add color swatch hiccup helpers (5ecc528)
  • add sortColors(), comparators (6761feb)
  • add declarative range/theme iterators (971d5dc)
    • add ColorRange related types
    • add ColorRange presets
    • add colorFromRange()
    • add colorsFromRange(), colorsFromTheme() iterators
    • add analogHSV(), analogRGB() functions
  • add HSV/RGB gray axis checks (927202b)
  • add HSV/RGB distance fns (3bd3969)

🩹 Bug fixes

  • fix cosineGradient() return type (651590c)

♻️ Refactoring

  • replace ColorThemePartString (efbb6f3)
    • add ColorThemePartTuple
    • update asThemePart() to convert tuple versions
    • to avoid TS typecheck perf issues w/ the template literal string, switch to a tuple format for theme parts
    • update swatch tool
  • update color range iterators (ea1acc8)
    • update colorsFromTheme() & asThemePart() to precompute spec details
    • minor update colorFromRange() (opts)
  • add/migrate types for presets (a8e815b)

2.0.0 (2020-12-22)

🛑 Breaking changes

  • fix #256 replace enum w/ type alias (17e2449)
  • BREAKING CHANGE: replace ColorMode w/ type alias

1.3.2 (2020-12-07)

♻️ Refactoring

  • update type-only imports (2808adf)

1.3.0 (2020-11-24)

🚀 Features

  • add GradientPresets type, update GRADIENTS (985b719)
    • allows for autocomplete of gradient IDs

1.2.16 (2020-09-13)

♻️ Refactoring

1.2.0 (2020-05-29)

🚀 Features

1.1.12 (2020-04-05)

♻️ Refactoring

  • switch to non-const enums (1802fbe)

1.1.6 (2020-02-25)

♻️ Refactoring

  • update imports, internal restruct (592409c)

1.1.2 (2019-11-09)

🩹 Bug fixes

  • update/rename imports (vectors pkg) (7cb8877)
    • values() => stridedValues()

♻️ Refactoring

  • update multiCosineGradient() (0359d4a)
    • update tween() args due to API change
  • update wrapSides/tween call sites in various pkgs (ee8200c)

1.1.0 (2019-08-21)

🚀 Features

1.0.2 (2019-08-16)

🩹 Bug fixes

  • add proper rounding to rgbaInt() (d956954)

1.0.0 (2019-07-31)

🛑 Breaking changes

  • remove PD related functions, update readme (5d868db)
  • BREAKING CHANGE: Porter-Duff ops & pre/post-multiply moved to new package @thi.ng/porter-duff

🚀 Features

  • (#106) add PD int ops, clamp existing porterDuff() (4c975b2)
    • add premultiplyInt / postmultiplyInt

🩹 Bug fixes

  • update factory fn args for mem-mapped colors (eae671e)
    • add support for opt offset/stride (was already supported by class ctors)
    • update shared ensureArgs() helper

0.2.0 (2019-07-07)

🚀 Features

  • TS strictNullChecks, update color conversion fns (04dc356)
  • enable TS strict compiler flags (refactor) (8c13166)
    • reformat color matrices in transform.ts

0.1.11 (2019-03-10)

♻️ Refactoring

  • update Fn args in various packages (e453ac3)

0.1.10 (2019-03-04)

🩹 Bug fixes

  • add/update luminanceRGB/luminanceInt, add to re-exports (566cf02)

0.1.7 (2019-02-28)

🩹 Bug fixes

  • update ColorMode & Hue const enum handling (bb71b7c)
    • remove reverse __ColorMode hack
    • should fix bundling issues w/ webpack

0.1.3 (2019-02-05)

♻️ Refactoring

0.1.0 (2019-01-21)

♻️ Refactoring

  • remove circular dependencies, update parseCss() (5ca5803)