← Commit history

1.0.47: 1.0.47: KiCad 10's Welcome to KiCad setup wizard no longer pops up. KiCad shows it in every editor start until kicad.json has system.first_run_shown true; cancelling the wizard does not set it and a force-closed KiCad never saves it, so on a machine the bridge drives it came back every time, in front of the user, and the bridge spent about 30 s per editor finding and cancelling it (open_board and open_schematic took 35 s instead of about 5 s on AdomLapper). Before starting any KiCad process, and only when none is running, the bridge now sets that one key, keeping every other; new installs are seeded with it.

John Lauer ·74d31d3a84 ·1mo ago ·parent 5e12b5a
3 files changed +23−4
rust/Cargo.lock+3−3
@@ -244,7 +244,7 @@ dependencies = [  [[package]] name = "kicad-bridge"-version = "1.0.46"+version = "1.0.47" dependencies = [  "kicad-core",  "kicad-platform",@@ -255,7 +255,7 @@ dependencies = [  [[package]] name = "kicad-core"-version = "1.0.46"+version = "1.0.47" dependencies = [  "kicad-ipc-rs",  "kicad-platform",@@ -281,7 +281,7 @@ dependencies = [  [[package]] name = "kicad-platform"-version = "1.0.46"+version = "1.0.47" dependencies = [  "serde",  "serde_json",
rust/Cargo.toml+1−1
@@ -3,7 +3,7 @@ resolver = "2" members = ["crates/*"]  [workspace.package]-version = "1.0.46"+version = "1.0.47" edition = "2021" license = "MIT" publish = false
rust/crates/kicad-bridge/src/verbs_windows.rs+19
@@ -508,6 +508,7 @@ fn utc_stamp() -> String {  /// Spawn a KiCad GUI without activating its window, stderr captured to a launch log. fn spawn_background(exe: &Path, args: &[String], tag: &str, trace_masks: Option<&str>) -> Result<(u32, Option<PathBuf>), Value> {+    skip_setup_wizard();     let log = bridge_log::log_dir().and_then(|d| bridge_log::new_log_path(&d, &utc_stamp(), tag).ok());     let env = bridge_log::trace_env(trace_masks);     let pid = plat("spawn_background", native().spawn_background(exe, args, &env, log.as_deref()))?;@@ -516,6 +517,24 @@ fn spawn_background(exe: &Path, args: &[String], tag: &str, trace_masks: Option<     Ok((pid, log)) } +/// Before a KiCad process starts, and only while none runs: mark KiCad's setup wizard as done so+/// it never pops up in front of the user (see kicad_common::mark_first_run_done).+fn skip_setup_wizard() {+    if !native().processes(&["kicad.exe", "pcbnew.exe", "eeschema.exe"]).unwrap_or_default().is_empty() {+        return;+    }+    let versions: Vec<String> = kicad_core::detect::detect().installs.iter().map(|i| i.version.clone()).collect();+    for v in versions {+        if let Some(cfg) = native().config_dir(&v) {+            match kicad_common::mark_first_run_done(&cfg) {+                Ok(true) => eprintln!("[kicad-bridge] KiCad {v}: setup wizard marked done (kicad.json first_run_shown), it will not pop up again"),+                Ok(false) => {}+                Err(e) => eprintln!("[kicad-bridge] KiCad {v}: could not mark the setup wizard done: {e}"),+            }+        }+    }+}+ fn sleep_ms(ms: u64) {     std::thread::sleep(Duration::from_millis(ms)); }