← Commit history

v1.6.10: SDK-compliant not-installed hints (offer AI install, not manual)

John Lauer ·477475c631 ·3mo ago ·parent d4511ca
6 files changed +26−16
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.6.9\ No newline at end of file+1.6.10\ No newline at end of file
CHANGELOG.md+12
@@ -3,6 +3,18 @@ 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.10 - 2026-07-03++- **"Fusion not installed" hints now honor the SDK Tier-2 cardinal rule (found on a fresh-AD test).**+  Testing a first-time run on a clean AD 1.9.74 VM (ADOMBASELINE, no Fusion) showed the bridge's+  not-installed hints said "Fusion cannot be installed programmatically... ask the user to install it+  from autodesk.com... then retry" - a breach of the rule that the AI must OFFER to install the host+  app itself and NEVER tell the user to do it manually. All 4 not-installed hints (+ the `/status`+  tooltip) now offer AI-driven install via the `fusion-onboarding` skill (silent-install + Autodesk+  sign-in). Note: the correct probe for a "what EDA tools are installed" sweep is AD's+  `bridge_readiness` (side-effect-free aggregate with `edaToolsInstalled` + per-bridge `state:no-app`);+  verified it reports Fusion cleanly on the fresh VM via this bridge's `detect` block.+ ## 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
adom-bridge-fusion-manifest.json+5−5
@@ -1,13 +1,13 @@ {   "manifest_version": 1,   "name": "fusion360",-  "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,+  "version": "1.6.10",+  "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.10/adom-bridge-fusion-v1.6.10.zip",+  "sha256": "a70072e14337eeffd759f33dd83cc93ef37a797136ede1145633cb51013fa461",+  "size": 298417,   "verbPrefixes": [     "fusion_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-06-30T18:00:00Z"+  "released_at": "2026-07-03T15:30:00Z" }\ No newline at end of file
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.6.9",+  "version": "1.6.10",   "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.10",+  "version": "1.6.11",   "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+6−8
@@ -96,11 +96,9 @@ def _handle_launch(fusion_info: dict, args: dict) -> dict:     if not fusion_info.get("installed"):         return {             "success": False,-            "error": "Fusion 360 is not installed. "-                     "Download it from https://www.autodesk.com/products/fusion-360 "-                     "(free for personal/hobby use).",+            "error": "Fusion 360 is not installed on this machine.",             "errorCode": "fusion_not_installed",-            "_hint": "Fusion 360 cannot be installed programmatically. Report this to the user and ask them to install it from https://www.autodesk.com/products/fusion-360, then retry.",+            "_hint": "Fusion 360 isn't installed. Do NOT tell the user to install it themselves - OFFER to install it FOR them and do it on a yes: the fusion-onboarding skill silent-installs Fusion + drives the Autodesk sign-in. (For a plain 'what EDA tools are installed' check, AD's bridge_readiness reports this cleanly without erroring.)",         }      if _is_fusion_running():@@ -1959,7 +1957,7 @@ def dispatch_command(command: str, args: dict) -> dict:                 "success": False,                 "error": "Fusion 360 is not installed on this machine.",                 "errorCode": "fusion_not_installed",-                "_hint": "Fusion 360 cannot be installed programmatically. Report this error to the user and ask them to install Fusion from https://www.autodesk.com/products/fusion-360 (free for personal/hobby use), then retry.",+                "_hint": "Fusion 360 isn't installed. Do NOT tell the user to install it themselves - OFFER to install it FOR them and do it on a yes: the fusion-onboarding skill silent-installs Fusion + drives the Autodesk sign-in.",             }         if not _is_fusion_running():             return {@@ -2110,7 +2108,7 @@ def dispatch_command(command: str, args: dict) -> dict:             "success": False,             "error": f"Fusion 360 is not installed on this machine. (command: {command})",             "errorCode": "fusion_not_installed",-            "_hint": "Fusion 360 cannot be installed programmatically. Report this to the user and ask them to install it from https://www.autodesk.com/products/fusion-360, then retry.",+            "_hint": "Fusion 360 isn't installed. Do NOT tell the user to install it themselves - OFFER to install it FOR them and do it on a yes: the fusion-onboarding skill silent-installs Fusion + drives the Autodesk sign-in.",         }     if not _is_fusion_running():         return {@@ -2149,8 +2147,8 @@ def _build_status() -> dict:                    "need a Windows host with Fusion 360 installed.")     elif not installed:         led, summary = "yellow", "Fusion not installed"-        tooltip = ("Bridge running, but Fusion 360 is not installed. Install it from "-                   "autodesk.com/products/fusion-360, then call fusion_start.")+        tooltip = ("Bridge running, but Fusion 360 is not installed. The AI can install it "+                   "for the user (fusion-onboarding), then fusion_start.")     elif not running:         led, summary = "yellow", "Fusion not running"         tooltip = "Fusion 360 is installed but not running. Call fusion_start to launch it."