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
signin: unique sessionId per open (reused id was refused) + broader opened detection
5 files changed
+18−14
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.6.93+1.6.94
adom-bridge-fusion-manifest.json+5−5@@ -1,13 +1,13 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.6.93",- "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.93/adom-bridge-fusion-v1.6.93.zip",- "sha256": "767d61e543c394e1b9c04478a5c268b7f0568b16dfe6ede8b29775df546c2650",- "size": 479846,+ "version": "1.6.94",+ "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.94/adom-bridge-fusion-v1.6.94.zip",+ "sha256": "5bf866c758b94a8d03e97a311ab34ac999e19ab57039af8afa68078c0565e254",+ "size": 479954, "verbPrefixes": [ "fusion_" ], "healthEndpoint": "/status",- "released_at": "2026-07-21T02:04:54Z"+ "released_at": "2026-07-21T02:09:20Z" }
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.6.93",+ "version": "1.6.94", "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/adom-desktop-fusion-bridge", "author": "Adom Inc.",
page.json+2−3@@ -1,6 +1,6 @@ { "slug": "adom-desktop-fusion-bridge",- "version": "1.6.93",+ "version": "1.6.94", "type": "app", "description": "Installs this bridge's skills into your container so your AI knows how to drive the bridge. The bridge runtime itself is loaded by Adom Desktop from the release zip.", "dependencies": {@@ -74,6 +74,5 @@ "set up the fusion bridge" ], "discovery_pitch": "Use the Adom Desktop Fusion 360 bridge when the user wants to DRIVE Autodesk Fusion 360 from the cloud: open/search their team's Fusion cloud designs, lay out a PCB or do electronics, export STEP/IGES/STL/Gerbers/BOM, or build a component library with real rendering 3D. It runs Fusion on the user's own machine via Adom Desktop. NOT for web/browser/login/form-filling (that's the native-browser extension) and NOT for KiCad (that's the kicad bridge).",- "brief": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.",- "visibility": "public"+ "brief": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling." }
server.py+9−4@@ -3813,16 +3813,21 @@ def _orchestrate_signin(args: dict) -> dict: "statusVerb": "fusion_signin"} tdesc = next((_describe_profile(c) for c in choices if c.get("profile") == target), target)+ import time as _tt+ sess = "fusion-signin-%d" % int(_tt.time()) # unique per attempt (a reused id can be refused) r = _ad_call("nbrowser_open_window",- {"sessionId": "fusion-signin", "url": auth["url"], "background": True,+ {"sessionId": sess, "url": auth["url"], "background": True, "profile": target, "thread": "fusion-signin", "purpose": "Fusion Autodesk sign-in (correct profile)"}, timeout=60)- opened = bool((r.get("data", r) if isinstance(r, dict) else {}).get("sessionId") or r.get("ok") or r.get("success"))- steps.append(("re-opened it in %s" % tdesc) if opened else ("could not open %s: %s" % (tdesc, r.get("_adCallError"))))+ rd_open = r.get("data", r) if isinstance(r, dict) else {}+ opened = bool(rd_open.get("sessionId") or r.get("ok") or r.get("success")+ or rd_open.get("opened") or ("opened in the BACKGROUND" in str(r.get("_hint", ""))))+ steps.append(("re-opened it in %s" % tdesc) if opened+ else ("could not open %s (raw: %s)" % (tdesc, str(r)[:160]))) return {"success": True, "stage": "opened" if opened else "open_failed", "done": False, "steps": steps, "signinWhere": tdesc, "signinProfile": target,- "signinProfileReason": reason, "signinSession": "fusion-signin" if opened else None,+ "signinProfileReason": reason, "signinSession": sess if opened else None, "signinWrongBrowser": "%s / %s" % (auth["browser"], auth["sourceProfileDir"]), "signinAuthUrl": auth["url"], "narrate": (("Fusion opened its sign-in in the WRONG browser (%s), so I moved the real "