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
Update 4 file(s)
4 files changed
+29−7
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.203+0.9.204
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.203",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.203/adom-bridge-kicad-v0.9.203.zip",- "sha256": "6a11d4fb41c136ac77a2b31c9bc9be77a7c8517f57c57544855671a0084b5275",- "size": 472907,+ "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, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-20T11:30:00Z",+ "released_at": "2026-08-20T11:45: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.203",+ "version": "0.9.204", "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+22@@ -109,6 +109,17 @@ def _symbol_on_disk_but_not_in_editor(kicad_info: dict, name: str) -> bool: this after both background attempts already failed to find it in the tree.""" if not name: return False+ # 0.9.204: this check used to ask ONLY "is the symbol on disk?", so any+ # navigation failure with the symbol present produced a confident+ # "your editor's index is stale" - including when there was NO EDITOR AT+ # ALL. Caught live: a rescan closed the editor, the reopen did not land,+ # 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():+ return False+ except Exception:+ return False try: import adom_library paths = adom_library._get_paths(kicad_info)@@ -793,6 +804,17 @@ 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():+ return {+ "success": False, "editorOpened": False, "symbolLoaded": False,+ "errorCode": "symbol_editor_not_open",+ "error": f"No Symbol Editor is open, so '{search_text}' could not be loaded "+ f"(it was open earlier in this call if rescan was requested).",+ "_hint": ("The editor is gone rather than confused: nothing to navigate. "+ "Call again without rescan to open a fresh one. If this followed "+ "rescan:true, the close succeeded and the reopen did not - that is "+ "a bridge bug worth reporting, not a library problem."),+ } stale = _symbol_on_disk_but_not_in_editor(kicad_info, symbol_name or search_text) if stale: return {