← Commit history

v1.9.25: cloud-direct saveAs recognized

John Lauer ·9261e40a6d ·1mo ago ·parent c845716
4 files changed +18−6
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.9.24\ No newline at end of file+1.9.25\ No newline at end of file
adom-bridge-fusion-manifest.json+4−4
@@ -1,10 +1,10 @@ {     "manifest_version": 1,     "name": "fusion360",-    "version": "1.9.24",-    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.24/adom-bridge-fusion-v1.9.24.zip",-    "sha256": "d9ea4cf800bcecb1a0f112d3da96918ca83cf105c87fa7cf356ec8f8f8673461",-    "size": 366388,+    "version": "1.9.25",+    "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.25/adom-bridge-fusion-v1.9.25.zip",+    "sha256": "7f9a6353408401cdfaed6a7175501c02e4370e8f7884e1a573c1b287c5de4f4a",+    "size": 366673,     "verbPrefixes": [         "fusion_"     ],
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.9.24",+  "version": "1.9.25",   "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.",
server.py+12
@@ -2916,6 +2916,18 @@ def _orchestrate_make_3d_package(args: dict) -> dict:     dims = res.get("dims") if isinstance(res, dict) else None     # AFTER shot: the chip placed flat on its footprint (pads landing on pads) in the 3D viewer.     after_shot = _capture_labeled(f"{cap_label}_after") if cap_label else None+    # doc.saveAs into a DataFolder IS a cloud save: dataFile.id returns the LINEAGE urn+    # (urn:adsk.wipprod:dm.lineage:<id>), and the binding's wip form is fs.file:vf.<same id>.+    # The old check demanded a local .f3d and treated this success as failure (caught live+    # 2026-08-15 on IN-S42ATA), then would have double-uploaded. Recognize it.+    if isinstance(f3d_path, str) and "dm.lineage:" in f3d_path:+        lineage_id = f3d_path.rsplit("dm.lineage:", 1)[-1]+        wip = "urn:adsk.wipprod:fs.file:vf.%s?version=1" % lineage_id+        return {"success": True, "wip_urn": wip, "lineageUrn": f3d_path, "dims": dims,+                "fileName": f3d_name, "savedTo": "cloud (Adom AI Workspace)",+                "before": before_shot, "after": after_shot,+                "_hint": "Saved DIRECTLY to the cloud workspace - no upload step needed. "+                         "Bind this wip_urn into the library's <packages3d>."}     if not f3d_path or not str(f3d_path).endswith(".f3d"):         return {"success": False, "error": "f3d saveAs did not produce a .f3d path: " + str(res),                 "before": before_shot, "after": after_shot,