diff --git a/app/igneum-app/src/bin/prove-verify.rs b/app/igneum-app/src/bin/prove-verify.rs index 0509b2404..2e77abf45 100644 --- a/app/igneum-app/src/bin/prove-verify.rs +++ b/app/igneum-app/src/bin/prove-verify.rs @@ -12,6 +12,12 @@ //! //! Exit 2 is reserved for "no host": the engine probes before it sets the variable, so a node never gets a //! verifier that cannot run. The wrapper never trusts a proof it did not verify. +//! +//! No console of its own on Windows: the node that starts it has none (the engine starts igneumd with +//! CREATE_NO_WINDOW), so a console-subsystem wrapper would open a visible window on every verification +//! (5 October 2026: a console window on both PCs). Piped stdout and the exit code still reach the caller. + +#![cfg_attr(windows, windows_subsystem = "windows")] #[path = "../wslhost.rs"] mod wslhost; diff --git a/app/igneum-app/src/main.rs b/app/igneum-app/src/main.rs index c89747927..126291f01 100644 --- a/app/igneum-app/src/main.rs +++ b/app/igneum-app/src/main.rs @@ -56,6 +56,7 @@ fn main() { if host.exists() { let mut c = std::process::Command::new(&host); c.current_dir(&dir); + crate::platform::quiet(&mut c); // no console of our own for the window host (it is a GUI program; the flag only governs a console) if c.spawn().is_ok() { return; } diff --git a/app/igneum-app/src/ota.rs b/app/igneum-app/src/ota.rs index 73fd57917..1313984cc 100644 --- a/app/igneum-app/src/ota.rs +++ b/app/igneum-app/src/ota.rs @@ -1107,7 +1107,7 @@ fn stage(e: &PlatformEntry, file: &Path, dir: &Path, version: &str) -> Result Result Result<(), String> { let key = r"HKCU\Software\Microsoft\Windows\CurrentVersion\Run"; let out = if on { let cmd = login_command().iter().map(|a| format!("\"{a}\"")).collect::>().join(" "); - Command::new(tool("reg")).args(["add", key, "/v", "Igneum Miner", "/t", "REG_SZ", "/d", &cmd, "/f"]).output() + quiet(&mut Command::new(tool("reg"))).args(["add", key, "/v", "Igneum Miner", "/t", "REG_SZ", "/d", &cmd, "/f"]).output() } else { - Command::new(tool("reg")).args(["delete", key, "/v", "Igneum Miner", "/f"]).output() + quiet(&mut Command::new(tool("reg"))).args(["delete", key, "/v", "Igneum Miner", "/f"]).output() }; match out { Ok(o) if o.status.success() || !on => Ok(()), @@ -338,7 +338,7 @@ pub fn start_at_login_is_on() -> bool { } #[cfg(windows)] { - Command::new(tool("reg")) + quiet(&mut Command::new(tool("reg"))) .args(["query", r"HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "/v", "Igneum Miner"]) .output() .map(|o| o.status.success()) diff --git a/app/igneum-app/src/prover.rs b/app/igneum-app/src/prover.rs index 71186c404..1106b79dd 100644 --- a/app/igneum-app/src/prover.rs +++ b/app/igneum-app/src/prover.rs @@ -515,6 +515,7 @@ pub fn setup(shared: &Shared) -> Result { let line = format!("bash {}", wsl_path(&script)); let mut c = Command::new(crate::platform::tool("cmd")); c.args(["/c", "start", "", &crate::platform::tool("wsl").display().to_string(), "-d", crate::wslhost::DISTRO, "--", "bash", "-lc", &line]); + crate::platform::quiet(&mut c); // cmd itself hidden; `start` still opens the setup's own window c.spawn().map_err(|e| e.to_string())?; shared.event("proving", "WSL2 prover setup started in its own window"); Ok(json!({ "ok": true }))