@wix/himalaya-cli 0.1528.0 → 0.1530.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/bookings-v2/src/index.d.ts +24 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/ecom/src/extensions.d.ts +144 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/restaurants/src/extensions.d.ts +93 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap-checkout.mjs +27 -5
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap.mjs +19 -3
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +27 -5
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-ecom.mjs +58 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-restaurants.mjs +23 -0
- package/dist/cli.mjs +3110 -1993
- package/dist/preview-assets.generated.bin +0 -0
- package/fixtures/wix-canned.json +83 -0
- package/guides/hhp.md +39 -0
- package/guides/himi-json-output.md +22 -1
- package/guides/release-notes.md +17 -0
- package/guides/templates.md +11 -1
- package/guides/tier-5-add-a-screen.md +4 -0
- package/package.json +2 -2
- package/templates/beauty-salon/config.ts +12 -1
- package/templates/beauty-salon/dev/index.ts +1767 -2698
- package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/beauty-salon/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/beauty-salon/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/beauty-salon/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/beauty-salon/tier5-src/_shared/restaurant-ordering.ts +201 -0
- package/templates/beauty-salon/tier5-src/himi-booking-bookings/index.ts +385 -74
- package/templates/beauty-salon/tier5-src/himi-branded-lite-cart/index.ts +6 -0
- package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/beauty-salon-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/branded-lite/config.ts +12 -1
- package/templates/branded-lite/dev/index.ts +4955 -4801
- package/templates/branded-lite/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/branded-lite/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/branded-lite/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/branded-lite/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/branded-lite/tier5-src/_shared/restaurant-ordering.ts +201 -0
- package/templates/branded-lite/tier5-src/himi-booking-bookings/index.ts +385 -74
- package/templates/branded-lite/tier5-src/himi-branded-lite-cart/index.ts +6 -0
- package/templates/branded-lite/tier5-src/himi-branded-lite-menu-item/index.ts +144 -77
- package/templates/branded-lite/tier5-src/himi-branded-lite-menus/index.ts +16 -5
- package/templates/branded-lite/tier5-src/himi-branded-lite-reservations/index.ts +1 -1
- package/templates/branded-lite/tier5-src/wix-spaces-food-order-detail/index.ts +76 -14
- package/templates/branded-lite/tier5-src/wix-spaces-food-orders/index.ts +807 -55
- package/templates/community-club/config.ts +12 -1
- package/templates/community-club/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/community-club/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/community-club/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/community-club/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/community-club-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/events-meetups/config.ts +12 -1
- package/templates/events-meetups/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/events-meetups/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/events-meetups/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/events-meetups/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/events-meetups-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/gym-fitness/config.ts +12 -1
- package/templates/gym-fitness/dev/index.ts +1753 -2697
- package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/gym-fitness/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/gym-fitness/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/gym-fitness/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/gym-fitness/tier5-src/_shared/restaurant-ordering.ts +201 -0
- package/templates/gym-fitness/tier5-src/himi-booking-bookings/index.ts +385 -74
- package/templates/gym-fitness/tier5-src/himi-branded-lite-cart/index.ts +6 -0
- package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/gym-fitness-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/nonprofit-cause/config.ts +12 -1
- package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/nonprofit-cause/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/nonprofit-cause/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/nonprofit-cause/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/nonprofit-cause-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/owner-lite/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/owner-lite/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/podcast-creator/config.ts +12 -1
- package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/podcast-creator/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/podcast-creator/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/podcast-creator/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/podcast-creator-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/portfolio-creative/config.ts +12 -1
- package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/portfolio-creative/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/portfolio-creative/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/portfolio-creative/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/portfolio-creative/tier5-src/_shared/restaurant-ordering.ts +201 -0
- package/templates/portfolio-creative/tier5-src/himi-branded-lite-cart/index.ts +6 -0
- package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/portfolio-creative-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/restaurant/README.md +1 -1
- package/templates/restaurant/config.ts +12 -1
- package/templates/restaurant/dev/index.ts +1373 -275
- package/templates/restaurant/himalaya.template.json +2 -1
- package/templates/restaurant/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/restaurant/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/restaurant/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/restaurant/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/restaurant/tier5-src/_shared/member-orders.ts +8 -0
- package/templates/restaurant/tier5-src/_shared/restaurant-ordering.ts +201 -0
- package/templates/restaurant/tier5-src/himi-branded-lite-menu-item/index.ts +144 -77
- package/templates/restaurant/tier5-src/himi-branded-lite-menus/index.ts +16 -5
- package/templates/restaurant/tier5-src/wix-spaces-food-order-detail/index.ts +76 -14
- package/templates/restaurant/tier5-src/wix-spaces-food-orders/index.ts +807 -55
- package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/restaurant-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/retail-store/config.ts +12 -1
- package/templates/retail-store/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/retail-store/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/retail-store/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/retail-store/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/retail-store/tier5-src/_shared/restaurant-ordering.ts +201 -0
- package/templates/retail-store/tier5-src/himi-branded-lite-cart/index.ts +6 -0
- package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/retail-store-owner/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/yoga-studio/config.ts +12 -1
- package/templates/yoga-studio/dev/index.ts +1755 -2699
- package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/yoga-studio/tier5-src/_shared/engine-intl.ts +18 -0
- package/templates/yoga-studio/tier5-src/_shared/himi-restaurants.ts +12 -5
- package/templates/yoga-studio/tier5-src/_shared/member-bookings.ts +50 -7
- package/templates/yoga-studio/tier5-src/himi-booking-bookings/index.ts +385 -74
- package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +23 -5
- package/templates/yoga-studio-owner/tier5-src/_shared/engine-intl.ts +18 -0
|
Binary file
|
package/fixtures/wix-canned.json
CHANGED
|
@@ -2093,5 +2093,88 @@
|
|
|
2093
2093
|
"POST /ecom/v1/checkouts/chk-0001/create-order": {
|
|
2094
2094
|
"orderId": "order-0001",
|
|
2095
2095
|
"paymentGatewayOrderId": "payment-0001"
|
|
2096
|
+
},
|
|
2097
|
+
"GET /ecom/v2/carts/current": {},
|
|
2098
|
+
"GET /restaurants-operations/v1/operations": {
|
|
2099
|
+
"operations": [
|
|
2100
|
+
{
|
|
2101
|
+
"id": "op-0001",
|
|
2102
|
+
"name": "Ordering page",
|
|
2103
|
+
"default": true,
|
|
2104
|
+
"onlineOrderingStatus": "ENABLED",
|
|
2105
|
+
"defaultFulfillmentType": "PICKUP",
|
|
2106
|
+
"fulfillmentIds": [
|
|
2107
|
+
"fm-pickup-0001",
|
|
2108
|
+
"fm-delivery-0001"
|
|
2109
|
+
]
|
|
2110
|
+
}
|
|
2111
|
+
]
|
|
2112
|
+
},
|
|
2113
|
+
"GET /fulfillment-methods/v1/fulfillment-methods": {
|
|
2114
|
+
"fulfillmentMethods": [
|
|
2115
|
+
{
|
|
2116
|
+
"id": "fm-pickup-0001",
|
|
2117
|
+
"type": "PICKUP",
|
|
2118
|
+
"name": "Pickup",
|
|
2119
|
+
"enabled": true,
|
|
2120
|
+
"minOrderPrice": "0",
|
|
2121
|
+
"pickupOptions": {
|
|
2122
|
+
"address": {
|
|
2123
|
+
"country": "US",
|
|
2124
|
+
"subdivision": "US-CA",
|
|
2125
|
+
"city": "San Francisco",
|
|
2126
|
+
"formattedAddress": "500 Example St, San Francisco, CA"
|
|
2127
|
+
}
|
|
2128
|
+
}
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"id": "fm-delivery-0001",
|
|
2132
|
+
"type": "DELIVERY",
|
|
2133
|
+
"name": "Delivery Area #1",
|
|
2134
|
+
"enabled": true,
|
|
2135
|
+
"fee": "0",
|
|
2136
|
+
"minOrderPrice": "0",
|
|
2137
|
+
"deliveryOptions": {
|
|
2138
|
+
"deliveryTimeInMinutes": 30
|
|
2139
|
+
}
|
|
2140
|
+
}
|
|
2141
|
+
],
|
|
2142
|
+
"pagingMetadata": {
|
|
2143
|
+
"count": 2,
|
|
2144
|
+
"hasNext": false
|
|
2145
|
+
}
|
|
2146
|
+
},
|
|
2147
|
+
"GET /restaurants-operations/v1/operations/op-0001/first-available-time-slot-per-fulfillment-type": {
|
|
2148
|
+
"timeslotsPerFulfillmentType": [
|
|
2149
|
+
{
|
|
2150
|
+
"fulfilmentType": "DELIVERY",
|
|
2151
|
+
"timeSlot": {
|
|
2152
|
+
"startTime": "2026-10-29T11:18:00Z",
|
|
2153
|
+
"endTime": "2026-10-29T11:18:00Z",
|
|
2154
|
+
"orderSchedulingType": "ASAP"
|
|
2155
|
+
},
|
|
2156
|
+
"fulfillmentInfo": [
|
|
2157
|
+
{
|
|
2158
|
+
"fee": "0",
|
|
2159
|
+
"minOrderPrice": "0",
|
|
2160
|
+
"maxTime": 60
|
|
2161
|
+
}
|
|
2162
|
+
]
|
|
2163
|
+
},
|
|
2164
|
+
{
|
|
2165
|
+
"fulfilmentType": "PICKUP",
|
|
2166
|
+
"timeSlot": {
|
|
2167
|
+
"startTime": "2026-10-29T10:48:00Z",
|
|
2168
|
+
"endTime": "2026-10-29T10:48:00Z",
|
|
2169
|
+
"orderSchedulingType": "ASAP"
|
|
2170
|
+
},
|
|
2171
|
+
"fulfillmentInfo": [
|
|
2172
|
+
{
|
|
2173
|
+
"minOrderPrice": "0",
|
|
2174
|
+
"maxTime": 30
|
|
2175
|
+
}
|
|
2176
|
+
]
|
|
2177
|
+
}
|
|
2178
|
+
]
|
|
2096
2179
|
}
|
|
2097
2180
|
}
|
package/guides/hhp.md
CHANGED
|
@@ -195,6 +195,45 @@ and auth flows retain their existing transports and network-fixture seams.
|
|
|
195
195
|
The studio preview adds compact, medium, and expanded presets. Existing worker state,
|
|
196
196
|
action, and SDK inspection remain available through the dev drawer.
|
|
197
197
|
|
|
198
|
+
## Design fidelity (`himi fidelity`)
|
|
199
|
+
|
|
200
|
+
`himi fidelity` answers one question per screen: does what shipped look like what was designed? It is repo-only for now and advisory. No CI gate reads it. Its readers are the authoring agent, before it calls an app done, and the PR reviewer.
|
|
201
|
+
|
|
202
|
+
Declare the mockup each screen was designed from in `hhp.json`:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{ "version": "hhp/2", "screens": { "schedule": { "html": "screens/schedule.html", "mockup": "mockup/schedule.html" } } }
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
A screen may also carry `params` (the navigation input a device opens it with, used by native capture, #4935) and `fidelity: { "warn": 80, "fail": 60 }`. Thresholds can also be set app-wide at the top level.
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
himi fidelity --content <dir> [--screen a,b] [--variant light,dark,rtl,tablet] [--no-native] [--json] [--post-pr <n>]
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
For each screen and variant (`light`, `dark`, `rtl`, `tablet`), the command does four things:
|
|
215
|
+
|
|
216
|
+
1. **Captures the mockup.** It draws the page in Chromium at the variant's width. Dark mode is drawn by emulating `prefers-color-scheme`. RTL is drawn by setting `dir=rtl` on the page.
|
|
217
|
+
2. **Captures the web render** from the app's recorded data, as `himi render` does by default. Native frames come through a capture seam. Until #4935 lands, the seam reports iOS and Android as skipped.
|
|
218
|
+
3. **Scores mockup↔web** with ImageMagick SSIM, globally and per tile. The worst tile says where the screens differ most.
|
|
219
|
+
4. **Asks a fresh model** two questions, using the repo's fidelity judge prompt. The model never ran in the session that wrote the app.
|
|
220
|
+
- **Design:** does WEB look like the MOCKUP? This judges the port.
|
|
221
|
+
- **Parity:** do IOS and ANDROID look like WEB? This judges the native renderers.
|
|
222
|
+
|
|
223
|
+
Each row gets a status:
|
|
224
|
+
|
|
225
|
+
| Status | When |
|
|
226
|
+
|---|---|
|
|
227
|
+
| **fail** | The judge answers `mismatch` to either question, or the mockup↔web score is below a `fail` threshold you set. |
|
|
228
|
+
| **warn** | `partial`, `cannot_tell`, a skipped surface, a mockup with no styling for the variant (`no_reference`), a missing mockup (`fidelity_mockup_missing`), or a score below `warn`. |
|
|
229
|
+
| **pass** | Anything else. |
|
|
230
|
+
|
|
231
|
+
The command exits 1 if any row fails. Output goes to `.himi/fidelity/<run>/`: `report.json` and one strip PNG per row. `--post-pr <n>` keeps one plain PR comment per app up to date. The comment opens with `<!-- himi-fidelity: app=<app> run=<id> -->`, and only your own comment is ever edited. It is never a review thread.
|
|
232
|
+
|
|
233
|
+
The pixel score has no default threshold, on purpose. On the repo's four HTML-first fixture apps, a blank page scores 87–95 against a mockup, while faithful ports score 69–93. Native chrome also shifts every row, so a native bug and its fix score within a point of each other. The judge is the gate, and the score points at where to look. Set thresholds only for a screen whose port is meant to be pixel-close.
|
|
234
|
+
|
|
235
|
+
Without the `claude` CLI, every verdict is `cannot_tell`, and no row passes. Outside the himalaya repo, the command refuses with `code: "fidelity_outside_repo"`.
|
|
236
|
+
|
|
198
237
|
## Qualification
|
|
199
238
|
|
|
200
239
|
Automated tests cover v1
|
|
@@ -6,7 +6,7 @@ repurposed when human wording changes. New codes may be added; consumers must
|
|
|
6
6
|
handle an unknown code as a failure, without parsing prose.
|
|
7
7
|
|
|
8
8
|
**Rollout:** this contract is enforced for **`himi push`**, including `--only`,
|
|
9
|
-
first, for **`himi store iap connect`**, for **`himi site member-app`**, and for the **`himi base44`** entity and function verbs. Other subcommands still have legacy failures without codes and are a
|
|
9
|
+
first, for **`himi store iap connect`**, for **`himi site member-app`**, for **`himi fidelity`**, and for the **`himi base44`** entity and function verbs. Other subcommands still have legacy failures without codes and are a
|
|
10
10
|
follow-up migration. This is an additive change: existing `error`, `errors`,
|
|
11
11
|
`message`, `hint`, status, body, and gate-specific fields stay as they were.
|
|
12
12
|
Some legacy envelopes have no singular `error` or `hint`; consumers must not
|
|
@@ -394,6 +394,27 @@ On success (`ok: true`, stdout, exit 0) `capabilities[]` lists the ids the gener
|
|
|
394
394
|
`--force` to overwrite it). A skipped file is not a failure. `orphaned[]`, when present, lists
|
|
395
395
|
generated files for entities no longer declared. They are never deleted.
|
|
396
396
|
|
|
397
|
+
## `himi fidelity` codes
|
|
398
|
+
|
|
399
|
+
`himi fidelity` failures print `ok: false` and `code`:
|
|
400
|
+
|
|
401
|
+
- `fidelity_rows_failed`: the run completed and at least one screen × variant row failed (a judge
|
|
402
|
+
`mismatch`, or a score below a threshold `hhp.json` sets). The report follows in the same
|
|
403
|
+
envelope. Exit 1.
|
|
404
|
+
- `fidelity_outside_repo`: the content directory is not inside a himalaya repo checkout, which
|
|
405
|
+
carries the fidelity judge; the command is repo-only for now. Exit 2.
|
|
406
|
+
- `fidelity_not_hhp`: the content directory has no `hhp.json`. Exit 2.
|
|
407
|
+
- `fidelity_unknown_screen`: `--screen` names a screen `hhp.json` does not declare. Exit 2.
|
|
408
|
+
- `fidelity_bad_flag`: a flag value is invalid (a missing content directory, an unknown
|
|
409
|
+
`--variant`, or a `--post-pr` that is not a PR number). Exit 2.
|
|
410
|
+
- `fidelity_post_failed`: `--post-pr` could not create or edit the PR comment. Exit 1.
|
|
411
|
+
- `fidelity_error`: any other failure before a report existed, such as an unreadable `hhp.json`.
|
|
412
|
+
Exit 1.
|
|
413
|
+
|
|
414
|
+
A row's own failure is not a command failure. A missing mockup gives that row
|
|
415
|
+
`error.code: "fidelity_mockup_missing"`, and a capture, score or strip that throws gives it
|
|
416
|
+
`error.code: "fidelity_row_failed"`. Both rows warn, and the other rows still run.
|
|
417
|
+
|
|
397
418
|
## Follow-ups
|
|
398
419
|
|
|
399
420
|
- Migrate failure envelopes in subcommands other than `push`, keeping this contract.
|
package/guides/release-notes.md
CHANGED
|
@@ -14,6 +14,23 @@ areas, always in the same order, so you can skim for the one you care about.
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## 2026-11-01
|
|
18
|
+
|
|
19
|
+
### Getting started & the CLI
|
|
20
|
+
|
|
21
|
+
- `himi template screens`, `himi template inspect` and `himi template sweep` now work on a
|
|
22
|
+
template whose `dev/index.ts` is written by hand, not only on the generated `SCREENS` layout.
|
|
23
|
+
Before, all three refused every showcase and starter template (`banking-wallet`, `tip-calc`,
|
|
24
|
+
`weather`, …). `screens` and `inspect` read such a file by loading it the way `himi validate`
|
|
25
|
+
does, and their output says `"layout": "evaluated"`. `screens --show/--write/--add` and
|
|
26
|
+
`himi template trim` still need the generated layout. (#4985)
|
|
27
|
+
- `himi template publish` now turns an app's own URL scheme (`himalaya-<app>`, in
|
|
28
|
+
`navigation.scheme` and in an auth `redirectUri`) into the scaffold's, so `himi init <name>
|
|
29
|
+
--template <t>` answers `himalaya-<name>` for a template published from a regular app too, as
|
|
30
|
+
it already did for the generated templates. The showcase and starter templates gave every
|
|
31
|
+
scaffold their own `himalaya-<t>` before. Apps scaffolded earlier keep the old value in
|
|
32
|
+
`config.ts` `navigation.scheme`. (#4985)
|
|
33
|
+
|
|
17
34
|
## 2026-10-22
|
|
18
35
|
|
|
19
36
|
### Getting started & the CLI
|
package/guides/templates.md
CHANGED
|
@@ -112,7 +112,7 @@ on the safe side ("may request"). The commands behind it:
|
|
|
112
112
|
```sh
|
|
113
113
|
himi template recommend --text "a salon where clients book and buy products" # rank the catalog (or --verticals / --book)
|
|
114
114
|
himi template inspect # recompute the inventory after edits (--dry-run writes nothing)
|
|
115
|
-
himi template screens # list dev/index.ts
|
|
115
|
+
himi template screens # list the screens and their workers (a hand-written dev/index.ts is evaluated)
|
|
116
116
|
himi template screens --show himi_saved > saved.txt # ONE screen's entry
|
|
117
117
|
himi template screens --write himi_saved --from saved.txt # put it back — re-parsed, refused if it breaks the file
|
|
118
118
|
himi template screens --add himi_sellers --from sellers.txt --parent himi_branded_home # a NEW screen, registered as linkable
|
|
@@ -127,6 +127,16 @@ descriptor it is an Icon id). A one-word literal elsewhere — a service name, a
|
|
|
127
127
|
action id, a URL — is wiring, and is never rewritten. Every changed file is syntax-checked before
|
|
128
128
|
anything is written.
|
|
129
129
|
|
|
130
|
+
**Hand-written templates.** `inspect`, `screens` (the list) and `sweep` work on every template. A
|
|
131
|
+
generated template's `dev/index.ts` is one `SCREENS` map, read without running anything. A
|
|
132
|
+
hand-written one — the showcase apps, the starters, most apps published as templates — has no such
|
|
133
|
+
map, so `inspect` and `screens` load `dev/index.ts` the way `himi validate` does, which runs its
|
|
134
|
+
code, and build each screen to read its workers; the output says `"layout": "evaluated"`. `himi init`
|
|
135
|
+
never does that, because a `--remote` template is its publisher's code: its adopt block is skipped
|
|
136
|
+
for these, and `himi template inspect` is the next step. `screens --show/--write/--add` and `trim`
|
|
137
|
+
rewrite the map's source text, so they still need the generated layout; edit a hand-written
|
|
138
|
+
`dev/index.ts` directly.
|
|
139
|
+
|
|
130
140
|
**Point a `branded-lite` (or vertical overlay) scaffold at your site.** Set
|
|
131
141
|
`WIX_CLIENT_ID` (Headless OAuth client on that site) and `WIX_SITE_URL` before build /
|
|
132
142
|
preview — the `clientId` **is** the site binding (no separate MSID field). Placeholders
|
|
@@ -779,6 +779,10 @@ target is another tab's root screen does not select that tab — it pushes the s
|
|
|
779
779
|
- An id the app is not showing right now — unknown, hidden by the nav worker, or any id when
|
|
780
780
|
the app has no tab bar or sidebar rail (`single` / `drawer` navigation) — is ignored and
|
|
781
781
|
logged as `nav_verb_dropped`. The user stays where they are.
|
|
782
|
+
- A push identical to the one the router applied less than 500 ms before (same screen, same
|
|
783
|
+
params) is one push, logged as `nav_push_coalesced`: a worker that answers late answers every
|
|
784
|
+
tap it was given, and three taps on a busy main thread would otherwise land three screens
|
|
785
|
+
deep. Any other verb in between starts over, so push, back and the same push again all apply.
|
|
782
786
|
- Asking for the tab the user is already on does nothing. It does **not** pop that tab to its
|
|
783
787
|
root the way a second tap on the tab bar does — unless you ask for it with `reset: true`.
|
|
784
788
|
- `reset: true` pops the selected tab to its root, even when it is the current tab. This is
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1530.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": "
|
|
74
|
+
"falconPackageHash": "f0490b6c81aec1fb5f5ecf75b8397ad986b6ccfe13b57fc83e2441ec"
|
|
75
75
|
}
|
|
@@ -424,7 +424,7 @@ export default defineApp({
|
|
|
424
424
|
// Your on-device database. It must declare every entity a worker reads or writes,
|
|
425
425
|
// or those calls fail closed — keep it in step with `local_database` above.
|
|
426
426
|
dataSchema: {
|
|
427
|
-
"version":
|
|
427
|
+
"version": 2,
|
|
428
428
|
"entities": [
|
|
429
429
|
{
|
|
430
430
|
"name": "products",
|
|
@@ -549,6 +549,17 @@ export default defineApp({
|
|
|
549
549
|
}
|
|
550
550
|
]
|
|
551
551
|
},
|
|
552
|
+
{
|
|
553
|
+
"name": "food_orders",
|
|
554
|
+
"encrypted": true,
|
|
555
|
+
"fields": [
|
|
556
|
+
{
|
|
557
|
+
"name": "id",
|
|
558
|
+
"type": "string",
|
|
559
|
+
"required": true
|
|
560
|
+
}
|
|
561
|
+
]
|
|
562
|
+
},
|
|
552
563
|
{
|
|
553
564
|
"name": "member_bookings",
|
|
554
565
|
"encrypted": true,
|