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
v0.9.123: failed demo beats now report failReason (handler success/error/output) in the result and log raw to stderr - the summary discarded the underlying error and made background failures undiagnosable
5 files changed
+16−8
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.122+0.9.123
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.122",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.122/adom-bridge-kicad-v0.9.122.zip",- "sha256": "f6ef6aac978f097aaea1340fa7ec2215d6ab7fc2d7912e69a48ad9dd21347041",- "size": 412059,+ "version": "0.9.123",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.123/adom-bridge-kicad-v0.9.123.zip",+ "sha256": "6360c5e526c43f6005d811052cf25a953667046dab521336ce4de6588d3ea13e",+ "size": 412175, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-16T17:48:35Z",+ "released_at": "2026-08-16T17:55:38Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.123.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.122",+ "version": "0.9.123", "description": "Reverse bridge for KiCad \u2014 board/schematic introspection, lint via kicad-cli, plugin install, multi-instance probe, in-process DRC.", "homepage": "https://wiki.adom.inc/adom/adom-bridge", "author": "Adom Inc.",
handlers/demo.py+9−1@@ -520,6 +520,9 @@ def _run_demo_background(kicad_info: dict) -> None: _t.sleep(3) r = _run_step(kicad_info, s_, prep) r["retried"] = True+ if not r.get("ok"):+ print(f"[demo] beat '{s_}' FAILED: raw={str(r.get('raw'))[:400]}",+ file=_sys.stderr) r["step"] = s_ results.append(r) shot = _beat_shot(kicad_info, f"Opening {s_.replace('_', ' ')}",@@ -542,7 +545,12 @@ def _run_demo_background(kicad_info: dict) -> None: "openedBeats": ok_ct, "totalBeats": len(STEPS), "failedSteps": [r["step"] for r in results if not r.get("ok")], "steps": [{"step": r["step"], "title": r.get("title"),- "ok": r.get("ok"), "pointOut": r.get("pointOut")}+ "ok": r.get("ok"), "pointOut": r.get("pointOut"),+ "failReason": (None if r.get("ok") else {+ "handlerSuccess": bool((r.get("raw") or {}).get("success")),+ "error": str((r.get("raw") or {}).get("error") or "")[:200],+ "output": str((r.get("raw") or {}).get("output") or "")[:200],+ })} for r in results], "narrate": " ".join(r.get("say", "") for r in results if r.get("ok")), "state": state,