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.37: screen-space click fallback
4 files changed
+21−6
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.36+1.9.37
adom-bridge-fusion-manifest.json+4−4@@ -1,10 +1,10 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.9.36",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.36/adom-bridge-fusion-v1.9.36.zip",- "sha256": "e9c44a4aef4179d46bda5ace301990e4bb343cddd8214ffa37bf7e27363999e1",- "size": 384038,+ "version": "1.9.37",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.37/adom-bridge-fusion-v1.9.37.zip",+ "sha256": "478062c241e344a8258dacde34281ff237217557ec039af24dc167caa88d8d4a",+ "size": 384345, "verbPrefixes": [ "fusion_" ],
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.9.36",+ "version": "1.9.37", "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+15@@ -5005,6 +5005,21 @@ def _fusion_click_signin() -> dict: # nested / stringified in output on 2.0.46) - search recursively, never guess a level. cm = _find_coordmap(_raw) sid = cm.get("shotId")+ if not sid:+ # VERSION-PROOF fallback (ab 2.0.46's direct API returns no coordMap at all):+ # compute the click in SCREEN space from the window rect - no shotId needed.+ w_rect = (win.get("rect") or {})+ L = w_rect.get("left"); T = w_rect.get("top")+ W = w_rect.get("width") or 0; H = w_rect.get("height") or 0+ if L is not None and W > 400 and H > 300:+ sx = int(L + W * 0.5); sy = int(T + H * 0.57)+ rr = _unwrap(_ad_call("desktop_click", {"x": sx, "y": sy, "hwnd": int(hwnd),+ "reason": "signing Fusion in for you (clicking Sign In, screen-space fallback)"},+ timeout=30))+ okc = rr.get("success") or rr.get("ok") or rr.get("status") == "ok"+ return {"clicked": bool(okc),+ "why": "screen-space fallback click at (%d,%d) rect %sx%s: %s" % (sx, sy, W, H, "ok" if okc else str(rr.get("error"))[:80]),+ "via": "screen-fallback"} if not sid: return {"clicked": False, "why": "screenshot returned no shotId (hwnd=%s raw_keys=%s err=%s)" % (