复审 p2-1(medium):Win10+ 上 `%APPDATA%\Microsoft\Windows\Themes\` 通常只有 `TranscodedWallpaper`,一个 `.theme` 都没有;当前生效的主题记在 `HKCU\Software\Microsoft\Windows\CurrentVersion\Themes` 的 `CurrentTheme` 值里, 指向 `%LOCALAPPDATA%\Microsoft\Windows\Themes\Custom.theme`。 - 新增第二步 `windows-current-theme`:`reg.exe query ... /v CurrentTheme` → 归一化(含 `%LOCALAPPDATA%` 展开)→ 读该 `.theme` 的 `Wallpaper=`; - `%APPDATA%\...\Themes\*.theme` 通配扫描从「第二步」降为第四步兜底, evidence 如实标注「用户另存的主题包,可能未启用」; - 新顺序:TranscodedWallpaper → CurrentTheme → 注册表 WallPaper → 另存主题包; - `HostRoots` 增加 `local_app_data`(`%LOCALAPPDATA%`,退 `~/AppData/Local`)。 复审 p2-2(low):`transcoded_wallpaper_hit_comes_first` 补一条字面量路径断言, 防止夹具与生产代码用同一构造函数一起拼错。 复审 p2-3(low):`HostIo::run` 现在检查退出码(`!output.status.success()` 也返回 `None`),与四处「非零退出 → 失败」的文案对齐;`io.rs` 补一条夹具用例 (有 stdout 但退出码非零)证明旧行为会被挡掉。 行长:`windows.rs` 371 → 拆出纯解析到 `wallpaper/windows/parse.rs`(100 行), 全部 7 个文件 ≤400 行。真机复跑 `detect()`:第 1 条 transcoded、第 2 条 `windows-current-theme` → `C:\Windows\web\wallpaper\Windows\img0.jpg`(与注册表同源, 去重后只剩一条),`%APPDATA%` 下无主题包的 note 照旧。
新增 platform::wallpaper:只做「桌面壁纸可能是哪个文件」的路径探测, 不解码图片、不取色(莫奈取色与三级降级留给 crates/design 的后续 mission)。 - 唯一入口 detect() / 注入式 detect_with(io, env, platform):返回有序候选列表 + 各步失败原因,全部找不到时是空列表而不是错误; - Windows 三步:TranscodedWallpaper(无扩展名,靠魔数认)→ *.theme 的 Wallpaper= → reg.exe query HKCU\Control Panel\Desktop /v WallPaper; - Linux 四步:gsettings picture-uri(-dark) → KDE Image= → hyprpaper/sway 配置 → XFCE xfce4-desktop.xml,每步失败不影响下一步; - macOS 两步:com.apple.wallpaper/Store/Index.plist 字符串扫描(不引 plist 依赖,兼容 bplist00)→ defaults read com.apple.desktop Background; 代码与文档明确标注「未在真机验证」; - 零 unsafe / 零 FFI(core 是 #![forbid(unsafe_code)]),文件读取与子进程 全部经 ProbeIo 注入,环境变量表经 EnvSource 注入;三平台采集逻辑不带 cfg, CI 的 Linux 上也能跑 Windows / macOS 夹具用例; - 不新增第三方依赖;6 个文件均 ≤400 行,32 条单测覆盖三平台的 正常命中 / 多候选 / 全部失败。
Rust 原生单文件 Minecraft 启动器:CLI 完整可用(install/launch/accounts/java/diagnose/agent), MCP server 接入外部 Agent 工具,GUI 开发中。