app
KiCad - the KiCad Bridge
Public Made by Adomby adom
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.
← Commit history
Publish 1.0.85
4 files changed
+10−7
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 = "3.5.0"+VERSION = "3.6.0" AI_THREAD = "kicad-dashboard" DEFAULT_PORT = 8931 UI_DIR = Path(__file__).resolve().parent / "ui"
dashboard/ui/index.html+7−4@@ -37,7 +37,7 @@ header{height:44px;display:flex;align-items:center;gap:12px;padding:0 16px;margi .actions{flex:none} .target-chip{min-width:0;max-width:38vw;overflow:hidden} .target-chip #chipName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}-@media (max-width:620px){+@media (max-width:700px){ .brand .sub{display:none} .target-chip{max-width:30vw} }@@ -107,12 +107,15 @@ main{margin:0;padding:20px 16px 84px} .panel-x:focus-visible{outline:2px solid var(--teal);outline-offset:2px} .panel-cols{display:grid;grid-template-columns:minmax(180px,220px) 1fr;gap:24px;align-items:start;margin-top:14px} .panel-right{border-left:1px solid var(--line);padding-left:24px;min-width:0}-/* 620px, NOT 760 (adom-ui-design 1.25.0). John's dock pane measures 744px,+/* 700px (adom-ui-design, 2026-08-25). Was 760, then 620, now 700: his panes+ measure 632, 744 and 851 SIMULTANEOUSLY - there is no single pane width -+ and at 632 the two-column layout truncated the very qualifier the strip+ exists to teach. 700 puts 632 in one column and 744/851 in two. which sits BELOW 760, so the two-column panel never rendered in the pane it was designed for: the app looked compliant and every screenshot he saw was the collapsed fallback. A breakpoint bug is invisible to anyone whose test widths straddle it, so 744 is now in my matrix. */-@media (max-width:620px){+@media (max-width:700px){ .panel-cols{grid-template-columns:1fr} .panel-right{border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:16px} }@@ -1048,7 +1051,7 @@ setMuteUI(); (function reportViewport(){ const send=()=>{try{fetch('api/viewport',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({innerWidth:window.innerWidth,innerHeight:window.innerHeight,scrollWidth:document.documentElement.scrollWidth,overflowX:document.documentElement.scrollWidth>window.innerWidth,offenders:(()=>{const vw=window.innerWidth,out=[];document.querySelectorAll('body *').forEach(n=>{const r=n.getBoundingClientRect();if(r.right>vw+1||r.width>vw+1){out.push((n.id?'#'+n.id:(n.className&&n.className.toString().split(' ')[0]?'.'+n.className.toString().split(' ')[0]:n.tagName))+':w'+Math.round(r.width)+',r'+Math.round(r.right));}});return out.slice(0,8)})(),- dpr:window.devicePixelRatio,twoCol:window.innerWidth>620,+ dpr:window.devicePixelRatio,twoCol:window.innerWidth>700, panelCols:getComputedStyle(document.querySelector('.panel-cols')||document.body).gridTemplateColumns})}).catch(()=>{});}catch(e){}}; send();window.addEventListener('resize',()=>{clearTimeout(window.__vpT);window.__vpT=setTimeout(send,400);}); })();
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "kicad-bridge",- "version": "1.0.84",+ "version": "1.0.85", "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.84",+ "version": "1.0.85", "tags": [ "kicad", "pcb",