← Commit history

v0.9.169: the install gate compared only EXISTENCE of generated loaders, so 0.9.168's rewritten loader never shipped to boxes that already had the old one. Content-compare every generated artifact

John Lauer ·efa7ec7038 ·1mo ago ·parent 8ae4105
5 files changed +22−11
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.168+0.9.169
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.168",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.168/adom-bridge-kicad-v0.9.168.zip",-  "sha256": "df470c89ac11371cbbf17a5c8b86c59f04cc74906c81ebb87a1805f5e7beab22",-  "size": 444853,+  "version": "0.9.169",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.169/adom-bridge-kicad-v0.9.169.zip",+  "sha256": "712d685502391a40ad2cd888cdfc977c9d46c4c80f41d78ec36a4f9dd87737f1",+  "size": 445013,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-18T13:52:13Z",+  "released_at": "2026-08-18T13:53:22Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.169.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.168",+  "version": "0.9.169",   "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.",
plugin_install.py+15−4
@@ -340,11 +340,22 @@ def _install_one_version(version: str, version_info: dict) -> dict:     # 0.9.167: the up-to-date check must cover EVERY artifact we deploy, or a     # new loader silently never ships (0.9.166's plugin-dir loader hit exactly     # this: "already-current" returned before it was written).-    _plugin_dir_ok = all((d / "adom_bridge_plugin.py").exists()-                         for d in _kicad_plugin_dirs(str(version or "10.0"))) \-        if _kicad_plugin_dirs(str(version or "10.0")) else False+    # 0.9.169: compare CONTENT, not mere existence. 0.9.168 rewrote this loader+    # and the existence-only gate reported "already-current", so the corrected+    # file never shipped - the same class of miss as 0.9.166's.+    def _generated_current(path, text):+        try:+            return path.exists() and path.read_text(encoding="utf-8") == text+        except Exception:+            return False++    _pdirs = _kicad_plugin_dirs(str(version or "10.0"))+    _plugin_dir_ok = bool(_pdirs) and all(+        _generated_current(d / "adom_bridge_plugin.py", _PLUGIN_DIR_LOADER) for d in _pdirs)+    _boot_ok = (_generated_current(dest_boot, _BOOT_PY)+                and _generated_current(dest_pth, "import adom_bridge_boot\n"))     if (dest_bridge_hash == src_bridge_hash and dest_loader_hash == src_loader_hash-            and pre_state["adom_bridge_boot.pth"]["exists"] and _plugin_dir_ok):+            and _boot_ok and _plugin_dir_ok):         report["action"] = "already-current"         report["payloadVersion"] = PAYLOAD_VERSION         report["message"] = (