@wix/himalaya-cli 0.1540.0 → 0.1541.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.
@@ -287,6 +287,16 @@ unresolved migration finding.
287
287
  - `topbar_coverage_failed`: a source top-bar control has no matching action
288
288
  with a non-empty `onTap.actionId` (exit 1).
289
289
 
290
+ ## `himi one-app validate-design` codes
291
+
292
+ - `invalid_usage`: required options are missing or incompatible (exit 2).
293
+ - `evidence_invalid`: the collected source evidence is missing or invalid (exit 1).
294
+ - `tokens_unreadable`: the token file cannot be read, or `--fix` cannot safely write it (exit 1).
295
+ - `design_mismatch`: a source value differs from the drawn target value (exit 1).
296
+ - `design_unresolved`: `--record` was requested while a design value still needs an
297
+ adapted ledger row; no evidence is written (exit 1).
298
+ - `record_failed`: `--record` could not safely write its private evidence files (exit 1).
299
+
290
300
  ## `himi one-app coverage` codes
291
301
 
292
302
  - `invalid_usage`: the mode or required paths are missing (exit 2).
@@ -151,6 +151,23 @@ Apply these interpretation rules:
151
151
  a feature to account for; they do not alone prove visibility or access for every
152
152
  visitor or member. Resolve those rules separately. This check is specific to this
153
153
  migration workflow; it does not change the behavior of `himi validate`.
154
+ - Before publishing, run the migration-only design check:
155
+ `himi one-app validate-design --evidence-dir .himi/one-app --content .`.
156
+ It resolves the effective source theme with the reader the source app instance
157
+ actually uses, then compares the resolved primary, background and content colors
158
+ and each button's `borderRadius` and `outlineWidth` against the app's `tokens.json`.
159
+ Hex case and shorthand are normalized; an absent button token is compared with the
160
+ value the renderer draws (an outline only on `secondary`; a radius of `radius.pill`,
161
+ else 24), not called a difference. A variant without its own radius must draw the
162
+ source radius at every Button size. A descriptor's per-button `cornerRadius` overrides
163
+ the tokens and is not checked. `--fix` writes the mismatching source values into
164
+ `tokens.json` and pins the dark and high-contrast schemes to what they drew before,
165
+ because a missing scheme falls back to the light value. Rebuild after `--fix`.
166
+ The report names every theme pointer the check did not compare, including typography
167
+ kits and any button `uppercase`, which Himi tokens cannot carry; resolve those
168
+ explicitly rather than treating a pass as full design parity. A deliberate difference
169
+ is waived only by a `design` coverage row with status `adapted` that cites the user's
170
+ instruction and explains the change. This check compares values, not rendered screens.
154
171
  - For each configured Detailed header, import and call the shared
155
172
  `detailedHeader` builder from `@wix/himalaya/screens`. Do not recreate its
156
173
  component tree in the app. Resolve the source fallback and visibility rules
@@ -254,15 +271,17 @@ Run `himi one-app coverage init --evidence-dir .himi/one-app --content .` to
254
271
  create `ONE-APP-COVERAGE.json` from the verified source graph. After edits or a
255
272
  CLI upgrade, run `coverage sync` and review new rows; `coverage check` fails when
256
273
  the file is absent or source requirements have appeared, disappeared or changed.
257
- Rows cover source graph warnings as well as routes and controls. This is an
258
- inventory of migration obligations, not proof that their target actions work.
274
+ Rows cover source graph warnings and app-wide design values as well as routes and
275
+ controls. This is an inventory of migration obligations, not proof that their target
276
+ actions work.
259
277
 
260
278
  Map each row to a target screen and, for interactions or top-bar controls, a
261
- target control. Set its `status` to `supported`, `adapted`, `conditional`, or
279
+ target control. A `design` row is app-wide, so it needs no screen or control: it is
280
+ satisfied by the design check instead. Set its `status` to `supported`, `adapted`, `conditional`, or
262
281
  `unresolved`. For an adaptation, cite the user's instruction and explain the
263
282
  change. Each resolved row needs a `verification` record using the required check
264
283
  ID for its kind (`route-walkthrough`, `visual-comparison`, `behavior-crawl`,
265
- `topbar-control`, `access-state`, or `source-resolution`), a safe relative path to
284
+ `topbar-control`, `access-state`, `design-token`, or `source-resolution`), a safe relative path to
266
285
  a JSON check record, and the exact release payload SHA-256 in `releaseHash`.
267
286
  The JSON file's `checks[]` must contain a passed record with that requirement ID,
268
287
  check ID, release hash, target mapping, and a relative `artifact` path to the
@@ -270,6 +289,25 @@ actual screenshot, test output, or walkthrough record. Multiple rows may share
270
289
  one file, but each needs its own passed check record. Keep private evidence under
271
290
  `.himi/` so it is excluded from the app source archive.
272
291
 
292
+ `design-token` evidence is the one kind nobody writes by hand. Run
293
+ `himi one-app validate-design --evidence-dir .himi/one-app --content . --record
294
+ --release-hash <64-hex-sha256>` after the release is built: it writes
295
+ `.himi/one-app/design-report.json` and `.himi/one-app/design-checks.json`, with one
296
+ passed record per matched or adapted design row, and refuses to write either file when
297
+ the check does not pass or any design row remains unresolved. Point each `design` row's
298
+ `verification` at the checks file. `--fix` writes only to a regular token file inside the
299
+ content directory; read-only validation can inspect an external token path.
300
+ The check also compares each idiom overlay selected by the app's statically readable policy
301
+ against the source value. An active overlay
302
+ that changes it needs a deliberate edit or an adapted ledger row that lists the overlay name in
303
+ `adaptation.idioms` (for example, `["ios"]`); a base-token adaptation alone does not waive it.
304
+ `--fix` repairs base tokens only.
305
+ A row the check cannot compare — an `unresolved` one, such as a button `uppercase` —
306
+ gets a record only once it is resolved as `adapted`, with the user's instruction and an
307
+ explanation. An adaptation counts only while the ledger's `sourceHashes` match the
308
+ collected evidence; after recollection, run `coverage sync` and decide again. `--record`
309
+ refuses `--fix` in the same run: the release hash names the tokens as built.
310
+
273
311
  For example, one entry in the referenced JSON file is:
274
312
 
275
313
  ```json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1540.0",
3
+ "version": "0.1541.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -71,5 +71,5 @@
71
71
  "artifactId": "himalaya-cli"
72
72
  }
73
73
  },
74
- "falconPackageHash": "a1d4dc831a852d303dab5ab6d7d7c2eea37f28a6f0c949a4d2c1ce6f"
74
+ "falconPackageHash": "77f49a0fa384b30d68adfb678fda491e11084dd3f66b62764b113aaf"
75
75
  }