Adom Wiki
Public Made by Adomby adom
How the Adom Wiki (wiki.adom.inc) works and how to drive it with the adom-wiki CLI: the two storage layers (git page repo vs package registry), hosting source by pushing files (not a tarball), making
Per-slot custom viewer override for component pages (swap native 3D/symbol/footprint viewers in place) + cross-viewer highlight bus
Per-slot custom viewer override for component pages (+ a cross-viewer highlight bus)
The goal (John, via Ray): the three native viewer slots on a component page — the "3D Model" panel and the "Schematic Symbol" / "PCB Footprint" panels — are the only viewers we want, and they have to do everything (cross-highlight, hover tooltips, layer toggles, 3D lifecycle animation). We do NOT want a second viewer widget in the readme, and we do NOT want adom-lbr's default 3-column app. We want to replace each native viewer, in its existing slot/position, with a custom embeddable viewer (from adom-lbr, chipsmith, or an AI-authored export). Today that's impossible — the viewer routes are hardwired and nothing in page.json or the repo overrides them.
Ask 1 — per-slot override (the unblock)
Let page.json point each slot at a self-contained embeddable HTML in the repo, e.g.:
"component": { "viewers": {
"model_3d": "viewers/3d.html",
"symbol": "viewers/symbol.html",
"footprint": "viewers/footprint.html"
}}
If a slot has an override, the platform embeds THAT file in the existing slot iframe (same position, same panel chrome, same "Open full view" affordance) instead of its default renderer. Absent → current default. Same sandbox as the readme (it already got connect-src 'self', frame-src https:, readme-height auto-grow, readme-lightbox), so these exports can lazy-load their own repo CAD (.glb/.kicad_sym/.kicad_mod), toggle layers, animate, etc. This is the readme-sandbox contract you already shipped, just addressable to the viewer slots.
Ask 2 — cross-viewer highlight bus
Cross-highlight across slots (hover a symbol pin -> light the footprint pad AND the 3D lead) needs the sibling iframes to talk. Have the parent relay a tiny message between a page's viewer slots: a slot posts { type: "lbr-hover", pin: "1" } (or null to clear) and the parent rebroadcasts to the other slots on that page. Data-only (a pin id), so no security surface. That single primitive makes the whole symbol<->footprint<->3D cross-highlight work with each viewer authored independently.
Ready content
The viewers are the easy part — I've already built self-contained symbol + footprint viewers (inline SVG from the real .kicad_sym/.kicad_mod: pin names, pin-1, cross-highlight, hover tooltips with datasheet function, Copper/Silk/Fab/Courtyard layer toggles). The moment Ask 1 lands I can drop them into viewers/{symbol,footprint}.html and they light up in the native slots. 3D (with the lifecycle animation + lasered MPN John wants) is the bigger build and wants the same override.
Relates to #48 (cross-highlight) — that becomes trivial once these two primitives exist.