fix(m193): 复审 r1 三条 P2——版本史还原、retry_limit 0 有诚实语义、装配点措辞更正
- P2-2:keys.rs 的 schema 版本史按原文逐字还原(1.4.0/1.5.0 的键名、1.2.0 的迁移口径、 旧读新的完整结论),不再用版本文档换行数;腾行改从我自己新加的注释里出。 - P2-1:download.retry_limit 范围恢复 0~10,并把 0 的语义定成「只试一次」(attempts = max(1, 0)): 老配置合法、零迁移、ull config get 读到的 0 与引擎真做的事一致(不再回落出厂 3)。 schema 描述与 presenter/iced 两处 UI 都写清「0 与 1 都 = 只试一次,不代表不下载」。 - P2-3:shared.rs 的「唯一一处装配」更正为「presenter 侧唯一一处」(CLI 还有三处自建), docs 加「哪些路径吃这套设置」表,并立 finding(CLI install/java/pack 不读设置、并发 64→8)。 - P3-3:mirrors.rs 的 gh_proxies 注释改成「无生产读者,仅解析留档」。 - P3-4(presenter 侧):并发/重试描述的出厂值与上限改用常量 format!,不再是第二处字面量。 - 出图重拍(含 0/1 = 只试一次)。
This commit is contained in:
1 parent
e8544b19a7
commit
94f56f9d9c
10 files changed
+173
-130
No files matched your search
@@ -67,6 +67,21 @@ config/launcher.json
|
||||
|
||||
调优按**数据根**存(与引擎登记处同键),不是进程级:同一进程里多个数据根时互不串味。
|
||||
|
||||
## 3.1 哪些路径吃这套设置(哪些不吃)
|
||||
|
||||
| 路径 | 入口 | 吃设置吗 |
|
||||
|---|---|---|
|
||||
| GUI 的**全部**下载:内容库(Modrinth/CurseForge)、版本清单、资源/库/日志文件、字体、JDK 安装、自更新 | `presenter::host::engine::engine` → `core::download::shared::engine_for` | ✅ 吃(并发/尝试次数/gh-proxy 都吃) |
|
||||
| CLI `ull install` | `crates/cli/src/commands/install/mod.rs:95` 自建 `DownloadEngine::new(EngineConfig::default())` | ❌ **不吃**:并发与尝试次数是**出厂值**(8 / 3),不是用户设置值 |
|
||||
| CLI `ull java` | `crates/cli/src/commands/java.rs:326` 同上 | ❌ 不吃 |
|
||||
| CLI `ull pack` | `crates/cli/src/commands/pack.rs:286` 同上 | ❌ 不吃 |
|
||||
|
||||
也就是说 `shared::build` 是 **presenter 侧**唯一一处宿主装配,但**不是全仓唯一**:CLI 有三处自建引擎,
|
||||
它们在 M193 之前也不读设置(一直是裸 `EngineConfig::default()`),而 M193 把默认并发从 64 改成 8 之后,
|
||||
`ull install` / `ull java` / `ull pack` 的并发**跟着从 64 变成 8**(出厂值变化,不是读到了设置)。
|
||||
要让它们也吃设置,得改成走 `shared::engine_for` + 从 CLI 自己的 store 灌 tuning —— 已立 finding,
|
||||
不在 M193 的 scope(`crates/cli`)。
|
||||
|
||||
## 4. 三态语义:`download.gh_proxy`
|
||||
|
||||
| 值 | 含义 | 效果 |
|
||||
@@ -78,8 +93,13 @@ config/launcher.json
|
||||
**空串 ≠ 关**:「我还没决定」和「我明确不要」是两件事。设置页的说明文案(presenter 行 + iced 行)
|
||||
两档必须都写出来——这是最容易让用户以为「关掉了、其实还在套前缀」的地方。
|
||||
|
||||
边界:非法值(0、负数、超上限、手改坏值)**一律回落出厂默认**,不报错、不阻断下载;
|
||||
schema 在写入口就拒绝越界值,引擎侧再夹一次是纵深防御(老文件里可能躺着旧 schema 允许的大数)。
|
||||
边界:非法值(负数、超上限、手改坏值)**一律回落出厂默认**,不报错、不阻断下载;schema 在写入口
|
||||
就拒绝越界值,引擎侧再夹一次是纵深防御(老文件里可能躺着旧 schema 允许的大数)。
|
||||
|
||||
**`download.retry_limit = 0` 是合法值**(P2-1 复审的结论):旧版 GUI 的档位表里就有 `0`,所以
|
||||
范围保留 `0~10`,语义定为 **`0` 与 `1` 都 = 只试一次、不重试**(`attempts = max(1, value)`)。
|
||||
这样老配置零迁移、`ull config get` 读到的 0 与引擎真做的事一致(试 1 次),不会再出现
|
||||
「界面显示 0、引擎按 3 跑」。`)
|
||||
|
||||
## 5. 没接的四个键(已登记为 finding)
|
||||
|
||||
@@ -106,6 +126,18 @@ schema 在写入口就拒绝越界值,引擎侧再夹一次是纵深防御(
|
||||
| M7 | 删掉 `host/engine.rs::engine` 里的 `apply_tuning` | `host::settings::tests::the_concurrency_setting…` | 红(探针 8,期望 2) |
|
||||
| M8 | 下载设置页的 gh-proxy 行改回 `("Preferred source", "Automatic (region)")` | `the_downloads_rows_state_semantics…` | 红 |
|
||||
|
||||
## 6.1 已知的观感问题(P3-1,归属下一条 mission)
|
||||
|
||||
下载设置页把「GitHub 加速前缀」的三态画成了三行(`GitHub 加速前缀 / 留空 = 跟随内置默认`、
|
||||
`关掉它 / 填 off = 关闭`、`换掉它 / 填 URL 前缀 = 覆盖`)。这是**已知的观感问题**:
|
||||
①`关掉它` / `换掉它` 读起来像按钮而不是取值说明;②同一个设置画成三行比三态本身更难懂。
|
||||
|
||||
不改的理由不是不重要,而是渲染器不支持「一行 + 副说明」:`pages/settings/frame.rs` 的
|
||||
`setting_row` 只画「左标签 + 右单行值」,没有副说明位;要改得动 `frame.rs`(M196 正在改它)。
|
||||
正确的家是**下一条「iced 设置数据通路」mission**——那三行会变成真控件,形状问题自然消失。
|
||||
(同一条 finding 里还记着 presenter 侧描述里的 `1~64` / 出厂值:presenter 已改成用常量 `format!`,
|
||||
iced 侧的 `rows` 是 `&'static str`,仍是**已知的第二真相源**,等真控件一并解决。)
|
||||
|
||||
## 7. 没验的部分
|
||||
|
||||
* **真实网络下的并发/重试行为未验**:守卫读的是 `Semaphore` 的真实许可数与 `attempts_for()` 的
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
Reference in new issue
Block a user