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.9: fusion_start slow-launch fix (#63)
7 files changed
+52−12
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.6.8+1.6.9
CHANGELOG.md+11@@ -3,6 +3,17 @@ 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.9 - 2026-06-30++- **`fusion_start` no longer dead-ends on a slow first launch (fixes #63, Arav's blocker 1).** A first+ launch (fresh install: component downloads/updates/cloud sync) can take 2-4 min, far past AD's ~60s+ relay request cap - so `{"timeout":300}` could never win and the call looked like a hard failure.+ Now the launch confirms the Fusion process, then waits for the add-in only within a budget that+ stays UNDER the relay cap; if the add-in isn't up yet it returns `{success:true, stillLaunching:true,+ statusVerb:"fusion_readiness"}` with a `_hint` to POLL `fusion_readiness` until `ready:true` (never+ re-call `fusion_start`). Fast/normal launches still return "launched successfully" as before. The+ USER-skill cold-start table gained a `stillLaunching` row.+ ## 1.6.8 - 2026-06-30 - **Stale add-in is no longer a SILENT failure (fixes #55, Drew's report).** The add-in now REPORTS
SKILL.md+2−1@@ -22,7 +22,8 @@ Branch on the stable `errorCode`, never the prose: | response (`errorCode`) | what it means | what you do | |---|---|---| | `ready:true` (fusion_readiness) | Fusion up + add-in current | drive |-| `running:false` / `fusion_not_running` | installed, not launched | `fusion_start` (blocks until the add-in is ready), retry |+| `running:false` / `fusion_not_running` | installed, not launched | `fusion_start` (returns when the add-in is ready, or `stillLaunching` on a slow first launch) |+| `stillLaunching:true` (fusion_start) | first launch, add-in not up yet (can take 2-4 min) | do NOT re-call `fusion_start`; POLL `fusion_readiness` every ~10s until `ready:true` | | `installed:false` | no Fusion host app | [fusion-onboarding](skills/fusion-onboarding/SKILL.md); AD DETECTS Fusion (never installs it) | | `addinStale:true` / `addin_stale` | Fusion runs an OLD add-in that never re-synced (silent-failure risk) | `fusion_stop` then `fusion_start` — the bridge re-syncs the add-in from cache on start (Fusion must be CLOSED) | | `blockingDialogs:[…]` | a modal is blocking the add-in | dismiss in the BACKGROUND, then the op auto-resumes |
adom-bridge-fusion-manifest.json+5−5@@ -1,13 +1,13 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.6.8",- "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.8/adom-bridge-fusion-v1.6.8.zip",- "sha256": "9dc5bed4d8a7db0dbdc7fc4863c42d12b95b0747e9081dbb8ebd4cb6661428da",- "size": 297014,+ "version": "1.6.9",+ "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.9/adom-bridge-fusion-v1.6.9.zip",+ "sha256": "8c1e27debcc7a1f2c27d7bcb0ff5d81395f9fdae6b8206b7ce50d66530f10353",+ "size": 297978, "verbPrefixes": [ "fusion_" ], "healthEndpoint": "/status",- "released_at": "2026-06-30T17:15:00Z"+ "released_at": "2026-06-30T18:00:00Z" }
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.6.8",+ "version": "1.6.9", "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+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-fusion-bridge",- "version": "1.6.9",+ "version": "1.6.10", "type": "app", "description": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: 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 with browse/recent/versions, cloud download/upload and folder creation, and in-app parametric modeling. Never-charge: APS calls are capped to the free tier.", "dependencies": {},
server.py+31−3@@ -123,12 +123,40 @@ def _handle_launch(fusion_info: dict, args: dict) -> dict: except Exception: pass - # Launch Fusion and wait for it + add-in- err = ensure_fusion_running(fusion_info, wait_addin=True)+ # Launch Fusion. AD's relay caps a single request at ~60s, but a FIRST launch+ # (fresh install: component downloads, updates, cloud sync) can take 2-4 min -+ # far past the cap. So we DON'T block on the add-in for the whole launch (that+ # dead-ended #63/Arav, and {"timeout":300} can't beat the relay cap). Instead:+ # launch + confirm the process, then wait for the add-in only within a budget+ # that keeps this request UNDER the relay cap; if it's still coming up, return a+ # clean stillLaunching response telling the caller to POLL fusion_readiness.+ import time as _t+ _start = _t.time()+ err = ensure_fusion_running(fusion_info, wait_addin=False) if err: return err - addin_ok = wait_for_addin(timeout=5)+ _RELAY_BUDGET = 50 # keep total handler time under AD's ~60s relay cap+ _remaining = max(6, int(_RELAY_BUDGET - (_t.time() - _start)))+ addin_ok = wait_for_addin(timeout=_remaining, dismiss_dialogs=True)++ if not addin_ok:+ # Add-in not up within our budget. On a first launch this is EXPECTED+ # (still initializing), not a failure and not a retry-able timeout.+ return {+ "success": True,+ "stillLaunching": True,+ "addinConnected": False,+ "statusVerb": "fusion_readiness",+ "recoveryFilesRelocated": reloc["moved"],+ "resolvedPath": fusion_info.get("exe_path", ""),+ "_hint": (+ "Fusion is LAUNCHING but the add-in isn't up yet - a FIRST launch can take "+ "2-4 min (component downloads / updates / cloud sync). This is NOT a failure and "+ "NOT a timeout to retry: do NOT re-call fusion_start. POLL fusion_readiness every "+ "~10s until ready:true (or fusion_addin_status until it responds), then drive."+ ),+ } # Auto-dismiss the "Recovered Documents" dialog if it appeared on launch. # Even though we relocated files above, Fusion may still show recovery