diff --git a/src-tauri/src/paths.rs b/src-tauri/src/paths.rs index 0ee0bf1..b8d8e6e 100644 --- a/src-tauri/src/paths.rs +++ b/src-tauri/src/paths.rs @@ -137,13 +137,14 @@ pub fn resolve_roots( } } - // Canonicalize + dedupe. canonicalize() can fail on UNC paths on some - // Windows builds; if so, fall back to the raw path so we don't drop hits. + // Dedup raw — DO NOT canonicalize. On Windows, canonicalize() rewrites + // `\\wsl$\...` to `\\?\UNC\wsl$\...` (NT-namespace form), and `Path` + // operations like `.parent()` and `.join()` get inconsistent on that + // prefix, breaking downstream lookups (e.g. tier detection). let mut canon: Vec = Vec::new(); for p in roots { - let c = std::fs::canonicalize(&p).unwrap_or(p); - if !canon.contains(&c) { - canon.push(c); + if !canon.contains(&p) { + canon.push(p); } }