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.45: always-sync add-in on startup (fix: add-in fixes never auto-deployed to existing installs)
5 files changed
+31−16
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.6.44+1.6.45
CHANGELOG.md+9@@ -3,6 +3,15 @@ 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.45 - 2026-07-06++- **Add-in changes now AUTO-DEPLOY - the bridge no longer only installs the add-in when it's MISSING.**+ Startup guarded `install_addin()` behind `if not addin_installed`, so a STALE add-in was never+ UPDATED: any add-in fix (e.g. the 1.6.44 get_parameters fix) failed to reach users who already had a+ copy - it silently kept running the old add-in. Now the bridge ALWAYS syncs on startup (idempotent -+ copies only changed files; safe while Fusion is up, lands on the next respawn with Fusion closed).+ This is a real distribution bug - without it, none of our add-in fixes shipped to existing installs.+ ## 1.6.44 - 2026-07-06 (add-in 1.0.4) - **Fixed `fusion_get_parameters` crashing on non-numeric parameters** (found during the laptop verb
adom-bridge-fusion-manifest.json+5−5@@ -1,13 +1,13 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.6.44",- "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.44/adom-bridge-fusion-v1.6.44.zip",- "sha256": "95f0356833e8e9aa1a48f0c8969a17657233fec2e123a2db82820cc973cb2063",- "size": 342151,+ "version": "1.6.45",+ "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.45/adom-bridge-fusion-v1.6.45.zip",+ "sha256": "950ef28e331e8ef278e020205d547fa732ce07973daa9b2fcbe992a441d49be1",+ "size": 342643, "verbPrefixes": [ "fusion_" ], "healthEndpoint": "/status",- "released_at": "2026-07-06T13:57:09Z"+ "released_at": "2026-07-06T14:10:08Z" }
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.6.44",+ "version": "1.6.45", "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.",
server.py+15−9@@ -3008,15 +3008,21 @@ def main(): print(f" Add-in: {'installed' if fusion_info.get('addin_installed') else 'not installed'}") print(f" Running: {fusion_info.get('running')}") - # Auto-install the add-in if Fusion is installed but the add-in isn't- if not fusion_info.get("addin_installed"):- print(f"[Fusion Bridge] Auto-installing AdomBridge add-in...")- try:- install_addin()- fusion_info = detect_fusion() # Re-detect after install- print(f" Add-in: {'installed' if fusion_info.get('addin_installed') else 'FAILED'}")- except Exception as e:- print(f" Add-in install failed: {e}")+ # ALWAYS sync the add-in on startup - it is idempotent (_sync_directory copies+ # only CHANGED files). The old `if not addin_installed` guard meant a STALE+ # add-in was never UPDATED: an add-in fix (e.g. get_parameters, caught live+ # 2026-07-06) never reached users who already had ANY copy, because the bridge+ # only deployed when it was entirely MISSING. Always-sync fixes that. It is safe+ # while Fusion is up (locked add-in files simply skip via the per-target OSError+ # catch); the update lands on the next bridge respawn with Fusion closed+ # (fusion_stop -> bridge_install -> fusion_start).+ print(f"[Fusion Bridge] Syncing AdomBridge add-in (idempotent; updates a stale copy)...")+ try:+ install_addin()+ fusion_info = detect_fusion() # Re-detect after sync+ print(f" Add-in: {'installed' if fusion_info.get('addin_installed') else 'FAILED'}")+ except Exception as e:+ print(f" Add-in sync failed: {e}") else: print(f" WARNING: Fusion 360 not found. Some commands will fail.")