nodality 1.3.15 → 1.3.17

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 (288) hide show
  1. package/bin/install-skill.mjs +3 -3
  2. package/bin/mcp-server.mjs +46 -1
  3. package/bin/nodality.mjs +103 -0
  4. package/dist/animator.cjs.js +1 -1
  5. package/dist/animator.cjs.js.LICENSE.txt +1 -1
  6. package/dist/animator.esm.js +1 -1
  7. package/dist/animator.esm.js.LICENSE.txt +1 -1
  8. package/dist/audionew.cjs.js +1 -1
  9. package/dist/audionew.cjs.js.LICENSE.txt +1 -1
  10. package/dist/audionew.esm.js +1 -1
  11. package/dist/audionew.esm.js.LICENSE.txt +1 -1
  12. package/dist/base.cjs.js +1 -1
  13. package/dist/base.cjs.js.LICENSE.txt +1 -1
  14. package/dist/base.esm.js +1 -1
  15. package/dist/base.esm.js.LICENSE.txt +1 -1
  16. package/dist/beta-desktop-bar.cjs.js +1 -1
  17. package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
  18. package/dist/beta-desktop-bar.esm.js +1 -1
  19. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  20. package/dist/beta-mobile-bar.cjs.js +1 -1
  21. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  22. package/dist/beta-mobile-bar.esm.js +1 -1
  23. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  24. package/dist/bundle.umd.js +1 -1
  25. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  26. package/dist/button.cjs.js +1 -1
  27. package/dist/button.cjs.js.LICENSE.txt +1 -1
  28. package/dist/button.esm.js +1 -1
  29. package/dist/button.esm.js.LICENSE.txt +1 -1
  30. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  31. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  32. package/dist/center.cjs.js +1 -1
  33. package/dist/center.cjs.js.LICENSE.txt +1 -1
  34. package/dist/center.esm.js +1 -1
  35. package/dist/center.esm.js.LICENSE.txt +1 -1
  36. package/dist/checkbox.cjs.js +1 -1
  37. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  38. package/dist/checkbox.esm.js +1 -1
  39. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  40. package/dist/code.cjs.js +1 -1
  41. package/dist/code.cjs.js.LICENSE.txt +1 -1
  42. package/dist/code.esm.js +1 -1
  43. package/dist/code.esm.js.LICENSE.txt +1 -1
  44. package/dist/container.cjs.js +1 -1
  45. package/dist/container.cjs.js.LICENSE.txt +1 -1
  46. package/dist/container.esm.js +1 -1
  47. package/dist/container.esm.js.LICENSE.txt +1 -1
  48. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  49. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  50. package/dist/designer.cjs.js +1 -1
  51. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  52. package/dist/designer.esm.js +1 -1
  53. package/dist/designer.esm.js.LICENSE.txt +1 -1
  54. package/dist/element-mapper.cjs.js +1 -1
  55. package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
  56. package/dist/element-mapper.esm.js +1 -1
  57. package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
  58. package/dist/finalresult.esm.js +1 -1
  59. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  60. package/dist/flex-card.cjs.js +1 -1
  61. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  62. package/dist/flex-card.esm.js +1 -1
  63. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  64. package/dist/flex-grid.cjs.js +1 -1
  65. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  66. package/dist/flex-grid.esm.js +1 -1
  67. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  68. package/dist/flex-row.cjs.js +1 -1
  69. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  70. package/dist/flex-row.esm.js +1 -1
  71. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  72. package/dist/floating-input.cjs.js +1 -1
  73. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  74. package/dist/floating-input.esm.js +1 -1
  75. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  76. package/dist/free.cjs.js +1 -1
  77. package/dist/free.cjs.js.LICENSE.txt +1 -1
  78. package/dist/free.esm.js +1 -1
  79. package/dist/free.esm.js.LICENSE.txt +1 -1
  80. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  81. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  82. package/dist/image-picker.cjs.js +1 -1
  83. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  84. package/dist/image-picker.esm.js +1 -1
  85. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  86. package/dist/image.cjs.js +1 -1
  87. package/dist/image.cjs.js.LICENSE.txt +1 -1
  88. package/dist/image.esm.js +1 -1
  89. package/dist/image.esm.js.LICENSE.txt +1 -1
  90. package/dist/index.cjs.js +1 -1
  91. package/dist/index.cjs.js.LICENSE.txt +1 -1
  92. package/dist/index.d.ts +3 -2
  93. package/dist/index.esm.js +1 -1
  94. package/dist/index.esm.js.LICENSE.txt +1 -1
  95. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  96. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  97. package/dist/link-getter.cjs.js +1 -1
  98. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  99. package/dist/link-getter.esm.js +1 -1
  100. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  101. package/dist/link.cjs.js +1 -1
  102. package/dist/link.cjs.js.LICENSE.txt +1 -1
  103. package/dist/link.esm.js +1 -1
  104. package/dist/link.esm.js.LICENSE.txt +1 -1
  105. package/dist/meta-adder.cjs.js +1 -1
  106. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  107. package/dist/meta-adder.esm.js +1 -1
  108. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  109. package/dist/modal-2025.cjs.js +1 -1
  110. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  111. package/dist/modal-2025.esm.js +1 -1
  112. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  113. package/dist/multiswitcher.cjs.js +1 -1
  114. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  115. package/dist/multiswitcher.esm.js +1 -1
  116. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  117. package/dist/new-nav-bar.cjs.js +1 -1
  118. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  119. package/dist/new-nav-bar.esm.js +1 -1
  120. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  121. package/dist/picker.cjs.js +1 -1
  122. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  123. package/dist/picker.esm.js +1 -1
  124. package/dist/picker.esm.js.LICENSE.txt +1 -1
  125. package/dist/progress.cjs.js +1 -1
  126. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  127. package/dist/progress.esm.js +1 -1
  128. package/dist/progress.esm.js.LICENSE.txt +1 -1
  129. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  130. package/dist/radio.esm.js.LICENSE.txt +1 -1
  131. package/dist/range.cjs.js.LICENSE.txt +1 -1
  132. package/dist/range.esm.js.LICENSE.txt +1 -1
  133. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  134. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  135. package/dist/side-bar.cjs.js +1 -1
  136. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  137. package/dist/side-bar.esm.js +1 -1
  138. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  139. package/dist/side-nav-bar.cjs.js +1 -1
  140. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  141. package/dist/side-nav-bar.esm.js +1 -1
  142. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  143. package/dist/simple-bar.cjs.js +1 -1
  144. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  145. package/dist/simple-bar.esm.js +1 -1
  146. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  147. package/dist/slider-2025.cjs.js +1 -1
  148. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  149. package/dist/slider-2025.esm.js +1 -1
  150. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  151. package/dist/spacer.cjs.js +1 -1
  152. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  153. package/dist/spacer.esm.js +1 -1
  154. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  155. package/dist/stack.cjs.js +1 -1
  156. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  157. package/dist/stack.esm.js +1 -1
  158. package/dist/stack.esm.js.LICENSE.txt +1 -1
  159. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  160. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  161. package/dist/table.cjs.js +1 -1
  162. package/dist/table.cjs.js.LICENSE.txt +1 -1
  163. package/dist/table.esm.js +1 -1
  164. package/dist/table.esm.js.LICENSE.txt +1 -1
  165. package/dist/text-field.cjs.js +1 -1
  166. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  167. package/dist/text-field.esm.js +1 -1
  168. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  169. package/dist/text.cjs.js +1 -1
  170. package/dist/text.cjs.js.LICENSE.txt +1 -1
  171. package/dist/text.esm.js +1 -1
  172. package/dist/text.esm.js.LICENSE.txt +1 -1
  173. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  174. package/dist/theme.esm.js.LICENSE.txt +1 -1
  175. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  176. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  177. package/dist/ulist.cjs.js +1 -1
  178. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  179. package/dist/ulist.esm.js +1 -1
  180. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  181. package/dist/video.cjs.js +1 -1
  182. package/dist/video.cjs.js.LICENSE.txt +1 -1
  183. package/dist/video.esm.js +1 -1
  184. package/dist/video.esm.js.LICENSE.txt +1 -1
  185. package/dist/wrap.cjs.js +1 -1
  186. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  187. package/dist/wrap.esm.js +1 -1
  188. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  189. package/dist/zoom-card.cjs.js +1 -1
  190. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  191. package/dist/zoom-card.esm.js +1 -1
  192. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  193. package/layout/animator.js +38 -1
  194. package/layout/audio.js +1 -1
  195. package/layout/audionew.js +1 -1
  196. package/layout/base.js +1 -1
  197. package/layout/beta-desktop-bar.js +1 -1
  198. package/layout/beta-mobile-bar.js +1 -1
  199. package/layout/button.js +1 -1
  200. package/layout/center.js +1 -1
  201. package/layout/checkbox.js +1 -1
  202. package/layout/circle.js +1 -1
  203. package/layout/code.js +1 -1
  204. package/layout/container.js +1 -1
  205. package/layout/dropdown-2025.js +1 -1
  206. package/layout/flex-card.js +1 -1
  207. package/layout/flex-grid.js +1 -1
  208. package/layout/flex-row.js +1 -1
  209. package/layout/form-components/custom.js +1 -1
  210. package/layout/form-components/data-list.js +1 -1
  211. package/layout/form-components/floating-input.js +1 -1
  212. package/layout/form-components/form-all.js +1 -1
  213. package/layout/form-components/form.js +9 -2
  214. package/layout/form-components/image-picker.js +1 -1
  215. package/layout/form-components/picker.js +1 -1
  216. package/layout/form-components/radio.js +1 -1
  217. package/layout/form-components/radiogroup.js +1 -1
  218. package/layout/form-components/range.js +1 -1
  219. package/layout/free.js +1 -1
  220. package/layout/grid-overlay.js +1 -1
  221. package/layout/grid-switcher.js +1 -1
  222. package/layout/grid.js +1 -1
  223. package/layout/horizontal-scroller.js +1 -1
  224. package/layout/image.js +1 -1
  225. package/layout/index.js +1 -1
  226. package/layout/link.js +6 -3
  227. package/layout/list.js +1 -1
  228. package/layout/meta-adder.js +1 -1
  229. package/layout/modal-2025.js +1 -1
  230. package/layout/morph.js +1 -1
  231. package/layout/multiswitcher.js +1 -1
  232. package/layout/nav-bar.js +1 -1
  233. package/layout/nav-factor/custom-div.js +1 -1
  234. package/layout/new-nav-bar.js +1 -1
  235. package/layout/polygon.js +1 -1
  236. package/layout/prerender-site.js +1 -1
  237. package/layout/prerender.js +1 -1
  238. package/layout/progress.js +1 -1
  239. package/layout/row.js +1 -1
  240. package/layout/scroll-video.js +1 -1
  241. package/layout/shop.js +1 -1
  242. package/layout/side-bar.js +1 -1
  243. package/layout/side-nav-bar.js +1 -1
  244. package/layout/simple-bar.js +1 -1
  245. package/layout/slider-2025.js +1 -1
  246. package/layout/spacer.js +1 -1
  247. package/layout/stack.js +1 -1
  248. package/layout/svg.js +1 -1
  249. package/layout/switcher.js +1 -1
  250. package/layout/table.js +1 -1
  251. package/layout/text-field.js +4 -2
  252. package/layout/text.js +1 -1
  253. package/layout/ulist.js +1 -1
  254. package/layout/video.js +1 -1
  255. package/layout/wrap.js +1 -1
  256. package/layout/zoom-card.js +1 -1
  257. package/lib/agent-surface.js +1 -1
  258. package/lib/card-getter.js +1 -1
  259. package/lib/check-page.js +37 -5
  260. package/lib/codegen.js +1 -1
  261. package/lib/data.js +1 -1
  262. package/lib/designer.js +1 -1
  263. package/lib/element-mapper.js +3 -1
  264. package/lib/element-params.generated.js +3 -3
  265. package/lib/grid-geometry.js +1 -1
  266. package/lib/keyframe-animation.js +1 -1
  267. package/lib/known-inert.js +85 -0
  268. package/lib/link-getter.js +1 -1
  269. package/lib/morph-node.js +1 -1
  270. package/lib/normalize-spec.js +1 -1
  271. package/lib/parse-html.js +1 -1
  272. package/lib/raster-inspect.js +1 -1
  273. package/lib/raster-ops.js +1 -1
  274. package/lib/raster-presets.js +1 -1
  275. package/lib/resolve-refs.js +1 -1
  276. package/lib/scroll-video.js +1 -1
  277. package/lib/seo.js +1 -1
  278. package/lib/stacker.js +1 -1
  279. package/lib/suggest.js +1 -1
  280. package/lib/theme.js +1 -1
  281. package/lib/transform-anim.js +1 -1
  282. package/lib/transition.js +1 -1
  283. package/lib/validate-nodes.js +14 -1
  284. package/lib/webmcp-adapter.js +1 -1
  285. package/package.json +1 -1
  286. package/schema.json +2764 -957
  287. package/scripts/generate-schema.mjs +16 -0
  288. package/skills/nodality/SKILL.md +16 -1
@@ -0,0 +1,85 @@
1
+ /*!
2
+ * nodality v1.3.17
3
+ * (c) 2026 Filip Vabrousek
4
+ * License: MIT
5
+ */
6
+
7
+ // known-inert.js — parameters the schema advertises for a type and the type
8
+ // ignores.
9
+ //
10
+ // One list, read by two things: the conformance test (which fails if a new
11
+ // inert parameter appears, or if one listed here starts working) and
12
+ // validate_nodes (which warns a page author who uses one, as PARAM_INERT).
13
+ // It used to live only in the test, so the suite knew a parameter did nothing
14
+ // while the validator told the author the page was fine.
15
+ //
16
+ // A baseline, not an allowlist: each entry is a known defect.
17
+
18
+ export const KNOWN_INERT = new Set([
19
+ // The mapper builds its own options and never consults the element, so
20
+ // the component's vocabulary is unreachable however faithfully it reads.
21
+ // Fixing one means changing how every existing page of that type renders,
22
+ // so each is recorded here rather than quietly patched.
23
+ // Text elements: the element TYPE picks the fluid step, because in Text
24
+ // the step also picks the tag — honouring `size` here turned an h2 into an
25
+ // h3 and changed the document outline. `tag` is the settable option.
26
+ "h1.size", "h2.size", "h3.size", "h4.size", "h5.size", "h6.size", "p.size",
27
+ // a
28
+ "a.transform",
29
+ // checkbox
30
+ "checkbox.area",
31
+ "checkbox.background",
32
+ "checkbox.color",
33
+ "checkbox.cursor",
34
+ "checkbox.height",
35
+ "checkbox.keySet",
36
+ "checkbox.mar",
37
+ "checkbox.maxWidth",
38
+ "checkbox.pad",
39
+ "checkbox.transform",
40
+ "checkbox.width",
41
+ // circle
42
+ "circle.transform",
43
+ // code
44
+ "code.transform",
45
+ // filePicker
46
+ "filePicker.radius",
47
+ // labelInput
48
+ "labelInput.color",
49
+ "labelInput.exact",
50
+ // nav
51
+ "nav.area",
52
+ "nav.cursor",
53
+ "nav.height",
54
+ "nav.maxHeight",
55
+ "nav.maxWidth",
56
+ "nav.opacity",
57
+ "nav.size",
58
+ "nav.transform",
59
+ "nav.width",
60
+ "nav.zIndex",
61
+ // polygon
62
+ "polygon.transform",
63
+ // radio
64
+ "radio.color",
65
+ "radio.exact",
66
+ // sideNav
67
+ "sideNav.area",
68
+ "sideNav.background",
69
+ "sideNav.color",
70
+ "sideNav.cursor",
71
+ "sideNav.height",
72
+ "sideNav.keySet",
73
+ "sideNav.mar",
74
+ "sideNav.maxHeight",
75
+ "sideNav.maxWidth",
76
+ "sideNav.opacity",
77
+ "sideNav.pad",
78
+ "sideNav.radius",
79
+ "sideNav.size",
80
+ "sideNav.transform",
81
+ "sideNav.width",
82
+ "sideNav.zIndex",
83
+ // table
84
+ "table.transform",
85
+ ]);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
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.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -142,6 +142,7 @@ function shapeFor(unit) {
142
142
  return SHAPES[unit] || null;
143
143
  }
144
144
  import { didYouMean, suggest, levenshtein } from "./suggest.js";
145
+ import { KNOWN_INERT } from "./known-inert.js";
145
146
 
146
147
  /**
147
148
  * Every key a morph node reads. Anything else on the node is ignored by
@@ -555,6 +556,18 @@ export function validateNodes(nodes, elements, defs) {
555
556
  `"${el.type}" does not read "${key}" — it is accepted and ignored`);
556
557
  }
557
558
 
559
+ // Advertised by the schema for this type, and known to
560
+ // do nothing (the conformance baseline). Same failure
561
+ // as above — accepted, ignored — but the name IS in
562
+ // the type's vocabulary, so only this list knows.
563
+ if (KNOWN_INERT.has(`${el.type}.${key}`)) {
564
+ warn("PARAM_INERT", `${p}.${key}`, key, [],
565
+ [key === "size" && /^(h[1-6]|p)$/.test(el.type)
566
+ ? "the element type sets the scale step; use `tag` for the heading level and keySet fontSize for the size"
567
+ : `see \`npx nodality schema ${el.type}\`; wrap the element in a \`wrap\` to style or place it`],
568
+ `"${el.type}" lists "${key}" but ignores it — a known gap, recorded in lib/known-inert.js`);
569
+ }
570
+
558
571
  // A value the parameter cannot use. Checked only where
559
572
  // the source declares a shape, so this grows with the
560
573
  // annotations and never guesses.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.15
2
+ * nodality v1.3.17
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.15",
3
+ "version": "1.3.17",
4
4
  "description": "A lightweight library for declarative UI elements.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",