← Commit history

2.9.0 (doc only, module bytes unchanged): byte-compare your proxy against a stub - parse-then-re-emit reorders keys and retypes values while every 200-probe still passes

John Lauer ·ace5bfba0c ·1mo ago ·parent 233fe56
2 files changed +23−1
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-ui-design",-  "version": "2.8.2",+  "version": "2.9.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+22
@@ -107,6 +107,28 @@ the desktop-bridge-served one, where a direct fetch to the control port would be or unreachable. The dynamic control port also stays server-side rather than being baked into a page. +**⛔ DO NOT PARSE AND RE-EMIT. BYTE-COMPARE YOUR PROXY AGAINST A STUB.**++"Pass through unchanged" is easy to agree with and easy to violate, because **the natural way+to write this route in most languages is parse-then-re-emit**, which silently reorders keys,+drops whitespace, and can turn a numeric version into a string. The module compares+`updater.current_version` NUMERICALLY after splitting on dots, and reads `delivered_to` as an+ARRAY, so a re-serialisation that changes either type changes behaviour while every "does it+return 200" probe still passes.++You can prove fidelity without John's machine, and in about forty lines: stand up a stub+control API returning a known body, point a throwaway `HOME`'s `hydrogen-control-url` at it,+and **compare the sha256 of your route's response to the stub's**. project-manager's version+checks three things, and all three are failures a 200-probe sails past:++| assertion | the bug it catches |+|---|---|+| response sha256 identical, including awkward whitespace and a nested `delivered_to` | parse-then-re-emit |+| a non-200 status survives (upstream 207 returned as 207) | a hand-built `200 {ok:true}` wrapper |+| an unproxied path under the same prefix returns YOUR 404 | blanket-proxying the control API |++Run this before spending a slot. A round trip through his box tells you less and costs more.+ **READ THE CONTROL PORT AT REQUEST TIME. IT IS DYNAMIC PER ah LAUNCH.** Read `~/.adom/hydrogen-control-url`; do not hardcode 47084 or any port you once observed. A pinned port works until his next ah restart and then fails silently, which is the worst failure shape