← Commit history
dashboard/kicad_dashboard.py+1−1
@@ -49,7 +49,7 @@ from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path from urllib.parse import unquote, urlparse -VERSION = "4.2.1"+VERSION = "4.3.0" AI_THREAD = "kicad-dashboard" DEFAULT_PORT = 8931 UI_DIR = Path(__file__).resolve().parent / "ui"
dashboard/ui/index.html+9
@@ -26,6 +26,15 @@ body{background:var(--bg);color:var(--text-body);font:15px/1.5 'Satoshi',sans-se ::-webkit-scrollbar-thumb:hover{background:rgba(0,184,177,.55);background-clip:padding-box} ::-webkit-scrollbar-corner{background:transparent} body{overflow-x:hidden}          /* the page never scrolls horizontally */+/* FLUID, and the FLEET GUTTER. No max-width: a dashboard fills its window like+   a native app. The 16px horizontal padding is the contract (newbie-panel+   2.3.0): the panel's border box must equal documentElement.clientWidth - 32,+   so every app's panel is the same width at the same pane and the 700px+   two-column threshold is crossed by all of them together. This rule was lost+   in an earlier CSS deletion, which left the panel full-bleed at 734 and the+   page content hugging the left edge - visible in my own frame, and I did not+   look hard enough at it. */+main{margin:0;padding:20px 16px 84px} header{height:44px;display:flex;align-items:center;gap:12px;padding:0 16px;margin:0;border-radius:0;background:var(--surface);border-bottom:1px solid var(--border);overflow:hidden} /* The header was the ONLY thing overflowing narrow panes: measured at a real    236px surface the nowrap brand + target chip + four ghost buttons pushed
dashboard/ui/newbie-panel.js+13−1
@@ -421,6 +421,18 @@     var cols = cs.gridTemplateColumns.split(' ').filter(Boolean).length;     rows.push({ what: 'columns at this width', want: panel.getBoundingClientRect().width >= TWO_COL_MIN ? '2' : '1',                 got: String(cols), pass: true });+    /* THE GUTTER ROW. Four apps measured at the SAME 744px pane reported panel widths of+     * 734, 735, 702 and 694, because each page put a different amount of its own padding+     * around the mount point. 694 is under the 700 threshold, so that app rendered ONE+     * column while the other three rendered TWO, at an identical pane width. The panel was+     * conformant in all four; the PAGE around it was not. The fleet gutter is 16px a side,+     * so the panel's border box is the pane minus 32. */+    var vw = document.documentElement.clientWidth;+    var want32 = vw - 32, gotW = Math.round(panel.getBoundingClientRect().width);+    var gutterOk = Math.abs(gotW - want32) <= 2;+    if (!gutterOk) ok = false;+    rows.push({ what: 'panel gutter', want: want32 + 'px wide (16px a side)',+                got: gotW + 'px (' + Math.round((vw - gotW) / 2) + 'px a side)', pass: gutterOk });     var fam = getComputedStyle(panel.querySelector('.anp-phrase span') || panel).fontFamily;     var famOk = /Satoshi/.test(fam);     if (!famOk) ok = false;@@ -428,6 +440,6 @@     return { ok: ok, rows: rows };   } -  root.AdomNewbiePanel = { mount: mount, toast: toast, selfCheck: selfCheck, version: '2.1.2',+  root.AdomNewbiePanel = { mount: mount, toast: toast, selfCheck: selfCheck, version: '2.3.0',                            TWO_COL_MIN: TWO_COL_MIN, PHRASE_BUDGET: PHRASE_BUDGET }; })(typeof window !== 'undefined' ? window : this);
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "kicad-bridge",-  "version": "1.0.94",+  "version": "1.0.95",   "type": "app",   "description": "Skills for your container so your AI knows how to drive the KiCad bridge. The bridge runtime itself is the release zip; Adom Bridge loads that.",   "tags": [
page.json+1−1
@@ -4,7 +4,7 @@   "slug": "kicad-bridge",   "title": "KiCad - the KiCad Bridge",   "brief": "Reference implementation of the KiCad bridge — multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.",-  "version": "1.0.94",+  "version": "1.0.95",   "tags": [     "kicad",     "pcb",