skill
Adom UI Design System
Public Made by Adomby adom
How the AI builds and tests interfaces people love to use in Adom. Ships as one installable skill that bundles focused skills (tooltips, floating-windows, toasts, responsive-ui, app-shell, ai-driven-apps, clickable-paths).
← Commit history
2.1.2: module version decoupled from pack version so doc-only releases stop churning its bytes; a pre-check on a different dpr is a diagnosis not a proof
3 files changed
+38−4
assets/module/newbie-panel.js+1−1@@ -428,6 +428,6 @@ return { ok: ok, rows: rows }; } - root.AdomNewbiePanel = { mount: mount, toast: toast, selfCheck: selfCheck, version: '2.1.1',+ root.AdomNewbiePanel = { mount: mount, toast: toast, selfCheck: selfCheck, version: '2.1.2', TWO_COL_MIN: TWO_COL_MIN, PHRASE_BUDGET: PHRASE_BUDGET }; })(typeof window !== 'undefined' ? window : this);
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-ui-design",- "version": "2.1.1",+ "version": "2.1.2", "type": "skill", "description": "The Adom UI Design System plus a bundle of focused UI skills (tooltips, floating-windows, toasts, responsive-ui, app-shell, ai-driven-apps, clickable-paths, dark-default, input-feedback, settings-layout). One install drops the whole set of skill files onto your container, plus shared icon assets (the settings cog) so every Adom app draws the same glyph.", "dependencies": {},
skills/newbie-panel/SKILL.md+36−2@@ -140,8 +140,14 @@ grep -c 'root.AdomNewbiePanel' <that file> # and it is the IMPLEMENTATION the served file (a truncated or mis-escaped 100KB file satisfies every grep and then throws at the script tag) and publish the module's `sha256sum` with the release, so the next verifier compares bytes rather than counts. The module also self-reports-`AdomNewbiePanel.version`, which is generated from the pack version at build time and cannot-drift from it: that is the string to quote when pasting selfCheck output.+`AdomNewbiePanel.version`, and that is the string to quote when pasting selfCheck output.++**It is the MODULE's version, not the pack's, and they move independently on purpose.** The+first design tracked the pack version, which meant a documentation-only release changed the+module's bytes, invalidated every app's published hash, and asked six apps to re-pull and+re-verify a file that had not functionally changed. So: **if the module's sha256 is unchanged+between two pack versions, the release is documentation and you do not need to re-pull.** The+release note says which it is. Version sizes are a second, cheap check: 2.0.1 was 120202 bytes and 2.0.2 was 192654. A release that claims to add a 100KB module and does not grow is not carrying it. Deprecate the@@ -177,6 +183,34 @@ Deleting your hand-rolled panel is the part that breaks pages, not mounting the happened to be right while the install path was broken. `curl` your own route back and compare its sha256 to the pack's. +### ⛔ A PRE-CHECK ON YOUR OWN MACHINE IS A DIAGNOSIS, NOT THE PROOF++Run selfCheck wherever you like while you work. It only counts from **inside ah, on the+machine the fleet is reviewed on.** The reason is not ceremony, and kicad supplied the clean+example: its pre-check ran at **dpr 2 and returned ok:true**, so the border-width bug that+failed correct panels **at dpr 1.5 specifically** could not appear there. On John's laptop the+same panel would have failed, and kicad would have gone hunting through its own CSS for a+fault that was in the checker.++**A machine that differs from the target in ANY of the ways a bug can depend on will+confidently pass code that fails there.** Device pixel ratio is the one that bit us; pane+width, installed fonts, and the browser engine are the others in this fleet. So report a+pre-check as your diagnosis, name the machine and its dpr, and do not call it conformance.++### Publish the hash with every module release++kicad checked all four of the release claims rather than trusting them (bytes, sha256,+self-reported version, `node --check`) and confirmed the installed copy is byte-identical to+what was published. Its verdict is the reason to keep doing it: **publishing the hash turns+"did the module actually reach the app" from a guess into one command.**++### If you kept your own graduation logic, check you are not driving the toggle from both sides++The module now owns the open/closed memory. An app that kept its own graduation policy is+driving the same state from two places, which is what `onToggle(open, source)` exists to make+visible. The simplest safe position, and kicad's: **do not pass `onToggle` at all** unless you+genuinely need to react to it, and then branch on `source`.+ ### Prove it in one call ```js