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.6.32: fix updating false-positive (stale webdeploy dirs) - caught on real laptop regression pass
5 files changed
+37−16
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.6.31+1.6.32
CHANGELOG.md+10@@ -3,6 +3,16 @@ All notable changes to the Adom Desktop Fusion 360 bridge, newest first. Canonical: https://wiki.adom.inc/adom/adom-desktop-fusion-bridge ยท GitHub backup: `adom-inc/adom-desktop-fusion-bridge` +## 1.6.32 - 2026-07-06++- **Fixed a false positive in 1.6.31's `updating` detection** (caught immediately on a real laptop+ during a regression pass). Fusion NEVER prunes old `webdeploy\production` builds, so a normal+ machine accumulates many stale ones (the laptop had 5, dating back to April, Fusion not even+ running) - and the bare "2+ builds" heuristic fired permanently, falsely telling callers "Fusion+ is auto-updating, restarting every 30-60s" when Fusion was simply closed. `fusion_update_in_progress()`+ now requires ACTIVE streaming: 2+ launcher builds AND at least one build dir modified in the last+ ~20 min. Stale leftovers no longer trigger it; the genuine mid-update flap still does.+ ## 1.6.31 - 2026-07-05 - **`fusion_readiness` now reports a distinct `updating:true` status when Fusion is applying an
adom-bridge-fusion-manifest.json+5−5@@ -1,13 +1,13 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.6.31",- "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.31/adom-bridge-fusion-v1.6.31.zip",- "sha256": "f40e26b5e42760dbec3bad48330606aa69884a67015513ffb546afc97130701b",- "size": 329710,+ "version": "1.6.32",+ "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.32/adom-bridge-fusion-v1.6.32.zip",+ "sha256": "daaf252426ff17ee0a327ce003cabe704d525b871f0fefe90f1969c7da184086",+ "size": 330230, "verbPrefixes": [ "fusion_" ], "healthEndpoint": "/status",- "released_at": "2026-07-05T21:35:14Z"+ "released_at": "2026-07-06T10:51:48Z" }
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.6.31",+ "version": "1.6.32", "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.",
fusion_detect.py+20−9@@ -111,14 +111,23 @@ def _find_fusion_launcher() -> Path | None: def fusion_update_in_progress() -> bool:- """Best-effort: is Fusion mid AUTO-UPDATE? Signalled by TWO+ production build- dirs (each with a FusionLauncher.exe) coexisting under webdeploy - the current- build plus the new one Fusion's streamer is materializing. While that applies,+ """Best-effort: is Fusion ACTIVELY applying an auto-update right now? While it is, Fusion crash-restarts ITSELF every ~30-60s, so verbs intermittently see 'not- running' (observed live on a fresh VM 2026-07-05: hashes 441fa88... + 6a0c961...).- Callers surface a distinct non-fatal `updating` status instead of a fatal error so- a driving AI waits/retries rather than treating the flap as a crash. Never raises."""- hashes = set()+ running' (observed live on a fresh VM 2026-07-05: hashes 441fa88... + 6a0c961...+ being streamed side by side). Callers surface a distinct non-fatal `updating`+ status instead of a fatal error so a driving AI waits/retries. Never raises.++ IMPORTANT (regression fix 2026-07-06, caught on a real laptop): a bare+ "2+ production dirs" count is NOT an update - Fusion NEVER prunes old webdeploy+ builds, so a normal machine accumulates many stale production dirs (the laptop had+ 5, from April-June, Fusion not even running). That made the flag fire permanently+ and falsely. So require ACTIVE streaming: 2+ launcher builds AND at least one build+ dir TOUCHED in the last ~20 min (the streamer is writing into it). Stale leftover+ dirs have old mtimes and no longer trigger it."""+ import time as _t+ now = _t.time()+ RECENT_SECS = 20 * 60+ launcher_mtimes = [] for base in _WEBDEPLOY_BASES: try: if not base.exists():@@ -126,12 +135,14 @@ def fusion_update_in_progress() -> bool: for d in base.iterdir(): try: if d.is_dir() and (d / "FusionLauncher.exe").exists():- hashes.add(d.name)+ launcher_mtimes.append(d.stat().st_mtime) except OSError: continue except OSError: continue- return len(hashes) > 1+ if len(launcher_mtimes) < 2:+ return False+ return any((now - mt) < RECENT_SECS for mt in launcher_mtimes) def _find_addins_dir() -> Path | None: