app
Widget order lab
Public Unreviewedby Ray
A deliberately awkward page for testing the markdown widget tag and section ordering (adom/wiki#152)
← Commit history
widget order lab: every registered widget, repeated, adjacent, and out of order
6 files changed
+101−32
README.md+57−1@@ -1,3 +1,59 @@ # Widget order lab -A deliberately awkward page for testing the markdown widget tag and section ordering (adom/wiki#152)+A deliberately awkward page, built for testing the markdown tag and section+ordering shipped in adom/wiki#152. Nothing here is a real part page: it exists to+be difficult.++What it exercises:++- **Every registered widget**, at least once+- **The same widget twice** on one page, with different data and different attrs+- **Widgets between prose**, not only under their own heading+- **Two widgets back to back** with no text between them+- **A widget as the first thing** after a heading, and as the last thing on the page+- **An unregistered tag**, which should render as nothing for a reader and a push hint for me+- **A tag with a bogus attribute**, which should be dropped rather than passed through+- **Sections declared out of their natural order** in page.json++## A wide part, first thing under the heading++::adom-pinout{src="/ray/widget-order-lab/render/pinout.json"}++## Two in a row, nothing between them++::adom-pinout{src="/ray/widget-order-lab/render/pinout-small.json" layout="dual"}+::adom-heatsink-via{src="/ray/widget-order-lab/render/heatsink.json"}++## Interleaved with prose++The paragraph before a widget should not merge into it, and the paragraph after+should not be swallowed. This sentence is the "before".++::adom-molecule{src="/ray/widget-order-lab/render/molecule.json"}++And this sentence is the "after", which should still be its own paragraph.++## The same tag again, further down++The second instance of a widget on one page is where element re-registration+would show up, if it were going to.++::adom-pinout{src="/ray/widget-order-lab/render/pinout.json" layout="quad" heading="Second instance, same data"}++## Things that should fail quietly++An unregistered tag, which a reader should never see:++::adom-not-a-real-widget{src="/ray/widget-order-lab/render/pinout.json"}++A registered tag carrying an attribute that is not on its allowlist. The widget+should render, and `onerror` should be dropped rather than reaching the element:++::adom-chip-thumbnail{mpn="STM32F103C8T6" package="LQFP-48" onerror="should-be-dropped"}++## Last thing on the page++A widget with nothing after it, in case trailing content is what keeps a frame+sized correctly.++::adom-pinout{src="/ray/widget-order-lab/render/pinout-small.json"}
heatsink.jsonadded+1@@ -0,0 +1 @@+{"mpn":"MCP23017","package":"QFN-28-1EP_6x6mm_P0.65mm_EP4.25x4.25mm","ep":{"w_mm":4.25,"h_mm":4.25,"number":29}}
molecule.jsonadded+1@@ -0,0 +1 @@+{"name": "STM32F103 \u00b7 minimum support", "components": [{"ref": "U1", "mpn": "STM32F103C8T6", "value": "STM32F103C8", "package": "LQFP-48", "type": "mcu"}, {"ref": "C1", "value": "100nF", "package": "0402", "type": "cap"}, {"ref": "C2", "value": "100nF", "package": "0402", "type": "cap"}, {"ref": "C3", "value": "100nF", "package": "0402", "type": "cap"}, {"ref": "C4", "value": "4.7uF", "package": "0805", "type": "cap"}, {"ref": "C5", "value": "10nF", "package": "0402", "type": "cap"}, {"ref": "C6", "value": "1uF", "package": "0603", "type": "cap"}, {"ref": "Y1", "value": "8MHz", "package": "HC-49", "type": "xtal"}, {"ref": "C7", "value": "20pF", "package": "0402", "type": "cap"}, {"ref": "C8", "value": "20pF", "package": "0402", "type": "cap"}, {"ref": "R1", "value": "10k", "package": "0402", "type": "res"}, {"ref": "C9", "value": "100nF", "package": "0402", "type": "cap"}], "nets": [{"name": "VDD", "pins": [{"ref": "U1", "pin": "VDD_1"}, {"ref": "U1", "pin": "VDD_2"}, {"ref": "U1", "pin": "VDD_3"}, {"ref": "C1", "pin": "1"}, {"ref": "C2", "pin": "1"}, {"ref": "C3", "pin": "1"}, {"ref": "C4", "pin": "1"}]}, {"name": "VDDA", "pins": [{"ref": "U1", "pin": "VDDA"}, {"ref": "C5", "pin": "1"}, {"ref": "C6", "pin": "1"}]}, {"name": "OSC_IN", "pins": [{"ref": "U1", "pin": "PD0"}, {"ref": "Y1", "pin": "1"}, {"ref": "C7", "pin": "1"}]}, {"name": "OSC_OUT", "pins": [{"ref": "U1", "pin": "PD1"}, {"ref": "Y1", "pin": "2"}, {"ref": "C8", "pin": "1"}]}, {"name": "NRST", "pins": [{"ref": "U1", "pin": "NRST"}, {"ref": "C9", "pin": "1"}]}, {"name": "BOOT0", "pins": [{"ref": "U1", "pin": "BOOT0"}, {"ref": "R1", "pin": "1"}]}, {"name": "GND", "pins": [{"ref": "U1", "pin": "VSS_1"}, {"ref": "U1", "pin": "VSSA"}, {"ref": "C1", "pin": "2"}, {"ref": "C4", "pin": "2"}, {"ref": "C9", "pin": "2"}, {"ref": "R1", "pin": "2"}]}]}
page.json+3−31@@ -1,35 +1,7 @@ {- "schema_version": 1,+ "title": "Widget order lab", "slug": "widget-order-lab", "type": "app",- "title": "Widget order lab", "brief": "A deliberately awkward page for testing the markdown widget tag and section ordering (adom/wiki#152)",- "version": "0.1.0",- "hero": {- "type": "billboard",- "headline": "Widgets, in the worst order we could arrange",- "subhead": "A test page for the markdown widget tag: repeats, adjacency, bad attrs and unregistered tags"- },- "author": {- "name": "Ray",- "email": "[email protected]"- },- "tags": [],- "license": "proprietary",- "visibility": {- "public": true- },- "sample_prompts": [],- "discovery_triggers": [],- "discovery_pitch": null,- "metadata": {},- "created_at": "2026-08-24T19:30:18.567Z",- "updated_at": "2026-08-24T19:30:18.567Z",- "install": {- "binary_name": "",- "install_dir": "",- "install_hint": "",- "version_cmd": ""- },- "skills": []-}+ "sections": ["readme", "hero", "info"]+}
pinout-small.jsonadded+38@@ -0,0 +1,38 @@+{+ "mpn": "ATTINY85",+ "package": "SOIC-8",+ "pins": [+ {+ "number": 1,+ "name": "RESET"+ },+ {+ "number": 2,+ "name": "PB3"+ },+ {+ "number": 3,+ "name": "PB4"+ },+ {+ "number": 4,+ "name": "GND"+ },+ {+ "number": 5,+ "name": "PB0"+ },+ {+ "number": 6,+ "name": "PB1"+ },+ {+ "number": 7,+ "name": "PB2"+ },+ {+ "number": 8,+ "name": "VCC"+ }+ ]+}
pinout.jsonadded+1@@ -0,0 +1 @@+{"mpn": "STM32F103C8T6", "package": "LQFP-48", "pins": [{"number": 1, "name": "VBAT", "xy": [-2.75, 4.25], "type": "power"}, {"number": 2, "name": "PC13-TAMPER-RTC", "xy": [-2.25, 4.25], "type": "io"}, {"number": 3, "name": "PC14-OSC32_IN", "xy": [-1.75, 4.25], "type": "clock"}, {"number": 4, "name": "PC15-OSC32_OUT", "xy": [-1.25, 4.25], "type": "clock"}, {"number": 5, "name": "PD0-OSC_IN", "xy": [-0.75, 4.25], "type": "clock"}, {"number": 6, "name": "PD1-OSC_OUT", "xy": [-0.25, 4.25], "type": "clock"}, {"number": 7, "name": "NRST", "xy": [0.25, 4.25], "type": "ctrl"}, {"number": 8, "name": "VSSA", "xy": [0.75, 4.25], "type": "power"}, {"number": 9, "name": "VDDA", "xy": [1.25, 4.25], "type": "power"}, {"number": 10, "name": "PA0-WKUP", "xy": [1.75, 4.25], "type": "io"}, {"number": 11, "name": "PA1", "xy": [2.25, 4.25], "type": "io"}, {"number": 12, "name": "PA2", "xy": [2.75, 4.25], "type": "io"}, {"number": 13, "name": "PA3", "xy": [4.25, 2.75], "type": "io"}, {"number": 14, "name": "PA4", "xy": [4.25, 2.25], "type": "io"}, {"number": 15, "name": "PA5", "xy": [4.25, 1.75], "type": "io"}, {"number": 16, "name": "PA6", "xy": [4.25, 1.25], "type": "io"}, {"number": 17, "name": "PA7", "xy": [4.25, 0.75], "type": "io"}, {"number": 18, "name": "PB0", "xy": [4.25, 0.25], "type": "io"}, {"number": 19, "name": "PB1", "xy": [4.25, -0.25], "type": "io"}, {"number": 20, "name": "PB2", "xy": [4.25, -0.75], "type": "io"}, {"number": 21, "name": "PB10", "xy": [4.25, -1.25], "type": "io"}, {"number": 22, "name": "PB11", "xy": [4.25, -1.75], "type": "io"}, {"number": 23, "name": "VSS_1", "xy": [4.25, -2.25], "type": "power"}, {"number": 24, "name": "VDD_1", "xy": [4.25, -2.75], "type": "power"}, {"number": 25, "name": "PB12", "xy": [2.75, -4.25], "type": "io"}, {"number": 26, "name": "PB13", "xy": [2.25, -4.25], "type": "io"}, {"number": 27, "name": "PB14", "xy": [1.75, -4.25], "type": "io"}, {"number": 28, "name": "PB15", "xy": [1.25, -4.25], "type": "io"}, {"number": 29, "name": "PA8", "xy": [0.75, -4.25], "type": "io"}, {"number": 30, "name": "PA9", "xy": [0.25, -4.25], "type": "io"}, {"number": 31, "name": "PA10", "xy": [-0.25, -4.25], "type": "io"}, {"number": 32, "name": "PA11", "xy": [-0.75, -4.25], "type": "io"}, {"number": 33, "name": "PA12", "xy": [-1.25, -4.25], "type": "io"}, {"number": 34, "name": "PA13", "xy": [-1.75, -4.25], "type": "io"}, {"number": 35, "name": "VSS_2", "xy": [-2.25, -4.25], "type": "power"}, {"number": 36, "name": "VDD_2", "xy": [-2.75, -4.25], "type": "power"}, {"number": 37, "name": "PA14", "xy": [-4.25, -2.75], "type": "io"}, {"number": 38, "name": "PA15", "xy": [-4.25, -2.25], "type": "io"}, {"number": 39, "name": "PB3", "xy": [-4.25, -1.75], "type": "io"}, {"number": 40, "name": "PB4", "xy": [-4.25, -1.25], "type": "io"}, {"number": 41, "name": "PB5", "xy": [-4.25, -0.75], "type": "io"}, {"number": 42, "name": "PB6", "xy": [-4.25, -0.25], "type": "io"}, {"number": 43, "name": "PB7", "xy": [-4.25, 0.25], "type": "io"}, {"number": 44, "name": "BOOT0", "xy": [-4.25, 0.75], "type": "ctrl"}, {"number": 45, "name": "PB8", "xy": [-4.25, 1.25], "type": "io"}, {"number": 46, "name": "PB9", "xy": [-4.25, 1.75], "type": "io"}, {"number": 47, "name": "VSS_3", "xy": [-4.25, 2.25], "type": "power"}, {"number": 48, "name": "VDD_3", "xy": [-4.25, 2.75], "type": "power"}]}