← Commit history

Update 4 file(s)

John Lauer ·78bdcef188 ·1mo ago ·parent 6c70a8c
4 files changed +27−9
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.204\ No newline at end of file+0.9.205\ No newline at end of file
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.204",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.204/adom-bridge-kicad-v0.9.204.zip",-  "sha256": "696e1952345434bb66f98cb729dd878a64f4251910cd688115640519f97d4fe2",-  "size": 473276,+  "version": "0.9.205",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.205/adom-bridge-kicad-v0.9.205.zip",+  "sha256": "7682b2c89037204b3db65dc87ecbb3fcba2ede71fe12eac66612b667e3a9f30c",+  "size": 473534,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-20T11:45:00Z",+  "released_at": "2026-08-20T12:10:00Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.204",+  "version": "0.9.205",   "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+20−2
@@ -116,7 +116,7 @@ def _symbol_on_disk_but_not_in_editor(kicad_info: dict, name: str) -> bool:     # and the verb blamed a stale index for a window that did not exist. A     # diagnosis about an editor requires an editor.     try:-        if not _find_symbol_editor() or not (_get_symbol_editor_title() or "").strip():+        if not _find_symbol_editor_settled(2.0) or not (_get_symbol_editor_title() or "").strip():             return False     except Exception:         return False@@ -219,6 +219,24 @@ def _find_symbol_editor() -> int | None:     return None  ++def _find_symbol_editor_settled(seconds: float = 4.0):+    """_find_symbol_editor, but tolerant of the frame being REBUILT.++    Wiki issue #41. KiCad recreates the Symbol Editor frame while it loads - the+    same editor was observed as hwnd 925862 and then 725748 minutes apart, with+    no user action. A single instantaneous lookup can therefore land in the gap+    and conclude "no Symbol Editor is open" about an editor that is on screen+    the whole time. Polling briefly turns a race into a wait."""+    deadline = time.time() + seconds+    while True:+        h = _find_symbol_editor()+        if h:+            return h+        if time.time() >= deadline:+            return None+        time.sleep(0.4)+ def _find_child_by_class_and_parent(parent_hwnd: int, child_class: str, parent_text: str) -> int | None:     """Find a child window by class name and parent window text."""     result = [None]@@ -804,7 +822,7 @@ def handle_open_symbol_editor(kicad_info: dict, args: dict) -> dict:         # try; COL0-TEST, installed minutes later, fails forever. Reporting that         # as "didn't load in the background" sends the caller to retry a call         # that cannot succeed.-        if not _find_symbol_editor():+        if not _find_symbol_editor_settled():             return {                 "success": False, "editorOpened": False, "symbolLoaded": False,                 "errorCode": "symbol_editor_not_open",