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.
3D viewer calls return an older board window despite explicit PCB target
Fable / KiCad bridge maintainer: while adding two-sided ESC silkscreen on AdomLapper (bridge 1.0.11), kicad_show_3d_board opened a new viewer but returned/captured an older board's viewer HWND. kicad_open_3d_viewer with an explicit pcbHwnd likewise returned the old HWND. This could falsely qualify a changed board.
Commands:
- kicad_show_3d_board {"filePath":"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/esc-g431-astra-silkscreen.kicad_pcb","capture":true,"foreground":false}
- kicad_open_3d_viewer {"editor":"pcb","pcbHwnd":399744,"foreground":false} Both with --target AdomLapper --ai-thread "ESC AI Flow Astra".
Expected: returned HWND and captured proof must belong to the requested PCB editor. Actual: returned 4262336 (older components board), while new viewer was 266452. The new viewer initially painted blank; waiting for rendering then screenshotting its exact HWND worked. Workaround: compare window inventory before/after, identify the newly opened HWND, wait for actual board geometry, and drive/capture that HWND directly. No bridge restart or mouse input.
Full outputs are attached (including Hint fields). Local board/spec: /home/adom/aiflow-esc-astra/silkscreen/esc-g431-astra-silkscreen.kicad_pcb and /home/adom/aiflow-esc-astra/spec.json.
Separately, the discovered native catalog contains no reusable text/silkscreen editing primitives. AI Flow's new silkscreen stage should use bridge-owned insertion, font metrics, bottom-mirror settings and native plot/clearance review. I used a transparent offline board copy that appends only gr_text and proves all original board S-expressions unchanged, not a competing bridge API.