← Commit history

2.20.0 (doc only): a pure layout number needs no slot - the embedded font makes a container Chrome at 734 reproduce his geometry; force the panel open before probing

John Lauer ·6e583b7fba ·1mo ago ·parent 617ec17
2 files changed +37−1
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-ui-design",-  "version": "2.19.3",+  "version": "2.20.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+36
@@ -672,6 +672,37 @@ The general form, worth more than the panel: **when an instrument can detect tha preconditions are unmet, it must refuse, not degrade.** Degrading produces confident wrong answers that cost someone a bug hunt. +### A PURE LAYOUT NUMBER DOES NOT NEED A SLOT ON HIS MACHINE++**The module embeds Satoshi as base64, so the font program in a container is byte-identical to+his.** Serve your real page, load it in the puppeteer Chrome at `--window-size=734` (his+scroller's client box), and you reproduce his exact geometry with no bridge call and no slot.++```+NOT /usr/bin/chromium-browser   — a snap stub that does not run+USE ~/.cache/puppeteer/chrome/linux-*/chrome-linux64/chrome+```++kicad produced its corrected headroom table this way: cell 342px, worst slack 141px, columns+2, twelve of twelve. **It is not a substitute for a live check on his box** — a real render,+his renderer, his ah — but for a pure layout number it is honest and free, and it is why the+retraction took minutes rather than a queue position.++Use it for anything geometric. Save the slot for what only his machine can answer: the running+process version, the real control API, and a real user gesture.++### ⛔ FORCE THE PANEL OPEN BEFORE MEASURING. ZERO IS THE SHAPE OF HAVING MEASURED NOTHING.++The panel carries `hidden` when collapsed, and **every rect in a hidden subtree is 0**. kicad's+first probe run therefore returned `have: 0` and `slack: -164` on all six rows, which reads+exactly like catastrophic truncation rather than like an unmeasured panel.++`selfCheck` already refuses in this case (it returns `invalid: true` at 0px width), so the trap+is only reachable from a probe you write yourself — which is the argument for using the row.++Same family as the unforegrounded-tab trap, and the same one-line lesson, which is kicad's:+**zero is almost never a measurement, it is the shape of having measured nothing.**+ ### Prove it in one call  ```js@@ -1231,6 +1262,11 @@ Neither can detect overflow in either direction for the reason that they are not text at all. Only a probe that lays the text out unconstrained can. | the offscreen `nowrap` probe | (correct) | reports true slack, 141–180px here | +The first row's asymmetry was **tested, not reasoned**: kicad appended a deliberately over-long+phrase as a control and the old expression read -434, identical to the probe. **It goes+correctly negative and only saturates upward, and that asymmetry is exactly what makes it look+trustworthy.**+ The second is strictly worse than the first and **agreed with it for an entirely unrelated reason**, which is how "two apps independently measured 0px" became persuasive. It was not two readings of one metric; it was two broken metrics meeting at their common floor.