← Commit history

v0.9.144: focusDebug introspection in kicad_state (sweep/hook/sentinel liveness, inflight/guard counters, parked/baseline counts)

John Lauer ·abafa386c7 ·1mo ago ·parent 47ae756
6 files changed +21−7
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.143+0.9.144
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.143",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.143/adom-bridge-kicad-v0.9.143.zip",-  "sha256": "18bd5164feeead23309821859a354235b9e4e231d16d6720392e182ab675a775",-  "size": 418363,+  "version": "0.9.144",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.144/adom-bridge-kicad-v0.9.144.zip",+  "sha256": "7e580af00830888e3bcbfff3f8c33e4bced35b41067fb639aeb9cfccdce2a9b5",+  "size": 418539,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-17T14:27:48Z",+  "released_at": "2026-08-17T14:29:00Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.144.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.143",+  "version": "0.9.144",   "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+1
@@ -100,6 +100,7 @@ def handle_state(kicad_info: dict, args: dict) -> dict:         # 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,+        "focusDebug": (lambda: __import__("handlers.win_focus", fromlist=["x"]).get_focus_debug())() if True else None,         "activeVersion": kicad_info.get("version"),         "windows": [{k: w.get(k) for k in ("hwnd", "title", "className", "rect")}                     for w in windows],
handlers/win_focus.py+13
@@ -310,6 +310,19 @@ def expect_foreground(seconds: float = 20.0) -> None:     _expected_fg_until = max(_expected_fg_until, _t.monotonic() + seconds)  +def get_focus_debug() -> dict:+    """Introspection for the parking machinery (kicad_state.focusDebug)."""+    return {+        "sweepStarted": _park_sweep_started,+        "hookStarted": _hook_started,+        "sentinelStarted": _sentinel_started,+        "verbInflight": _verb_inflight,+        "guardCount": _guard_count,+        "parkedCount": len(_parked),+        "baselineCount": len(_park_baseline),+    }++ def get_focus_events() -> list:     """The sentinel's transition log, oldest first."""     return list(_focus_events) if _focus_events is not None else []