← Commit history

#196 harden: executeTextCommand can RETURN a failure without raising, so verify the active document actually changed before accepting an open; otherwise fall through to the 8.3 short-path attempt

John Lauer ·f85a55cd08 ·2mo ago ·parent 871c135
5 files changed +25−11
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.6.90+1.6.91
addin/AdomBridge/commands/open_electronics_file.py+16−1
@@ -52,13 +52,28 @@ def _open_local_document(app, file_path: str):                 attempts.append((buf.value, "shortpath"))         except Exception:             pass+    def _doc_name():+        try:+            d = app.activeDocument+            return d.name if d else None+        except Exception:+            return None++    before = _doc_name()     last = None     for arg, how in attempts:         try:             r = app.executeTextCommand("Document.newDesignFromLocal %s" % arg)-            return r, how         except Exception as e:             last = e+            continue+        # executeTextCommand does not always RAISE on failure - it can return an error+        # string and leave the document untouched. So confirm a document actually opened+        # before declaring victory, otherwise fall through to the next attempt.+        time.sleep(0.6)+        if _doc_name() != before:+            return r, how+        last = RuntimeError("open did not change the active document (result=%r)" % (r,))     raise last if last else RuntimeError("no open attempt ran")  
adom-bridge-fusion-manifest.json+5−5
@@ -1,13 +1,13 @@ {   "manifest_version": 1,   "name": "fusion360",-  "version": "1.6.90",-  "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.90/adom-bridge-fusion-v1.6.90.zip",-  "sha256": "3848365d4400db2136254db595340a2d79ba73d61fedffe4d3a0976a6bb93453",-  "size": 473602,+  "version": "1.6.91",+  "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.91/adom-bridge-fusion-v1.6.91.zip",+  "sha256": "81eb9d1037b8269ab1ab4d33910f7c7494d206150495e60f9525f4042e571361",+  "size": 473811,   "verbPrefixes": [     "fusion_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-07-20T15:53:10Z"+  "released_at": "2026-07-20T16:00:34Z" }\ No newline at end of file
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.6.90",+  "version": "1.6.91",   "description": "Drive Autodesk Fusion 360 from the cloud: launch Fusion, electronics board layout, design rules, exports (STEP/IGES/STL/3MF/USDZ/OBJ/DXF/DWG/Gerbers/BOM/CPL), fast APS server-indexed cloud search plus browse/recent/file-info/versions, cloud file download/upload and folder creation, and in-app parametric modeling (fusion_run_modeling_script). Never-charge: APS calls are capped to the free tier.",   "homepage": "https://wiki.adom.inc/adom/adom-desktop-fusion-bridge",   "author": "Adom Inc.",
page.json+2−3
@@ -1,6 +1,6 @@ {   "slug": "adom-desktop-fusion-bridge",-  "version": "1.6.90",+  "version": "1.6.91",   "type": "app",   "description": "Installs this bridge's skills into your container so your AI knows how to drive the bridge. The bridge runtime itself is loaded by Adom Desktop from the release zip.",   "dependencies": {@@ -73,6 +73,5 @@     "set up the fusion bridge"   ],   "discovery_pitch": "Use the Adom Desktop Fusion 360 bridge when the user wants to DRIVE Autodesk Fusion 360 from the cloud: open/search their team's Fusion cloud designs, lay out a PCB or do electronics, export STEP/IGES/STL/Gerbers/BOM, or build a component library with real rendering 3D. It runs Fusion on the user's own machine via Adom Desktop. NOT for web/browser/login/form-filling (that's the native-browser extension) and NOT for KiCad (that's the kicad bridge).",-  "brief": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.",-  "visibility": "public"+  "brief": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling." }\ No newline at end of file