@retailcrm/embed-ui-v1-endpoint 0.9.25 → 0.9.26

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.
@@ -45,6 +45,22 @@ const pageRunner = definePageRunner({
45
45
 
46
46
  Если для `code` нет раннера, будет warning в консоль и noop-destroy.
47
47
 
48
+ ## Runtime-проверка страницы
49
+
50
+ После первого минимального vertical slice проверяйте страницу внутри CRM host, а не только через build/lint.
51
+
52
+ Минимальный чек:
53
+
54
+ - manifest или publish payload содержит page descriptor object с `code`, `menu`, `menuItemTitle` и нужной
55
+ hierarchy metadata;
56
+ - `code` в `pages[]` совпадает с ключом runner map в `definePageRunner`;
57
+ - локальный dev server отдает `entrypoint` и `stylesheet` URL, которые указаны в extension config;
58
+ - пункт меню появился в CRM и открывает route `/modules/<module-code>/<page-code>`;
59
+ - frontend реально смонтировался в CRM host.
60
+
61
+ Если ошибка видна только в minified bundle, соберите или отдайте dev bundle без минификации до изменения кода
62
+ по догадке.
63
+
48
64
  ## `beforeMount`
49
65
 
50
66
  `beforeMount` вызывается после `app.use(pinia)` и до `app.mount(...)`.
@@ -61,6 +61,10 @@
61
61
  `menu: "private_main_menu"` и `parentMenuItemCode: "settings"`. Для страниц в разделе продаж используйте
62
62
  `menu: "activity_main_menu"` и соответствующий parent menu item, например `orders`.
63
63
 
64
+ CRM также использует hierarchy из `pages[]` для видимой навигации и breadcrumb-like поведения. Сначала
65
+ моделируйте нужную иерархию через `menu`, `parentMenuItemCode` и `menuItemOrdering`; локальные ссылки внутри
66
+ страницы добавляйте только для дополнительной in-page navigation.
67
+
64
68
  ## Payload публикации
65
69
 
66
70
  При обновлении уже установленного расширения синхронизируйте существующий integration module через
@@ -130,6 +134,11 @@ const pageRunner = definePageRunner({
130
134
  Если host откроет страницу с `code`, которого нет в runner map, `definePageRunner` запишет warning
131
135
  в консоль и не смонтирует страницу.
132
136
 
137
+ После изменения меню или pages manifest проверьте локальную CRM установку: пункт меню должен появиться,
138
+ route `/modules/<module-code>/<page-code>` должен открываться, а `entrypoint` и `stylesheet` из extension
139
+ config должны отдаваться локальным dev server. При runtime-ошибках в minified bundle сначала включите dev
140
+ bundle или sourcemaps.
141
+
133
142
  Читайте также:
134
143
 
135
144
  - [`page-routes`](./page-routes.md) — как описывать page `code` и CRM-маршрут.
@@ -12,6 +12,10 @@ page `code` нужно описывать объектом manifest `pages[]` с
12
12
  строковую форму `pages: ["orders-dashboard"]` для публикации через RetailCRM API: backend ожидает
13
13
  `ConfigurationPage` object, а страница без `menu` не откроется по route `/modules/<module-code>/<page-code>`.
14
14
 
15
+ Build/lint успех не доказывает, что страница откроется в CRM. После добавления новой страницы проверьте
16
+ runtime lifecycle в host: page descriptor, menu item, route `/modules/<module-code>/<page-code>`,
17
+ доступность `entrypoint` и `stylesheet`, и фактический mount frontend-кода.
18
+
15
19
  ## Что такое `page code`
16
20
 
17
21
  `page code` — стабильный идентификатор встраиваемой страницы внутри расширения.
@@ -94,6 +98,10 @@ const openSettings = (host: HostApi) => {
94
98
  }
95
99
  ```
96
100
 
101
+ Breadcrumb-like navigation для module pages строится CRM из hierarchy в `pages[]`: `menu`,
102
+ `parentMenuItemCode`, `menuItemOrdering` и связанных metadata. Не собирайте breadcrumbs вручную внутри
103
+ страницы, если продуктовая задача явно не просит локальную in-page navigation.
104
+
97
105
  Читайте также:
98
106
 
99
107
  - [`menu-placements`](./menu-placements.md) — как связать пункт меню, page `code` и маршрут.
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "embed-ui-v1-endpoint-mcp": "bin/embed-ui-v1-endpoint-mcp.mjs"
6
6
  },
7
7
  "type": "module",
8
- "version": "0.9.25",
8
+ "version": "0.9.26",
9
9
  "description": "Endpoint API for integrations in RetailCRM",
10
10
  "license": "MIT",
11
11
  "author": "RetailDriverLLC <integration@retailcrm.ru>",
@@ -101,17 +101,17 @@
101
101
  "peerDependencies": {
102
102
  "@omnicajs/vue-remote": "^0.2.24",
103
103
  "@remote-ui/rpc": "^1.4",
104
- "@retailcrm/embed-ui-v1-contexts": "^0.9.25",
105
- "@retailcrm/embed-ui-v1-types": "^0.9.25",
104
+ "@retailcrm/embed-ui-v1-contexts": "^0.9.26",
105
+ "@retailcrm/embed-ui-v1-types": "^0.9.26",
106
106
  "pinia": "^2.2",
107
107
  "vue": "^3.5"
108
108
  },
109
109
  "dependencies": {
110
110
  "@modelcontextprotocol/sdk": "^1.29.0",
111
111
  "@remote-ui/rpc": "^1.4.7",
112
- "@retailcrm/embed-ui-v1-components": "^0.9.25",
113
- "@retailcrm/embed-ui-v1-contexts": "^0.9.25",
114
- "@retailcrm/embed-ui-v1-types": "^0.9.25"
112
+ "@retailcrm/embed-ui-v1-components": "^0.9.26",
113
+ "@retailcrm/embed-ui-v1-contexts": "^0.9.26",
114
+ "@retailcrm/embed-ui-v1-types": "^0.9.26"
115
115
  },
116
116
  "devDependencies": {
117
117
  "@retailcrm/image-preview": "^1.0.2",
@@ -29,6 +29,8 @@ Use this skill before changing JS module endpoint wiring, page registration, wid
29
29
  3. For widgets, choose the exact target from endpoint docs or MCP resources before writing UI.
30
30
  4. Use documented public entrypoints such as `@retailcrm/embed-ui-v1-endpoint/remote`; do not import from `dist/*`, source files, or repository-only paths.
31
31
  5. Keep widget inline UI compact; use component package widget composition guidance for UI mounted into CRM targets.
32
+ 6. After the first page vertical slice, verify it in the CRM host: menu item, `/modules/<moduleCode>/<pageCode>` route, entrypoint URL, stylesheet URL, and actual frontend mount.
33
+ 7. If a runtime error appears only in a minified bundle, switch to a dev bundle or sourcemaps before guessing.
32
34
 
33
35
  ## Page and menu checks
34
36
 
@@ -37,6 +39,7 @@ Use this skill before changing JS module endpoint wiring, page registration, wid
37
39
  - Use `parentMenuItemCode` and `menuItemOrdering` to model the intended CRM page/menu hierarchy.
38
40
  - Breadcrumb-like navigation is derived by CRM from the page/menu hierarchy passed in the extension config; do not hand-roll breadcrumbs in the page unless the product task explicitly asks for local in-page navigation.
39
41
  - For updating an already installed module, use the existing integration module edit/update flow and put pages under `integrationModule.integrations.embedJs.pages`.
42
+ - Build/lint success does not prove page rendering; check the installed module in the CRM host when page routing or menu placement changed.
40
43
 
41
44
  ## Host API checks
42
45