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
Update 8 file(s)
8 files changed
+41−22
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.91+1.9.92
adom-bridge-fusion-manifest.json+4−4@@ -1,10 +1,10 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.9.91",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.106/adom-bridge-fusion-v1.9.91.zip",- "sha256": "18ffb7e842fb07e2f1d2978e38228c30c780079d6919f70d423a67d3a8175567",- "size": 428772,+ "version": "1.9.92",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.107/adom-bridge-fusion-v1.9.92.zip",+ "sha256": "74d91113f9eb1b6ffe03a78a90c530632d6eb5a5525cbd708825ffd95cabdadb",+ "size": 429187, "verbPrefixes": [ "fusion_" ],
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.9.91",+ "version": "1.9.92", "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.",
dashboard/Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "fusion-dashboard"-version = "1.9.106"+version = "1.9.107" edition = "2021" [dependencies]
install.sh+1−1@@ -21,7 +21,7 @@ echo "Installed fusion-bridge skills: $(ls "$PKG_DIR/skills" 2>/dev/null | tr '\ # binary (the three-artifact pattern: bridge zip -> ab, THIS pkg -> container skills + # this download, page media -> wiki). Per the wiki's PKG_VS_RELEASE policy, binaries are # platform-tagged RELEASE assets, never tarball content - the installer fetches them.-DASH_VERSION="1.9.106"+DASH_VERSION="1.9.107" DASH_URL="https://wiki.adom.inc/download/adom/fusion-bridge/${DASH_VERSION}/fusion-dashboard" DEST="" if [ -w /usr/local/bin ]; then DEST=/usr/local/bin
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "fusion-bridge",- "version": "1.9.106",+ "version": "1.9.107", "type": "app", "description": "This package installs the bridge's SKILLS into your container so your AI knows how to drive it; Adom Bridge loads the bridge runtime itself from the release zip.", "dependencies": {
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "fusion-bridge",- "version": "1.9.106",+ "version": "1.9.107", "type": "app", "description": "This package installs the bridge's SKILLS into your container so your AI knows how to drive it; Adom Bridge loads the bridge runtime itself from the release zip.", "dependencies": {
server.py+31−12@@ -580,18 +580,37 @@ def _handle_launch(fusion_info: dict, args: dict) -> dict: _el = _t0.time() - _warm_start if addin_ok: _tm.record("launch", _el, "warm")- return {- "success": True,- "output": "Fusion 360 is already running.",- "addinConnected": addin_ok,- "alreadyRunning": True,- "startKind": "warm",- "progress": _tm.terminal_block("launch", _warm_start,- "Fusion is already running - reusing it",- start_kind="warm", failed=not addin_ok),- "timings": _tm.summary().get("launch"),- "resolvedPath": fusion_info.get("exe_path", ""),- }+ # ⚠️ success:true WITH addinConnected:false IS A LIE (page issue #39). This verb's+ # contract says it blocks until the add-in is ready, and fusion_get_app_state's hint+ # tells callers to rely on that - so a caller does the documented thing, reads+ # success:true, retries its real command and fails. The field they check said yes+ # while the field that mattered said no.+ #+ # DOCTRINE: the add-in only loads AT LAUNCH, so "running but no add-in" is not+ # something more waiting can fix - it needs a restart, and the bridge performs it+ # rather than returning a cheerful false positive. Fall through to the cold path.+ if not addin_ok:+ print("[Fusion Bridge] warm start found NO add-in - restarting Fusion so it loads "+ "(never reporting success with addinConnected:false, issue #39)")+ try:+ handle_fusion_kill(fusion_info, {}) # a non-serving add-in will not close politely+ _t0.sleep(6)+ except Exception:+ pass+ fusion_info = detect_fusion()+ else:+ return {+ "success": True,+ "output": "Fusion 360 is already running.",+ "addinConnected": addin_ok,+ "alreadyRunning": True,+ "startKind": "warm",+ "progress": _tm.terminal_block("launch", _warm_start,+ "Fusion is already running - reusing it",+ start_kind="warm", failed=False),+ "timings": _tm.summary().get("launch"),+ "resolvedPath": fusion_info.get("exe_path", ""),+ } # Relocate any crash recovery files BEFORE launching Fusion. # This prevents the "Recovered Documents" dialog from appearing at all.