@smartsoft001-mobilems/claude-plugins 2.100.0 → 2.102.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartsoft001-mobilems/claude-plugins",
3
- "version": "2.100.0",
3
+ "version": "2.102.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "mobilems",
3
3
  "description": "MobilEMS-specific Claude Code skills (MuzaCMS / MobileMS indexer API)",
4
- "version": "2.100.0"
4
+ "version": "2.102.0"
5
5
  }
@@ -60,6 +60,7 @@ list — re-implementing framework code is a defect, not a shortcut:
60
60
  | a masonry grid (`new Masonry(...)`, per-page masonry JS/CSS) | `<smart-mobilems-masonry-grid>` (`MasonryGridComponent`) with a `#masonryContentTpl`; the `Masonry` provider only feeds it |
61
61
  | filter state / hand-built `query` arrays | `FiltersBaseComponent<Article>` + its `FiltersContext` accessors (`searchText`, `authors`, `cycles`, `publicationDateFrom/To`, `page`, `sort`, …) |
62
62
  | list/detail plumbing (facade wiring, id-from-route, PDF) | the `ArticlesListComponent` / `ArticlesItemComponent` base classes |
63
+ | CMS preview logic (query params, credentialed fetch, states) | the `ArticlesPreviewComponent` base class — the app's `/article-preview` component is view-only |
63
64
  | media URLs, meta/OG tags, filter dictionaries, modals, WCAG | `FileUrlService`, `SeoService`/`MetaService`, `DictionaryService`, `ModalService`, `WcagService` |
64
65
  | a content-block renderer | `WidgetComponent` + the `ArticleWidgetType` map |
65
66
 
@@ -94,7 +95,8 @@ README) — never a per-module copy. `scripts/verify-module.sh` fails the run on
94
95
  SSR factory. Add the lazy `<route>` route to `appRoutes` in `apps/web/src/app/app.routes.ts`, and a
95
96
  matching child under the `wyszukaj/:text` search route if the module's results belong in site search.
96
97
  Also build the app's **`/article-preview` page** if it isn't there yet (it previews an `Article`, so
97
- it belongs to the articles feature, not the foundation) — idempotent across runs; see
98
+ it belongs to the articles feature, not the foundation) — component, client route **and** the
99
+ `RenderMode.Client` server route in `app.routes.server.ts`; idempotent across runs; see
98
100
  `references/module-and-routes.md`.
99
101
  5. **Article card shared components** — see `references/shared-components.md`: build the module's grid
100
102
  and list cards (`<name>-grid-item`, `<name>-list-item`) in `libs/shared/angular` and export them; if
@@ -160,7 +160,12 @@ feature — the foundation deliberately leaves it out. Build it the first time a
160
160
  added, and skip it if it already exists (idempotent across article-module runs):
161
161
 
162
162
  1. Copy `apps/web/src/app/article-preview/` (`.component.ts` + `.html`) from the reference app, thread
163
- `<PREFIX>`.
163
+ `<PREFIX>`. The component **extends `ArticlesPreviewComponent`** from
164
+ `@smartsoft001-mobilems/articles-shell-angular` and owns only the view (imports, the
165
+ `PARENT_TITLE_TOKEN` provider and an effect feeding `plainTitle()` into it). Do not re-implement
166
+ query-param handling, the credentialed fetch or the `loading` / `noLogin` / `noQueryParams` states —
167
+ the base exposes them, plus `item`, `widgets` and `authorsText`. If the app's thematic-paths route
168
+ is not `/sciezki-tematyczne`, override `protected readonly thematicPathRoute`.
164
169
  2. Add its route to `appRoutes` in `apps/web/src/app/app.routes.ts` (a plain top-level route, before
165
170
  the `**` catch-all):
166
171
 
@@ -173,3 +178,15 @@ added, and skip it if it already exists (idempotent across article-module runs):
173
178
  ),
174
179
  },
175
180
  ```
181
+
182
+ 3. Add its server route to `serverRoutes` in `apps/web/src/app/app.routes.server.ts`, before the
183
+ `**` catch-all. This step is **mandatory**: the preview fetches `dataUrl` with `withCredentials`,
184
+ and the CMS session cookie exists only in the browser. Rendered on the server, the request has no
185
+ cookie, the page lands in the `noLogin` state and hydration replays that error.
186
+
187
+ ```ts
188
+ {
189
+ path: 'article-preview',
190
+ renderMode: RenderMode.Client,
191
+ },
192
+ ```