← Commit history

Update 4 file(s)

John Lauer ·bda3d6db8d ·1mo ago ·parent 1e9e858
4 files changed +43−10
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.210\ No newline at end of file+0.9.211\ 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.210",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.210/adom-bridge-kicad-v0.9.210.zip",-  "sha256": "c06dc627507b8fe6d94afa33475f36af0602e319682ebf2e79cf5e1e3501228a",-  "size": 478408,+  "version": "0.9.211",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.211/adom-bridge-kicad-v0.9.211.zip",+  "sha256": "87da9060b22146a3d1981502bfbf410f872091b6732d696e41ac7865978aa312",+  "size": 480064,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-20T14:25:00Z",+  "released_at": "2026-08-20T15:20: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.210",+  "version": "0.9.211",   "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+36−3
@@ -862,6 +862,37 @@ def handle_open_symbol_editor(kicad_info: dict, args: dict) -> dict:                           "a bridge bug worth reporting, not a library problem."),             }         stale = _symbol_on_disk_but_not_in_editor(kicad_info, symbol_name or search_text)++        # 0.9.211 (wiki #35, Colby's root cause). We KNOW the remedy here, so+        # handing it back as a required argument is passing our own retry out+        # through the API - the same mistake 0.9.192 fixed for the navigate+        # retry. His measurement made the common path obvious: the Quick Actions+        # recipe installs a part and THEN shows it, so whenever an editor is+        # already open the new symbol is installed-after-open EVERY time. That+        # is why I measured 9s and he measured a hard failure.+        #+        # The one thing that must not happen is closing an editor a HUMAN opened.+        # The ownership ledger already answers that, so: rescan automatically+        # when the editor is ours, and only ask when it is theirs.+        if stale and not args.get("rescan") and not args.get("_autoRescanned"):+            _mine = False+            try:+                from handlers.win_focus import is_bridge_window+                _mine = bool(sym_hwnd) and is_bridge_window(sym_hwnd)+            except Exception:+                _mine = False+            if _mine:+                _r = handle_open_symbol_editor(+                    kicad_info, {**args, "rescan": True, "_autoRescanned": True})+                if isinstance(_r, dict):+                    _r["autoRescanned"] = True+                    _r.setdefault("_autoRescanHint",+                                  "This editor's library index predated the requested symbol, so "+                                  "the bridge reopened the editor to re-index (the cold library "+                                  "scan is why this call took about a minute). The editor was "+                                  "bridge-owned; an editor YOU opened is never closed automatically.")+                return _r+         if stale:             return {                 "success": False, "editorOpened": True, "symbolLoaded": False,@@ -873,9 +904,11 @@ def handle_open_symbol_editor(kicad_info: dict, args: dict) -> dict:                          f"(title: {_get_symbol_editor_title() or 'unknown'})",                 "_hint": ("This is not a search-timing failure and retrying will never fix it. "                           "The Symbol Editor has to re-index, which only happens when it opens. "-                          "Close the Symbol Editor and call again, or pass rescan:true to have "-                          "the bridge close and reopen it for you (that costs the cold "-                          "library-index time, roughly a minute - wiki issue #35)."),+                          "This editor was opened by a HUMAN, so the bridge will not close it "+                          "automatically. Close it and call again, or pass rescan:true to have "+                          "the bridge reopen it for you (that costs the cold library-index "+                          "time, roughly a minute - wiki issue #35). A bridge-owned editor is "+                          "re-indexed automatically and needs no argument."),             }         return {             "success": False, "editorOpened": True, "symbolLoaded": False,