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.147: guardian arms for EVERY spawn verb (was gated on a captured user foreground that can be None) - closes the unguarded gap where late-created windows were adopted by rebaselining
5 files changed
+13−8
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.146+0.9.147
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.146",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.146/adom-bridge-kicad-v0.9.146.zip",- "sha256": "af208f574376000f07a75b58794d97b77d250f1f1b330fc5bd62268b3be3f15a",- "size": 419050,+ "version": "0.9.147",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.147/adom-bridge-kicad-v0.9.147.zip",+ "sha256": "527e7f27a30724c00955686b2f98c45e883fdc8855db06b4e84aad3b58f635c5",+ "size": 419197, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-17T14:33:29Z",+ "released_at": "2026-08-17T14:35:29Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.147.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.146",+ "version": "0.9.147", "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.",
server.py+6−1@@ -851,7 +851,12 @@ def dispatch_command(command: str, args: dict) -> dict: except Exception: pass - if _user_fg is not None:+ if _user_fg is not None or command in _SPAWNS_WINDOW:+ # 2026-08-17: the guard arm was gated on a captured user foreground —+ # when capture returned None (seen live), NO guard armed after spawn+ # verbs, so late-created windows appeared in an unguarded gap and the+ # parking rebaseline adopted them as the user's. The guardian only+ # touches KiCad windows now, so arm it for EVERY spawn verb. try: from handlers import win_focus # v0.9.104: NO user-window restore — the guardian handles KiCad