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 164 file(s)
13 files changed
+147−46
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.10.35+1.10.36
bridge.json+106−11@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.10.35",+ "version": "1.10.36", "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.",@@ -21,71 +21,166 @@ "fusion_" ], "verbs": [+ "fusion_action_ledger",+ "fusion_activate_document",+ "fusion_addin_status",+ "fusion_alerts",+ "fusion_apply_fusion_update", "fusion_aps_browse", "fusion_aps_create_folder", "fusion_aps_download", "fusion_aps_file_info",+ "fusion_aps_forget_browser", "fusion_aps_get",+ "fusion_aps_get_browser", "fusion_aps_open", "fusion_aps_recent", "fusion_aps_search",+ "fusion_aps_set_browser", "fusion_aps_set_client_id", "fusion_aps_signin", "fusion_aps_status", "fusion_aps_upload", "fusion_aps_versions",+ "fusion_assembly_bom", "fusion_attach_3d_package",+ "fusion_bind_library_3d", "fusion_board_info",+ "fusion_board_stackup", "fusion_build_library_3d",+ "fusion_cancel_run", "fusion_capture_library_views",+ "fusion_check_recovery", "fusion_cleanup_cloud_files",+ "fusion_close_all_documents",+ "fusion_close_document", "fusion_close_window",+ "fusion_create_cloud_folder",+ "fusion_create_library",+ "fusion_delete_cloud_file",+ "fusion_demo",+ "fusion_demo_progress", "fusion_describe", "fusion_detect_layers", "fusion_dismiss_blocking_dialogs",+ "fusion_document_info",+ "fusion_eagle_import_status", "fusion_electron_pan", "fusion_electron_run", "fusion_electron_select", "fusion_electron_zoom",+ "fusion_electronics_query",+ "fusion_execute_text_command", "fusion_export_3mf",+ "fusion_export_board_image", "fusion_export_bom",+ "fusion_export_cloud_file", "fusion_export_cpl", "fusion_export_dwg", "fusion_export_dxf",+ "fusion_export_eagle_source",+ "fusion_export_f3d",+ "fusion_export_fbx", "fusion_export_gerbers", "fusion_export_iges",+ "fusion_export_lbr", "fusion_export_obj",+ "fusion_export_optimized_glb",+ "fusion_export_sat",+ "fusion_export_skp",+ "fusion_export_source", "fusion_export_step", "fusion_export_stl", "fusion_export_usdz",+ "fusion_fetch_optimized_glb", "fusion_generate_package", "fusion_get_app_state",+ "fusion_get_design_info",+ "fusion_get_parameters", "fusion_get_preferences",+ "fusion_import_electronics",+ "fusion_import_step",+ "fusion_inspect_bodies", "fusion_install_fusion",+ "fusion_install_library_bundle",+ "fusion_interactive", "fusion_kill",- "fusion_load_design_rules",+ "fusion_library_manager",+ "fusion_library_parts",+ "fusion_list_cloud_files",+ "fusion_list_cloud_projects",+ "fusion_list_text_commands",+ "fusion_live_feed", "fusion_make_3d_package",+ "fusion_make_showcase_project",+ "fusion_make_test_project",+ "fusion_managed_library_create",+ "fusion_managed_library_link",+ "fusion_managed_library_pull",+ "fusion_managed_library_push",+ "fusion_managed_library_unlink",+ "fusion_mcp_call",+ "fusion_mcp_enable",+ "fusion_mcp_resources",+ "fusion_mcp_status",+ "fusion_mcp_tools",+ "fusion_narrate",+ "fusion_new_electronics_from_eagle",+ "fusion_notify_owner",+ "fusion_open_board", "fusion_open_by_urn",+ "fusion_open_by_urn_note",+ "fusion_open_cloud_file",+ "fusion_open_design",+ "fusion_open_electronics", "fusion_open_lbr",+ "fusion_open_schematic",+ "fusion_physical_properties",+ "fusion_plan_library_import",+ "fusion_plan_route",+ "fusion_preflight_lbr",+ "fusion_prefs_close",+ "fusion_prefs_open",+ "fusion_prove_result", "fusion_readiness",+ "fusion_reset_workspace",+ "fusion_resolve_seat_dialog",+ "fusion_restart_for_addin",+ "fusion_route_net",+ "fusion_routing_drc",+ "fusion_routing_state", "fusion_run_modeling_script",+ "fusion_save_to_cloud",+ "fusion_schematic",+ "fusion_screenshot_fusion", "fusion_search_cloud_files",+ "fusion_set_auto_update", "fusion_set_design_rules",+ "fusion_set_driving_badge",+ "fusion_set_parameter", "fusion_set_preference",+ "fusion_set_seat_takeover",+ "fusion_set_window_sizing", "fusion_show_2d_board", "fusion_show_3d_board",+ "fusion_show_3d_package",+ "fusion_show_attributes",+ "fusion_show_footprint",+ "fusion_show_library",+ "fusion_show_project", "fusion_show_schematic",+ "fusion_show_symbol",+ "fusion_signin",+ "fusion_signin_2fa", "fusion_start",+ "fusion_state", "fusion_stop",+ "fusion_take_screenshot",+ "fusion_uninstall",+ "fusion_verb_times",+ "fusion_view", "fusion_walk_cloud_tree",- "fusion_route_net",- "fusion_routing_drc",- "fusion_routing_state",- "fusion_plan_route",- "fusion_schematic",- "fusion_make_showcase_project",- "fusion_eagle_import_status",- "fusion_show_attributes"+ "fusion_web_signin" ], "dependencies": {}, "category": "CAD",@@ -108,7 +203,7 @@ }, "linux": { "supported": false,- "reason": "Autodesk doesn't ship Fusion 360 for Linux \u2014 there's no host app for the add-in to attach to."+ "reason": "Autodesk doesn't ship Fusion 360 for Linux, so there's no host app for the add-in to attach to." } }, "languages": [
dashboard/Cargo.lock+1−1@@ -4,7 +4,7 @@ version = 4 [[package]] name = "fusion-dashboard"-version = "1.10.35"+version = "1.10.36" dependencies = [ "serde_json", ]
dashboard/Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "fusion-dashboard"-version = "1.10.35"+version = "1.10.36" 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.10.35"+DASH_VERSION="1.10.36" 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.10.35",+ "version": "1.10.36", "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+10−26@@ -1,6 +1,6 @@ { "slug": "fusion-bridge",- "version": "1.10.35",+ "version": "1.10.36", "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",@@ -76,6 +80,9 @@ "add a 3d model to a component", "make a fusion 360 library with 3d", "set up the fusion bridge",+ "fusion dashboard",+ "fusion status page",+ "open the fusion launch page", "aps not configured", "share aps client id across my org", "set up fusion cloud search for my company",@@ -108,28 +115,5 @@ "label": "Part volume", "prompt": "How much material does each printed part in this assembly use?" }- ],- "agent_permissions": {- "allow_bash": [],- "allow": [- "adom-desktop-fusion-bridge read-only verbs (via the adom-bridge CLI): fusion_readiness, fusion_get_app_state, fusion_addin_status, fusion_check_dialogs - state queries; they change nothing.",- "adom-desktop-fusion-bridge read-only verbs: fusion_alerts (reads Fusion's own log for toasts), fusion_document_info, fusion_window_info, fusion_board_info, fusion_library_parts - inspect only.",- "adom-desktop-fusion-bridge read-only verbs: fusion_prove_result (a persisted run report), fusion_plan_library_import (report-only preflight), fusion_list_cloud_projects, fusion_describe.",- "adom-desktop-fusion-bridge evidence captures fusion_screenshot_fusion and fusion_capture_library_views read pixels and write local image files only."- ],- "soft_deny": [- "adom-desktop-fusion-bridge lifecycle verbs fusion_stop, fusion_kill, fusion_restart_for_addin close or kill the Fusion application - keep the human prompt.",- "adom-desktop-fusion-bridge fusion_install_fusion silently installs Autodesk Fusion on the user's machine.",- "adom-desktop-fusion-bridge fusion_cleanup_cloud_files deletes files from the user's Autodesk cloud hub.",- "adom-desktop-fusion-bridge managed-library verbs (fusion_managed_library_push/pull/create/link/unlink) publish to or overwrite the user's library.io libraries."- ],- "environment": [- "adom-desktop-fusion-bridge is the Fusion 360 bridge for Adom Bridge; its fusion_* verbs are invoked through the adom-bridge CLI and drive Autodesk Fusion on the user's own desktop.",- "adom-desktop-fusion-bridge desktop actions also pass Adom Bridge's own human-approval gate (caller identity, per-call reason, Activity Log) - a container approval is the first of two gates."- ]- },- "author": {- "name": "John Lauer",- "email": "[email protected]"- }-}+ ]+}
rust/Cargo.toml+1−1@@ -4,7 +4,7 @@ members = ["core", "lbr", "os-win", "os-mac", "bridge"] # One version for the whole bridge, in lockstep with BRIDGE_VERSION (tools/release.sh bumps both). [workspace.package]-version = "1.10.35"+version = "1.10.36" edition = "2021" license = "MIT"
tools/check-naming.shtools/check-portable.shtools/freeze-contract.py+20−3@@ -17,6 +17,23 @@ doc = {"contract": "fusion-bridge verb catalog", "frozen": datetime.date.today() p = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "contracts", "describe.json") old = json.load(open(p)) if os.path.exists(p) else {} if old.get("verbs") == verbs:- print("contract unchanged (%d verbs)" % len(verbs)); sys.exit(0)-json.dump(doc, open(p, "w"), indent=2, sort_keys=True); open(p, "a").write("\n")-print("contract refrozen: %d verbs (was %d)" % (len(verbs), len(old.get("verbs") or [])))+ print("contract unchanged (%d verbs)" % len(verbs))+else:+ json.dump(doc, open(p, "w"), indent=2, sort_keys=True); open(p, "a").write("\n")+ print("contract refrozen: %d verbs (was %d)" % (len(verbs), len(old.get("verbs") or [])))++# bridge.json "verbs" is what ab's `commands` listing and verbCount read. It was hand-kept and+# drifted to 65 names against 160 described (adom/adom-bridge#211, 2026-09-22), so it is now+# written from the same catalog, every freeze. Order and every other key are left alone.+root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))+bj = os.path.join(root, "bridge.json")+names = [v["name"] for v in verbs]+raw = open(bj).read()+man = json.loads(raw)+if man.get("verbs") != names:+ before = len(man.get("verbs") or [])+ man["verbs"] = names+ json.dump(man, open(bj, "w"), indent=2); open(bj, "a").write("\n")+ print("bridge.json verbs regenerated from the contract: %d (was %d)" % (len(names), before))+else:+ print("bridge.json verbs match the contract (%d)" % len(names))
tools/promote.shtools/release.sh+5@@ -190,6 +190,11 @@ step "Building Rust bridge exe" bash tools/check-portable.sh || die "check-portable failed" bash tools/check-naming.sh || die "check-naming failed" python3 tools/freeze-contract.py || die "freeze-contract failed" # the Rust exe asserts it serves this catalog+python3 - <<'CHK' || die "bridge.json verbs do not match contracts/describe.json (run tools/freeze-contract.py)"+import json, sys+m = json.load(open("bridge.json"))["verbs"]; c = [v["name"] for v in json.load(open("contracts/describe.json"))["verbs"]]+sys.exit(0 if m == c else 1)+CHK ( cd rust && cargo build --release --target x86_64-pc-windows-gnu -p adom-fusion-bridge ) || die "rust exe build failed" RUST_EXE="rust/target/x86_64-pc-windows-gnu/release/adom-fusion-bridge.exe" [ -s "$RUST_EXE" ] || die "rust exe missing after build"