← Commit history

1.39.0: a structural audit cannot see a missing function; assert behaviour and self-check for an empty panel

John Lauer ·c82eef0d0f ·1mo ago ·parent c55abe2
2 files changed +33−1
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-ui-design",-  "version": "1.38.2",+  "version": "1.39.0",   "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+32
@@ -326,6 +326,38 @@ the page. Check it by toggling: screenshot with the panel open and closed and compare the distance from the header to the first content row. It should be identical. +## ⛔ A STRUCTURAL AUDIT CANNOT SEE A MISSING FUNCTION++lbr shipped a panel whose markup and CSS were provably correct and which rendered **zero+prompts** in the user's ah. Its 22-check headless byte-audit passed. One root cause produced+three separate symptoms:++> A non-greedy regex in a toast rewrite swallowed the adjacent `api()` helper — the single+> fetch wrapper every call site used. The page threw `ReferenceError: api is not defined` on+> its first call, and because each loader swallowed its own errors, the page went SILENT: no+> prompt rows, no copy buttons to measure, and a red "not answering" pill that was its own+> catch-path fallback.++Two rules fall out, and they are the ones a byte-audit will never give you:++- **Assert BEHAVIOUR, not only markup and CSS.** "The markup is right" is not "the page+  works". A structural check cannot see a missing function any more than it can see a+  breakpoint. Load the page and assert that rows actually EXIST at runtime.+- **Do not let every call site swallow its own errors.** Silence turned one deleted function+  into an empty panel that looked deliberate. A page that fails should say so.++**Ship the self-check that makes this class impossible to hide** (lbr's, and worth copying):++```js+// 1.5s after load: an OPEN panel with zero rows is a bug, not a state.+setTimeout(() => {+  if (panelIsOpen() && rowCount() === 0) toast('error', 'Prompts failed to load — reload');+}, 1500);+```++An empty panel is never a legitimate resting state, so a page that finds itself in one should+say so rather than present it as design.+ ## Two traps that make a CORRECT-LOOKING panel render wrong  Both found by parts-search on 2026-08-25, and both passed every computed-style check it ran.