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.92
4 files changed
+8−9
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.1.0"+VERSION = "4.1.1" AI_THREAD = "kicad-dashboard" DEFAULT_PORT = 8931 UI_DIR = Path(__file__).resolve().parent / "ui"
dashboard/ui/index.html+5−6@@ -599,17 +599,16 @@ function doMount(phrases){ mount:'#newbie', app:'kicad', appName:'KiCad Dashboard', slug:'kicad-bridge', toggleButton:'#btnHelp', demo:{label:'Play the demo', meta:'6 views, about 2 minutes',- onPlay:function(){ $('#btnDemo') ? $('#btnDemo').click() : startDemo(); }},+ onPlay:function(){ startDemo(); }}, phrases:phrases.slice(0,6) }); } // Guided demo with a REAL progress bar + the stepShot stream (one screenshot per finished beat).-$('#btnDemo').onclick=async()=>{- const b=$('#btnDemo');b.disabled=true;+async function startDemo(){ toast('starting the guided demo (background)'); $('#demoShots').innerHTML=''; const s=await act('demo',{muted:demoMuted()});const d=s.data||s;- if(d.success===false){toast('demo failed to start: '+(d.error||'unknown'),'err');b.disabled=false;return;}+ if(d.success===false){toast('demo failed to start: '+(d.error||'unknown'),'err');return;} $('#demoBar').style.display='block'; $('#demoToolbar').style.display='flex'; const poll=setInterval(async()=>{@@ -625,9 +624,9 @@ $('#btnDemo').onclick=async()=>{ c.innerHTML='<img src="data:image/png;base64,'+q.stepShot.image+'" alt="'+(q.stepShot.title||'')+'"><div class="cap">'+(q.stepShot.title||q.stepShot.step||'')+'</div>'; $('#demoShots').appendChild(c); }- if(q.done){clearInterval(poll);b.disabled=false;$('#demoToolbar').style.display='none';toast(q.error?('demo failed: '+q.error):(q.result&&q.result.exited?'demo stopped':'demo complete'),'' + (q.error?'err':'ok'));refresh(true);}+ if(q.done){clearInterval(poll);$('#demoToolbar').style.display='none';toast(q.error?('demo failed: '+q.error):(q.result&&q.result.exited?'demo stopped':'demo complete'),'' + (q.error?'err':'ok'));refresh(true);} },3000);-};+} // Demo transport: mirrors the ab toast buttons; the bridge applies commands // between beats (a beat that is mid-open finishes first). async function demoCtl(cmd){
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "kicad-bridge",- "version": "1.0.91",+ "version": "1.0.92", "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.91",+ "version": "1.0.92", "tags": [ "kicad", "pcb",