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.136: kicad_state.userIdleSeconds - the presence gate for automation (John was actively working when a window-spawning suite ran; window automation must defer while a human is at the box)
5 files changed
+14−7
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.135+0.9.136
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.135",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.135/adom-bridge-kicad-v0.9.135.zip",- "sha256": "5e58616cdda140e14dcdc5d569d8638e979e51c381c6513f484863f5e445e9a7",- "size": 415353,+ "version": "0.9.136",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.136/adom-bridge-kicad-v0.9.136.zip",+ "sha256": "d7b3825a5814703bf003a2215dca9263a6ca1431dc42a09ba991db28ad5bc0da",+ "size": 415573, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-16T20:31:11Z",+ "released_at": "2026-08-17T14:03:27Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.136.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.135",+ "version": "0.9.136", "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/state.py+7@@ -83,9 +83,11 @@ def handle_state(kicad_info: dict, args: dict) -> dict: pass focus_events = []+ user_idle_s = None try: from handlers import win_focus focus_events = win_focus.get_focus_events()[-40:]+ user_idle_s = round(win_focus._seconds_since_user_input(), 1) except Exception: pass @@ -93,6 +95,11 @@ def handle_state(kicad_info: dict, args: dict) -> dict: "success": True, "running": running, "focusEvents": focus_events,+ # PRESENCE GATE (John, 2026-08-17: a test suite foregrounding windows+ # while he worked "MASSIVELY DISRUPTED" him). Automation that spawns+ # windows MUST check this first and defer while the user is active:+ # < 600 means a human touched this machine in the last 10 minutes.+ "userIdleSeconds": user_idle_s, "activeVersion": kicad_info.get("version"), "windows": [{k: w.get(k) for k in ("hwnd", "title", "className", "rect")} for w in windows],