@wix/himalaya-cli 0.840.0 → 0.842.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.
Files changed (24) hide show
  1. package/guides/cms-collections.md +2 -2
  2. package/package.json +2 -2
  3. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  4. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  5. package/templates/community-club-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  6. package/templates/community-club-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  7. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  8. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  9. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  10. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  11. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  12. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  13. package/templates/owner-lite/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  14. package/templates/owner-lite/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  15. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  16. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  17. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  18. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  19. package/templates/restaurant-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  20. package/templates/restaurant-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  21. package/templates/retail-store-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  22. package/templates/retail-store-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
  23. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-aria/index.ts +29 -1
  24. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-aria-history/index.ts +10 -1
@@ -86,7 +86,7 @@ schema for humans and `himi validate`, but does not grant or enable that read.
86
86
 
87
87
  `himi cms query --all` labels every collection on the site `owned`, `adopted`, or
88
88
  `foreign`, so the blast radius is visible before you run anything. (Without `--all`
89
- it reads only the ids you declare — see [below](#himi-cms-query--read-only).)
89
+ it reads only the ids you declare — see [below](#himi-cms-query-read-only).)
90
90
 
91
91
  ### `site analyze --apply` adopts, it never claims
92
92
 
@@ -287,7 +287,7 @@ himi push --draft # ship the content package; does NOT touch th
287
287
  declares and points you back here — provisioning a backend as a side effect of
288
288
  publishing a release is exactly the surprise this design avoids.
289
289
 
290
- ### `himi cms query` — read-only
290
+ ### `himi cms query`: read-only
291
291
 
292
292
  **By default it reads only the ids you declared.** One targeted `GET` per declared
293
293
  collection, and the report says so with `siteScanned: false`. You get item counts and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.840.0",
3
+ "version": "0.842.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": "3cc7ad5aafc738871bc07293ce79f445509b78f308bb192a30fb8a3a"
66
+ "falconPackageHash": "b45ead5f2fb4dcd64fd4c31516607200700f0f8e9a1926efb5d6a6e2"
67
67
  }
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };
@@ -186,5 +186,33 @@ const svc = defineService<AriaChatState, {
186
186
  },
187
187
  });
188
188
 
189
- svc.load();
189
+ // NO module-scope `svc.load()`, deliberately — the descriptor's `onAppear` is the
190
+ // only entry point, and on Android the self-kick did not merely duplicate it, it
191
+ // DISABLED the screen.
192
+ //
193
+ // `load` opens by creating a conversation, so a self-kick puts a `wixApi.call`
194
+ // inside the bundle's own evaluation — and a bridge call made during
195
+ // `worker.boot(bundle)` stalls on the Android WebView. The host completes it
196
+ // (`bridge_wix_call … ok=true` is logged between `bundle eval done` and
197
+ // `services=[…]`) but the JS promise never settles. `createOnce` then caches that
198
+ // promise as the per-site create latch, so the `onAppear` load — dispatched
199
+ // correctly, and fine on its own — awaits the same dead promise and never returns
200
+ // either. Result on Android: no greeting, no prompt chips, no conversation, and a
201
+ // Send that does nothing, for the life of the screen. Nothing reports it, because
202
+ // a pending dispatch has no timeout: an action that never settles is
203
+ // indistinguishable from one still running (#2518).
204
+ //
205
+ // That stall is a known Android defect, not a new one. `WebViewJSWorker` already
206
+ // prepends per-screen input into the bundle's own evaluate rather than assigning it
207
+ // separately, and says why: "the bundle's first wixApi.call could stall". Aria is
208
+ // simply the first owner-lite screen to call the network at module scope and so the
209
+ // first to meet it head-on. Fixing the stall is a core-runtime change tracked
210
+ // separately; not calling the network before the screen exists is right regardless.
211
+ //
212
+ // The self-kick was never load-bearing. Both hosts queue a `tier5.*` action
213
+ // dispatched before the worker is up — `Tier5WorkerSession.invoke` on Android and
214
+ // `HimalayaScreenHost.dispatch` on iOS — and both say in as many words that the
215
+ // self-kick is what made `onAppear` only LOOK like it worked. It also cost a
216
+ // second conversation-create attempt per open and minted the greeting with
217
+ // fallback copy, since the copy pack only arrives with the onAppear params.
190
218
  export { svc };
@@ -38,5 +38,14 @@ const svc = defineService<AriaHistoryState, {
38
38
  },
39
39
  });
40
40
 
41
- svc.load();
41
+ // NO module-scope `svc.load()` — same reason as the chat adapter next door, which
42
+ // carries the full explanation. This `load` opens with `getConversations`, so a
43
+ // self-kick makes a bridge call inside the bundle's own evaluation, and such a call
44
+ // stalls on the Android WebView (#2518).
45
+ //
46
+ // It is less damaging here than on the chat screen: this load has no create latch
47
+ // for a dead promise to poison, so the `onAppear` load issues its own request and
48
+ // the list still fills. What the self-kick leaves behind is a dispatch that never
49
+ // settles — `pendingDispatches` has no timeout, so it is held for the life of the
50
+ // worker, on every open. Not worth keeping for a call whose result nothing reads.
42
51
  export { svc };