styleproof 3.12.0 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,18 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.13.0] - 2026-07-05
11
+
12
+ ### Added
13
+
14
+ - **`styleproof-diff --json` now carries the inventory verdict.** The structured output
15
+ gained an `inventory` field alongside `coverage` and `determinism` — so all three
16
+ source-of-truth axes are machine-readable, matching the report's certification block.
17
+ Shape: `{ removed, added, unacknowledged, staleAcknowledgements }` (arrays of keys),
18
+ or `null` when no capture carried inventory. Previously the inventory removals were
19
+ printed to stdout but absent from `--json`, forcing a CI that wanted to hard-gate on a
20
+ dropped nav item to grep human prose. Now it can read `inventory.unacknowledged.length`.
21
+
10
22
  ## [3.12.0] - 2026-07-05
11
23
 
12
24
  ### Changed
@@ -306,7 +306,26 @@ const determinismFails = printDeterminismVerdict(determinismVerdict);
306
306
  if (jsonOut)
307
307
  fs.writeFileSync(
308
308
  jsonOut,
309
- JSON.stringify({ counts, surfaces, compared, coverage: coverageVerdict, determinism: determinismVerdict }, null, 2),
309
+ JSON.stringify(
310
+ {
311
+ counts,
312
+ surfaces,
313
+ compared,
314
+ coverage: coverageVerdict,
315
+ determinism: determinismVerdict,
316
+ // The inventory verdict, machine-readable — parallel to coverage/determinism and
317
+ // to the report's certification block. `null` when no capture carried inventory.
318
+ // `unacknowledged` is the gating set: a CI can hard-fail on `unacknowledged.length`.
319
+ inventory: inventoryAudit && {
320
+ removed: inventoryAudit.delta.removed.map((i) => i.key),
321
+ added: inventoryAudit.delta.added.map((i) => i.key),
322
+ unacknowledged: inventoryAudit.unexplained.map((i) => i.key),
323
+ staleAcknowledgements: inventoryAudit.staleAllowances,
324
+ },
325
+ },
326
+ null,
327
+ 2,
328
+ ),
310
329
  );
311
330
 
312
331
  const total = counts.dom + counts.style + counts.state;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "styleproof",
3
- "version": "3.12.0",
3
+ "version": "3.13.0",
4
4
  "description": "Catch every CSS change before it ships — review PRs and certify refactors by the browser's computed styles, not pixels. Works with any styling system.",
5
5
  "keywords": [
6
6
  "playwright",