Thanks to visit codestin.com
Credit goes to github.com

Skip to content

chromashift: Update to support wide-gamut color spaces, out of gamut colors#877

Merged
keithamus merged 1 commit intomainfrom
chromashift-update-to-support-wide-gamut-color-spaces-out-of-gamut-colors
Feb 11, 2026
Merged

chromashift: Update to support wide-gamut color spaces, out of gamut colors#877
keithamus merged 1 commit intomainfrom
chromashift-update-to-support-wide-gamut-color-spaces-out-of-gamut-colors

Conversation

@keithamus
Copy link
Member

Chromashift had reasonable support for CSS colors, but missed some of the wide
gamut colors only available in the color() syntax. These are DisplayP3, ProphotoRgb, and Rec2020.

This change started by supporting these colors, but during that work, I realised
we got out-of-gamut color handling totally wrong, because CSS Color 4 & 5
specifically require out-of-gamut values are preserved, gamut mapping at
display time, and interpolated using premultiplied alphas. This means simply
clamping/quantizing channels is far too naive. In addition some spaces (HSL &
HWB) went through Srgb for conversion, which meant they were quantized, which
leads to clipping anyway.

So, this change now presents a significant rework of the color combinations,
color mixing, and color transforms for HSL/HWB, while also introducing the new
color modes. To enumerate:

  • Adds DisplayP3 (wide gamut).
  • Adds ProphotoRgb (wide gamut).
  • Adds Rec2020 (wide gamut).
  • All new wide gamut colors convert to XYZ
  • ColorMix (polar) is now implemented for HWB which was missed before.
  • All ColorMix/ColorMixPolar impls now use premultiplied interpolation, except
    hue channels in polar spaces which understandably do not.
  • All colours which previously clamped (LinearRgb, A98Rgb, Lab, Lch, Oklab,
    Oklch, Hsl, Hwb) now no longer clamp, instead allowing out-of-gamut ranges.
  • In order to maintain out-of-gamut values a bunch of transitive conversions
    have been reworked, going through LinearRgb (which allows out-of-gamut) rather
    than being quantized through Srgb and intrinsically clipped.
  • Added a new Gamut trait which provides the in_gamut() and
    clamp_to_gamut() methods.

@keithamus keithamus enabled auto-merge (squash) February 11, 2026 23:23
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some required steps failed!

…colors

Chromashift had reasonable support for CSS colors, but missed some of the wide
gamut colors only available in the `color()` syntax. These are DisplayP3, ProphotoRgb, and Rec2020.

This change started by supporting these colors, but during that work, I realised
we got out-of-gamut color handling totally wrong, because CSS Color 4 & 5
specifically require out-of-gamut values are preserved, gamut mapping at
display time, and interpolated using premultiplied alphas. This means simply
clamping/quantizing channels is far too naive. In addition some spaces (HSL &
HWB) went through Srgb for conversion, which meant they were quantized, which
leads to clipping anyway.

So, this change now presents a significant rework of the color combinations,
color mixing, and color transforms for HSL/HWB, while also introducing the new
color modes. To enumerate:

- Adds DisplayP3 (wide gamut).
- Adds ProphotoRgb (wide gamut).
- Adds Rec2020 (wide gamut).
- All new wide gamut colors convert to XYZ
- ColorMix (polar) is now implemented for HWB which was missed before.
- All ColorMix/ColorMixPolar impls now use premultiplied interpolation, except
  hue channels in polar spaces which understandably do not.
- All colours which previously clamped (LinearRgb, A98Rgb, Lab, Lch, Oklab,
  Oklch, Hsl, Hwb) now no longer clamp, instead allowing out-of-gamut ranges.
- In order to maintain out-of-gamut values a bunch of transitive conversions
	have been reworked, going through LinearRgb (which allows out-of-gamut) rather
	than being quantized through Srgb and intrinsically clipped.
- Added a new `Gamut` trait which provides the `in_gamut()` and
	`clamp_to_gamut()` methods.
@keithamus keithamus force-pushed the chromashift-update-to-support-wide-gamut-color-spaces-out-of-gamut-colors branch from 38993dc to b7992f5 Compare February 11, 2026 23:28
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All CI jobs have passed. Approving.

@keithamus keithamus merged commit ebb418d into main Feb 11, 2026
17 checks passed
@keithamus keithamus deleted the chromashift-update-to-support-wide-gamut-color-spaces-out-of-gamut-colors branch February 11, 2026 23:36
github-actions bot pushed a commit that referenced this pull request Feb 11, 2026
## [0.0.18] - 2026-02-11

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))

[forcebuild]
@keithamus keithamus mentioned this pull request Feb 11, 2026
github-actions bot pushed a commit that referenced this pull request Feb 11, 2026
## [0.0.18] - 2026-02-11

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
github-actions bot pushed a commit that referenced this pull request Feb 13, 2026
## [0.0.18] - 2026-02-13

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 13, 2026
## [0.0.18] - 2026-02-13

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
github-actions bot pushed a commit that referenced this pull request Feb 14, 2026
## [0.0.18] - 2026-02-14

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 14, 2026
## [0.0.18] - 2026-02-14

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## [0.0.18] - 2026-02-16

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## [0.0.18] - 2026-02-16

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## [0.0.18] - 2026-02-16

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## [0.0.18] - 2026-02-16

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 17, 2026
## [0.0.18] - 2026-02-17

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 18, 2026
## [0.0.18] - 2026-02-18

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
github-actions bot pushed a commit that referenced this pull request Feb 23, 2026
## [0.0.18] - 2026-02-23

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 23, 2026
## [0.0.18] - 2026-02-23

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
github-actions bot pushed a commit that referenced this pull request Feb 23, 2026
## [0.0.18] - 2026-02-23

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 23, 2026
## [0.0.18] - 2026-02-23

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
github-actions bot pushed a commit that referenced this pull request Feb 26, 2026
## [0.0.18] - 2026-02-26

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 26, 2026
## [0.0.18] - 2026-02-26

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
github-actions bot pushed a commit that referenced this pull request Feb 26, 2026
## [0.0.18] - 2026-02-26

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 26, 2026
## [0.0.18] - 2026-02-26

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
github-actions bot pushed a commit that referenced this pull request Feb 27, 2026
## [0.0.18] - 2026-02-27

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Feb 27, 2026
## [0.0.18] - 2026-02-27

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
github-actions bot pushed a commit that referenced this pull request Mar 1, 2026
## [0.0.18] - 2026-03-01

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))
- css_parse: flush trailing semicolons in CursorCompactWriteSink on drop (#908) ([#908](#908))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Mar 1, 2026
## [0.0.18] - 2026-03-01

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))
- css_parse: flush trailing semicolons in CursorCompactWriteSink on drop (#908) ([#908](#908))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
github-actions bot pushed a commit that referenced this pull request Mar 1, 2026
## [0.0.18] - 2026-03-01

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))
- css_ast: Remove StringOrUrl type (#909) ([#909](#909))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))
- css_parse: flush trailing semicolons in CursorCompactWriteSink on drop (#908) ([#908](#908))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Mar 1, 2026
## [0.0.18] - 2026-03-01

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))
- css_ast: Remove StringOrUrl type (#909) ([#909](#909))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))
- css_parse: flush trailing semicolons in CursorCompactWriteSink on drop (#908) ([#908](#908))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
github-actions bot pushed a commit that referenced this pull request Mar 1, 2026
## [0.0.18] - 2026-03-01

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))
- css_ast: Remove StringOrUrl type (#909) ([#909](#909))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))
- css_parse: flush trailing semicolons in CursorCompactWriteSink on drop (#908) ([#908](#908))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))
- csskit_transform: reduce Urls to Strings where possible (#910) ([#910](#910))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))

[forcebuild]
github-actions bot pushed a commit that referenced this pull request Mar 1, 2026
## [0.0.18] - 2026-03-01

### Other Changes
- Chore(deps): update rust crate toml to v1 (#875) ([#875](#875))
- Update css-tokenizer-tests (#887) ([#887](#887))
- Chore(deps): update dependencies (patch) (#900) ([#900](#900))

### Chromashift
- chromashift: Update to support wide-gamut color spaces, out of gamut colors (#877) ([#877](#877))
- chromashift: Implement css-color-4 raytrace gamut mapping (#879) ([#879](#879))
- chromashift: Increase precision of display-p3 to sRGB conversion (#897) ([#897](#897))

### Css_ast
- css_ast: Implement gap rule list (#878) ([#878](#878))
- Regenerate css_ast/src/values from csswg drafts (#881) ([#881](#881))
- css_ast: Implement ColorMix (#889) ([#889](#889))
- css_ast: Boxup more types (#890) ([#890](#890))
- Implement ColorFunctionColor::to_chromashift() and extract shortest_color helper (#898) ([#898](#898))
- Regenerate css_ast/src/values from csswg drafts (#899) ([#899](#899))
- css_ast: Remove StringOrUrl type (#909) ([#909](#909))

### Css_lexer
- css_lexer: Introduce UnicodeRange token kind. (#891) ([#891](#891))
- css_lexer: Add "Bad" tokens. (#892) ([#892](#892))
- css_lexer: Re-encode escapes in strings if they're invalid for unescaping (#894) ([#894](#894))
- css_lexer: Re-encode escapes in idents if they're invalid for unescaping (#896) ([#896](#896))
- css_lexer: Rewrite to use Bytes, memchr (#907) ([#907](#907))

### Css_parse
- css_parse: Add BumpBox type and blanket trait impls for Box types (#888) ([#888](#888))
- css_parse: flush trailing semicolons in CursorCompactWriteSink on drop (#908) ([#908](#908))

### Csskit
- chore(deps): update dependencies (patch) (#882) ([#882](#882))

### Csskit_transform
- csskit_transform: introduce css-minify-tests (#886) ([#886](#886))
- csskit_transform: snapshot css-minify-tests failures instead of asserting count (#893) ([#893](#893))
- csskit_transform: reduce Urls to Strings where possible (#910) ([#910](#910))

### Csskit_vscode
- chore(deps): update dependencies (minor) (#884) ([#884](#884))
- chore(deps): update dependencies to v1.49.0 (minor) (#901) ([#901](#901))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant