← Commit history

0.31.9: reads Fusion 1.13.64; edit_tracks exact

Colby Knox ·629693ba4e ·3d ago ·parent 4b3c786
5 files changed +12−11
README.md+1
@@ -158,6 +158,7 @@ Decisions so far (proposals from the KiCad and Fusion bridges, 2026-10-27; issue  ## Status +Version 0.31.9: reads Fusion 1.13.64; its edit_tracks is exact. Version 0.31.8: KiCad's cancel_run is exact (a real Freerouting stop proven on 1.0.100). Version 0.31.7: the board model names tracks[].id, the handle edit_tracks takes. Version 0.31.6: coverage reads KiCad bridge 1.0.100 (place_parts, edit_tracks, extensions, preferences, select_items, cancel_run; physical_properties refused with the reason).
docs/coverage.md+2−2
@@ -1,6 +1,6 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.89 (the reference), KiCad bridge 1.0.100, Fusion 360 bridge 1.13.59. 100 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.89 (the reference), KiCad bridge 1.0.100, Fusion 360 bridge 1.13.64. 100 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*. `exact` is the same job under the same or an equivalent name; `partial` does part of it or does it differently (`verbs/coverage.json` names what in `note`); `unsupported` answers `not_supported` for the whole job and is not counted; blank is missing. Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand. @@ -136,7 +136,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `create_part_project` *proposed* | Generate a small real project (schematic and board) around one library part, so the part can be shown and tested in every view: schematic, 2D board and 3D... | `altium_create_part_project` | `kicad_create_part_project` (partial) | `fusion_make_test_project` (partial) | | `diff_pairs` | Differential pairs on the current board: list them, define one from two nets (replacing a pair of that name), or remove one. Altium's differential-pair... | `altium_diff_pairs` | `kicad_diff_pairs` (partial) | `fusion_diff_pairs` (partial) | | `edit_pours` *proposed* | Change existing pours in place without redrawing them: clearance, minimum width, thermal relief (on/off, spoke width, gap), priority or rank, the net, and... | `altium_edit_pours` | `kicad_edit_pours` | `fusion_edit_pours` (partial) |-| `edit_tracks` *proposed* | Change given tracks by the handle routing_state returns: width, layer and ends. One undo step, read back. |  | `kicad_edit_tracks` | `fusion_edit_tracks` (partial) |+| `edit_tracks` *proposed* | Change given tracks by the handle routing_state returns: width, layer and ends. One undo step, read back. |  | `kicad_edit_tracks` | `fusion_edit_tracks` | | `export_3d` *proposed* | Export the board's 3D model in a mesh or CAD format other than STEP (export_step has STEP), through the tool's own exporter, with an optional web-optimized... | `altium_export_3d` | `kicad_export_3d` | `fusion_export_3d` | | `export_bom` | Bill of materials export: altium_run_outjob with the assembly OutJob and the 'Folder Structure' medium as defaults. | `altium_export_bom` | `kicad_export_bom` | `fusion_export_bom` | | `export_dxf` *proposed* | Export chosen board layers to DXF, one file per layer (the outline, panel drawings, stencils, enclosure work). | `altium_export_dxf` | `kicad_export_dxf` | `fusion_export_dxf` |
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "eda-bridge-standard",-  "version": "0.31.8",+  "version": "0.31.9",   "type": "skill",   "title": "EDA Bridge Standard: one way for an AI to drive every PCB tool",   "description": "The standard every Adom EDA bridge follows so one AI can drive Altium, KiCad, Fusion 360 and any future PCB tool the same way: shared verb names in tiers, the board model JSON, reply and refusal conventions, and a coverage table of each bridge against the Altium reference.",
verbs/coverage.json+6−6
@@ -1,5 +1,5 @@ {- "standard": "0.31.8",+ "standard": "0.31.9",  "reference": {   "bridge": "altium",   "version": "0.2.89"@@ -7,7 +7,7 @@  "proposed": 100,  "compared": {   "kicad": "1.0.100",-  "fusion360": "1.13.59"+  "fusion360": "1.13.64"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",@@ -1776,7 +1776,7 @@    "fusion360": {     "verb": "fusion_apply_pours",     "match": "partial",-    "note": "pours with their isolate, rank, thermals and orphans, and Fusion's own fill per pour; pour keepouts (cutouts) are not taken: draw them as restrict areas with fusion_board_features keepouts"+    "note": "pours on any copper layer with their isolate, rank, thermals and orphans, and Fusion's own fill per pour; cutouts are drawn on the top and bottom restrict layers and refused on an inner layer, as Fusion has no restrict layer there (shape that pour's outline instead); connect is direct or relief, as a Fusion pour always joins pads of its own net; relief spoke size is not settable"    }   },   {@@ -1921,7 +1921,7 @@    "fusion360": {     "verb": "fusion_edit_pours",     "match": "partial",-    "note": "minimum width, clearance, thermals, rank and orphans, refilled and read back (net and layer name a pour when it is the only one there); a pour's net cannot be moved in place (a polygon belongs to its signal)"+    "note": "minimum width, clearance, thermals on or off, rank and orphans, refilled and read back (net and layer name a pour when it is the only one there); newNet moves a pour by drawing it again with the same outline and settings, as a polygon belongs to its signal; thermal spoke width and gap are not settable"    }   },   {@@ -1935,8 +1935,8 @@    },    "fusion360": {     "verb": "fusion_edit_tracks",-    "match": "partial",-    "note": "width and layer; an end moves only along the track's own line, since Fusion's MOVE bends an angled move into two segments, which is undone and refused (end_move_bends); ids are the track's net, layer and ends, as Fusion stores none"+    "match": "exact",+    "note": "width, layer and ends; an end moved at an angle draws the track again and deletes the old one, as Fusion's MOVE would bend it into two segments; a layer and ends change in two calls; ids are the track's net, layer and ends, as Fusion stores none"    }   },   {
verbs/standard.json+2−2
@@ -1,5 +1,5 @@ {- "standard": "0.31.8",+ "standard": "0.31.9",  "reference": {   "bridge": "altium",   "version": "0.2.89"@@ -7,7 +7,7 @@  "proposed": 100,  "compared": {   "kicad": "1.0.100",-  "fusion360": "1.13.59"+  "fusion360": "1.13.64"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",