← Commit history

v0.9.186: closes #34 Bug B - the cold footprint path no longer requires the user to already have a board; if the machine has none, generate a throwaway one purely to trigger KiCad's plugin scan

John Lauer ·fb925723a3 ·1mo ago ·parent 388d696
5 files changed +30−7
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.185+0.9.186
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.185",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.185/adom-bridge-kicad-v0.9.185.zip",-  "sha256": "289572d55a9f54487fff3cecba20ad9920f3d72f0b32ba77a15f93b1022a2a54",-  "size": 454450,+  "version": "0.9.186",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.186/adom-bridge-kicad-v0.9.186.zip",+  "sha256": "2abae3be4fa6ae7695bb2a7db1aa6f9d2e6a34559f8e4ac40cdf578889f0b25f",+  "size": 454911,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-19T19:00:04Z",+  "released_at": "2026-08-19T19:06:45Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.186.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.185",+  "version": "0.9.186",   "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/show.py+23
@@ -159,6 +159,29 @@ def ensure_plugin_ready(kicad_info: dict, waits: int = 14) -> bool:     for cand in sorted(docs.glob("adom-*/*.kicad_pcb")) + sorted(docs.glob("*/*.kicad_pcb")):         board = str(cand)         break+    if not board:+        # WIKI ISSUE #34 (Colby Knox), Bug B: on a box with no board anywhere,+        # the cold path had nothing to open and simply failed - "a user with no+        # board open cannot open the Footprint Editor at all". Generate a+        # throwaway board instead of giving up: it exists only to make KiCad+        # scan its plugin directory, and it costs a few KB in TEMP.+        try:+            import tempfile as _tf+            scratch = _P(_tf.gettempdir()) / "adom-plugin-bootstrap"+            scratch.mkdir(parents=True, exist_ok=True)+            board = str(scratch / "adom-plugin-bootstrap.kicad_pcb")+            if not _os.path.exists(board):+                _P(board).write_text(+                    '(kicad_pcb (version 20240108) (generator "adom-bridge")\n'+                    '  (general (thickness 1.6))\n'+                    '  (paper "A4")\n'+                    '  (layers (0 "F.Cu" signal) (31 "B.Cu" signal)\n'+                    '    (44 "Edge.Cuts" user))\n'+                    ')\n', encoding="utf-8")+            print(f"[show] no board on this machine - generated {board} purely to "+                  f"trigger KiCad's plugin scan (issue #34)", file=sys.stderr, flush=True)+        except Exception:+            return False     if not board:         return False     print(f"[show] no plugin bound - opening {board} in the background to bind it",