版本:`[workspace.package] version` 0.2.0 → 0.2.1,并把全部 intra-workspace path 依赖的 version 约束一并对齐(`"0.2"` → `"0.2.1"`,M121 的教训)。Cargo.lock 里只有 8 个 unlucky-* 成员条目变化。`crates/app` 是 workspace `exclude` 的 Slint 退役树(manifest 连解析都过不了),不参与解析,故原样保留。 release.yml:新增 `PUBLISH_SLOTS` 白名单(唯一开关)= `windows-x64 windows-arm64`。 六槽位一律构建取证,release job 先按白名单裁掉 Linux/macOS 四档产物再重算 SHA256SUMS, 所以 tag 触发的 Release 只有 4 个资产 + SHA256SUMS.txt。release job 改成 `always() && !cancelled()`:未验证槽位构建失败不连坐 Windows 发布,真正的门禁是白名单 齐全性检查。将来某槽位真机验过后把它加进那一行即打开。 顺手修掉一处从未生效的门禁:齐全性检查的 glob 用的是连字符形态 (`dist/$prefix-*-$slot*`),对 D49 之后的下划线资产名永远匹配不上,改成 `dist/${prefix}_*_${stem}*`。资产命名规则 / SHA256SUMS / 合规文本并列资产 / `--version` 与 tag 交叉校验一律未动。 packaging/release-notes.md:清掉 v0.1.0 / Slint 时代的说明,Downloads 与 Support matrix 只描述本版实际发布的 Windows 两个槽位(其余标「built by CI, not published」)。 packaging/README.md §1/§3/§9 同步 gate(矩阵加「本版发布」列、§3 写清白名单与打开办法)。 起手顺带把示例 tag 从 v0.2.0 更到 v0.2.1,并把「winit / femtovg」更正为「winit / wgpu」。
- Cargo.toml [workspace.package] version = 0.2.0;Cargo.lock 由 cargo 重新解出一致 (只有 8 个 unlucky-* 成员条目变动,第三方版本一字未动) - 各 crate 的 `unlucky-*` path 依赖 `version = "0.1"` 同步提到 "0.2",否则工作区 根本解析不出来(cargo metadata 会报 `failed to select a version for unlucky-core = "^0.1"`);crates/app 虽被 exclude、cargo 不读,也一并跟上避免将来 重新纳入时立刻解析失败 - core::launch::LauncherConfig 兜底的 launcher_version 改成 env!("CARGO_PKG_VERSION"), 不再是把版本写死一份(CLI / presenter 本来就这么写) - README.md / README.zh-CN.md:删掉「v0.1.0 是目前唯一的 tag / the only tagged release」 这类随 v0.2.0 发布即变假的陈述,改写成「v0.1.0 是最后一个 Slint 版 tag,v0.2.0 是 重写后的第一个 tag」;所有讲 v0.1.0 资产 / Slint Royalty-Free 义务的历史记录原样保留 - packaging/README.md:命名与校验示例跟当前 tag 走(v0.2.0);§7 实测记录里的 0.1.0 输出加一句「属实测记录、不回填」,并把过期的「四个 workspace member」改成「任何一个」
Rust 原生单文件 Minecraft 启动器:CLI 完整可用(install/launch/accounts/java/diagnose/agent), MCP server 接入外部 Agent 工具,GUI 开发中。