← Commit history

v1.9.34: shotId sibling fix

John Lauer ·9caf355064 · ·parent 3a1cdd7
4 files changed +12−9
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.9.33\ No newline at end of file+1.9.34\ 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.33",-    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.33/adom-bridge-fusion-v1.9.33.zip",-    "sha256": "80f27cfa690abe3b8320a7e233a5aa52bf93e75e84010e8bb0a69c30ff2123be",-    "size": 383539,+    "version": "1.9.34",+    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.34/adom-bridge-fusion-v1.9.34.zip",+    "sha256": "359b247f38b27cbafeeac1f34ecc2ec01fd4d3c75327ecedc2c8273fa0efc5e2",+    "size": 383645,     "verbPrefixes": [         "fusion_"     ],
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.9.33",+  "version": "1.9.34",   "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+6−3
@@ -4973,9 +4973,12 @@ def _fusion_click_signin() -> dict:         _ad_call("desktop_set_window_state", {"hwnd": int(hwnd), "state": "restore"}, timeout=30)         _t.sleep(1.5) -    shot = _unwrap(_ad_call("desktop_screenshot_window", {"hwnd": int(hwnd)}, timeout=45))-    cm = shot.get("coordMap") or {}-    sid = cm.get("shotId") or shot.get("shotId")+    _raw = _ad_call("desktop_screenshot_window", {"hwnd": int(hwnd)}, timeout=45)+    shot = _unwrap(_raw)+    # coordMap lives at the TOP level of the response, BESIDE data - _unwrap alone loses it+    # (this exact miss broke the server-side Sign In click twice, 2026-08-16).+    cm = shot.get("coordMap") or (_raw.get("coordMap") if isinstance(_raw, dict) else None) or {}+    sid = cm.get("shotId") or shot.get("shotId") or (_raw.get("shotId") if isinstance(_raw, dict) else None)     if not sid:         return {"clicked": False, "why": "screenshot returned no shotId"}     img = cm.get("image") or {}