diff --git a/windows/app/src-tauri/src/doctor.rs b/windows/app/src-tauri/src/doctor.rs index 811ff15..8ac2fb5 100644 --- a/windows/app/src-tauri/src/doctor.rs +++ b/windows/app/src-tauri/src/doctor.rs @@ -78,10 +78,11 @@ pub fn run(state: &engine::EngineState) -> Value { check("memory", "fail", format!("{mem} GB: below the 8b floor"), Some("E-MEM-LOAD"), None) }); - // engine binary presence + version probe + // engine binary presence + version probe (always-measure: doctor reports live facts, + // and a cached negative from before the binary landed must not haunt it — issue #128) let exe = paths::bin_dir().join("llama-server.exe"); checks.push(if exe.exists() { - match engine::server_version() { + match engine::server_version_probe() { Some(v) => check("engine", "pass", v, None, None), None => check("engine", "warn", format!("{} exists but version probe failed", exe.display()), None, None), } diff --git a/windows/app/src-tauri/src/engine.rs b/windows/app/src-tauri/src/engine.rs index ed95452..d08365a 100644 --- a/windows/app/src-tauri/src/engine.rs +++ b/windows/app/src-tauri/src/engine.rs @@ -228,24 +228,38 @@ pub fn status(state: &EngineState) -> Value { } } -/// Engine binary version: the actual `llama-server --version` line, cached in a -/// OnceLock; the UI shows the measured value and falls back to null rather than guessing. +/// Engine binary version: the actual `llama-server --version` line. +/// A *successful* probe is cached for the session; failures are never cached +/// (issue #128: the old OnceLock