app
Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
← Commit history
v1.9.34: shotId sibling fix
4 files changed
+12−9
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.33+1.9.34
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 {}