diff --git a/README.md b/README.md index e327847..351f04e 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,11 @@ gap: the reason text is still raw Chinese straight out of the launch layer (see piece (`crates/app-iced/src/pages/mod.rs`, deviation #8). - **Version management** — a three-column rail (version type / major version / search) over the Mojang version list: release, snapshot and ancient versions, plus loader selection and a loader - version when you install. The CLI can plan the same install without downloading - (`ull install --dry-run`: file list, total size, source per file). + version when you install. Cancelling an installation really stops it — the in-flight file is cut, the + job ends at the next stage boundary, and no instance is registered + (`crates/presenter/src/host/dispatch.rs:61-88`). The CLI can plan the same install without + downloading (`ull install --dry-run`: per-role file counts, total size, and one source-chain sample + per file category; the full file list is in `--json`). - **Launching** — a 10-stage command-line assembly (`crates/core/src/launch/`), per-instance JVM and game arguments, a native-library pass, and a JSONL session record for every run. Process trees are killed as trees, not as one PID. @@ -50,8 +53,9 @@ gap: the reason text is still raw Chinese straight out of the launch layer (see - **Loaders** — Fabric, Quilt, NeoForge and Forge. Forge/NeoForge versions that need the official installer `processors` really run them, with a managed JDK if the machine has none. - **Modpacks** — import a CurseForge manifest, a Modrinth `.mrpack`, or a MultiMC/Prism instance; - export as `.mrpack` or a CurseForge manifest. Installs are cancellable for real, not at the next - file boundary. + export as `.mrpack` or a CurseForge manifest. Cancelling an **import** is interface-level only: the + panel closes and the result is discarded, but the import thread runs to the end, because `core`'s + import request has no cancel token yet (`crates/presenter/src/host/addon/pack.rs:28-42`). - **Content library** — modpacks / mods / resource packs / shaders with keyword, source, version, loader and sort filters, paged results, and one-click *install into this instance*. - **What that page will refuse, and says so on the row** — a modpack cannot be installed *from* the diff --git a/README.zh-CN.md b/README.zh-CN.md index 8b1d78a..5a772f6 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -28,8 +28,9 @@ Unlucky Launcher 是一个用 Rust 写的免费开源 **Minecraft: Java 版**启 stderr 写一行(`crates/app-iced/src/app/update/page_messages.rs`),欠的是实例向导 (`crates/app-iced/src/pages/mod.rs` 偏离 #8)。 - **版本管理**——三栏(版本类型 / 主版本 / 搜索)读 Mojang 版本清单:正式版、快照、远古版;安装时可选 - 加载器与加载器版本。命令行还能只出计划不下载(`ull install --dry-run`:文件清单、总大小、每个文件的 - 选用源)。 + 加载器与加载器版本。取消安装是真停:在下一个段边界收手,在飞的那个文件就地掐断,且不登记实例 + (`crates/presenter/src/host/dispatch.rs:61-88`)。命令行还能只出计划不下载(`--dry-run`:按类的文件数 + 与总大小,人类可读输出里每类给一个源链样本;整份文件清单在 `--json` 里)。 - **启动**——10 阶段命令行组装(`crates/core/src/launch/`)、逐实例 JVM 与游戏参数、原生库解压落位, 每次运行留一份 JSONL 会话记录。进程按**进程树**杀,不是只杀一个 PID。 - **崩溃诊断是真的、也是本地的**——`crates/core/src/diagnose` 采五类信号(退出码、`latest.log`、 @@ -41,7 +42,8 @@ Unlucky Launcher 是一个用 Rust 写的免费开源 **Minecraft: Java 版**启 - **加载器**——Fabric、Quilt、NeoForge、Forge。需要跑官方 installer `processors` 的 Forge/NeoForge 版本 会真跑一遍;机器上没有 Java 时先装一个托管 JDK。 - **整合包**——导入 CurseForge 清单、Modrinth `.mrpack`、MultiMC/Prism 实例;导出为 `.mrpack` 或 - CurseForge 清单。安装是真取消,不是「等这一批文件下完再说」。 + CurseForge 清单。**导入**的取消只是界面级:面板立刻收回、结果作废,但后台那次导入会跑到底——core 的 + 导入请求还没有取消令牌(`crates/presenter/src/host/addon/pack.rs:28-42`)。 - **内容库**——整合包 / Mod / 资源包 / 光影,带关键词、来源、版本、加载器与排序筛选,分页结果, 以及一键**装入这个实例**。 - **这一页会拒绝什么,就写在那一行上**——整合包**不能**从内容库直接装(整合包走上面的导入管线);