# What changed in @terrazzo/token-tools

> 31 changes in @terrazzo/token-tools 2 from its official release notes, upgrade guides and advisories: 8 breaking, 1 deprecations, 4 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/@terrazzo/token-tools/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @terrazzo/token-tools 2

### Breaking changes

- The CSS plugin now inherits alphabetize from options, a minor breaking change. (2.3.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.3.0)
- Border, Transition, and Typography tokens now have stricter requirements that all properties be present; lint rules can be adjusted individually to opt out. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Color parsing now uses Color.js instead of Culori, changing some color utility outputs and providing more performant, CSS spec-compliant color science. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- DTCG 2nd Editors draft validation now errors by default; colors require components, dimensions and durations require object notation, and typography requires its minimum properties. Lint settings can opt out. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Plugin lint runs once on the merged set rather than on individual files; plugins using src must read from sources and match token source filenames. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- The first parameter is now a Momoa node, the second is a context object, and transforms must return a Momoa node rather than raw JSON. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Border, Transition, and Typography tokens now have stricter requirements that all properties be present; lint rules can be adjusted individually to opt out. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Border, Transition, and Typography tokens now have stricter requirements that all properties be present; lint rules can be adjusted individually to opt out. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)

### Deprecations

- This lint rule is soft-deprecated in favor of core/valid-typography. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)

### New APIs and options

- A dependency-free package provides types for generated JS plugin declarations, so consumers of published token packages do not need to install @terrazzo/parser. (2.4.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.4.0)
- Added the omitTypographyShorthand option to generateShorthand(). (2.2.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.2.0)
- JSON $refs now have first-class support for both remote and local references, and DTCG aliases are transformed to JSON $refs so the forms are interchangeable. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Typography shorthand was added, alongside improvements to the Sass plugin. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)

### Behavior and default changes

- Shadow token types and CSS processing now allow lists of aliases. (2.9.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.9.0)
- The resolver API now detects orthogonality, except for $extends. (2.4.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.4.0)
- The build() plugin hook now executes in parallel with other build() hooks. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- The buildEnd() plugin hook now executes in parallel with other buildEnd() hooks. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- This value may be undefined for tokens created dynamically via $ref. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)

### Tooling

- Validation is now implemented as lint rules, so token validation can be configured individually and extended. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)

### Fixes and other changes

- CSS transformation resolves an aliased typography token to a complete sub-token instead of a mode-less stub, preventing crashes during recursive transformation. (2.3.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.3.0)
- Zero-valued dimension tokens preserve their units rather than serializing as bare `0`, keeping values such as `0px` and `0rem` type-compatible in CSS math functions. (2.3.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.3.0)
- Rounds CSS gradient stop positions to 1/1000, dropping IEEE-754 artefacts such as 55.00000000000001%. (2.2.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.2.0)
- Improves handling of aliases when the primitive or primary token exists but the aliases do not, preventing tokens from being dropped in plugins. (2.0.3) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.3)
- Fixes legacy modeSelectors resolving to the default alias instead of the requested mode. (2.0.2) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.2)
- Fixes a parser runtime error when $extensions does not have a mode object. (2.0.1) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.1)
- Fixed an issue where partial aliases in border tokens could sometimes refer to themselves. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Fixed border tokens not cascading correctly across modes. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Group types now include the $deprecated property. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Fixed false unused warnings for lint rules that are turned off. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Fixed partialAliasOf handling for strokeStyle. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
- Extended typography property CSS generation was improved. (2.0.0) — [release notes](https://github.com/terrazzoapp/terrazzo/releases/tag/%40terrazzo/token-tools%402.0.0)
