@wix/himalaya-cli 0.850.0 → 0.851.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/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/local-db/src/index.d.ts +23 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/sdk-types/src/capabilities.generated.d.ts +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/secure-storage/src/index.d.ts +23 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/audio-record.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calendar.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calls.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/contacts.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/local-db.mjs +10 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/location.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/motion.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/photos.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdk-types.mjs +2 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/secure-storage.mjs +10 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/tasks.mjs +2 -2
- package/dist/cli.mjs +3466 -3274
- package/guides/mobile-ux.md +45 -32
- package/guides/sdk-reference.json +12 -0
- package/package.json +2 -2
package/guides/mobile-ux.md
CHANGED
|
@@ -152,43 +152,56 @@ The fourth marker, **width evidence**, is graded by **content, not by phrase**
|
|
|
152
152
|
fact about what you rendered rather than a string, so there is nothing to paste. Satisfy it either
|
|
153
153
|
way:
|
|
154
154
|
|
|
155
|
-
- Name two pixel widths spanning compact → wider,
|
|
156
|
-
they read as one statement: one **below 600px** (compact)
|
|
157
|
-
or expanded).
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
`
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
`
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
155
|
+
- Name two pixel widths spanning compact → wider, **each spelled as a width on itself**, within
|
|
156
|
+
about 400 characters of each other so they read as one statement: one **below 600px** (compact)
|
|
157
|
+
and one **at 600px or wider** (medium or expanded). A number is spelled as a width when it
|
|
158
|
+
carries a **unit** — `320px`, `320 px`, `320pt`, `320dp`, `320 pixels`, `320 wide` — or sits in a
|
|
159
|
+
**screenshot filename** — `home-320.png`, `home-834-dark.png`, `home-390x844.png`. That is the
|
|
160
|
+
whole rule; nothing is inferred from the words around the number. So
|
|
161
|
+
`Rendered 320px and 834px`, `Captured 834px down to 320px`, `Widths: 320px, 390px, 834px` and
|
|
162
|
+
`Rendered 320, 390 and 834 (home-320.png, home-390.png, home-834.png)` all satisfy it, and a
|
|
163
|
+
single width does not.
|
|
164
|
+
|
|
165
|
+
What this proves is that you rendered more than one size class, not which wider one: 600px is the
|
|
166
|
+
`medium` breakpoint and `expanded` begins at 840px, so 834 counts as wider without being expanded.
|
|
167
|
+
The two bands are contiguous, so every width you actually render counts as one or the other:
|
|
168
|
+
`pixel` (412) and `iphone-max` (430) from `himi render --device` are compact.
|
|
169
|
+
|
|
170
|
+
**A bare number never counts, however the sentence labels it.** `Widths: 320, 390, 834`,
|
|
171
|
+
`Rendered 320, 390 and 834 widths` and `Rendered compact (320) and expanded (834)` all name no
|
|
172
|
+
unit on any number, so none of them is width evidence — add one unit per width and they are. In
|
|
173
|
+
particular the word **`width` is a label, not a unit**: it says what you decided the number means,
|
|
174
|
+
so `320 widths` does nothing that `320` does not. `pixels` and `wide` *are* units and do count —
|
|
175
|
+
`320 pixels`, `320 wide`, `320 pixel widths`. This
|
|
176
|
+
is deliberate: reading the prose around a number is exactly what used to reject honest documents
|
|
177
|
+
(a comma and the word `illustration` were enough), so the gate no longer does it. The cost of
|
|
178
|
+
bare digits not counting is one character each; the cost of guessing from prose was a rejected
|
|
179
|
+
render you could not diagnose.
|
|
180
|
+
|
|
181
|
+
Three things still disqualify a number that *is* spelled as a width, and all three are about the
|
|
182
|
+
**axis** rather than about the subject: a **height or type/spacing size** (`Row height 320px`,
|
|
183
|
+
`Font size: 512px`, `844 tall`, `844 high`), the **second half of a `NxM` pair** (in
|
|
184
|
+
`home-390x844.png` the width is 390 and 844 is the height, so one portrait screenshot is one
|
|
185
|
+
width, not two), and a number **outside 200–4000px** (`64px` chips and a `9000px` export canvas
|
|
186
|
+
are not viewports). A number in the **1990–2099 range** needs its unit rather than a filename:
|
|
187
|
+
`2048px` and `2048 pixels` are taken at their word, while `home-2048.png` cannot be told apart
|
|
188
|
+
from `shot-2026.png`, so spell the unit when your render really is that wide.
|
|
189
|
+
|
|
190
|
+
**Accepted, deliberately:** an asset dimension written with a unit or in a filename now counts —
|
|
191
|
+
`Hero image is 320px wide; the banner is 1024px wide` and `Icon sizes: icon-320.png,
|
|
192
|
+
icon-834.png` pass. The marker is permissive there on purpose. A gate that rejects real work
|
|
193
|
+
costs build loops; a permissive one costs a line of prose, and a card or drawer width always
|
|
194
|
+
passed anyway.
|
|
187
195
|
- Or keep the scaffold's own sentence, `compact (320/360)` followed later by `expanded`, which is
|
|
188
196
|
still accepted as-is. The two **may wrap across lines** — the check is not line-based — but
|
|
189
197
|
`expanded` must follow within about 400 characters, so keep them in the same sentence or bullet
|
|
190
198
|
rather than in separate sections.
|
|
191
199
|
|
|
200
|
+
When the marker fails, the error names **which** of the four things went wrong — no compact width,
|
|
201
|
+
no wider width, two widths too far apart to be one statement, or no number spelled as a width — and
|
|
202
|
+
says so alongside the height-axis rule if that is what discarded your numbers. Read the branch it
|
|
203
|
+
gave you rather than pasting the example: the example is a form that works, not the only one.
|
|
204
|
+
|
|
192
205
|
A `MOBILE-UX.md` that is **absent or empty** is not four missing markers. `himi ux audit` reports it
|
|
193
206
|
once, as a missing contract; `himi validate` stays silent about it entirely. Asking for the document
|
|
194
207
|
itself is the audit's job — most apps never adopt this contract, and a warning on every one of them
|
|
@@ -1509,6 +1509,12 @@
|
|
|
1509
1509
|
"source": "core/sdk/local-db/src/index.ts",
|
|
1510
1510
|
"description": "Tier-5 typed binding to the platform's local-database capability: a per-entity on-device store (EntityStore) + an offline WriteQueue, so a worker bundle can persist and query real data on device.",
|
|
1511
1511
|
"api": [
|
|
1512
|
+
{
|
|
1513
|
+
"name": "availability",
|
|
1514
|
+
"kind": "function",
|
|
1515
|
+
"jsdoc": "/**\n * Whether this host actually backs the local database — the probe #2502 asked for.\n *\n * Without it, every read on a host that does not serve the capability is\n * INDISTINGUISHABLE from a successful read of an empty collection: `getAll` coalesces a\n * missing answer to `[]` and `get` to `null` just below, so an author sees \"0 rows\" and\n * cannot tell whether the store is empty or absent. That ambiguity cost three QA slots on\n * one run; one of them shipped a whole in-memory fallback that turned out to be dead code.\n *\n * `full` on iOS / Android / web and in the headless `himi render` host; `degraded` where the\n * store works but does not survive a reload (web without IndexedDB); `unavailable` when the\n * host does not back it. Branch on this rather than inferring absence from an empty result.\n *\n * NEVER THROWS, like `@himalaya/pdf`'s `isAvailable`, and that is load-bearing rather than\n * politeness: the hosts this probe exists to detect are exactly the ones that REJECT it.\n * Both native dispatchers throw on an unregistered id (`ActionError.unknown`), so on any app\n * binary shipped before this verb existed — or a shell that never calls\n * `LocalDatabaseCapability.register` — a rejecting probe would put an unhandled rejection in\n * the worker's `load()` of every author who wrote the documented\n * `if (await availability() === \"full\")`. A refusal to answer IS the answer here.\n */",
|
|
1516
|
+
"decl": "export async function availability(): Promise<Availability>;"
|
|
1517
|
+
},
|
|
1512
1518
|
{
|
|
1513
1519
|
"name": "DbEntity",
|
|
1514
1520
|
"kind": "interface",
|
|
@@ -2613,6 +2619,12 @@
|
|
|
2613
2619
|
"source": "core/sdk/secure-storage/src/index.ts",
|
|
2614
2620
|
"description": "Tier-5 typed binding to the platform's secure-storage capability.",
|
|
2615
2621
|
"api": [
|
|
2622
|
+
{
|
|
2623
|
+
"name": "availability",
|
|
2624
|
+
"kind": "function",
|
|
2625
|
+
"jsdoc": "/**\n * Whether this host actually backs secure storage — the probe #2502 asked for.\n *\n * Without it, `read` on a host that does not serve the capability is INDISTINGUISHABLE\n * from a key that was never written: both answer `null` (see `read` below, which coalesces\n * a missing answer). An author cannot tell \"unsupported here\" from \"genuinely empty\", which\n * is exactly what made a silent no-op look like a working-but-empty keychain.\n *\n * `full` on iOS (Keychain) / Android (Keystore-AES) / web and in the headless\n * `himi render` host; `unavailable` when the host does not back it — which on web includes\n * a context with no IndexedDB (a sandboxed iframe, a storage-blocked third-party frame),\n * where every `read`/`write` would reject.\n *\n * NEVER THROWS, like `@himalaya/pdf`'s `isAvailable`, and that is load-bearing rather than\n * politeness: the hosts this probe exists to detect are exactly the ones that REJECT it.\n * Both native dispatchers throw on an unregistered id (`ActionError.unknown`), so on any app\n * binary shipped before this verb existed — or a shell that never calls\n * `SecureStorageCapability.register` — a rejecting probe would put an unhandled rejection in\n * the worker's `load()` of every author who wrote the documented\n * `if (await availability() === \"full\")`. A refusal to answer IS the answer here.\n */",
|
|
2626
|
+
"decl": "export async function availability(): Promise<Availability>;"
|
|
2627
|
+
},
|
|
2616
2628
|
{
|
|
2617
2629
|
"name": "AccessControl",
|
|
2618
2630
|
"kind": "type",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.851.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": [
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"artifactId": "himalaya-cli"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
-
"falconPackageHash": "
|
|
66
|
+
"falconPackageHash": "2c72306bbd7422cc43f4b015ca58fa3faa1b69328012a00c4294baff"
|
|
67
67
|
}
|