app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Drive your own KiCad from an AI, in the background: open every editor, read the whole board as data (the EDA Bridge Standard board model), stack-up, part heights, netlists, place, route, pour, DRC and exports.
← Commit history
1.0.41: 1.0.41: the background guard stops guessing. It used to decide whether a KiCad window reaching the foreground was the user's doing from a 120 ms mouse-button poll and a timing window, and while any verb ran it pushed back ANY bridge-owned KiCad window, again and again. John, clicking KiCad's taskbar buttons during a test: 'i just tried clicking to bring kicad to the foreground and then you yank it to the background on me'. New rule, no heuristics: the bridge may push back only the window it is OPENING RIGHT NOW (one that did not exist when the verb in flight began, until 3 s after that verb ends). Every other KiCad window is the user's to raise by click, Alt-Tab, Win+number or anything else, whatever the bridge is doing. After a push it ASKS for the user's window back with one plain SetForegroundWindow: no thread-input attach, no ShowWindow, no BringWindowToTop, never a shell window (1.0.40; forcing the taskbar crashed Explorer in Taskbar.View.dll). Also found: the win/ unit tests never run in the Linux container, and the once-per-window test had been failing unseen since 2026-09-12; the whole Windows test binary (36 tests) now passes on a real Windows box.
2 files changed
+4−4
rust/Cargo.lock+3−3@@ -244,7 +244,7 @@ dependencies = [ [[package]] name = "kicad-bridge"-version = "1.0.40"+version = "1.0.41" dependencies = [ "kicad-core", "kicad-platform",@@ -255,7 +255,7 @@ dependencies = [ [[package]] name = "kicad-core"-version = "1.0.40"+version = "1.0.41" dependencies = [ "kicad-ipc-rs", "kicad-platform",@@ -281,7 +281,7 @@ dependencies = [ [[package]] name = "kicad-platform"-version = "1.0.40"+version = "1.0.41" dependencies = [ "serde", "serde_json",
rust/Cargo.toml+1−1@@ -3,7 +3,7 @@ resolver = "2" members = ["crates/*"] [workspace.package]-version = "1.0.40"+version = "1.0.41" edition = "2021" license = "MIT" publish = false