@wix/himalaya-cli 0.1377.0 → 0.1379.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 (178) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/app-info/src/index.d.ts +4 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/ecom/src/extensions.d.ts +113 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/app-info.mjs +2 -1
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap-checkout.mjs +2 -1
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +2 -1
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-ecom.mjs +77 -0
  7. package/dist/cli.mjs +24 -23
  8. package/dist/preview-assets.generated.bin +0 -0
  9. package/guides/importable-sdks.md +1 -1
  10. package/guides/index.json +6 -0
  11. package/guides/sdk-reference.json +128 -2
  12. package/guides/wix-api-usage.md +7 -5
  13. package/guides/wix-pro-gallery.md +145 -0
  14. package/package.json +2 -2
  15. package/templates/beauty-salon/config.ts +23 -0
  16. package/templates/beauty-salon/dev/index.ts +2611 -1
  17. package/templates/beauty-salon/himalaya.content.json +9 -0
  18. package/templates/beauty-salon/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  19. package/templates/beauty-salon/tier5-src/_shared/member-access.ts +14 -0
  20. package/templates/beauty-salon/tier5-src/_shared/member-account-routes.ts +43 -0
  21. package/templates/beauty-salon/tier5-src/_shared/member-address.ts +129 -0
  22. package/templates/beauty-salon/tier5-src/_shared/saved-card.ts +20 -0
  23. package/templates/beauty-salon/tier5-src/himi-branded-lite-address/index.ts +223 -0
  24. package/templates/beauty-salon/tier5-src/himi-branded-lite-addresses/index.ts +202 -0
  25. package/templates/beauty-salon/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  26. package/templates/beauty-salon/tier5-src/himi-store-account/index.ts +17 -0
  27. package/templates/beauty-salon-owner/dev/index.ts +5 -27
  28. package/templates/beauty-salon-owner/tier5-src/_shared/aria-chat.ts +99 -40
  29. package/templates/beauty-salon-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  30. package/templates/beauty-salon-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  31. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  32. package/templates/branded-lite/config.ts +23 -0
  33. package/templates/branded-lite/dev/index.ts +2614 -2
  34. package/templates/branded-lite/himalaya.content.json +9 -0
  35. package/templates/branded-lite/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  36. package/templates/branded-lite/tier5-src/_shared/member-access.ts +14 -0
  37. package/templates/branded-lite/tier5-src/_shared/member-account-routes.ts +43 -0
  38. package/templates/branded-lite/tier5-src/_shared/member-address.ts +129 -0
  39. package/templates/branded-lite/tier5-src/_shared/saved-card.ts +20 -0
  40. package/templates/branded-lite/tier5-src/himi-branded-lite-address/index.ts +223 -0
  41. package/templates/branded-lite/tier5-src/himi-branded-lite-addresses/index.ts +202 -0
  42. package/templates/branded-lite/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  43. package/templates/branded-lite/tier5-src/himi-store-account/index.ts +17 -0
  44. package/templates/community-club/dev/index.ts +3 -1
  45. package/templates/community-club/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  46. package/templates/community-club/tier5-src/_shared/member-access.ts +14 -0
  47. package/templates/community-club/tier5-src/_shared/member-account-routes.ts +43 -0
  48. package/templates/community-club/tier5-src/himi-store-account/index.ts +17 -0
  49. package/templates/community-club-owner/dev/index.ts +5 -27
  50. package/templates/community-club-owner/tier5-src/_shared/aria-chat.ts +99 -40
  51. package/templates/community-club-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  52. package/templates/community-club-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  53. package/templates/community-club-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  54. package/templates/events-meetups/dev/index.ts +3 -1
  55. package/templates/events-meetups/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  56. package/templates/events-meetups/tier5-src/_shared/member-access.ts +14 -0
  57. package/templates/events-meetups/tier5-src/_shared/member-account-routes.ts +43 -0
  58. package/templates/events-meetups/tier5-src/himi-store-account/index.ts +17 -0
  59. package/templates/events-meetups-owner/dev/index.ts +5 -27
  60. package/templates/events-meetups-owner/tier5-src/_shared/aria-chat.ts +99 -40
  61. package/templates/events-meetups-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  62. package/templates/events-meetups-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  63. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  64. package/templates/gym-fitness/config.ts +23 -0
  65. package/templates/gym-fitness/dev/index.ts +2611 -1
  66. package/templates/gym-fitness/himalaya.content.json +9 -0
  67. package/templates/gym-fitness/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  68. package/templates/gym-fitness/tier5-src/_shared/member-access.ts +14 -0
  69. package/templates/gym-fitness/tier5-src/_shared/member-account-routes.ts +43 -0
  70. package/templates/gym-fitness/tier5-src/_shared/member-address.ts +129 -0
  71. package/templates/gym-fitness/tier5-src/_shared/saved-card.ts +20 -0
  72. package/templates/gym-fitness/tier5-src/himi-branded-lite-address/index.ts +223 -0
  73. package/templates/gym-fitness/tier5-src/himi-branded-lite-addresses/index.ts +202 -0
  74. package/templates/gym-fitness/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  75. package/templates/gym-fitness/tier5-src/himi-store-account/index.ts +17 -0
  76. package/templates/gym-fitness-owner/dev/index.ts +5 -27
  77. package/templates/gym-fitness-owner/tier5-src/_shared/aria-chat.ts +99 -40
  78. package/templates/gym-fitness-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  79. package/templates/gym-fitness-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  80. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  81. package/templates/nonprofit-cause/config.ts +7 -0
  82. package/templates/nonprofit-cause/dev/index.ts +762 -1
  83. package/templates/nonprofit-cause/himalaya.content.json +3 -0
  84. package/templates/nonprofit-cause/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  85. package/templates/nonprofit-cause/tier5-src/_shared/member-access.ts +14 -0
  86. package/templates/nonprofit-cause/tier5-src/_shared/member-account-routes.ts +43 -0
  87. package/templates/nonprofit-cause/tier5-src/_shared/saved-card.ts +20 -0
  88. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  89. package/templates/nonprofit-cause/tier5-src/himi-store-account/index.ts +17 -0
  90. package/templates/nonprofit-cause-owner/dev/index.ts +5 -27
  91. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-chat.ts +99 -40
  92. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  93. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  94. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  95. package/templates/owner-lite/dev/index.ts +5 -27
  96. package/templates/owner-lite/tier5-src/_shared/aria-chat.ts +99 -40
  97. package/templates/owner-lite/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  98. package/templates/owner-lite/tier5-src/_shared/aria-widget-view.ts +6 -0
  99. package/templates/owner-lite/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  100. package/templates/podcast-creator/config.ts +7 -0
  101. package/templates/podcast-creator/dev/index.ts +762 -1
  102. package/templates/podcast-creator/himalaya.content.json +3 -0
  103. package/templates/podcast-creator/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  104. package/templates/podcast-creator/tier5-src/_shared/member-access.ts +14 -0
  105. package/templates/podcast-creator/tier5-src/_shared/member-account-routes.ts +43 -0
  106. package/templates/podcast-creator/tier5-src/_shared/saved-card.ts +20 -0
  107. package/templates/podcast-creator/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  108. package/templates/podcast-creator/tier5-src/himi-store-account/index.ts +17 -0
  109. package/templates/podcast-creator-owner/dev/index.ts +5 -27
  110. package/templates/podcast-creator-owner/tier5-src/_shared/aria-chat.ts +99 -40
  111. package/templates/podcast-creator-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  112. package/templates/podcast-creator-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  113. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  114. package/templates/portfolio-creative/config.ts +23 -0
  115. package/templates/portfolio-creative/dev/index.ts +2611 -1
  116. package/templates/portfolio-creative/himalaya.content.json +9 -0
  117. package/templates/portfolio-creative/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  118. package/templates/portfolio-creative/tier5-src/_shared/member-access.ts +14 -0
  119. package/templates/portfolio-creative/tier5-src/_shared/member-account-routes.ts +43 -0
  120. package/templates/portfolio-creative/tier5-src/_shared/member-address.ts +129 -0
  121. package/templates/portfolio-creative/tier5-src/_shared/saved-card.ts +20 -0
  122. package/templates/portfolio-creative/tier5-src/himi-branded-lite-address/index.ts +223 -0
  123. package/templates/portfolio-creative/tier5-src/himi-branded-lite-addresses/index.ts +202 -0
  124. package/templates/portfolio-creative/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  125. package/templates/portfolio-creative/tier5-src/himi-store-account/index.ts +17 -0
  126. package/templates/portfolio-creative-owner/dev/index.ts +5 -27
  127. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-chat.ts +99 -40
  128. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  129. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  130. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  131. package/templates/restaurant/config.ts +23 -0
  132. package/templates/restaurant/dev/index.ts +2611 -1
  133. package/templates/restaurant/himalaya.content.json +9 -0
  134. package/templates/restaurant/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  135. package/templates/restaurant/tier5-src/_shared/member-access.ts +14 -0
  136. package/templates/restaurant/tier5-src/_shared/member-account-routes.ts +43 -0
  137. package/templates/restaurant/tier5-src/_shared/member-address.ts +129 -0
  138. package/templates/restaurant/tier5-src/_shared/saved-card.ts +20 -0
  139. package/templates/restaurant/tier5-src/himi-branded-lite-address/index.ts +223 -0
  140. package/templates/restaurant/tier5-src/himi-branded-lite-addresses/index.ts +202 -0
  141. package/templates/restaurant/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  142. package/templates/restaurant/tier5-src/himi-store-account/index.ts +17 -0
  143. package/templates/restaurant-owner/dev/index.ts +5 -27
  144. package/templates/restaurant-owner/tier5-src/_shared/aria-chat.ts +99 -40
  145. package/templates/restaurant-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  146. package/templates/restaurant-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  147. package/templates/restaurant-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  148. package/templates/retail-store/config.ts +23 -0
  149. package/templates/retail-store/dev/index.ts +2611 -1
  150. package/templates/retail-store/himalaya.content.json +9 -0
  151. package/templates/retail-store/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  152. package/templates/retail-store/tier5-src/_shared/member-access.ts +14 -0
  153. package/templates/retail-store/tier5-src/_shared/member-account-routes.ts +43 -0
  154. package/templates/retail-store/tier5-src/_shared/member-address.ts +129 -0
  155. package/templates/retail-store/tier5-src/_shared/saved-card.ts +20 -0
  156. package/templates/retail-store/tier5-src/himi-branded-lite-address/index.ts +223 -0
  157. package/templates/retail-store/tier5-src/himi-branded-lite-addresses/index.ts +202 -0
  158. package/templates/retail-store/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  159. package/templates/retail-store/tier5-src/himi-store-account/index.ts +17 -0
  160. package/templates/retail-store-owner/dev/index.ts +5 -27
  161. package/templates/retail-store-owner/tier5-src/_shared/aria-chat.ts +99 -40
  162. package/templates/retail-store-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  163. package/templates/retail-store-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  164. package/templates/retail-store-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
  165. package/templates/yoga-studio/config.ts +7 -0
  166. package/templates/yoga-studio/dev/index.ts +762 -1
  167. package/templates/yoga-studio/himalaya.content.json +3 -0
  168. package/templates/yoga-studio/tier5-src/_shared/branded-lite-hosted.ts +3 -0
  169. package/templates/yoga-studio/tier5-src/_shared/member-access.ts +14 -0
  170. package/templates/yoga-studio/tier5-src/_shared/member-account-routes.ts +43 -0
  171. package/templates/yoga-studio/tier5-src/_shared/saved-card.ts +20 -0
  172. package/templates/yoga-studio/tier5-src/himi-branded-lite-wallet/index.ts +217 -0
  173. package/templates/yoga-studio/tier5-src/himi-store-account/index.ts +17 -0
  174. package/templates/yoga-studio-owner/dev/index.ts +5 -27
  175. package/templates/yoga-studio-owner/tier5-src/_shared/aria-chat.ts +99 -40
  176. package/templates/yoga-studio-owner/tier5-src/_shared/aria-widget-oauth.ts +42 -0
  177. package/templates/yoga-studio-owner/tier5-src/_shared/aria-widget-view.ts +6 -0
  178. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-aria/index.ts +12 -1
@@ -210,11 +210,11 @@ else the query 403s. In-repo, `core/dev-server/tier5-bundles-src/_shared/himi-cm
210
210
 
211
211
  ## Declared capability
212
212
 
213
- **Today** a worker touching a vertical / raw wixApi needs **no** `declared_capabilities` entry (the bridge is
214
- installed unconditionally). **Target (RFC 0043 D4):** declare **`wix_api`** — symmetric with `wix_platform`,
215
- enforced at both the SDK-import and native-registry layers. Declaring `wix_api` now is forward-compatible;
216
- once Phase 4 lands it becomes required. (Contrast: the cross-cutting facade `@himalaya/wix-platform` already
217
- requires `"wix_platform"`.)
213
+ **Declare `wix_api`** for any worker that touches a vertical or raw `wixApi`. The web host's runtime denies a
214
+ raw `wixApi.call` from a worker that did not declare it: the call fails with `capability not declared: wix_api`.
215
+ Declare it in both places (the app-level `capabilities` in `config.ts` and the screen's `declaredCapabilities`) —
216
+ see [Native capabilities](./himi-capabilities.md#2-declare--in-two-places). Declaring it is also what the other
217
+ hosts will require. (Contrast: the cross-cutting facade `@himalaya/wix-platform` requires `"wix_platform"`.)
218
218
 
219
219
  ## Errors & best-effort
220
220
 
@@ -237,6 +237,8 @@ don't retry it):
237
237
  | `wix-data` CMS items on a **SITE_MEMBER** collection | member only | — |
238
238
  | Members roster via `queryMembers({ query: { paging: { limit } } })` (offset paging, not `cursorPaging`) | visitor-readable when the site's member directory is public; otherwise member/login-gated | — |
239
239
  | Members Area profile of the *current* signed-in member | member only | — |
240
+ | Member address book ("My Addresses") — `listMemberAddresses`, `createMemberAddress`, `updateMemberAddress`, `deleteMemberAddress`, `setDefaultMemberAddress` (`@himalaya/wix-ecom`) — **verified live 2026-10-18** | member only (a visitor gets `401 missing_required_member_id`). Not on www.wixapis.com: served on `ecom.wix.com`, which only a HimalayaCore **1.4.0+** native runtime reaches; the web bridges refuse it | — |
241
+ | Saved payment methods ("My Wallet") — `listMySavedPaymentMethods`, `markSavedPaymentMethodPrimary`, `deleteSavedPaymentMethod` (`@himalaya/wix-ecom`) — list **verified live 2026-10-18** | member only (a visitor gets `403`). Not on www.wixapis.com: served on the member's **own site** domain, which a 1.4.0+ native runtime routes to from its Wix binding's `siteUrl`; the web bridges refuse it. No card number, ever — last four, BIN, expiry, cardholder | — |
240
242
  | `site-properties/v4` — business name, address, logo, **display currency** | ❌ 403 | ✅ |
241
243
  | Site analytics totals, owner dashboards, CRM contacts | ❌ 403 | ✅ |
242
244
  | Social Groups browse/read (`queryGroups`, `getGroup`) (`@himalaya/wix-groups`) | ✅ visitor-readable, no sign-in needed | — |
@@ -0,0 +1,145 @@
1
+ # Build an app over Wix Pro Gallery
2
+
3
+ How to build a Himalaya app that shows a Wix site's **Pro Gallery** data: the galleries a site owner made in the Wix Editor and the images, videos and text items inside them.
4
+
5
+ Read [the Wix API usage guide](./wix-api-usage.md) first for the `wixApi.call` bridge. This guide adds only what is specific to Pro Gallery.
6
+
7
+ Each fact below names its source:
8
+
9
+ - **[docs]** = a page on dev.wix.com (verified 2026-10-19).
10
+ - **[call]** = a live call on a test site (2026-10-14; the list-limit and `itemLimit` checks were run again on 2026-10-19).
11
+ - **[example]** = a Himalaya example app that renders all 13 Pro Gallery layouts and an expand-mode viewer.
12
+ - **[device]** = a test on an Android emulator (2026-10-15 to 2026-10-18).
13
+
14
+ ## 1. What the API gives you
15
+
16
+ [docs] The Pro Gallery API has these methods and no others:
17
+
18
+ - Galleries: Create, Get, Update, Delete, List.
19
+ - Gallery items: Create, Get, List, Update, Delete, Bulk Delete.
20
+ - Webhooks: Gallery Created / Updated / Deleted and Gallery Item Created / Updated / Deleted.
21
+
22
+ [docs] A gallery item is an image, a video or a text item. It has a title, a description and a link.
23
+
24
+ [call] The gallery response holds items only. It has **no layout or style settings**. Your app picks a layout and stores its own settings (see section 6).
25
+
26
+ ## 2. Read the galleries the site owner made
27
+
28
+ [docs] Wix does **not** recommend that you create galleries with the API. A gallery you create with the API exists only on the site's backend. It does not appear on the live site unless the owner connects it to a gallery component with code. Galleries that the owner adds in the Editor stay in sync both ways. Use the API to read and manage those galleries.
29
+
30
+ [docs] The Gallery Created and Gallery Updated webhooks do not return the gallery's items. Listen to the Gallery Item Created and Gallery Item Updated webhooks for items.
31
+
32
+ ## 3. Read from a worker
33
+
34
+ [call] A **visitor** token can read two endpoints:
35
+
36
+ | Call | Use |
37
+ | --- | --- |
38
+ | `GET /pro-gallery/v2/galleries?limit=10&offset=&itemLimit=` | List galleries. The response has `totalGalleries` and, for each gallery, `name`, `totalItems` and the first `itemLimit` items. |
39
+ | `GET /pro-gallery/v2/galleries/{id}?itemOffset=&itemLimit=` | One gallery. `gallery.totalItems` is the total number of items in the gallery (not a page count). Keep requesting with a growing `itemOffset` while it is below `totalItems`. |
40
+
41
+ [call] Writes need an owner token. A visitor app does not write.
42
+
43
+ [call] Limits you will hit:
44
+
45
+ - `limit` is at most **10**. `limit=11` returns `limit got 11, expected 10 or less`.
46
+ - `itemLimit` must be **1 or more**. `itemLimit=0` returns `itemLimit got 0, expected 1 or more`. To get only the gallery names and counts, ask for `itemLimit=1`.
47
+
48
+ ```ts
49
+ const api = globalThis.himalaya?.wixApi;
50
+ // First page of galleries, 4 preview items each
51
+ const list = await api.call("GET", "/pro-gallery/v2/galleries?limit=10&offset=0&itemLimit=4");
52
+ // One gallery, items 0..99. Keep paging with itemOffset while it is below gallery.totalItems.
53
+ const one = await api.call("GET", `/pro-gallery/v2/galleries/${encodeURIComponent(id)}?itemOffset=0&itemLimit=100`);
54
+ const { totalItems, items } = one.gallery;
55
+ ```
56
+
57
+ [call] The same list call also returns 200 on `/progallery/v2/galleries` (checked 2026-10-19). The example app and this guide use `/pro-gallery/v2/...`.
58
+
59
+ [example] The example app loads a gallery 100 items at a time and lists galleries 10 at a time.
60
+
61
+ ## 4. Item types
62
+
63
+ All fields below come from [call] responses unless marked.
64
+
65
+ | Item `type` | Where the media is | Notes |
66
+ | --- | --- | --- |
67
+ | `IMAGE` | `image.imageInfo`: `id`, `url`, `width`, `height`, `altText` | `url` is a `static.wixstatic.com` media URL. |
68
+ | `VIDEO`, `video.type` = `WIX_MEDIA` | `video.videoInfo`: `url`, `resolutions[]` (mp4 `url`, `width`, `height`, `quality`), `posters[]` | Wix-hosted. The type is `WIX_MEDIA`, not `WIX`. |
69
+ | `VIDEO`, `video.type` = `YOUTUBE` or `VIMEO` | `video.videoInfo.url` only | `resolutions` and `posters` are empty. There is no thumbnail in the response. |
70
+ | `TEXT` | `text.html`, `text.css.backgroundColor` | The text is **HTML**. |
71
+
72
+ Every item can also carry `title`, `description` and a `link` with `type`, `text`, `url` and `target`.
73
+
74
+ Thumbnails for external video:
75
+
76
+ - YouTube: build it from the video id, for example `https://img.youtube.com/vi/<id>/hqdefault.jpg` [example].
77
+ - Vimeo: the response has no thumbnail, and this guide has no source for another way to get one. Show a placeholder.
78
+
79
+ To create an image item you must pass the media id. Without it the call fails with `imageInfo … id must not be empty` [call].
80
+
81
+ ## 5. Resize images
82
+
83
+ [docs] Add a transform to a Wix media URL:
84
+
85
+ ```
86
+ {url}/v1/fit/w_{w},h_{h}/file.{ext}
87
+ ```
88
+
89
+ - `fit` keeps the whole image. `fill` fills the box and crops. `crop` cuts a region (`x_`, `y_`, `w_`, `h_`).
90
+ - `w` and `h` are 1 to 5000.
91
+ - It works only for public media on `static.wixstatic.com`.
92
+ - It never makes an image larger than the original.
93
+
94
+ A `q_` quality parameter (for example `q_85`) also works in practice [example], but the transform page does **not** document it. Leave it out, or treat it as undocumented.
95
+
96
+ Use a small size for tiles (the example app uses 800 px) and a large size for the full-screen viewer (2000 px).
97
+
98
+ ## 6. What the app must decide for itself
99
+
100
+ - **Layout and display settings.** The API returns none, so choose a layout in the app and store the choice on the device [call].
101
+ - **Loves / likes.** No page in the Pro Gallery API index, the gallery object, Get Gallery Item or the Velo backend introduction mentions loves or likes [docs]. An app can keep loves only on the device, so a count is that device's count.
102
+
103
+ ## 7. Layout recipes
104
+
105
+ [example] Himalaya has no masonry or collage component. The example app builds all 13 Pro Gallery layouts (Grid, Masonry, Collage, Thumbnails, Slider, Slideshow, Panorama, Columns, Magic, Bricks, Mix, Alternate, Blog) like this:
106
+
107
+ - **Masonry:** one single-column `Grid` per column. Split the items into the columns in the worker and bind each `Grid` to its own list.
108
+ - **Collage-type layouts:** one row template for each shape of item group, chosen with `FragmentSlot`.
109
+ - **Item ratio:** the example puts each item in one of six buckets by its width-to-height ratio, and picks row templates from the buckets.
110
+
111
+ [example] A screen descriptor over **256 KiB** is rejected on push (`413 item_too_large`). `himi validate` and `himi test` do not check this size. A descriptor that holds all 13 layouts is too big, so the example app has **three gallery screens, one for each layout family**. A layout change to another family replaces the screen with the same gallery and settings.
112
+
113
+ ## 8. Viewer, slideshow, download and video on a device
114
+
115
+ These come from Android emulator tests [device].
116
+
117
+ - **Carousel.** A data-bound `Carousel` (`itemsPath`) is a plain scrolling row on native. It has no paging, no `onChange` and no autoplay. The example viewer and slideshow therefore show **one bound slide**, a swipe is `swipeDismiss`, and the example's slideshow autoplay is a `setTimeout` in the worker, guarded by `typeof setTimeout === "function"` [example]. Not every worker runtime has timers: the [Tier-5 guide](./tier-5-add-a-screen.md) says a worker has no clock and describes `refresh: { intervalMs, action }` and `_poll` for timed work. Autoplay was tested only with the `setTimeout` form, on Android; it was not tested with `refresh` or `_poll`.
118
+ - **Declare the capabilities.** The download and video recipes below call `media_playback` and `photos`, and the worker calls the API with `wix_api`, which the web host denies when undeclared. The example app lists `media_playback`, `photos` and `wix_api` in the app-level `capabilities` in `config.ts`, and in the `declaredCapabilities` of every screen that runs its worker [example]. A call a screen did not declare is denied. See [Native capabilities](./himi-capabilities.md#2-declare--in-two-places).
119
+ - **Download.** On Android, `photos.saveToLibrary` needs a file in the app's own store, not a URL. First call `media_playback.download` for the original image. Then pass the store-relative path to `photos.saveToLibrary`. The handle's `uri` is an absolute `file:` URI, and `saveToLibrary` rejects it.
120
+ - **Wix video.** A Wix MP4 plays in the `Video` component.
121
+ - **YouTube.** A YouTube embed in a `WebView` needs a `Referer` header. Without it the player shows "Error 153".
122
+ - **Vimeo.** A Vimeo embed needs protected-media (DRM) support in the app. This is fixed in the app shell. An app binary built before the fix shows "Rights issue" on Android, so **rebuild the binary** (`himi dist`) with a current CLI and shell (see section 9).
123
+ - **`WebView` URL from `$service:`.** On Android, a `WebView` whose `url` is a `$service:` binding never loads. Feed it from a one-row list and bind `$item.url`.
124
+
125
+ ## 9. Known limitations
126
+
127
+ | Limitation | Status | Source |
128
+ | --- | --- | --- |
129
+ | No loves / likes in the public API. | Platform gap, no fix announced in the sources. Keep loves on the device. | [docs] |
130
+ | Galleries made with the API do not show on the live site. | Wix design, stated in the Pro Gallery introduction. Create galleries in the Editor. | [docs] |
131
+ | Vimeo shows "Rights issue" on Android. | Fixed in the app shell. Still present in binaries built before the fix: rebuild the binary. | [device] |
132
+ | A data-bound `Carousel` does not page. | Open. One-slide viewer is the workaround; autoplay timing needs a worker timer (see section 8). | [device] |
133
+ | A `WebView` bound to a `$service:` URL never loads on Android. | Open. Use the one-row list workaround. | [device] |
134
+ | `photos.saveToLibrary` rejects a URL or an absolute `file:` URI on Android. | Open. Use the `media_playback.download` path in section 8. | [device] |
135
+ | No thumbnail for Vimeo items. | Open. The response has none. | [call] |
136
+ | The `q_` image parameter is undocumented. | Works in practice. Not on the Wix transform page. | [docs], [example] |
137
+
138
+ ## 10. Test data
139
+
140
+ [call] To get test galleries on a site you own:
141
+
142
+ 1. Import media with `POST /site-media/v1/files/import`.
143
+ 2. Create galleries and items with an **owner** token (`wix token --site <msid>`).
144
+
145
+ Remember section 2: a gallery created this way does not show on the live site, but a visitor read through the API returns it, so your app can show it.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1377.0",
3
+ "version": "0.1379.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": "8715e384332676e713233834b2588b1eb2a99e95bb50e9a4cda54340"
74
+ "falconPackageHash": "3725866c8597948e1ebd626694ec8e90e863a247e937b2ccf1cd756a"
75
75
  }
@@ -155,6 +155,29 @@ export default defineApp({
155
155
  "parentScreenId": "himi_orders",
156
156
  "tabId": "profile"
157
157
  },
158
+ {
159
+ "screenId": "himi_addresses",
160
+ "isPublic": false,
161
+ "paramKeys": [],
162
+ "parentScreenId": "himi_account",
163
+ "tabId": "profile"
164
+ },
165
+ {
166
+ "screenId": "himi_address",
167
+ "isPublic": false,
168
+ "paramKeys": [
169
+ "id"
170
+ ],
171
+ "parentScreenId": "himi_addresses",
172
+ "tabId": "profile"
173
+ },
174
+ {
175
+ "screenId": "himi_wallet",
176
+ "isPublic": false,
177
+ "paramKeys": [],
178
+ "parentScreenId": "himi_account",
179
+ "tabId": "profile"
180
+ },
158
181
  {
159
182
  "screenId": "himi_services",
160
183
  "isPublic": true,