← Commit history
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.13.18\ No newline at end of file+1.13.19\ No newline at end of file
CHANGELOG.md+6
@@ -3,6 +3,12 @@ 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.19 (2026-10-29)++- review_board, board_report, pin_pad_check and schematic_review give the engine each part's attributes as+  `sheetParts[].params` ({name, value}, empty values left out), so vendor numbers and datasheets the parts carry count.+  On BQ25792 the 48 parts with an LCSC number now miss only Mouser and DigiKey, and the 5 with a DATASHEET have one.+ ## 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.18",+  "version": "1.13.19",   "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.13.18"+version = "1.13.19" dependencies = [  "serde_json", ]
dashboard/Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "fusion-dashboard"-version = "1.13.18"+version = "1.13.19" 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.18"+DASH_VERSION="1.13.19" 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.18",+  "version": "1.13.19",   "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+1−1
@@ -1,6 +1,6 @@ {   "slug": "fusion-bridge",-  "version": "1.13.18",+  "version": "1.13.19",   "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": {
rust/Cargo.lock+5−5
@@ -19,7 +19,7 @@ dependencies = [  [[package]] name = "adom-fusion-bridge"-version = "1.13.18"+version = "1.13.19" dependencies = [  "adom-eda-checks",  "base64",@@ -299,7 +299,7 @@ dependencies = [  [[package]] name = "fusion-core"-version = "1.13.18"+version = "1.13.19" dependencies = [  "serde",  "serde_json",@@ -310,7 +310,7 @@ dependencies = [  [[package]] name = "fusion-lbr"-version = "1.13.18"+version = "1.13.19" dependencies = [  "regex",  "roxmltree",@@ -322,14 +322,14 @@ dependencies = [  [[package]] name = "fusion-os-mac"-version = "1.13.18"+version = "1.13.19" dependencies = [  "fusion-core", ]  [[package]] name = "fusion-os-win"-version = "1.13.18"+version = "1.13.19" 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.18"+version = "1.13.19" edition = "2021" license = "MIT" 
rust/bridge/src/checks.rs+9−2
@@ -81,7 +81,9 @@ pub fn call(cmd: &str, args: &Value, pass: &dyn Fn(&str, Value) -> Value) -> Val     if matches!(cmd, "pin_pad_check" | "schematic_review" | "review_board" | "board_report") {         // the sheets' parts with their pins (number, name, electrical type) from Fusion's schematic,         // and the netlist (Designator.Pad); Fusion keeps board and schematic in step-        let sd = crate::sch::call("schematic_data", args, pass);+        // params: each part's attributes (MPN, MOUSER, DIGIKEY, LCSC, DATASHEET ...) for review_board's vendor checks+        let mut sa = args.clone(); sa["params"] = json!(true);+        let sd = crate::sch::call("schematic_data", &sa, pass);         if sd["success"].as_bool() == Some(false) { return sd; }         bundle["sheetParts"] = json!(sheet_parts(&sd));         if matches!(cmd, "schematic_review" | "board_report") {@@ -273,7 +275,10 @@ fn sheet_parts(sd: &Value) -> Vec<Value> {             let nums = if nums.is_empty() { vec![String::new()] } else { nums };             nums.into_iter().map(move |n| json!({"number": n, "name": p["name"].clone(), "electrical": p["electrical"].clone(), "gate": p["gate"].clone()}))         }).collect();-        json!({"designator": c["designator"], "pins": pins})+        // the standard's params [{name, value}], empty values left out (EAGLE libraries carry many blank fields)+        let params: Vec<Value> = c["params"].as_object().into_iter().flatten()+            .filter_map(|(k, v)| v.as_str().map(str::trim).filter(|v| !v.is_empty()).map(|v| json!({"name": k, "value": v}))).collect();+        json!({"designator": c["designator"], "pins": pins, "params": params})     }).collect() } @@ -288,5 +293,7 @@ mod sheet_tests {         assert_eq!(p.len(), 1, "a supply symbol is no part");         assert_eq!(p[0]["pins"].as_array().unwrap().len(), 3);         assert_eq!(p[0]["pins"][1]["number"], "4");+        let sd = json!({"components": [{"designator": "R1", "pins": [{"number": "1", "name": "1"}], "params": {"MPN": "RC0603", "LCSC": " ", "DATASHEET": "https://x"}}]});+        assert_eq!(sheet_parts(&sd)[0]["params"], json!([{"name": "MPN", "value": "RC0603"}, {"name": "DATASHEET", "value": "https://x"}]), "blank LCSC left out, the part's order kept");     } }