← Commit history

v1.9.31: tour idle gate

John Lauer ·2c828ddf36 · ·parent 07d197f
4 files changed +22−6
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.9.30\ No newline at end of file+1.9.31\ 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.30",-    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.30/adom-bridge-fusion-v1.9.30.zip",-    "sha256": "7ab9fde1f6ca13dbb6c792460d5e5346b4c54bbe5dd54532936bc7078e52feb4",-    "size": 380901,+    "version": "1.9.31",+    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.31/adom-bridge-fusion-v1.9.31.zip",+    "sha256": "747295223d124465a0a477f6f3e01b8ceaedd9e0e16bae78fba1cf4ab246db52",+    "size": 381112,     "verbPrefixes": [         "fusion_"     ],
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.9.30",+  "version": "1.9.31",   "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+16
@@ -5663,6 +5663,20 @@ def _orchestrate_demo_tour(args: dict) -> dict:     with _DEMO_TOURS_LOCK:         _DEMO_TOURS[demo_id] = state +    def _wait_idle(max_s=180):+        """Fusion's main thread keeps grinding long ops after our proxy timeout returns+        (Create3DPackage on a cold session ran 120s+ and broke the next step's open,+        issue #30 cold-start validation). Gate on app-state responding again."""+        deadline = time.time() + max_s+        while time.time() < deadline:+            try:+                if _proxy_to_addin("get_app_state", {}, timeout=8).get("success"):+                    return True+            except Exception:+                pass+            time.sleep(5)+        return False+     def _snap(label):         # {title, image} is the ab web-control harness's gallery item contract (issue #29         # reply, harness live in ab 2.0.39) - label kept as an alias.@@ -5738,6 +5752,7 @@ def _orchestrate_demo_tour(args: dict) -> dict:                         state.setdefault("warnings", []).append("3d-package step skipped: " + str(cp.get("error")))                         state.setdefault("failedSteps", []).append(key)                 elif key == "make-project":+                    _wait_idle()                     r = _orchestrate_make_test_project({"libraryPath": state["sampleLbr"]})                     if r.get("success"):                         time.sleep(3)@@ -5747,6 +5762,7 @@ def _orchestrate_demo_tour(args: dict) -> dict:                         state.setdefault("warnings", []).append("make-project: " + str(r.get("error"))[:120])                         state["designOpenFailed"] = True                 elif key == "open-design":+                    _wait_idle()                     dispatch_command("open_cloud_file", {"fileName": query, "wait": False})                     deadline = time.time() + 170                     design_open = False