← Commit history

v0.9.72: demo clears stale .lck files (force-killed KiCad left locks that popped File Open Warning and blocked every load) + idempotent warm-up (repeat calls spawned duplicate editor pairs)

John Lauer ·6b9acd0aba ·2mo ago ·parent 1f97723
5 files changed +21−7
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.71+0.9.72
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.71",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.71/adom-bridge-kicad-v0.9.71.zip",-  "sha256": "1565375de642c42a59e622da75d954de3321801ba5e35700ec061a2389d6c706",-  "size": 366198,+  "version": "0.9.72",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.72/adom-bridge-kicad-v0.9.72.zip",+  "sha256": "c821d251d83ffa480741edb2e78cf736e7f47aeb1eadcccd9b9bace54273485d",+  "size": 366463,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-08T23:50:06Z",+  "released_at": "2026-08-09T00:06:13Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.72.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.71",+  "version": "0.9.72",   "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/demo.py+14
@@ -281,6 +281,13 @@ def _prepare(kicad_info: dict) -> dict:             fp if r.get("success") else f"{fp}: {r.get('error')}")      d = _demo_dir()+    # A force-killed KiCad leaves `~<file>.lck` lockfiles behind; the next open+    # then pops a modal "File Open Warning" and the sheet stays untitled+    # (observed live 2026-08-09: five blocked editor pairs). These are OUR+    # generated files, so clearing stale locks is always safe.+    for lck in d.glob("*.lck"):+        try: lck.unlink()+        except Exception: pass     (d / "adom-demo.kicad_sch").write_text(_schematic(), encoding="utf-8")     (d / "adom-demo.kicad_pcb").write_text(_board(kicad_info), encoding="utf-8")     (d / "adom-demo.kicad_pro").write_text('{"board":{},"meta":{"filename":"adom-demo.kicad_pro","version":1},"schematic":{},"sheets":[]}', encoding="utf-8")@@ -305,6 +312,13 @@ def _warm_kicad(kicad_info: dict, prep: dict) -> dict:     Windows still open in the background; this only costs a few seconds.     """     import time+    try:+        from .kicad_ui import _find_all_kicad_windows+        titles = [(w.get("title") or "") for w in _find_all_kicad_windows()]+        if any("Schematic Editor" in t for t in titles) and any("PCB Editor" in t for t in titles):+            return {"warmed": True, "eeschema": True, "pcbnew": True, "reused": True}+    except Exception:+        pass     # Symbol Editor is hosted inside EESCHEMA and Footprint Editor inside PCBNEW.     # Warming only one leaves the other's editor with no host app, which fails as     # "Could not open the Footprint Editor via the background (plugin) path".