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.39 hotfix: readiness scope bug
4 files changed
+20−21
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.38+1.9.39
adom-bridge-fusion-manifest.json+4−4@@ -1,10 +1,10 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.9.38",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.38/adom-bridge-fusion-v1.9.38.zip",- "sha256": "128cd2992aab0db5274f67acc9fd452f5d757777bcea8c15dd0c18d14308f869",- "size": 384995,+ "version": "1.9.39",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.39/adom-bridge-fusion-v1.9.39.zip",+ "sha256": "a2084e488ebdab251241eb0ee633571634251e0c846356c2ab66d968eead0840",+ "size": 385038, "verbPrefixes": [ "fusion_" ],
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.9.38",+ "version": "1.9.39", "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+14−15@@ -1445,21 +1445,6 @@ def _handle_fusion_readiness(fusion_info: dict, args: dict) -> dict: # always want the latest fusion... make this generally invisible to me"). Fusion nags # constantly; we click it in the BACKGROUND so the user never sees it. Sticky opt-out. _upd = _apply_fusion_update_silently()- if _LAST_UPDATE_OFFER.get("offered"):- out["fusionUpdateOffered"] = True- out["fusionUpdateHandled"] = bool(_upd.get("applied"))- if _upd.get("applied"):- out.setdefault("_hints", []).append(- "Fusion offered an update and I already clicked %r in the background - "- "tell the user it is handled, they never need to touch the nag."- % _upd.get("button"))- else:- out.setdefault("_hints", []).append(- "Fusion is OFFERING AN UPDATE and auto-update is %s. OFFER to run it for "- "the user ('want me to update Fusion in the background?') - "- "fusion_set_auto_update {enabled:true} makes it permanent, or a one-off "- "background click happens on the next sweep after they say yes."- % ("opted out" if not _auto_update_enabled() else "on but the click failed")) # APS is checked on EVERY launch now (John, 2026-07-22: "why aren't those just driven from # 1 login?"). Fusion sign-in and APS are both Autodesk logins; the user should authenticate # ONCE. They cannot share a token (Autodesk DPAPI-encrypts Fusion's store), but they CAN@@ -1542,6 +1527,20 @@ def _handle_fusion_readiness(fusion_info: dict, args: dict) -> dict: if seat_resolved: # We acted on it this call (whether or not it fully cleared yet). result["seatDialogAutoResolved"] = True+ # Update-offer visibility (John, 2026-08-16): a detected nag is ALWAYS reported, so the+ # AI either says "handled it" or OFFERS to run it - nothing detected goes unmentioned.+ if _LAST_UPDATE_OFFER.get("offered"):+ result["fusionUpdateOffered"] = True+ _handled = bool(locals().get("_upd", {}).get("applied")) if isinstance(locals().get("_upd"), dict) else False+ result["fusionUpdateHandled"] = _handled+ if _handled:+ result["fusionUpdateHint"] = ("Fusion offered an update and it was clicked in the "+ "background - tell the user it is handled.")+ else:+ result["fusionUpdateHint"] = ("Fusion is OFFERING AN UPDATE (auto-update %s). OFFER "+ "to run it: fusion_set_auto_update {enabled:true} or a "+ "one-off background click on the next sweep."+ % ("opted out" if not _auto_update_enabled() else "pending")) return result