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.140: hook diagnostics (armed + per-event stderr) + SetWinEventHook restype
5 files changed
+10−7
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.139+0.9.140
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.139",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.139/adom-bridge-kicad-v0.9.139.zip",- "sha256": "ffdbca6c6dc884697394d6707772775cee2fddfc9d5917651b0f02766b301b88",- "size": 417374,+ "version": "0.9.140",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.140/adom-bridge-kicad-v0.9.140.zip",+ "sha256": "ededb375e362caeef7b4db7baad7ad3f3622ecc1f60bd7d4225556d6e6977e66",+ "size": 417463, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-17T14:20:57Z",+ "released_at": "2026-08-17T14:22:15Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.140.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.139",+ "version": "0.9.140", "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/win_focus.py+3@@ -429,6 +429,7 @@ def start_focus_event_hook() -> None: return # sanctioned foreground in progress if not is_kicad_window(hwnd): return+ print(f"[focus-hook] event=0x{event:04x} hwnd={hwnd} inflight={_verb_inflight} guards={_guard_count}", file=sys.stderr) if event == EVENT_OBJECT_SHOW: suppress_activation(hwnd) _park_offscreen(hwnd)@@ -451,12 +452,14 @@ def start_focus_event_hook() -> None: def _pump(): try:+ _user32.SetWinEventHook.restype = ctypes.wintypes.HANDLE h1 = _user32.SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, None, proc, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS) h2 = _user32.SetWinEventHook(EVENT_OBJECT_SHOW, EVENT_OBJECT_SHOW, None, proc, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS)+ print(f"[focus-hook] armed fg={bool(h1)} show={bool(h2)}", file=sys.stderr) if not (h1 or h2): return msg = ctypes.wintypes.MSG()