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 11 file(s)
11 files changed
+286−22
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.13.17+1.13.18
CHANGELOG.md+1−1@@ -3,7 +3,7 @@ All notable changes to the Adom Bridge Fusion 360 bridge, newest first. Canonical: https://wiki.adom.inc/adom/fusion-bridge ยท GitHub backup: `adom-inc/fusion-bridge` -## 1.13.18 (unreleased)+## 1.13.18 (2026-10-29) From Drew Owens (PR #25). Design efficiency: measure what makes a design slow, and stop the bridge from making it slow.
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.13.17",+ "version": "1.13.18", "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.",
contracts/describe.json+271−7@@ -4267,6 +4267,28 @@ ], "type": "object" },+ "efficiency_report": {+ "description": "Read what makes the design slow to recompute, open and edit, held against the efficiency playbook (skills/fusion-design-efficiency): timeline make-up and health, Position snapshots, Move features, size, repeated definitions made by Paste New, instance-weighted faces, imported history, wires in a parametric design, big sketches, pattern compute options, modeled threads, meshes and empty components. Returns metrics and findings (rule, severity, measured, limit, fix). Read-only and needs no revision digest. It is journaled like bom_export, so a long report on a big design is followed with fusion_mech_operation_status after the relay's 60 s; passes past budgetSeconds are skipped and listed, with complete:false.",+ "properties": {+ "budgetSeconds": {+ "description": "Stop the costly passes after this many seconds (default 120).",+ "maximum": 600,+ "minimum": 5,+ "type": "number"+ },+ "computeTiming": {+ "description": "Also time a full computeAll (slow on big designs; default false).",+ "type": "boolean"+ }+ },+ "required": [+ "op",+ "sessionId",+ "operationId",+ "target"+ ],+ "type": "object"+ }, "entity_delete": { "description": "Delete sketch geometry or independently deletable timeline features. Model transaction and semantic recovery cover downstream failures; document and external file deletion are excluded.", "properties": {@@ -4762,7 +4784,7 @@ "type": "object" }, "feature_create": {- "description": "Create a typed native solid feature. All length quantities are mm (or expressions), angles deg. Cut/intersect require explicit participant bodies. Join needs a single existing component body; combine selects multiple bodies explicitly. Feature availability is runtime-checked; missing APIs fail before commit.",+ "description": "Create a typed native solid feature. All length quantities are mm (or expressions), angles deg. Cut/intersect require explicit participant bodies. Join needs a single existing component body; combine selects multiple bodies explicitly. Feature availability is runtime-checked; missing APIs fail before commit. Rectangular and circular patterns repeat exactly one of bodies, features, faces or occurrences (a component pattern, built in the occurrences' shared parent so the part stays one definition); computeOption is identical (default), optimized or adjust and does not apply to component patterns.", "oneOf": [ { "additionalProperties": false,@@ -5957,6 +5979,14 @@ ], "type": "object" },+ "computeOption": {+ "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",+ "enum": [+ "identical",+ "optimized",+ "adjust"+ ]+ }, "count": { "maximum": 1000, "minimum": 2,@@ -5967,9 +5997,51 @@ "minimum": 1, "type": "integer" },+ "faces": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ },+ "features": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "name": { "type": "string" },+ "occurrences": {+ "items": {+ "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "op": { "type": "string" },@@ -6023,7 +6095,6 @@ }, "required": [ "type",- "bodies", "axis", "count", "spacing"@@ -6086,14 +6157,64 @@ ], "type": "object" },+ "computeOption": {+ "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",+ "enum": [+ "identical",+ "optimized",+ "adjust"+ ]+ }, "count": { "maximum": 1000, "minimum": 2, "type": "integer" },+ "faces": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ },+ "features": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "name": { "type": "string" },+ "occurrences": {+ "items": {+ "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "op": { "type": "string" },@@ -6127,7 +6248,6 @@ }, "required": [ "type",- "bodies", "axis", "count" ],@@ -6335,6 +6455,7 @@ ], "type": "object" },+ "computeOption": {}, "count": {}, "count2": {}, "depth": {},@@ -6345,12 +6466,14 @@ "edges": {}, "extend": {}, "faces": {},+ "features": {}, "internal": {}, "keepTools": {}, "modeled": {}, "name": { "type": "string" },+ "occurrences": {}, "operation": {}, "origin": {}, "path": {},@@ -8852,6 +8975,15 @@ "groundedToParent": { "type": "boolean" },+ "method": {+ "description": "How a new transform is kept. auto (default): edit the occurrence's initial position when Fusion allows it (a root-level occurrence without joints or patterns), which adds nothing to the timeline, else capture a Position snapshot. initial_position: refuse rather than capture. capture: always capture a snapshot. The reply's placement says which was used.",+ "enum": [+ "auto",+ "initial_position",+ "capture"+ ],+ "type": "string"+ }, "occurrence": { "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.", "required": [@@ -10958,7 +11090,7 @@ "op": "inspect" }, "input": {- "op": "required enum: inspect|inspect_entity|new_design|parameter_set|parameter_create|health|export|transaction_probe|sketch_create|sketch_geometry|sketch_constraint|sketch_dimension|sketch_project|sketch_edit|plane_create|feature_create|feature_edit|entity_delete|parameter_batch|component_create|occurrence_insert|occurrence_update|occurrence_delete|component_metadata|joint_create|joint_edit|joint_delete|interference|bom|bom_export|cad_import|mcmaster_discover|mcmaster_open|material_list|material_assign|rigid_group_create|rigid_group_edit|rigid_group_delete|assembly_properties|geometry_query|measure|sketch_curve_edit|sketch_offset|construction_axis|sketch_diagnostics|joint_origin_create|joint_origin_edit|joint_origin_delete|regular_joint_create|regular_joint_edit|motion_link_create|motion_link_edit|motion_link_delete|configuration_inspect|render_scene_inspect|exploded_view_plan|exploded_preview_create|exploded_preview_sample|exploded_preview_show|exploded_preview_dispose|exploded_preview_inspect",+ "op": "required enum: inspect|inspect_entity|new_design|parameter_set|parameter_create|health|export|transaction_probe|sketch_create|sketch_geometry|sketch_constraint|sketch_dimension|sketch_project|sketch_edit|plane_create|feature_create|feature_edit|entity_delete|parameter_batch|component_create|occurrence_insert|occurrence_update|occurrence_delete|component_metadata|joint_create|joint_edit|joint_delete|interference|bom|bom_export|cad_import|mcmaster_discover|mcmaster_open|material_list|material_assign|rigid_group_create|rigid_group_edit|rigid_group_delete|assembly_properties|geometry_query|measure|sketch_curve_edit|sketch_offset|construction_axis|sketch_diagnostics|joint_origin_create|joint_origin_edit|joint_origin_delete|regular_joint_create|regular_joint_edit|motion_link_create|motion_link_edit|motion_link_delete|configuration_inspect|render_scene_inspect|exploded_view_plan|exploded_preview_create|exploded_preview_sample|exploded_preview_show|exploded_preview_dispose|exploded_preview_inspect|efficiency_report", "operationId": "required unique write ID; reuse unchanged for retry", "operationSchemas": { "assembly_properties": {@@ -11472,6 +11604,28 @@ ], "type": "object" },+ "efficiency_report": {+ "description": "Read what makes the design slow to recompute, open and edit, held against the efficiency playbook (skills/fusion-design-efficiency): timeline make-up and health, Position snapshots, Move features, size, repeated definitions made by Paste New, instance-weighted faces, imported history, wires in a parametric design, big sketches, pattern compute options, modeled threads, meshes and empty components. Returns metrics and findings (rule, severity, measured, limit, fix). Read-only and needs no revision digest. It is journaled like bom_export, so a long report on a big design is followed with fusion_mech_operation_status after the relay's 60 s; passes past budgetSeconds are skipped and listed, with complete:false.",+ "properties": {+ "budgetSeconds": {+ "description": "Stop the costly passes after this many seconds (default 120).",+ "maximum": 600,+ "minimum": 5,+ "type": "number"+ },+ "computeTiming": {+ "description": "Also time a full computeAll (slow on big designs; default false).",+ "type": "boolean"+ }+ },+ "required": [+ "op",+ "sessionId",+ "operationId",+ "target"+ ],+ "type": "object"+ }, "entity_delete": { "description": "Delete sketch geometry or independently deletable timeline features. Model transaction and semantic recovery cover downstream failures; document and external file deletion are excluded.", "properties": {@@ -11967,7 +12121,7 @@ "type": "object" }, "feature_create": {- "description": "Create a typed native solid feature. All length quantities are mm (or expressions), angles deg. Cut/intersect require explicit participant bodies. Join needs a single existing component body; combine selects multiple bodies explicitly. Feature availability is runtime-checked; missing APIs fail before commit.",+ "description": "Create a typed native solid feature. All length quantities are mm (or expressions), angles deg. Cut/intersect require explicit participant bodies. Join needs a single existing component body; combine selects multiple bodies explicitly. Feature availability is runtime-checked; missing APIs fail before commit. Rectangular and circular patterns repeat exactly one of bodies, features, faces or occurrences (a component pattern, built in the occurrences' shared parent so the part stays one definition); computeOption is identical (default), optimized or adjust and does not apply to component patterns.", "oneOf": [ { "additionalProperties": false,@@ -13162,6 +13316,14 @@ ], "type": "object" },+ "computeOption": {+ "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",+ "enum": [+ "identical",+ "optimized",+ "adjust"+ ]+ }, "count": { "maximum": 1000, "minimum": 2,@@ -13172,9 +13334,51 @@ "minimum": 1, "type": "integer" },+ "faces": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ },+ "features": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "name": { "type": "string" },+ "occurrences": {+ "items": {+ "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "op": { "type": "string" },@@ -13228,7 +13432,6 @@ }, "required": [ "type",- "bodies", "axis", "count", "spacing"@@ -13291,14 +13494,64 @@ ], "type": "object" },+ "computeOption": {+ "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",+ "enum": [+ "identical",+ "optimized",+ "adjust"+ ]+ }, "count": { "maximum": 1000, "minimum": 2, "type": "integer" },+ "faces": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ },+ "features": {+ "items": {+ "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "name": { "type": "string" },+ "occurrences": {+ "items": {+ "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",+ "required": [+ "documentId",+ "revision",+ "objectType"+ ],+ "type": "object"+ },+ "maxItems": 256,+ "minItems": 1,+ "type": "array"+ }, "op": { "type": "string" },@@ -13332,7 +13585,6 @@ }, "required": [ "type",- "bodies", "axis", "count" ],@@ -13540,6 +13792,7 @@ ], "type": "object" },+ "computeOption": {}, "count": {}, "count2": {}, "depth": {},@@ -13550,12 +13803,14 @@ "edges": {}, "extend": {}, "faces": {},+ "features": {}, "internal": {}, "keepTools": {}, "modeled": {}, "name": { "type": "string" },+ "occurrences": {}, "operation": {}, "origin": {}, "path": {},@@ -16057,6 +16312,15 @@ "groundedToParent": { "type": "boolean" },+ "method": {+ "description": "How a new transform is kept. auto (default): edit the occurrence's initial position when Fusion allows it (a root-level occurrence without joints or patterns), which adds nothing to the timeline, else capture a Position snapshot. initial_position: refuse rather than capture. capture: always capture a snapshot. The reply's placement says which was used.",+ "enum": [+ "auto",+ "initial_position",+ "capture"+ ],+ "type": "string"+ }, "occurrence": { "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.", "required": [
dashboard/Cargo.lock+1−1@@ -4,7 +4,7 @@ version = 4 [[package]] name = "fusion-dashboard"-version = "1.13.17"+version = "1.13.18" dependencies = [ "serde_json", ]
dashboard/Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "fusion-dashboard"-version = "1.13.17"+version = "1.13.18" 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.13.17"+DASH_VERSION="1.13.18" 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.13.17",+ "version": "1.13.18", "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+2−2@@ -1,6 +1,6 @@ { "slug": "fusion-bridge",- "version": "1.13.17",+ "version": "1.13.18", "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": {@@ -149,4 +149,4 @@ "name": "John Lauer", "email": "[email protected]" }-}+}
rust/Cargo.lock+5−5@@ -19,7 +19,7 @@ dependencies = [ [[package]] name = "adom-fusion-bridge"-version = "1.13.17"+version = "1.13.18" dependencies = [ "adom-eda-checks", "base64",@@ -299,7 +299,7 @@ dependencies = [ [[package]] name = "fusion-core"-version = "1.13.17"+version = "1.13.18" dependencies = [ "serde", "serde_json",@@ -310,7 +310,7 @@ dependencies = [ [[package]] name = "fusion-lbr"-version = "1.13.17"+version = "1.13.18" dependencies = [ "regex", "roxmltree",@@ -322,14 +322,14 @@ dependencies = [ [[package]] name = "fusion-os-mac"-version = "1.13.17"+version = "1.13.18" dependencies = [ "fusion-core", ] [[package]] name = "fusion-os-win"-version = "1.13.17"+version = "1.13.18" dependencies = [ "fusion-core", "windows-sys 0.59.0",
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.13.17"+version = "1.13.18" edition = "2021" license = "MIT"