app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
← Commit history
README: document the show_* family, the wiki-part pipeline (filePath installs + model, make_part_project), export_part one-offs, kicad_state; verb reference 47 -> 59; fresh screenshots of every new verb from the live in-s42ata proof run
10 files changed
+87−4
README.md+87−4@@ -26,7 +26,9 @@ KiCad is the user's **host app**. The bridge *detects* an existing KiCad and, if > Every screenshot in this README was captured on **ADOMBASELINE**, a stock Hyper-V VM with **no > GPU**, driven end-to-end through the bridge — install → libraries → editors → 2D → 3D. If it-> renders there, it renders on a real laptop.+> renders there, it renders on a real laptop. (The `show_*` section below is the exception: those+> shots came off a **real user laptop**, captured in the background through `kicad_state` while the+> user kept working.) --- @@ -138,6 +140,84 @@ plated through-holes. **Rendered on the CPU via the software-OpenGL fallback (be --- +## The `show_*` family: one wiki part, every surface++Adom part pages (like [aravk/in-s42ata](https://wiki.adom.inc/aravk/in-s42ata)) ship three files:+a `.kicad_sym`, a `.kicad_mod`, and a `.step`. The bridge turns that page into every surface an EE+thinks in, each behind ONE verb, each opening in the background. Four calls prepare a part:++```bash+# 1+2. stage the page's files on the user's machine (ab send_files), then install by path+adom-bridge kicad_install_symbol '{"filePath":"<staging>/IN-S42ATA.kicad_sym","quietInstall":true}'+adom-bridge kicad_install_footprint '{"filePath":"<staging>/IN-S42ATA.kicad_mod",+ "model":{"filePath":"<staging>/IN-S42ATA.step"},"quietInstall":true}'+# 3. generate a real project AROUND the part (wired schematic, routed part-dominant board)+adom-bridge kicad_make_part_project '{"partName":"IN-S42ATA"}' # returns projectFile/schematicFile/boardFile+```++`install_footprint`'s `model` argument installs the 3D body to `3dmodels/Adom/` and wires the+footprint's `(model ...)` reference, so both 3D surfaces render the real part. `filePath` variants+exist because a 214 KB step overflows the CLI arg limit as base64: stage big files with ab+`send_files`, then install by path. After that, the eight surfaces are one verb each:++### `kicad_show_symbol {"symbolName":"IN-S42ATA","libraryName":"Adom"}`++++### `kicad_show_footprint {"footprintName":"IN-S42ATA","library":"Adom"}`++++### `kicad_show_3d_chip {"footprintName":"IN-S42ATA","library":"Adom"}`++The page's own `.step`, rendered in the 3D viewer:++++### `kicad_show_library {"libraryName":"Adom"}`++The library surface: symbol + footprint + 3D model all installed and browsable:++++### `kicad_show_project {"filePath": <projectFile>}`++The generated project in the Project Manager, the top of the design tree:++++### `kicad_show_schematic {"filePath": <schematicFile>}`++Generated by `make_part_project`: the part as D1, wired to a 330R series resistor:++++### `kicad_show_2d_board {"filePath": <boardFile>}`++Part-dominant edge cuts, routed copper. (The zoom-to-fit is `kicad_send_key {"key":"home"}`: chords+resolve against the window's menu accelerators and fire as background `WM_COMMAND`, no focus steal.)++++### `kicad_show_3d_board {"filePath": <boardFile>}`++D1 wears the page's real 3D body; R1 next to it shows what "no model" looks like. Boards are+generated part-dominant precisely so this view shows the chip instead of a speck:++++### `kicad_export_part {"partName":"IN-S42ATA"}`: the reverse direction++One-off single-asset library files, extracted back OUT of the live library, each standalone and+loadable, verified single-entry:++++Everything above is verified end-to-end daily by the `kicad-bridge-test` suite, and `kicad_state`+returns every KiCad window as an inline screenshot in one call, which is how these shots were taken.++---+ ## Install & upgrade — zero manual steps The bridge never tells the user to go download KiCad. `kicad_upgrade` fetches the official installer@@ -197,18 +277,21 @@ viewer. This is how every 3D shot above exists. ## Verb reference -All 47 verbs (prefix `kicad_`). Call `kicad_describe` for the live catalog with per-verb hints,+All 59 verbs (prefix `kicad_`). Call `kicad_describe` for the live catalog with per-verb hints, related verbs, and pitfalls. +**Show surfaces (one verb per surface)** — `show_project`, `show_schematic`, `show_2d_board`,+`show_3d_board`, `show_symbol`, `show_footprint`, `show_3d_chip`, `show_library`, `state`+ **Windows & UI** — `launch`, `open_board`, `open_schematic`, `open_symbol_editor`, `open_footprint_editor`, `open_3d_viewer`, `open_editors`, `close_symbol_editor`, `close_footprint_editor`, `close_3d_viewer`, `close`, `window_info`, `dismiss_dialogs`, `screenshot_all`, `send_key`, `click`, `fix_keyboard`, `demo` **Libraries & parts** — `install_library`, `install_symbol`, `install_footprint`, `install_plugin`,-`place_footprint`, `adom_library_status`+`place_footprint`, `adom_library_status`, `make_part_project`, `export_part` **Checks & export** — `run_drc`, `run_erc`, `lint_board`, `lint_schematic`, `lint_library`,-`format_upgrade`, `export_gerber`, `export_pdf`, `export_svg`, `export_step`, `export_bom_csv`,+`format_upgrade`, `export_gerber`, `export_gerbers`, `export_pdf`, `export_svg`, `export_step`, `export_bom_csv`, `export_molecule` **Detect, install & meta** — `list_versions`, `readiness`, `describe`, `diagnostics`, `status`,
export-part-oneoffs.pngadded⋯ 1 unchanged line ⋯
show-2d-board.pngadded⋯ 1 unchanged line ⋯
show-3d-board.pngadded⋯ 1 unchanged line ⋯
show-3d-chip.pngadded⋯ 1 unchanged line ⋯
show-footprint.pngadded⋯ 1 unchanged line ⋯
show-library.pngadded⋯ 1 unchanged line ⋯
show-project.pngadded⋯ 1 unchanged line ⋯
show-schematic.pngadded⋯ 1 unchanged line ⋯
show-symbol.pngadded⋯ 1 unchanged line ⋯