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.127: symbol-editor tier 1 waits up to 15s for the plugin to bind on a fresh PM - on 10.0.5 the in-process plugin post is the ONLY route from a running PM (external cross-process WM_COMMAND no longer lands)
5 files changed
+22−11
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.126+0.9.127
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.126",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.126/adom-bridge-kicad-v0.9.126.zip",- "sha256": "396e82de127b5688602fa4537318599e14ee185f6b191371943a4604982caf6c",- "size": 412683,+ "version": "0.9.127",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.127/adom-bridge-kicad-v0.9.127.zip",+ "sha256": "3613508335e8493502a98b023bf9406dbe2e2fdb4e1ef4b759c608cc66b49987",+ "size": 412891, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-16T18:07:07Z",+ "released_at": "2026-08-16T18:13:00Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.127.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.126",+ "version": "0.9.127", "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/open_symbol_editor.py+15−4@@ -424,10 +424,21 @@ def handle_open_symbol_editor(kicad_info: dict, args: dict) -> dict: ) tier1_source = "eeschema-20390" if not tier1.get("success"):- # 1b: fall through to kicad project manager- tier1_pm = try_wm_command_via_bridge(- exe_name="kicad", menu_id=KICAD_SYMBOL_EDITOR_CMD_ID, frame_index=0,- )+ # 1b: the kicad project manager. On 10.0.5 the EXTERNAL+ # PostMessage tier below is dead (cross-process WM_COMMAND no+ # longer lands, and the PM menu is not a native Win32 menu), so+ # this in-process plugin post is the ONLY route from a running+ # PM — and the plugin takes a few seconds to bind after PM+ # spawn. Wait for it (up to ~15s) instead of failing once+ # (demo job beats died racing a fresh PM, 2026-08-16).+ tier1_pm = {}+ for _attempt in range(5):+ tier1_pm = try_wm_command_via_bridge(+ exe_name="kicad", menu_id=KICAD_SYMBOL_EDITOR_CMD_ID, frame_index=0,+ )+ if tier1_pm.get("success"):+ break+ time.sleep(3) if tier1_pm.get("success"): tier1 = tier1_pm tier1_source = "kicad-20011"