← Commit history
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.9.300\ No newline at end of file+1.9.301\ 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.300",-  "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.300/adom-bridge-fusion-v1.9.300.zip",-  "sha256": "2379dffc9d12ff9900bd2559e9441b67f25cd1369c704466381b1267240f36c2",-  "size": 585949,+  "version": "1.9.301",+  "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.301/adom-bridge-fusion-v1.9.301.zip",+  "sha256": "ab2bc64c0629806b6de267e4c96184239e5eb49f2aa47c7b242e1f19bdf1149b",+  "size": 586411,   "verbPrefixes": [     "fusion_"   ],
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.9.300",+  "version": "1.9.301",   "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.lock+1−1
@@ -4,7 +4,7 @@ version = 4  [[package]] name = "fusion-dashboard"-version = "1.9.300"+version = "1.9.301" dependencies = [  "serde_json", ]
dashboard/Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "fusion-dashboard"-version = "1.9.300"+version = "1.9.301" 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.300"+DASH_VERSION="1.9.301" 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.300",+  "version": "1.9.301",   "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+11−8
@@ -1,6 +1,6 @@ {   "slug": "fusion-bridge",-  "version": "1.9.300",+  "version": "1.9.301",   "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": {@@ -11,6 +11,10 @@     "uninstall": "./uninstall.sh"   },   "tags": [+    "ab",+    "bridge",+    "fusion",+    "desktop-app",     "fusion360",     "autodesk",     "cad",@@ -75,7 +79,10 @@     "build a basic parts library",     "add a 3d model to a component",     "make a fusion 360 library with 3d",-    "set up the fusion bridge"+    "set up the fusion bridge",+    "fusion dashboard",+    "fusion status page",+    "open the fusion launch page"   ],   "discovery_pitch": "Use the Adom Bridge Fusion 360 bridge when the user wants to DRIVE Autodesk Fusion 360 from the cloud: open/search their team's Fusion cloud designs, lay out a PCB or do electronics, export STEP/IGES/STL/Gerbers/BOM, or build a component library with real rendering 3D. It runs Fusion on the user's own machine via Adom Bridge. NOT for web/browser/login/form-filling (that's the native-browser extension) and NOT for KiCad (that's the kicad bridge).",   "brief": "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.",@@ -104,9 +111,5 @@       "label": "Part volume",       "prompt": "How much material does each printed part in this assembly use?"     }-  ],-  "author": {-    "name": "John Lauer",-    "email": "[email protected]"-  }-}\ No newline at end of file+  ]+}
server.py+23
@@ -13947,8 +13947,31 @@ def _handle_install_library_bundle(fusion_info: dict, args: dict) -> dict:         # solve, this folder must never add one.         home = os.path.expanduser("~")         dest = os.path.join(home, "Documents", "AdomLibraries", re.sub(r"\s+", "_", lib_name))+        # PRESERVE the previous install's 3D bindings (2026-08-31, seen live: a re-install+        # overwrites the fully-bound .lbr at run start, so cancelling mid-bind left the+        # library with Placeholder packages). Harvest the old copy's package3d urns before+        # the overwrite and re-inject them; the merge-aware injector lets the new run's+        # binds win as they land, while unrebound parts keep the 3D they already had.+        _old_bindings = []+        try:+            _dest_lbr = os.path.join(dest, os.path.basename(lbr_found))+            if os.path.isfile(_dest_lbr):+                _old_txt = open(_dest_lbr, "r", encoding="utf-8", errors="replace").read()+                for _m in re.finditer(r'<package3d name="([^"]+)"[^>]*wip_urn="([^"]+)"', _old_txt):+                    _old_bindings.append({"package": _m.group(1), "wip_urn": _m.group(2)})+        except Exception:+            _old_bindings = []         placed = _lb.place_library(lbr_found, models, dest)         lbr_path = placed["lbrPath"]+        if _old_bindings:+            try:+                _txt = open(lbr_path, "r", encoding="utf-8", errors="replace").read()+                _txt = _inject_package3d_bindings(_txt, _old_bindings)+                open(lbr_path, "w", encoding="utf-8").write(_txt)+                print("[Fusion Bridge] carried %d prior 3D binding(s) into the fresh install"+                      % len(_old_bindings))+            except Exception as _e:+                print("[Fusion Bridge] could not carry prior bindings: %s" % str(_e)[:120])         # ONE LIBRARY PER PART FOR THE MINT (John, 2026-08-29). Fusion's Package3D generator         # loads the FIRST package of the open library, so minting every part against the         # merged file put chips two and three on part one's footprint. Each part is minted