synthesisui 0.16.40 → 0.16.41

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.
@@ -38,6 +38,10 @@ const SKIP = new Set([
38
38
  "build",
39
39
  "out",
40
40
  "coverage",
41
+ // Storybook's build output. Its bundled manager JS carries Storybook's OWN
42
+ // brand palette, and a census of a component library came back led by
43
+ // #1EA7FD and #FF4785 - Storybook's blue and pink, not the library's.
44
+ "storybook-static",
41
45
  ".turbo",
42
46
  ".vercel",
43
47
  // Our own installed artifacts are the answer, not the problem.
@@ -359,7 +363,20 @@ export async function doctor(opts) {
359
363
  // Nothing of ours here does not mean nothing to measure against. Fall back
360
364
  // to whatever vocabulary the project already declares for itself.
361
365
  if (table.byName.size === 0) {
362
- table = await harvestOwnTokens(scopes.length > 0 ? scopes : [root]);
366
+ /**
367
+ * THEIR VOCABULARY IS REPO-WIDE, even when the READING is scoped.
368
+ *
369
+ * A path argument scopes what gets measured; it must not scope what counts
370
+ * as named. Measured on a real monorepo (dono, 30/07):
371
+ * `doctor apps/web-dashboard` found 28 tokens and missed the 112 that live
372
+ * in `packages/ui` - the shared package that IS that company's design
373
+ * system. Every value the app borrows from it was reported as having no
374
+ * name, which inverts the one sentence this command exists to say.
375
+ *
376
+ * Same rule our own installed system already follows: found from the root,
377
+ * measured in the scope.
378
+ */
379
+ table = await harvestOwnTokens([root]);
363
380
  }
364
381
  const hasSystem = table.byName.size > 0;
365
382
  const reports = [];
@@ -235,7 +235,17 @@ const IDIOM = new Set(["0", "0px", "1px", "9999px", "100%", "50%"]);
235
235
  * spec is the TEST, not drift. Every real project has these; accusing them
236
236
  * buried the report's real findings under 99 phantom lines the first time
237
237
  * the doctor ran on a repo with its own test suite (30/07). */
238
- const IS_FIXTURE = /(\.(spec|test)\.[a-z]+$|__tests__\/|\/fixtures?\/)/;
238
+ /**
239
+ * Files whose colours are not the product's.
240
+ *
241
+ * Tests and fixtures were always here. STORIES joined them after a component
242
+ * library was imported and its census came back describing demo content
243
+ * (dono, 30/07): a story paints a plausible article, a fake avatar, a swatch
244
+ * grid - values chosen to show the component off, never shipped to anyone.
245
+ * Counting them accuses the author of drift they did not write, and crediting
246
+ * them inflates a coverage number nobody can act on.
247
+ */
248
+ const IS_FIXTURE = /(\.(spec|test|stories)\.[a-z]+$|__tests__\/|\/fixtures?\/|(^|\/)\.storybook\/)/;
239
249
  export function scanSource(file, source, table) {
240
250
  if (IS_FIXTURE.test(file)) {
241
251
  const real = scanCore(file, source, table);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synthesisui",
3
- "version": "0.16.40",
3
+ "version": "0.16.41",
4
4
  "description": "Bring SynthesisUI design systems into any project - tokens, typed components, whole pages and an agent-ready CLAUDE.md manifest.",
5
5
  "type": "module",
6
6
  "bin": {