nodality 1.3.19 → 1.3.20

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 (201) hide show
  1. package/bin/mcp-server.mjs +8 -3
  2. package/bin/nodality.mjs +41 -0
  3. package/dist/animator.cjs.js.LICENSE.txt +1 -1
  4. package/dist/animator.esm.js.LICENSE.txt +1 -1
  5. package/dist/audionew.cjs.js.LICENSE.txt +1 -1
  6. package/dist/audionew.esm.js.LICENSE.txt +1 -1
  7. package/dist/base.cjs.js.LICENSE.txt +1 -1
  8. package/dist/base.esm.js.LICENSE.txt +1 -1
  9. package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
  10. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  11. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  12. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  13. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  14. package/dist/button.cjs.js.LICENSE.txt +1 -1
  15. package/dist/button.esm.js.LICENSE.txt +1 -1
  16. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  17. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  18. package/dist/center.cjs.js.LICENSE.txt +1 -1
  19. package/dist/center.esm.js.LICENSE.txt +1 -1
  20. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  21. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  22. package/dist/code.cjs.js.LICENSE.txt +1 -1
  23. package/dist/code.esm.js.LICENSE.txt +1 -1
  24. package/dist/container.cjs.js.LICENSE.txt +1 -1
  25. package/dist/container.esm.js.LICENSE.txt +1 -1
  26. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  27. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  28. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  29. package/dist/designer.esm.js.LICENSE.txt +1 -1
  30. package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
  31. package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
  32. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  33. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  34. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  35. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  36. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  37. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  38. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  39. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  40. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  41. package/dist/free.cjs.js.LICENSE.txt +1 -1
  42. package/dist/free.esm.js.LICENSE.txt +1 -1
  43. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  44. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  45. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  46. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  47. package/dist/image.cjs.js.LICENSE.txt +1 -1
  48. package/dist/image.esm.js.LICENSE.txt +1 -1
  49. package/dist/index.cjs.js.LICENSE.txt +1 -1
  50. package/dist/index.d.ts +1 -1
  51. package/dist/index.esm.js.LICENSE.txt +1 -1
  52. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  53. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  54. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  55. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  56. package/dist/link.cjs.js.LICENSE.txt +1 -1
  57. package/dist/link.esm.js.LICENSE.txt +1 -1
  58. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  59. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  60. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  61. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  62. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  63. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  64. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  65. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  66. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  67. package/dist/picker.esm.js.LICENSE.txt +1 -1
  68. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  69. package/dist/progress.esm.js.LICENSE.txt +1 -1
  70. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  71. package/dist/radio.esm.js.LICENSE.txt +1 -1
  72. package/dist/range.cjs.js.LICENSE.txt +1 -1
  73. package/dist/range.esm.js.LICENSE.txt +1 -1
  74. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  75. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  76. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  77. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  78. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  79. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  80. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  81. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  82. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  83. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  84. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  85. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  86. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  87. package/dist/stack.esm.js.LICENSE.txt +1 -1
  88. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  89. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  90. package/dist/table.cjs.js.LICENSE.txt +1 -1
  91. package/dist/table.esm.js.LICENSE.txt +1 -1
  92. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  93. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  94. package/dist/text.cjs.js.LICENSE.txt +1 -1
  95. package/dist/text.esm.js.LICENSE.txt +1 -1
  96. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  97. package/dist/theme.esm.js.LICENSE.txt +1 -1
  98. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  99. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  100. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  101. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  102. package/dist/video.cjs.js.LICENSE.txt +1 -1
  103. package/dist/video.esm.js.LICENSE.txt +1 -1
  104. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  105. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  106. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  107. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  108. package/layout/animator.js +1 -1
  109. package/layout/audio.js +1 -1
  110. package/layout/audionew.js +1 -1
  111. package/layout/base.js +1 -1
  112. package/layout/beta-desktop-bar.js +1 -1
  113. package/layout/beta-mobile-bar.js +1 -1
  114. package/layout/button.js +1 -1
  115. package/layout/center.js +1 -1
  116. package/layout/checkbox.js +1 -1
  117. package/layout/circle.js +1 -1
  118. package/layout/code.js +1 -1
  119. package/layout/container.js +1 -1
  120. package/layout/dropdown-2025.js +1 -1
  121. package/layout/flex-card.js +1 -1
  122. package/layout/flex-grid.js +1 -1
  123. package/layout/flex-row.js +1 -1
  124. package/layout/form-components/custom.js +1 -1
  125. package/layout/form-components/data-list.js +1 -1
  126. package/layout/form-components/floating-input.js +1 -1
  127. package/layout/form-components/form-all.js +1 -1
  128. package/layout/form-components/form.js +1 -1
  129. package/layout/form-components/image-picker.js +1 -1
  130. package/layout/form-components/picker.js +1 -1
  131. package/layout/form-components/radio.js +1 -1
  132. package/layout/form-components/radiogroup.js +1 -1
  133. package/layout/form-components/range.js +1 -1
  134. package/layout/free.js +1 -1
  135. package/layout/grid-overlay.js +1 -1
  136. package/layout/grid-switcher.js +1 -1
  137. package/layout/grid.js +1 -1
  138. package/layout/horizontal-scroller.js +1 -1
  139. package/layout/image.js +1 -1
  140. package/layout/index.js +1 -1
  141. package/layout/link.js +1 -1
  142. package/layout/list.js +1 -1
  143. package/layout/meta-adder.js +1 -1
  144. package/layout/modal-2025.js +1 -1
  145. package/layout/morph.js +1 -1
  146. package/layout/multiswitcher.js +1 -1
  147. package/layout/nav-bar.js +1 -1
  148. package/layout/nav-factor/custom-div.js +1 -1
  149. package/layout/new-nav-bar.js +1 -1
  150. package/layout/polygon.js +1 -1
  151. package/layout/prerender-site.js +1 -1
  152. package/layout/prerender.js +1 -1
  153. package/layout/progress.js +1 -1
  154. package/layout/row.js +1 -1
  155. package/layout/scroll-video.js +1 -1
  156. package/layout/shop.js +1 -1
  157. package/layout/side-bar.js +1 -1
  158. package/layout/side-nav-bar.js +1 -1
  159. package/layout/simple-bar.js +1 -1
  160. package/layout/slider-2025.js +1 -1
  161. package/layout/spacer.js +1 -1
  162. package/layout/stack.js +1 -1
  163. package/layout/svg.js +1 -1
  164. package/layout/switcher.js +1 -1
  165. package/layout/table.js +1 -1
  166. package/layout/text-field.js +1 -1
  167. package/layout/text.js +1 -1
  168. package/layout/ulist.js +1 -1
  169. package/layout/video.js +1 -1
  170. package/layout/wrap.js +1 -1
  171. package/layout/zoom-card.js +1 -1
  172. package/lib/agent-surface.js +1 -1
  173. package/lib/card-getter.js +1 -1
  174. package/lib/check-page.js +14 -2
  175. package/lib/codegen.js +1 -1
  176. package/lib/data.js +1 -1
  177. package/lib/designer.js +1 -1
  178. package/lib/element-mapper.js +1 -1
  179. package/lib/element-params.generated.js +1 -1
  180. package/lib/grid-geometry.js +1 -1
  181. package/lib/keyframe-animation.js +1 -1
  182. package/lib/known-inert.js +1 -1
  183. package/lib/link-getter.js +1 -1
  184. package/lib/morph-node.js +1 -1
  185. package/lib/normalize-spec.js +1 -1
  186. package/lib/parse-html.js +1 -1
  187. package/lib/raster-inspect.js +1 -1
  188. package/lib/raster-ops.js +1 -1
  189. package/lib/raster-presets.js +1 -1
  190. package/lib/resolve-refs.js +1 -1
  191. package/lib/scroll-video.js +1 -1
  192. package/lib/seo.js +1 -1
  193. package/lib/stacker.js +1 -1
  194. package/lib/suggest.js +1 -1
  195. package/lib/theme.js +1 -1
  196. package/lib/transform-anim.js +1 -1
  197. package/lib/transition.js +1 -1
  198. package/lib/validate-nodes.js +1 -1
  199. package/lib/webmcp-adapter.js +1 -1
  200. package/package.json +2 -1
  201. package/skills/nodality/SKILL.md +6 -0
package/layout/nav-bar.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/polygon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/row.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/shop.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/spacer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/stack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/svg.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/table.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/text.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/ulist.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/video.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/wrap.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/check-page.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -427,9 +427,21 @@ export async function checkPage(html, opts = {}) {
427
427
  };
428
428
  }
429
429
 
430
- const doc = /<html[\s>]/i.test(html)
430
+ let doc = /<html[\s>]/i.test(html)
431
431
  ? html
432
432
  : `<!DOCTYPE html><html><head><meta charset="utf-8"></head><body>${html}</body></html>`;
433
+ // A prerendered page names its fonts, stylesheet and bundle by absolute
434
+ // path (/assets/...), which resolve against nothing when the page is set
435
+ // as content. Measured that way, text is laid out in a fallback face and
436
+ // clipping and overflow findings describe a page no visitor sees. `base`
437
+ // is the origin the page is served from (a dev server), and is written in
438
+ // as <base href> ahead of everything that could load.
439
+ if (opts.base) {
440
+ const href = String(opts.base).replace(/"/g, "&quot;");
441
+ doc = /<head[^>]*>/i.test(doc)
442
+ ? doc.replace(/<head[^>]*>/i, (m) => `${m}<base href="${href}">`)
443
+ : `<base href="${href}">${doc}`;
444
+ }
433
445
 
434
446
  const browser = await chromium.launch();
435
447
  const errors = [];
package/lib/codegen.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/data.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/designer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/morph-node.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/parse-html.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/raster-ops.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/seo.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/stacker.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/suggest.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/theme.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/transition.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.19
2
+ * nodality v1.3.20
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodality",
3
- "version": "1.3.19",
3
+ "version": "1.3.20",
4
4
  "description": "A lightweight library for declarative UI elements.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -32,6 +32,7 @@
32
32
  "./presets": "./lib/raster-presets.js",
33
33
  "./raster": "./lib/raster-ops.js",
34
34
  "./validate": "./lib/validate-nodes.js",
35
+ "./check": "./lib/check-page.js",
35
36
  "./parse": "./lib/parse-html.js",
36
37
  "./refs": "./lib/resolve-refs.js",
37
38
  "./normalize": "./lib/normalize-spec.js",
@@ -326,6 +326,12 @@ document is untrusted input.
326
326
 
327
327
  ## Verifying your work
328
328
 
329
+ - **`check_page` works without the MCP too:** `npx nodality check
330
+ upload/*.html --base=http://localhost:4000/` (or `import { checkPage }
331
+ from "nodality/check"`). Pass `--base` for a prerendered site, or its fonts
332
+ and `/assets/` do not load and text is measured in a fallback face. It exits
333
+ 1 on findings, and on a shop page reports `LOADING_LAYOUT_SHIFT` when the
334
+ product's loading copy sits somewhere other than the loaded element.
329
335
  - **Read `FAINT_TEXT` from `check_page`.** It reports small text that passes
330
336
  WCAG and still reads faint (APCA), the usual case on mid-tone backgrounds.
331
337
  Fix with weight, a lighter or darker ground, or size; not by ignoring it.