← Commit history

v1.9.18: honest tour design side

John Lauer ·eb1c1101e2 ·1mo ago ·parent d1cf4c2
4 files changed +34−10
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.9.15\ No newline at end of file+1.9.18\ No newline at end of file
adom-bridge-fusion-manifest.json+4−4
@@ -1,10 +1,10 @@ {     "manifest_version": 1,     "name": "fusion360",-    "version": "1.9.15",-    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.15/adom-bridge-fusion-v1.9.15.zip",-    "sha256": "dc52de09c7277e17ee595100112e0defc9796cc0c348c534d7575820a54ee7cd",-    "size": 360197,+    "version": "1.9.18",+    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.18/adom-bridge-fusion-v1.9.18.zip",+    "sha256": "1eaa480c6c410aa41143e01dd2edcb580093a38dcbf1d093ff2c70632c95e558",+    "size": 360521,     "verbPrefixes": [         "fusion_"     ],
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.9.15",+  "version": "1.9.18",   "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/fusion-bridge",   "author": "Adom Inc.",
server.py+28−4
@@ -5679,22 +5679,46 @@ def _orchestrate_demo_tour(args: dict) -> dict:                             _dismiss_dialogs_bg()                         except Exception:                             pass+                        # Close the Package3D generator doc so it cannot linger as the+                        # active view and pollute the design-side screenshots (2026-08-15:+                        # shots 6-9 were four copies of this screen).+                        _proxy_to_addin("close_document", {"save": False}, timeout=30)+                        time.sleep(1)                     else:                         state.setdefault("warnings", []).append("3d-package step skipped: " + str(cp.get("error")))                         state.setdefault("failedSteps", []).append(key)                 elif key == "open-design":-                    r = dispatch_command("open_cloud_file", {"query": query, "wait": False})+                    dispatch_command("open_cloud_file", {"fileName": query, "wait": False})                     deadline = time.time() + 170+                    design_open = False                     while time.time() < deadline:                         st = _proxy_to_addin("get_app_state", {}, timeout=10)                         if query.lower() in str((st.get("data") or {}).get("activeDocument", "")).lower():+                            design_open = True                             break                         time.sleep(5)-                    _snap(label)+                    if design_open:+                        time.sleep(3)+                        _snap(label)+                    else:+                        # A screenshot of NOT-the-design is worse than an honest failure:+                        # record it and let the dependent view steps skip themselves.+                        state.setdefault("failedSteps", []).append(key)+                        state.setdefault("warnings", []).append(+                            "open-design: %r never became the active document within 170s" % query)+                        state["designOpenFailed"] = True                 elif key in ("schematic", "2d-board", "3d-board"):+                    if state.get("designOpenFailed"):+                        state.setdefault("failedSteps", []).append(key)+                        continue                     cmd = {"schematic": "show_schematic", "2d-board": "show_2d_board", "3d-board": "show_3d_board"}[key]-                    dispatch_command(cmd, {})-                    _snap(label)+                    r = dispatch_command(cmd, {})+                    if r.get("success"):+                        time.sleep(2)+                        _snap(label)+                    else:+                        state.setdefault("failedSteps", []).append(key)+                        state.setdefault("warnings", []).append("%s: %s" % (key, str(r.get("error"))[:120]))                 done_est += dur                 state.update(percent=int(100 * done_est / est),                              elapsedSec=int(time.time() - state["started"]))