← Commit history

v1.6.45: always-sync add-in on startup (fix: add-in fixes never auto-deployed to existing installs)

John Lauer ·081e2cab53 ·3mo ago ·parent bc6a562
5 files changed +31−16
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.6.44\ No newline at end of file+1.6.45\ No newline at end of file
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.")