Skip to content

v0.22.0

Latest

Choose a tag to compare

@thevangelist thevangelist released this 03 Jul 17:36

Features

  • Semantic background, text, and accent color tokens (#109). colors.semantic now includes the real computed page surface (background), body text color (text), and the most chromatic hue-distinct brand color (accent). Output contract SCHEMA_VERSION 1.1.0 -> 1.2.0, additive: 1.1.x consumers ignore the new keys.
  • Dominant body font detection (#109). The canonical base font is read off document.body instead of a size/tag heuristic. Typography gains a text context for body-eligible copy in other families; body marks the dominant reading font.
  • GitHub Actions annotations for the drift gate (#110, DEM-83). When --compare fails under GITHUB_ACTIONS=true, the summary and per-token changes render inline on the PR Checks tab via ::error::/::warning:: workflow commands. Purely additive; the exit-code contract is unchanged.

Fixes

  • The drift gate fails closed (#111). A compare failure (unparseable baseline, typo'd path, platform error) used to warn and exit 0, leaving a misconfigured CI gate green forever. It now exits 2 (RUNTIME, "check broke, investigate"). A path-looking argument that is not a file rejects locally instead of being sent to the App as a baseline id, and an unparseable baseline names the file and points at --save-output.

Upgrade note for CI drift gates

Baselines saved by 0.21.x will report typography drift under 0.22.0 with no site change, because body copy splits into body + text contexts (measured on dembrandt.com: drift 25 against threshold 10). Re-approve once after upgrading:

dembrandt <url> --compare <baseline.json> --approve

Internal

  • eslint runs in smoke and release workflows; publish verifies first (#107).
  • README examples use dembrandt.com (#108).