← Commit history

v0.9.135: board3d beat waits for the PCB editor to be findable before invoking the 3D viewer (mid-transition race made a 5/6)

John Lauer ·6553d6668f ·1mo ago ·parent 254dfa4
5 files changed +21−8
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.134+0.9.135
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.134",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.134/adom-bridge-kicad-v0.9.134.zip",-  "sha256": "2e2586a98ab1fc48e47ac01cf507dd0a28de2e76777df1eca02d9e15cb216b23",-  "size": 415193,+  "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,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-16T20:27:28Z",+  "released_at": "2026-08-16T20:31:11Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.135.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.134",+  "version": "0.9.135",   "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/demo.py+14−1
@@ -420,7 +420,20 @@ def _run_step(kicad_info: dict, step: str, prep: dict) -> dict:                              "'Pads 12' in the status bar — proof the footprints loaded"],                 "raw": r}     if step == "board3d":-        import time; time.sleep(2)+        # Wait for the PCB editor to actually be findable — the board beat can+        # return while pcbnew is mid-transition (title swap / repaint), and the+        # 3D open's precheck then misses it (5/6 flake, 2026-08-16).+        import time+        try:+            from .kicad_ui import _find_all_kicad_windows+            for _ in range(15):+                if any("pcb editor" in (w.get("title") or "").lower()+                       for w in _find_all_kicad_windows()):+                    break+                time.sleep(1)+        except Exception:+            pass+        time.sleep(2)         r = handle_open_3d_viewer(kicad_info, {"editor": "pcb"})         return {"ok": bool(r.get("success")), "window": "3D Viewer",                 "title": "3/6 · The whole board in 3D",