@wix/himalaya-cli 0.997.0 → 0.999.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/cli.mjs +579 -347
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/getting-started.md +50 -1
- package/guides/headless-loop.md +10 -0
- package/guides/index.json +6 -0
- package/guides/mobile-ux.md +9 -0
- package/guides/push-cli-onboarding.md +101 -0
- package/package.json +2 -2
|
Binary file
|
|
@@ -247,6 +247,49 @@ the complete decision order and examples.
|
|
|
247
247
|
instead — the mode a CI container can satisfy. Wix employees can use `--dpx`.)
|
|
248
248
|
Everything up to the push runs locally.
|
|
249
249
|
|
|
250
|
+
## Optional push notifications
|
|
251
|
+
|
|
252
|
+
Interactive `himi init my-app` offers **Set up now / Later — continue building** after
|
|
253
|
+
creating the project, with or without a template. Missing credentials or failed setup do not
|
|
254
|
+
fail app creation. Use `--no-push-setup` to defer deliberately. Non-interactive runs,
|
|
255
|
+
`--json`, and `init --yes` do not prompt or configure push unless `--push-setup` is
|
|
256
|
+
explicitly supplied. Never combine `--push-setup` and `--no-push-setup`.
|
|
257
|
+
|
|
258
|
+
Resume when the customer has a Wix site and the required keys:
|
|
259
|
+
|
|
260
|
+
```sh
|
|
261
|
+
himi login --browser --target wix
|
|
262
|
+
wix login
|
|
263
|
+
himi notify setup --content ./my-app --target wix
|
|
264
|
+
himi notify status --content ./my-app --target wix --refresh --json
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Browser login alone is not sufficient for site authorization today.** Setup and status
|
|
268
|
+
also use the Wix CLI account credential; use the same customer account for both logins.
|
|
269
|
+
The CLI verifies app ownership and site access. A new app can be claimed as part of confirmed
|
|
270
|
+
setup. Existing public bindings are reused and the prompts collect missing values.
|
|
271
|
+
|
|
272
|
+
Supply the APNs key by local file path, its Key ID, Apple Team ID, bundle ID and environment;
|
|
273
|
+
align the Android application ID with Firebase. The current wizard requires APNs input and
|
|
274
|
+
has no separate Android-only mode. For automatic Apple signing, choose that option or use
|
|
275
|
+
`--apple-signing` with a separate App Store Connect key file, Key ID and Issuer ID.
|
|
276
|
+
Review the public plan before confirmation; agents use `--yes` only for authorized setup.
|
|
277
|
+
Keys are transmitted to the authenticated backend for Branded/Ping custody, not copied into
|
|
278
|
+
project settings or output. Enter Later to defer and continue building.
|
|
279
|
+
|
|
280
|
+
`notify status` is read-only and needs no key files; `--refresh` checks providers live.
|
|
281
|
+
Backend readiness does not prove notification delivery. This setup does not rewrite native
|
|
282
|
+
configuration, select a Ping family, build a binary, register a device or send a notification.
|
|
283
|
+
Continue building and publishing app content. Customer iOS push testing through `himi dist`
|
|
284
|
+
is blocked until the hosted build service supports customer signing keys; the current Wix-managed QA
|
|
285
|
+
binary cannot test the customer's saved push configuration. After an uncertain setup response, inspect status before
|
|
286
|
+
retrying; the CLI does not automatically repeat provisioning.
|
|
287
|
+
|
|
288
|
+
Full inputs, script flags and status meanings: `himi docs push-cli-onboarding`
|
|
289
|
+
(https://apps.wix.com/_api/himi-serve/docs/push-cli-onboarding.md). The guide is bundled with the public npm package
|
|
290
|
+
and is also served at that public URL. No repository access is required. This is notification setup; `himi push` publishes
|
|
291
|
+
app content. Existing `notify send|tokens|doctor` commands use the local notification server.
|
|
292
|
+
|
|
250
293
|
## Shipping — over the air by default, a binary only for a native delta
|
|
251
294
|
|
|
252
295
|
`himi push` → `himi promote` ships screens, Tier-5 bundles, tokens and app-config in **seconds**,
|
|
@@ -268,10 +311,16 @@ Tier-5 bundle, plus tokens, app-config and the icon — so a fresh install paint
|
|
|
268
311
|
iOS returns an **https install page** whose button carries the `itms-services:` URL (chat clients
|
|
269
312
|
won't linkify that scheme, so the page is what you share); open it in Safari on the device.
|
|
270
313
|
|
|
271
|
-
**
|
|
314
|
+
**Wix-managed QA signing needs no customer signing files.** The pool MINTS a provisioning profile for the app's own
|
|
272
315
|
bundle id per job — there is no profile to pre-provision and nothing to borrow. `--borrow-ios-id
|
|
273
316
|
<bundleId>` still exists as an escape hatch (the binary then installs under *that* id, which is
|
|
274
317
|
fine for QA and wrong for anything else), but it is rarely what you want.
|
|
318
|
+
For customer push credentials, the binary's Apple team, bundle ID and APNs environment must
|
|
319
|
+
match the saved delivery configuration. The current self-serve `himi dist` path uses Wix's
|
|
320
|
+
Apple team and a `com.wix.himi.<app>` bundle ID, so its QA binary cannot test customer iOS
|
|
321
|
+
push. `--signing byo` is not supported. Testing through `himi dist` must wait for the hosted build service
|
|
322
|
+
to support customer signing keys. Notification setup can verify backend configuration now,
|
|
323
|
+
but does not make a matching customer-signed build available.
|
|
275
324
|
|
|
276
325
|
**Android signing needs nothing either.** `--android-signing` defaults to `qa-keystore` — the
|
|
277
326
|
repo's committed QA key, identical on every pool machine, so a new build installs *over* the last
|
package/guides/headless-loop.md
CHANGED
|
@@ -198,6 +198,16 @@ with `himi ux record --content . --platform ios|android --status passed|failed|u
|
|
|
198
198
|
actually drove; an unavailable platform drove nothing, so it takes no checks and needs its reason
|
|
199
199
|
recorded, not guessed.
|
|
200
200
|
|
|
201
|
+
**Record last, right before you push.** A UX record is bound to the exact release content it was
|
|
202
|
+
taken against, and `himi push` refuses a draft whose record describes different content — so
|
|
203
|
+
any edit after recording (a screen, a token, a worker) means recording again. And that only works
|
|
204
|
+
if the build is reproducible: **a worker's initial state must be deterministic.** The build boots
|
|
205
|
+
each worker and hashes its initial state into the release, so a `defineService` state computed
|
|
206
|
+
from `Date.now()`, `new Date()` or `Math.random()` makes every build of unchanged source a
|
|
207
|
+
different release, and no record can ever match the push. `himi validate` warns about it
|
|
208
|
+
(`initial-state`, naming the worker and service); fix it by computing those values in an action
|
|
209
|
+
— for example one the screen's `onAppear` dispatches — instead of in the initial state.
|
|
210
|
+
|
|
201
211
|
Report v2 sharpens all of it: a worker throw carries `in tier5-src/<screen>/index.ts:<line>`
|
|
202
212
|
(mapped through the bundle's sourcemap — fix it without grepping), the ledger lists worker
|
|
203
213
|
functions **no axis ever executed** with their source lines (usually the error branch you
|
package/guides/index.json
CHANGED
|
@@ -279,6 +279,12 @@
|
|
|
279
279
|
"title": "QA builds — an installable IPA/APK + install link",
|
|
280
280
|
"category": "CLI & Loop",
|
|
281
281
|
"file": "qa-builds.md"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"id": "push-cli-onboarding",
|
|
285
|
+
"title": "Push notifications — optional setup and readiness checks",
|
|
286
|
+
"category": "CLI & Loop",
|
|
287
|
+
"file": "push-cli-onboarding.md"
|
|
282
288
|
}
|
|
283
289
|
],
|
|
284
290
|
"componentReferenceFile": "component-reference.json",
|
package/guides/mobile-ux.md
CHANGED
|
@@ -137,6 +137,15 @@ driving a native shell, record the result—not an assumption—with `himi ux re
|
|
|
137
137
|
is required for `passed`/`failed` and names what you actually drove; an unavailable platform drove
|
|
138
138
|
nothing, so it takes no checks and needs a `--reason` instead.
|
|
139
139
|
|
|
140
|
+
Record last, immediately before `himi push`. The record is bound to the exact release content it
|
|
141
|
+
was taken against, and the push refuses a draft whose record describes different content, so any
|
|
142
|
+
edit after recording means recording again. That only works when the build is reproducible, so
|
|
143
|
+
**a worker's boot-time initial state must be deterministic**: the build hashes each worker's
|
|
144
|
+
initial state into the release, and a `defineService` state computed from `Date.now()`,
|
|
145
|
+
`new Date()` or `Math.random()` makes every build of unchanged source a different release that no
|
|
146
|
+
record can match. `himi validate` names such a worker as an `initial-state` warning. Compute those
|
|
147
|
+
values in an action (for example one the screen's `onAppear` dispatches) instead.
|
|
148
|
+
|
|
140
149
|
`himi render --width`/`--device` writes into the same `.himi/ux-audit.json`, appending the width it
|
|
141
150
|
rendered. That is what the width marker below reads first, so rendering the screen at two widths is
|
|
142
151
|
itself the evidence — see the strict audit contract.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Customer push setup with the Himi CLI
|
|
2
|
+
|
|
3
|
+
Create an app with `himi init liftgear`. In a terminal, Himi offers **Set up now** or
|
|
4
|
+
**Later — continue building** after the scaffold is created. A skipped or failed push
|
|
5
|
+
setup does not fail app creation. This works with and without a template.
|
|
6
|
+
|
|
7
|
+
- `--no-push-setup` records a deliberate deferral.
|
|
8
|
+
- Non-interactive runs, `--json`, and `init --yes` do not prompt or provision push.
|
|
9
|
+
- `--push-setup` explicitly requests the setup flow after creation.
|
|
10
|
+
- Resume with `himi notify setup --content ./liftgear --target wix`.
|
|
11
|
+
|
|
12
|
+
## Authentication
|
|
13
|
+
|
|
14
|
+
The existing server requires two different credentials on both setup and status:
|
|
15
|
+
|
|
16
|
+
1. A Himi owner control token, obtained through `himi login --browser --target wix`
|
|
17
|
+
or the supported Wix login flow.
|
|
18
|
+
2. A Wix account credential obtained through the Wix CLI (`wix login`, then Himi
|
|
19
|
+
invokes `wix token`). Use the same customer account as the Himi app owner.
|
|
20
|
+
|
|
21
|
+
**Browser login alone is not sufficient for site authorization today.** The command
|
|
22
|
+
reports `wix_account_token_required` before opening key files or making setup requests
|
|
23
|
+
when the second credential is unavailable. It does not substitute an employee credential
|
|
24
|
+
or bypass site ownership. A browser-only site-authorization exchange is separate backend
|
|
25
|
+
work; this CLI does not implement one. Customers can continue building while setup is deferred.
|
|
26
|
+
|
|
27
|
+
## Configure now
|
|
28
|
+
|
|
29
|
+
Interactive setup asks for missing site/native identifiers and paths to local key files.
|
|
30
|
+
Choose push only, or push plus automatic Apple signing. Enter `Later` at any question
|
|
31
|
+
to defer. The CLI displays the public setup plan before asking for confirmation.
|
|
32
|
+
|
|
33
|
+
For an agent or script, supply the values and approve the displayed plan with `--yes`:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
himi notify setup --content ./liftgear --target wix \
|
|
37
|
+
--site <metaSiteId> \
|
|
38
|
+
--ios-bundle-id com.examplecustomer.liftgear \
|
|
39
|
+
--android-package-name com.examplecustomer.liftgear.android \
|
|
40
|
+
--apns-key-file /private/path/AuthKey.p8 \
|
|
41
|
+
--apns-key-id <keyId> --apple-team-id <teamId> \
|
|
42
|
+
--apns-environment production --yes --json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The APNs environment must match the signed app. The Android package must match its
|
|
46
|
+
Firebase client configuration; it need not equal the iOS bundle ID. Existing public
|
|
47
|
+
bindings come from `provisioning.json`; flags override them. Keep the build configuration
|
|
48
|
+
aligned with the selections. This command does not rewrite `config.ts` or build a binary.
|
|
49
|
+
|
|
50
|
+
To also request Apple signing resources, add `--apple-signing`, `--asc-key-file`,
|
|
51
|
+
`--asc-key-id`, and `--asc-issuer-id`. The App Store Connect key is separate from the
|
|
52
|
+
APNs delivery key. The CLI calls the existing server provisioning flow; it does not
|
|
53
|
+
create certificates directly or select a signing method for `himi dist`.
|
|
54
|
+
|
|
55
|
+
The CLI verifies app ownership and site access before sending keys. A new app claim
|
|
56
|
+
requires the same setup confirmation and is checked again after claiming. The server
|
|
57
|
+
then performs Branded registration, push credential provisioning and Ping verification,
|
|
58
|
+
plus Apple signing if requested.
|
|
59
|
+
|
|
60
|
+
Keys are read from local files and sent to the selected, authenticated serve endpoint.
|
|
61
|
+
Branded/Ping retain the credentials needed for their operations. The CLI does not copy
|
|
62
|
+
keys or key-file paths into project configuration, onboarding records, or output.
|
|
63
|
+
Public selections and deferral progress live under `.himi/push-onboarding.json`, excluded
|
|
64
|
+
from published source archives. A local record never proves backend readiness.
|
|
65
|
+
|
|
66
|
+
## Read status
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
himi notify status --content ./liftgear --target wix --json
|
|
70
|
+
himi notify status --content ./liftgear --target wix --refresh --json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Status is read-only and needs no Apple key files. `--refresh` requests live provider
|
|
74
|
+
checks. The output separates the saved setup state, backend configuration readiness,
|
|
75
|
+
Apple signing readiness, native build, Himi routing and device delivery. A server that
|
|
76
|
+
cannot provide live verification is reported as `live_verification_unavailable`.
|
|
77
|
+
|
|
78
|
+
A setup response of HTTP 202 may mean `needs_attention`, not a running background job.
|
|
79
|
+
After a timeout the CLI reads status once and reports an uncertain submission; it never
|
|
80
|
+
repeats the provisioning POST automatically. Inspect status before retrying.
|
|
81
|
+
|
|
82
|
+
After setup, continue normal app development, validation, publish/preview/promote and
|
|
83
|
+
native distribution. Native push configuration, member authentication, device-token
|
|
84
|
+
registration and a delivery/tap test are still required. This command does not enable
|
|
85
|
+
native capabilities, choose a Ping family, send notifications or verify phone delivery.
|
|
86
|
+
|
|
87
|
+
**Customer iOS push testing through `himi dist` is not available yet.** The current
|
|
88
|
+
Wix-managed QA build uses Wix's Apple team and a `com.wix.himi.<app>` bundle ID, which
|
|
89
|
+
do not match the customer's saved push configuration. `--signing byo` is unsupported.
|
|
90
|
+
Testing through `himi dist` must wait for the hosted build service to support customer signing keys.
|
|
91
|
+
Backend setup and verification can proceed now; they do not prove device delivery.
|
|
92
|
+
|
|
93
|
+
`himi notify send|tokens|doctor` keep their existing local admin-server behavior; they
|
|
94
|
+
are separate from the backend `setup|status` commands.
|
|
95
|
+
|
|
96
|
+
If ownership cannot be verified, stderr includes a `push_ownership_check_failed` event
|
|
97
|
+
with the failing check (`list_apps` or `app_role`), endpoint path and HTTP status.
|
|
98
|
+
It excludes credentials, query parameters and response bodies. A `404` does not prove
|
|
99
|
+
that the app is missing: serve can hide a route when its origin guard rejects the request.
|
|
100
|
+
The CLI sends the pinned issuer's `Origin` on the collaborator read; the server still
|
|
101
|
+
validates the owner token and checks the app's ownership record.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.999.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": [
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"artifactId": "himalaya-cli"
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
|
-
"falconPackageHash": "
|
|
68
|
+
"falconPackageHash": "de163f6ec65faccc12fd53126da8881f844db6397df503835561454a"
|
|
69
69
|
}
|