@wix/himalaya-cli 0.1155.0 → 0.1157.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.
@@ -324,8 +324,9 @@ Keys are transmitted to the authenticated backend for Branded/Ping custody, not
324
324
  project settings or output. Enter Later to defer and continue building.
325
325
 
326
326
  `notify status` is read-only and needs no key files; `--refresh` checks providers live.
327
- Backend readiness does not prove notification delivery. This setup does not rewrite native
328
- configuration, select a Ping family, build a binary, register a device or send a notification.
327
+ Backend readiness does not prove notification delivery. A successful setup turns push on in
328
+ `config.ts` (the Ping family included; notification routes are derived at every build); it does
329
+ not build a binary, register a device or send a notification.
329
330
  Continue building and publishing app content. For a customer push test, use the
330
331
  `himi dist --signing byo` flow below with existing signing assets and matching native configuration.
331
332
  The default Wix-managed binary does not match the customer's Apple identity. After an uncertain
@@ -353,8 +353,9 @@ Keys are transmitted to the authenticated backend for Branded/Ping custody, not
353
353
  project settings or output. Enter Later to defer and continue building.
354
354
 
355
355
  `notify status` is read-only and needs no key files; `--refresh` checks providers live.
356
- Backend readiness does not prove notification delivery. This setup does not rewrite native
357
- configuration, select a Ping family, build a binary, register a device or send a notification.
356
+ Backend readiness does not prove notification delivery. A successful setup turns push on in
357
+ `config.ts` (the Ping family included; notification routes are derived at every build); it does
358
+ not build a binary, register a device or send a notification.
358
359
  Continue building and publishing app content. For a customer push test, use the
359
360
  `himi dist --signing byo` flow below with existing signing assets and matching native configuration.
360
361
  The default Wix-managed binary does not match the customer's Apple identity. After an uncertain
@@ -45,7 +45,8 @@ himi notify setup --content ./liftgear --target wix \
45
45
  The APNs environment must match the signed app. The Android package must match its
46
46
  Firebase client configuration; it need not equal the iOS bundle ID. Existing public
47
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.
48
+ aligned with the selections. A successful setup turns push on in `config.ts` (see
49
+ [Native push configuration](#native-push-configuration)); the command never builds a binary.
49
50
 
50
51
  To also request Apple signing resources, add `--apple-signing`, `--asc-key-file`,
51
52
  `--asc-key-id`, and `--asc-issuer-id`. The App Store Connect key is separate from the
@@ -82,13 +83,26 @@ repeats the provisioning POST automatically. Inspect status before retrying.
82
83
  After setup, continue normal app development, validation, publish/preview/promote and
83
84
  native distribution. Native push configuration, member authentication, device-token
84
85
  registration and a delivery/tap test are still required; for the test, see
85
- [Send a test notification](#send-a-test-notification). Setup does not enable native
86
- capabilities, choose a Ping family, send notifications or verify phone delivery; the app's
87
- `config.ts` does the first two (see [Native push configuration](#native-push-configuration)).
86
+ [Send a test notification](#send-a-test-notification). Setup turns push on in the app's
87
+ `config.ts` and picks the Ping family there (see
88
+ [Native push configuration](#native-push-configuration)); it does not send notifications or
89
+ verify phone delivery.
88
90
 
89
91
  ## Native push configuration
90
92
 
91
- The app's own `config.ts` turns push on; `himi notify setup` never edits it.
93
+ Once the setup is accepted (`ready`, or still `provisioning`), `himi notify setup` turns push on in
94
+ the app's own `config.ts`, once. Until it is on, the command does not report success.
95
+ It adds only what is missing and leaves what you wrote alone:
96
+
97
+ - a `push` block with no `routes`;
98
+ - `"push"` in `capabilities`;
99
+ - `siteId` in a `WixConsumerAuthProvider({ … })` login that has none.
100
+
101
+ It saves the original to `.himi/notify-setup-backup/`, checks the edit with
102
+ `himi validate --strict`, and puts the original back if the edit introduced an error. What it
103
+ cannot add safely, such as a login that is not a Wix member login or a `push` block of your own,
104
+ it prints as an instruction instead. `--dry-run` shows the planned edit without writing it, and
105
+ a second run changes nothing. The result:
92
106
 
93
107
  ```ts
94
108
  auth: WixConsumerAuthProvider({
@@ -99,15 +113,12 @@ auth: WixConsumerAuthProvider({
99
113
  bootAsVisitor: true,
100
114
  }),
101
115
  capabilities: ["push" /* , … */],
116
+ // Routes are derived at build time from provisioning.json and your screens; see himi validate.
102
117
  push: {
103
118
  registrar: "wix-ping",
104
119
  pingAppName: "WixBrandedWebApp",
105
120
  requestPermissionOnLaunch: true,
106
121
  payloadAdapter: "wix-ping",
107
- routes: [
108
- { match: "my-account/:site/stores/orders/:orderId",
109
- link: "<scheme>://screen/<order-screen>?id={orderId}" },
110
- ],
111
122
  },
112
123
  ```
113
124
 
@@ -119,13 +130,72 @@ push: {
119
130
  Keep `siteId` in `auth` on the site `himi notify setup` configured. A changed `siteId` or
120
131
  `clientId` ships with `himi push` like the rest of the config, and the app picks it up on
121
132
  its next launch; until then iOS stops registering rather than register the old site.
122
- - `routes` turn the Wix links inside notifications into the app's screens, one route per
123
- link shape. A notification whose link matches no route opens the app without navigating.
124
- `himi validate` warns when a route names a screen the app does not declare.
133
+ `himi validate` reports `push-auth-site` when the login is not a member login on that site.
125
134
  - The `push` block ships with `himi push`; changing it needs no new binary. The binary still
126
135
  has to carry the push entitlement: the `branded-lite` shell requests it, and the signing
127
136
  profile must grant `aps-environment` (see the QA build notes below).
128
137
 
138
+ ### Notification routes
139
+
140
+ Routes turn the Wix links inside notifications into the app's screens. When the `push` block
141
+ has no `routes` and `provisioning.json` lists the site's verticals (`himi site analyze --apply`
142
+ writes them), every build (`himi run`, `himi validate` and `himi push`) derives the routes from
143
+ the app's linkable screens: `navigation.linkableScreens`, or every screen when it lists none.
144
+
145
+ Routes are never written into `config.ts`, so adding or renaming a screen needs only the next
146
+ build. A notification gets a route only when its screen is certain: the screen `push.screens`
147
+ names, or else the destination's canonical screen id. Template apps already use those ids. The
148
+ site's verticals decide which destinations `himi validate` expects a screen for.
149
+
150
+ | Destination | Site vertical | Canonical screen | Opens |
151
+ |---|---|---|---|
152
+ | `store.order` | `store` | `himi_order` | the order |
153
+ | `bookings.session` | `bookings` | `himi_bookings` | the member's bookings |
154
+ | `groups.post` | `groups` | `himi_group` | the group |
155
+ | `forum.thread` | `forum` | `himi_forum_post` | the post |
156
+ | `forum.create` | `forum` | `himi_create_post` | the new-post screen |
157
+ | `blog.post` | `blog` | `himi_blog_post` | the post |
158
+ | `members.profile` | `members` | `himi_member` | the member |
159
+ | `events.event` | `events` | `himi_event` | the event |
160
+ | `galleries.shared` | `galleries` | `himi_galleries` | the gallery list |
161
+ | `galleries.album` | `galleries` | `himi_photo_album` | the album |
162
+ | `notifications.list` | `notifications` | `himi_notifications` | the notifications list |
163
+
164
+ For screens with other ids, name them in `push.screens`. It is for authoring only and is never
165
+ served:
166
+
167
+ ```ts
168
+ push: {
169
+ // …
170
+ screens: {
171
+ "store.order": "my_order",
172
+ "bookings.session": "my_bookings",
173
+ "blog.post": { screenId: "article", paramKey: "slug" },
174
+ },
175
+ },
176
+ ```
177
+
178
+ A screen that opens one item gets its id in the param named `id` when its linkable screen
179
+ declares one, otherwise in its only declared param key. When it declares several, name the one it
180
+ reads with `paramKey`. The key has to be one of the screen's `paramKeys`: a shell passes a screen
181
+ only the params its linkable screen declares.
182
+
183
+ `himi validate` lists, without failing even under `--strict`, each destination the site has that
184
+ no screen takes, with the fix, and the verticals Wix sends no member notification links for.
185
+
186
+ To write the table yourself, declare `routes`. A declared table, even an empty one, is used as
187
+ is:
188
+
189
+ ```ts
190
+ routes: [
191
+ { match: "my-account/:site/stores/orders/:orderId",
192
+ link: "<scheme>://screen/<order-screen>?id={orderId}" },
193
+ ],
194
+ ```
195
+
196
+ A notification whose link matches no route opens the app without navigating. `himi validate`
197
+ warns when a declared route names a screen the app does not declare.
198
+
129
199
  **Customer push QA builds use `himi dist --signing byo`.** After publishing an approved
130
200
  release, use a backend and reachable runner source that support the customer-signing flow.
131
201
  Use the app owner's account for both logins and explicitly select the deployed customer target:
@@ -217,6 +217,11 @@ images stay as `static.wixstatic.com` URLs in descriptors — do not vendor
217
217
  literals (`HIMALAYA.md` copy rule).
218
218
  - **Auth** — `wix-consumer`; boot visitor unless a job needs members.
219
219
  `himi docs wix-login-integration`. Members are **site members**.
220
+ - **Notifications** — give each vertical's detail screen its canonical id (`himi_order`,
221
+ `himi_event`, `himi_forum_post`, …) or name it in `push.screens`, and list it in
222
+ `navigation.linkableScreens` with the param it reads. After `himi notify setup`, every build
223
+ derives the notification routes from `provisioning.json` and those screens; `himi validate`
224
+ lists the ones still unrouted. `himi docs push-cli-onboarding`.
220
225
 
221
226
  ### 5. Prove it, then ship
222
227
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1155.0",
3
+ "version": "0.1157.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": [
@@ -67,5 +67,5 @@
67
67
  "artifactId": "himalaya-cli"
68
68
  }
69
69
  },
70
- "falconPackageHash": "fdcb8ee43c58cbb6299d582962eed54297bb7c2152984221e59fccd4"
70
+ "falconPackageHash": "3855653c89440e946466c0cb88bbc773e9933df0411400c4fbd70c04"
71
71
  }