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
v0.9.92: library-only browse mode (open a LIBRARY without demanding a part load) in both editors
6 files changed
+37−7
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.91+0.9.92
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.91",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.91/adom-bridge-kicad-v0.9.91.zip",- "sha256": "57f61e83695437208d0dcf5a826e260f93a1aecde546ce4ab344ef415676d8a0",- "size": 384655,+ "version": "0.9.92",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.92/adom-bridge-kicad-v0.9.92.zip",+ "sha256": "8e5b2159ed87fad4a7e0b1be7a6d912bda21c61d9c87251e1e4a5bdfdff5383e",+ "size": 385143, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-14T18:38:58Z",+ "released_at": "2026-08-14T18:49:19Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.92.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.91",+ "version": "0.9.92", "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_footprint_editor.py+14@@ -696,6 +696,20 @@ def handle_open_footprint_editor(kicad_info: dict, args: dict) -> dict: return {"success": True, "output": "Footprint Editor opened successfully."} search_text = footprint_name or library_name++ # v0.9.92: LIBRARY-ONLY browse mode (mirror of the symbol editor).+ if library_name and not footprint_name:+ _background_navigate_win32_fp(fp_hwnd, library_name, verify="\u0000never")+ return {+ "success": True,+ "libraryShown": library_name,+ "output": f"Footprint Editor open with the '{library_name}' library filtered and selected. "+ f"No footprint was requested, so none was loaded into the canvas.",+ "via": "win32-library-browse",+ "_hint": ("Library browse mode: the tree is filtered to the library. To load a part, "+ "call again with footprintName too."),+ }+ _verify = (footprint_name or search_text).lower() # v0.9.89: plugin-free background load first (the 0.9.86 symbol-editor tier).
handlers/open_symbol_editor.py+16@@ -551,6 +551,22 @@ def handle_open_symbol_editor(kicad_info: dict, args: dict) -> dict: # navigate below is the fallback when no plugin instance is alive. # v0.9.77 (#20): wait up to 12s for the plugin on a cold-started eeschema — # first-probe give-up was why symbolName silently produced an empty editor.+ # v0.9.92: LIBRARY-ONLY mode — "open the Device library" is a browse ask, not+ # a part-load. Filter the tree to the library, select+expand its row, and+ # report success without demanding a title change (no part was requested).+ if library_name and not symbol_name:+ if _background_navigate_win32(sym_hwnd, library_name, verify="\u0000never"):+ pass # title-verify can't apply; fall through to the success below+ return {+ "success": True,+ "libraryShown": library_name,+ "output": f"Symbol Editor open with the '{library_name}' library filtered and selected. "+ f"No symbol was requested, so none was loaded into the canvas.",+ "via": "win32-library-browse",+ "_hint": ("Library browse mode: the tree is filtered to the library. To load a part into "+ "the canvas, call again with symbolName too."),+ }+ _verify = (symbol_name or search_text).lower() _pl = _plugin_background_load(search_text, library_name, wait_plugin_s=4.0) if str(_pl.get("loaded")) in ("True", "unverified"):