← Commit history

v0.9.117: update-nudge attachment moved to the HTTP funnel (readiness/bridge_status return via early dispatch paths and never reached the deep-site injection)

John Lauer ·1d577a7750 ·2mo ago ·parent b180a9b
5 files changed +21−19
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.116+0.9.117
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.116",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.116/adom-bridge-kicad-v0.9.116.zip",-  "sha256": "bb1c9f8d334e299e69ea75099bc020815baf327e02eba97b3f1e9ca1078c4fd6",-  "size": 410551,+  "version": "0.9.117",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.117/adom-bridge-kicad-v0.9.117.zip",+  "sha256": "1410532b2055a94eb051e5a74836c06c8ae70b6b5d4de845905107b90dd58103",+  "size": 410596,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-16T13:47:30Z",+  "released_at": "2026-08-16T13:49:12Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.117.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.116",+  "version": "0.9.117",   "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.",
server.py+14−12
@@ -755,18 +755,6 @@ def dispatch_command(command: str, args: dict) -> dict:     # Stamp the version actually used so callers can see which install ran     if isinstance(result, dict):         result.setdefault("kicadVersionUsed", selected_info.get("version"))-    # Proactive update nudge (0.9.116): at most one network check per 24h-    # (async), surfaced on the everyday status verbs so the AI can OFFER the-    # user an update — the AI only ever reads verb output.-    if isinstance(result, dict) and command in ("status", "readiness", "state",-                                                "bridge_status", "window_info"):-        try:-            from handlers.upgrade import kicad_update_nudge-            nudge = kicad_update_nudge(selected_info)-            if nudge:-                result.setdefault("kicadUpdate", nudge)-        except Exception:-            pass     # CONSTANT DIALOG COVERAGE: after EVERY GUI-affecting verb, sweep for KiCad     # dialogs (KiCad throws modal error boxes constantly — "Cannot enumerate     # ...Templates (Access denied)", save prompts, format warnings — that@@ -968,6 +956,20 @@ class KiCadBridgeHandler(BaseHTTPRequestHandler):          try:             result = dispatch_command(command, args)+            # Proactive update nudge (0.9.116): at most one network check per+            # 24h (async), surfaced on the everyday status verbs so the AI can+            # OFFER the user an update — the AI only ever reads verb output.+            if isinstance(result, dict) and command.split("_", 1)[-1] in (+                    "status", "readiness", "state", "window_info") or (+                    isinstance(result, dict) and command in ("status", "readiness", "state",+                                                             "bridge_status", "window_info")):+                try:+                    from handlers.upgrade import kicad_update_nudge+                    nudge = kicad_update_nudge(kicad_info)+                    if nudge:+                        result.setdefault("kicadUpdate", nudge)+                except Exception:+                    pass             self._respond(200, result)         except Exception as e:             print(f"[KiCad Bridge] ERROR: {e}")