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.124: symbol-editor appearance wait 6s -> 30s with WM_COMMAND repost at 10s (cold 10.0.5 PM races the demo job's back-to-back beats)
5 files changed
+16−10
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.123+0.9.124
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "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,+ "version": "0.9.124",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.124/adom-bridge-kicad-v0.9.124.zip",+ "sha256": "dfd7cdda6701c8e4af4419a887f614e1f19ae431f941950f0d6226774415c538",+ "size": 412323, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-16T17:55:38Z",+ "released_at": "2026-08-16T17:59:58Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.124.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.123",+ "version": "0.9.124", "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+9−3@@ -506,20 +506,26 @@ def handle_open_symbol_editor(kicad_info: dict, args: dict) -> dict: } time.sleep(2.0) - # Open Symbol Editor via WM_COMMAND+ # Open Symbol Editor via WM_COMMAND. A cold KiCad 10.0.5 project manager+ # can take 15s+ to act on the command (caught by the demo job racing it,+ # 2026-08-16) — wait up to 30s and re-post once at the 10s mark in case+ # the first message landed before the menu was wired. user32.PostMessageW(kicad_hwnd, WM_COMMAND, KICAD_SYMBOL_EDITOR_CMD_ID, 0) pathways_tried.append("wm_command") - for _ in range(12):+ for i in range(60): time.sleep(0.5) sym_hwnd = _find_symbol_editor() if sym_hwnd: break+ if i == 20:+ user32.PostMessageW(kicad_hwnd, WM_COMMAND, KICAD_SYMBOL_EDITOR_CMD_ID, 0)+ pathways_tried.append("wm_command-repost") if not sym_hwnd: return { "success": False,- "error": "WM_COMMAND sent to KiCad but Symbol Editor did not appear within 10s.",+ "error": "WM_COMMAND sent to KiCad but Symbol Editor did not appear within 30s.", "pathwaysTried": pathways_tried, "_hint": "Call screenshot_all to check for a modal dialog blocking KiCad, dismiss with send_key escape, then retry.", }