Releases: color-js/color.js
v0.5.2
A fix for the same issue as the previous patch. This should fix compatibility with all TypeScript versions.
What's Changed
- [types] Remove module augmentation by @MysteryBlokHed in #566
Full Changelog: v0.5.1...v0.5.2
v0.5.1
Implements a change suggested by @kachkaev in #560 (comment) to fix errors on newer TypeScript versions.
Full Changelog: v0.5.0...v0.5.1
v0.5.0
It’s been a while since our last release, so this is a big one!
Going forwards, we plan to make at least one release per month.
Heads ups
⚠️ Future breaking change
Color.js currently uses NaN
values to represent CSS none
(e.g. for achromatic colors).
However, CSS also now has a NaN
value, which is currently impossible to represent in Color.js.
Therefore, In the next non-minor version, we will start using null
to represent none
.
If you have code that handles these values, you can prepare for the change by detecting which value is being used and using that instead of a hardcoded NaN
:
const NONE_COORD = new Color("rgb(none none none)").coords[0].valueOf()
🆕 Color.js Discord server
We’ve just set up a Discord server so that people can help each other and discuss color science topics in a more immediate way. Join now!.
Do note we also have a Discussions section for more long-form help.
⬇️ 2 million downloads!
We’ve recently passed a big milestone: Color.js was downloaded 2 million times on npm!
New in v0.5.0
New Color Spaces
- CAM16 (JMh) by @facelessuser in #379
- HCT by @facelessuser in #380
- Luv and LCHuv by @lloydk in #391
- HSLuv and HPLuv by @lloydk in #404
Improved compatibility with CSS:
- Moving to a standard
--
-prefixed version for color spaces that are not built-in into CSS. To facilitate "upgrading" color spaces when they later get added to standard CSS, both--
-prefixed and unprefixed versions of all color spaces are also accepted. Implemented by @jgerigmeyer in #407 and #439 - Add support for more angle units (
grad
,rad
andturn
) improving compatibility with CSS, by @kleinfreund in #324 - Add CSS gamut mapping algorithm by @jamesnw in #344 and #352
- Remove gamut mapping from
hsl()
,hwb()
andhsv()
by @jamesnw in #331
Gamut mapping improvements
- Support for HCT gamut mapping by @facelessuser in #420
- toGamut extended to allow configuring the delta E method, the JND, and enabling white and black SDR clamp by @facelessuser in #420
- Allow hsluv to be gamut mapped using the CSS algorithm by @lloydk in #431
- Avoid needless two-step color conversion at the start of gamut mapping by @facelessuser in #426
- Avoid round-trip to/from oklch in CSS mapping method for colors that are in gamut @jgerigmeyer in #455
Color space API improvements:
- Color spaces can now override the heuristically determined color space used to check gamut via a
gamutSpace
parameter. Implemented by @lloydk in #369 - Color spaces can now define a grammar for
color()
format. Implemented by @lloydk in #370 - Support string ids in
colorSpace.equals()
by @LeaVerou in #413 - Make the color space optional in
getAll()
by @LeaVerou in #413
Precision/accuracy improvements
- Calculate more accurate inverse matrices for cat and pre-calc D50 <-> D65 by @facelessuser in #354 and #360
- Update Oklab matrices for better 64 bit conversion by @facelessuser in #357
- More accurate ICtCp matrices by @facelessuser in #365
- [spaces/prophoto] Use 64 bit-accurate conversion matrices by @svgeesus in f750d09
- Fix how small and zero precision is handled by @facelessuser in #416
Performance improvements
Bug Fixes
- Fix hue related mix issues by @facelessuser in #338
- Accept "Lightness" for lab space first channel name by @jgerigmeyer in #348
- Add CJS file to /fn entry and fix legacy builds by @jgerigmeyer in #349
- [spaces/hsl] Better handling of negative saturation on very oog colors by @svgeesus in f20d78a
- Fix
toPrecision()
(was off by one for fractional inputs) by @efergus in #384 - Color serialization now defaults to percentage for lightness across all color spaces, by @LeaVerou in e36e183
- Fix incorrect parsing of Jzazbz percentage values by @lloydk in #392
- Fix Luv lightness coordinate name by @lloydk in #406
- Ensure alpha is a number in
Color
constructor by @lloydk in #400 - Workaround Next.js production bug in
serialize
by @lloydk in #421 - Allow angle values for HCT hue coordinate by @lloydk in #418
- Fix parsing of HSV color space by @lloydk in #430
- Allow number values for HWB w/b coordinates by @lloydk in #464
- Add missing CSS ids for a98rgb-linear, p3-linear, and prophoto-linear spaces for parsing and serialization by @jgerigmeyer in #439
- Consistently allow any color types (string or object) throughout the codebase by @lloydk and @jgerigmeyer in #453, #451, #456, #457, and #461
TypeScript improvements
- Space coord accessors (e.g.
color.oklch.lightness
) will not produce TS errors any more. Quite a lot of effort by @jgerigmeyer to make this possible, in #389 - Fixed typedef for
steps()
andmix()
, by @MysteryBlokHed in #323 - Fixed type def for MixOptions by @jgerigmeyer in #347
- The fact that
toGamut()
also accepts the color space as a string is now part of the TS definition by @manuelmeister in #318 - Re-export some types at the top level by @MysteryBlokHed in #327
- Added
.js
extension to file imports by @MysteryBlokHed in #333 - Added CJS type defs for node16 resolution by @jgerigmeyer in #383
- Add missing overload for
set
by @MysteryBlokHed in #419 - Add JSDoc comments based on website docs by @MysteryBlokHed in #436
- Re-export some types at the top level of
/fn
entrypoint by @jgerigmeyer in #466
Website
- [navigation] Fix menu z-index on the play page by @manuelmeister in #319
- Add core maintainers to website footer by @jgerigmeyer in #422
- Fix "Defined in" API links by @MysteryBlokHed in #423
Apps
- [apps/gamut-mapping] New app to experiment with different gamut mapping algorithms and quickly see how wide a gamut a color requires by @LeaVerou
- [apps/gradient] pin mavo to hotfix app by @clanghout in #359
- [apps/picker] Use correct granularity in number input rather than 1 across all color spaces (by @sidewayss in #330)
- [apps/convert] Up/down arrows to tweak color coordinates by @LeaVerou
- [apps/convert] Pin color spaces to top by @LeaVerou
Linting & Tests
- New JS-first testsuite that eliminates boilerplate and makes writing tests quick, by @LeaVerou (piloting her experimental testing framework htest.dev)
- Fix Jzazbz tests by @facelessuser in #366
- More consistent formatting across the codebase by @jgerigmeyer in #372
- Add more ESLint recommended rules, and enforce them in CI by @jgerigmeyer in #373
- Enforce trailing commas unless
]
or}
is on the same line by @jgerigmeyer in #440 - Port parse test to new JS testsuite by @lloydk in #427
- Add configurable
verbose
setting andwarn
function to allow customizing logging by @jgerigmeyer in #441 - Other testing improvements by @svgeesus
New Contributors
A huge ...
v0.4.5 Fix npm dependencies
Identical to v0.4.4-patch.1, so that semver can do its thing
Fix npm dependencies
Due to an unknown cause, v0.4.4 was published on npm with an absurd number of nonexistent dependencies. Color.js still has 0 dependencies, and this release fixes this on npm.
v0.4.4
What's Changed
- Fix Rec 2100 HLG algorithm by @facelessuser in #279
- Fix "longer" hue interpolation by @facelessuser in #281
- Allow to extend the deltaE methods by @latin-1 in #280
- Revert "Allow to extend the deltaE methods" by @LeaVerou in #283
- Simplify getting coords from args by @Connormiha in #285
- Allow to extend the deltaE methods by @latin-1 in #287
- [toGamut] Ensure toGamut always returns a color object by @lloydk in #290
- Fix incorrect type definition for Range by @nsilvestri in #299
- Add a PlainColorObject type for functions that return color objects by @lloydk in #291
- Fix oklch and oklab colorspace names by @lloydk in #300
- Add verbose option to parse() by @LeaVerou in #302
- Make Color.js proxy-friendly, resolves #305 by @LeaVerou in #306
- Upgrade dependencies. by @jgerigmeyer in #308
- Use node v14 for CI. by @jgerigmeyer in #307
- Fix color temperature of D65 by @nico in #292
- [spaces] Add percentages to color functions by @jamesnw in #314
- Ensure coord meta always includes a coord name, even when the same as the key by @LeaVerou in dd129cd
- Fix regression by @LeaVerou in 4f28418
New Contributors
- @Connormiha made their first contribution in #285
- @lloydk made their first contribution in #290
- @nsilvestri made their first contribution in #299
- @nico made their first contribution in #292
- @jamesnw made their first contribution in #314
Full Changelog: v0.4.3...v0.4.4
v0.4.3: Several bugfixes and better typings
What's Changed
- Fix addSpaceAccessors hook by @latin-1 in #249
- Add missing import statement to luminance.js by @latin-1 in #255
- Fix Color constructor parameter types by @latin-1 in #252
- Fix type definition for Color#to() by @latin-1 in #254
- Fix parameter type of Color.defineFunction by @latin-1 in #251
- Add missing type definition for toGamut.returns by @latin-1 in #257
- Correct the type definitions of Color#steps() by @latin-1 in #256
- Fix missing value parameter in setLuminance by @xiegeo in #265
- Correct rec2100-hlg, #190 by @svgeesus in #271
- [types] Add
value
tosetLuminance
by @MysteryBlokHed in #272 - Fix procedural examples by @ajlende in #212
- [types] Merge
Color
types by @MysteryBlokHed in #259
New Contributors
- @latin-1 made their first contribution in #249
- @xiegeo made their first contribution in #265
- @ajlende made their first contribution in #212
Full Changelog: v0.4.2...v0.4.3
v0.4.2
Small changes in this one.
- Shortcut for generating legacy
rgb()
andrgba()
syntax (format: "rgb_number"
and"rgba_number"
). - Fixed bug where comma-separated arguments in string output included an extraneous space before the last comma
- Better bundler compatibility, thanks to @ambar
- Type fixes, thanks to @MysteryBlokHed
src/index-fn.js
now includes exports for individual contrast functions, thanks to @MysteryBlokHed- Typescript fixes
All merged PRs
- Add prepack script to build files before release. by @jgerigmeyer in #233
- [ci] Update conditions for dtslint workflow run by @MysteryBlokHed in #236
- Adjust format type and add serialize type test. by @jgerigmeyer in #237
- Apply linting rules. by @jgerigmeyer in #238
- Fix bundler compatibility by @ambar in #239
- [contrast] Add re-export of
src/contrast/index.js
tosrc/index-fn.js
by @MysteryBlokHed in #240 - [types] Add types for features in v0.4.1 by @MysteryBlokHed in #244
New Contributors
Full Changelog: v0.4.1...v0.4.2
v0.4.1 Patch 1
Fixes issue where legacy builds were not included in npm. See #232
v0.4.1: TypeScript support, legacy builds
The main new feature of this release is Typescript support, added in this Herculean PR by @MysteryBlokHed and reviewed by @jgerigmeyer.
Other new features and changes:
deltaPhi
contrast method now supported, thanks to a PR by @Myndex- Node v12 and somewhat older browsers are now supported, through separate
.legacy
builds, thanks to a PR by @jgerigmeyer - The
premultiplied
option is now supported inmix()
, thanks to a PR by @redneb - Support both number and percent in (ok)lab and (ok)lch lightness. Serialize as number, per spec.
- Lab-D65 is now serialized as
lab-d65()
and notlab()
.
All merged pull requests
- [contrast / deltaPhi] by @Myndex in #209
- Fix missing import by @Myndex in #210
- Add Carbon by @sayzlim in #211
- Fix some typos in contrast docs by @xi in #216
- Contrast docs by @svgeesus in #214
- Add Babel with support for Node v12. by @jgerigmeyer in #215
- Update z-index by @mixalistzikas in #222
- [types] Add type definitions from DefinitelyTyped/DefinitelyTyped#62510 by @MysteryBlokHed in #221
- support the premultiplied option in mix by @redneb in #219
- [spaces] Lab,LCH,Oklab,Oklch lightness is number or percent. Fix #225 by @svgeesus in #227
- [tests] correct an XYZ test, now passes by @svgeesus in #229
New Contributors
- @Myndex made their first contribution in #209
- @sayzlim made their first contribution in #211
- @xi made their first contribution in #216
- @jgerigmeyer made their first contribution in #215
- @mixalistzikas made their first contribution in #222
- @MysteryBlokHed made their first contribution in #221
- @redneb made their first contribution in #219
Full Changelog: v0.4.0...v0.4.1