From 94f56f9d9cdc67fd0b0b89a93b8add209c43eae2 Mon Sep 17 00:00:00 2001 From: worker-dlmsettings Date: Mon, 9 Nov 2026 02:39:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(m193):=20=E5=A4=8D=E5=AE=A1=20r1=20?= =?UTF-8?q?=E4=B8=89=E6=9D=A1=20P2=E2=80=94=E2=80=94=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B2=E8=BF=98=E5=8E=9F=E3=80=81retry=5Flimit=200=20?= =?UTF-8?q?=E6=9C=89=E8=AF=9A=E5=AE=9E=E8=AF=AD=E4=B9=89=E3=80=81=E8=A3=85?= =?UTF-8?q?=E9=85=8D=E7=82=B9=E6=8E=AA=E8=BE=9E=E6=9B=B4=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 = 只试一次)。 --- .../app-iced/src/pages/settings/download.rs | 2 +- .../pages/settings/tests/download_section.rs | 4 +- crates/core/src/download/config.rs | 145 +++++++++--------- crates/core/src/download/mirrors.rs | 5 +- crates/core/src/download/shared.rs | 51 +++--- crates/core/src/setting/keys.rs | 32 ++-- .../presenter/src/host/settings/download.rs | 14 +- crates/presenter/src/host/settings_tests.rs | 14 ++ docs/download-settings.md | 36 ++++- docs/images/downloads-settings-zh.png | Bin 95845 -> 95838 bytes 10 files changed, 173 insertions(+), 130 deletions(-) diff --git a/crates/app-iced/src/pages/settings/download.rs b/crates/app-iced/src/pages/settings/download.rs index e064dae..5dd288b 100644 --- a/crates/app-iced/src/pages/settings/download.rs +++ b/crates/app-iced/src/pages/settings/download.rs @@ -31,7 +31,7 @@ pub(super) const GROUP: Group = Group { icon: IconKind::Download, rows: &[ ("并发数", "出厂 8 · 可调 1~64"), - ("单源尝试次数", "出厂 3 · 含首次 · 换源另算"), + ("单源尝试次数", "出厂 3 · 含首次 · 0/1 = 只试一次"), ("GitHub 加速前缀", "留空 = 跟随内置默认"), ("关掉它", "填 off = 关闭"), ("换掉它", "填 URL 前缀 = 覆盖"), diff --git a/crates/app-iced/src/pages/settings/tests/download_section.rs b/crates/app-iced/src/pages/settings/tests/download_section.rs index 46b3fc7..1ddd0cb 100644 --- a/crates/app-iced/src/pages/settings/tests/download_section.rs +++ b/crates/app-iced/src/pages/settings/tests/download_section.rs @@ -21,7 +21,7 @@ fn the_downloads_group_shows_concurrency_retries_and_the_gh_proxy_key() { rows, vec![ ("并发数", "出厂 8 · 可调 1~64"), - ("单源尝试次数", "出厂 3 · 含首次 · 换源另算"), + ("单源尝试次数", "出厂 3 · 含首次 · 0/1 = 只试一次"), ("GitHub 加速前缀", "留空 = 跟随内置默认"), ("关掉它", "填 off = 关闭"), ("换掉它", "填 URL 前缀 = 覆盖"), @@ -72,6 +72,8 @@ fn the_downloads_rows_state_semantics_and_never_fake_a_current_value() { "填 URL 前缀 = 覆盖", // 硬上限必须在界面上说清(任务书的边界条款)。 "1~64", + // P2-1:0 是旧版提供过的档位,界面必须说清它 = 只试一次(不是「不下载」)。 + "0/1 = 只试一次", // 三个键各自是哪一行(标签本身也是契约:用户按它认设置)。 "并发数", "单源尝试次数", diff --git a/crates/core/src/download/config.rs b/crates/core/src/download/config.rs index e384ca6..ec5d084 100644 --- a/crates/core/src/download/config.rs +++ b/crates/core/src/download/config.rs @@ -141,8 +141,8 @@ impl DownloadTuning { /// 设置原文 → 调优(**未填 / 越界 / 非法值一律回落出厂默认**,绝不报错阻断下载)。 /// /// 口径与 schema 的 `(min, max)` 同源但独立实现(用户可能手改文件绕过 `store.set`):键不存在 - /// → 出厂默认;落在区间内 → 原值;0 / 负数 / 超上限 → 出厂默认(**不夹到边界**:那是「想 9999 - /// 给 64」,界面仍会说谎)。 + /// → 出厂默认;落在区间内 → 原值;负数 / 超上限 → 出厂默认(**不夹到边界**:那是「想 9999 给 + /// 64」,界面仍会说谎)。`retry_limit` 的 `0` 在区间内,落成「只试一次」(见实现里的注释)。 #[must_use] pub fn from_settings( concurrency: Option, @@ -155,10 +155,12 @@ impl DownloadTuning { .and_then(|raw| usize::try_from(raw).ok()) .filter(|raw| (1..=MAX_CONCURRENCY).contains(raw)) .unwrap_or(default.max_concurrency), + // `0` 是**合法值**(P2-1 复审:旧配置里真的有 0,且旧 GUI 把它当档位):语义是 + // 「只试一次 = 不重试」,所以 0 与 1 都落成 1;负数 / 超上限才回落出厂默认。 max_attempts_per_source: attempts .and_then(|raw| u32::try_from(raw).ok()) - .filter(|raw| (1..=MAX_ATTEMPTS_PER_SOURCE).contains(raw)) - .unwrap_or(default.max_attempts_per_source), + .filter(|raw| *raw <= MAX_ATTEMPTS_PER_SOURCE) + .map_or(default.max_attempts_per_source, |raw| raw.max(1)), gh_proxy: gh_proxy.map_or(GhProxyOverride::Builtin, gh_proxy_override), } } @@ -225,36 +227,47 @@ mod tests { use super::*; use crate::setting::keys::{launcher_schema, launcher_version}; - /// **守门③**:schema 的默认值与 `EngineConfig::default()` / 调优默认值是同一个常量。 + /// **守门③**:schema 的默认值 / 区间 / 键名与 `EngineConfig::default()` / 调优默认值取同一组常量。 /// - /// 变异证明(只改实现侧):把 `EngineConfig::default()` 的 `max_concurrency` 写回字面量 64 - /// ⇒ 本用例红在 `max_concurrency`;把 `setting/keys.rs` 的 `download.concurrency` 默认值写回 - /// 字面量 8 而常量改成 16 ⇒ 红在 schema 一侧。这条防的正是「两处各写一个数」长回来 - /// (8 vs 64 就是这么长出来的)。 + /// 变异证明(只改实现侧):`EngineConfig::default()` 的并发写回字面量 64 ⇒ 红;schema 默认值 + /// 写成字面量 16 ⇒ 红;`MAX_CONCURRENCY` 改了而 schema 仍写 64 ⇒ 红。这条防的正是「两处各写 + /// 一个数」长回来(8 vs 64 就是这么长出来的)。 #[test] - fn the_schema_defaults_are_the_engine_defaults() { + fn the_schema_contract_is_single_sourced() { let schema = launcher_schema(); assert_eq!(schema.version(), launcher_version()); let cfg = EngineConfig::default(); let tune = DownloadTuning::default(); - // 键名常量与 schema 登记是同一份(宿主按常量读,schema 按常量登记)。 - assert!(schema.spec(KEY_CONCURRENCY).is_some(), "{KEY_CONCURRENCY}"); - assert!(schema.spec(KEY_RETRY_LIMIT).is_some(), "{KEY_RETRY_LIMIT}"); - - let concurrency = schema.spec(KEY_CONCURRENCY).expect("键已登记"); - assert_eq!( - concurrency.default, - serde_json::json!(DEFAULT_MAX_CONCURRENCY) - ); + // 并发 1~64(0 张许可没意义);尝试次数 **0**~10(P2-1:0 = 只试一次,旧配置里真有)。 + let contract: [(&str, i64, i64, usize); 2] = [ + ( + KEY_CONCURRENCY, + i64::try_from(DEFAULT_MAX_CONCURRENCY).expect("装得下"), + 1, + MAX_CONCURRENCY, + ), + ( + KEY_RETRY_LIMIT, + i64::from(DEFAULT_MAX_ATTEMPTS_PER_SOURCE), + 0, + usize::try_from(MAX_ATTEMPTS_PER_SOURCE).expect("装得下"), + ), + ]; + for (key, default, min, max) in contract { + let spec = schema.spec(key).expect("键已登记"); + assert_eq!(spec.default, serde_json::json!(default), "{key}"); + assert_eq!( + spec.kind, + crate::setting::spec::ValueKind::Int { + min, + max: i64::try_from(max).expect("装得下"), + }, + "{key}" + ); + } assert_eq!(cfg.max_concurrency, DEFAULT_MAX_CONCURRENCY); assert_eq!(tune.max_concurrency, DEFAULT_MAX_CONCURRENCY); - - let retry = schema.spec(KEY_RETRY_LIMIT).expect("键已登记"); - assert_eq!( - retry.default, - serde_json::json!(DEFAULT_MAX_ATTEMPTS_PER_SOURCE) - ); assert_eq!(cfg.max_attempts_per_source, DEFAULT_MAX_ATTEMPTS_PER_SOURCE); assert_eq!( tune.max_attempts_per_source, @@ -262,44 +275,38 @@ mod tests { ); } - /// 硬上限:schema 的上界与引擎的夹取上限是同一个常量(防「schema 收 256、引擎不知情」)。 - /// 变异证明:只改 `MAX_CONCURRENCY` 而 schema 仍写 64 ⇒ 红。 - #[test] - fn the_hard_caps_are_single_sourced() { - let schema = launcher_schema(); - let concurrency = i64::try_from(MAX_CONCURRENCY).expect("装得下"); - let attempts = i64::from(MAX_ATTEMPTS_PER_SOURCE); - for (key, max) in [(KEY_CONCURRENCY, concurrency), (KEY_RETRY_LIMIT, attempts)] { - let spec = schema.spec(key).expect("键已登记"); - assert_eq!( - spec.kind, - crate::setting::spec::ValueKind::Int { min: 1, max } - ); - } - } - - /// 未填 / 非法值回落默认,不阻断(任务书的边界条款)。 + /// 未填 / 越界回落默认(不阻断下载);**`retry_limit: 0` 是合法值**,语义 = 只试一次。 /// - /// 变异证明:把 `filter(|raw| (1..=MAX_CONCURRENCY).contains(raw))` 删掉 ⇒ `9999` 与 `0` - /// 两处断言红;把 `unwrap_or(default.max_concurrency)` 改成 `unwrap_or(1)` ⇒ `None` 断言红。 + /// 变异证明:把并发的区间过滤删掉 ⇒ `0` / `9999` 两条红;把尝试次数的 `.max(1)` 删掉 ⇒ + /// `0 → 1` 那条红(引擎会拿到 0 次尝试);把 `0` 判成越界 ⇒ 同样红。 #[test] fn missing_or_illegal_values_fall_back_to_the_defaults() { - let tune = DownloadTuning::from_settings(None, None, None); - assert_eq!(tune, DownloadTuning::default()); + assert_eq!( + DownloadTuning::from_settings(None, None, None), + DownloadTuning::default() + ); let just_over = i64::try_from(MAX_CONCURRENCY).expect("上限装得下") + 1; for bad in [0_i64, -1, 9_999, just_over] { - let tune = DownloadTuning::from_settings(Some(bad), Some(bad), None); + let tune = DownloadTuning::from_settings(Some(bad), None, None); + assert_eq!(tune.max_concurrency, DEFAULT_MAX_CONCURRENCY, "{bad}"); + } + // 0 与 1 都 = 只试一次:旧配置里的 0 不许回落成出厂 3(那正是「界面 0、引擎 3」)。 + for zero_or_one in [0_i64, 1] { + let tune = DownloadTuning::from_settings(None, Some(zero_or_one), None); + assert_eq!(tune.max_attempts_per_source, 1, "{zero_or_one}"); + } + for bad in [-1_i64, 9_999] { + let tune = DownloadTuning::from_settings(None, Some(bad), None); assert_eq!( - tune, - DownloadTuning::default(), - "{bad} 越界时应回落默认而不是夹到边界" + tune.max_attempts_per_source, + DEFAULT_MAX_ATTEMPTS_PER_SOURCE ); } - let tune = DownloadTuning::from_settings(Some(2), Some(1), None); + let tune = DownloadTuning::from_settings(Some(2), Some(2), None); assert_eq!(tune.max_concurrency, 2); - assert_eq!(tune.max_attempts_per_source, 1); + assert_eq!(tune.max_attempts_per_source, 2); } /// 三态:**空串 ≠ 关**(这条是「设置项说假话」的高发点,M197 的键语义同源)。 @@ -323,21 +330,21 @@ mod tests { ); } - /// `apply_gh_proxy` 的三档真的改到档案上、并且**改到候选链上**(`MirrorTable::expand()` 读的就是 - /// 档案里那个前缀,内容库/版本清单都走它)。这是「改键 ⇒ 候选链变」的 core 级一半。 + /// `apply_gh_proxy` 的三档真的改到档案上、并且**改到候选链上**(`MirrorTable::expand()` 读的 + /// 就是档案里那个前缀)。端到端(schema 键 → 调优 → `plan()`)由 `shared.rs` 与 presenter 守。 /// 变异证明:把 `Off` 分支改成原样返回 `profile` ⇒ `off` 那条红。 #[test] - fn gh_proxy_override_reaches_the_region_profile_and_the_candidate_chain() { + fn gh_proxy_override_reaches_the_profile_and_the_chain() { use crate::download::mirrors::{MirrorTable, SOURCE_GH_PROXY}; use crate::download::types::ResourceKind; let url = "https://github.com/o/r/releases/download/v1/a.jar"; let table = MirrorTable::builtin(); - let chain = |profile: &RegionProfile| -> Vec { + let sources = |profile: &RegionProfile| -> Vec { table .expand(url, ResourceKind::Other, profile) .into_iter() - .map(|candidate| candidate.url) + .map(|candidate| candidate.source) .collect() }; @@ -345,36 +352,22 @@ mod tests { let kept = DownloadTuning::default().apply_gh_proxy(mirror_first.clone()); assert_eq!(kept.gh_proxy, mirror_first.gh_proxy, "Builtin 不该动档案"); assert!( - chain(&kept).iter().any(|url| url.contains("gh-proxy")), - "出厂默认会套前缀" + sources(&kept).contains(&SOURCE_GH_PROXY.to_string()), + "出厂默认套前缀" ); let off = DownloadTuning::from_settings(None, None, Some("off")) .apply_gh_proxy(mirror_first.clone()); - assert!(!off.gh_proxy_enabled(), "off 必须关掉 gh-proxy"); - assert_eq!(off.gh_proxy, None); + assert!(!off.gh_proxy_enabled()); assert!( - !chain(&off).iter().any(|url| url.contains("gh-proxy")), - "关了就不该有候选" - ); - assert!( - table - .expand(url, ResourceKind::Other, &off) - .iter() - .all(|candidate| candidate.source != SOURCE_GH_PROXY), - "连 source 也不该出现" + !sources(&off).contains(&SOURCE_GH_PROXY.to_string()), + "关了就没有候选" ); let prefix = DownloadTuning::from_settings(None, None, Some("https://gh.example/")) .apply_gh_proxy(mirror_first); assert_eq!(prefix.gh_proxy.as_deref(), Some("https://gh.example/")); assert!(prefix.gh_proxy_enabled()); - assert!( - chain(&prefix) - .iter() - .any(|url| url.starts_with("https://gh.example/")), - "覆盖前缀必须进候选链" - ); } /// 每个数据根的调优互不串味(一个根改成 2 不该改另一个根的引擎)。 diff --git a/crates/core/src/download/mirrors.rs b/crates/core/src/download/mirrors.rs index e48e3bc..31fca8d 100644 --- a/crates/core/src/download/mirrors.rs +++ b/crates/core/src/download/mirrors.rs @@ -130,7 +130,8 @@ pub struct MirrorTable { /// Zulu 元数据(v3 新增)。 #[serde(default)] pub zulu: Option, - /// gh-proxy 类前缀。 + /// gh-proxy 类前缀(**目前无生产读者**:生效前缀的唯一真相源是 `RegionProfile.gh_proxy`; + /// 这一列只作为 `mirrors.json` 的解析留档,别再按它做「改这里能生效」的接口)。 #[serde(default)] pub gh_proxies: Vec, } @@ -184,7 +185,7 @@ impl MirrorTable { /// GitHub host 且允许时套 gh-proxy 前缀。 /// /// **生效前缀的唯一真相源是 `region.gh_proxy`**(设置层/地区判定写入,`None` = 用户关闭)。 - /// 表格里的 `gh_proxies` 只是「已知可用前缀」清单(诊断页可读),**改它不会生效**——M193 + /// 表格里的 `gh_proxies` 只是「已知可用前缀」的留档(无生产读者),**改它不会生效**——M193 /// 删掉了原先那个 `MirrorTable::set_gh_proxy`,正是因为它改了这张表而 `expand()` 读的是档案, /// 属于「看起来能改、其实没人读」的入口。 #[must_use] diff --git a/crates/core/src/download/shared.rs b/crates/core/src/download/shared.rs index f3a59b6..3f0257a 100644 --- a/crates/core/src/download/shared.rs +++ b/crates/core/src/download/shared.rs @@ -136,11 +136,10 @@ pub fn constructions(cache_root: impl AsRef) -> usize { .unwrap_or(0) } -/// 真实构造(**唯一**一处 `DownloadEngine::new` 的宿主侧装配)。装配参数从该数据根的 -/// [`wanted`] 取,不用裸 `EngineConfig::default()`(M193):并发 → `Semaphore` 容量、尝试次数 → -/// `attempts_for()` 上限、gh_proxy → 地区档案(`MirrorTable::expand()` 只认档案里那个前缀,所以 -/// 内容库 / 版本清单 / 字体 / 安装**所有**路径一起生效)。值由宿主翻译后经 [`set_tuning`] 灌入—— -/// core 不认识设置键名,也不依赖 `core::setting`。 +/// 真实构造(**presenter 侧**唯一一处 `DownloadEngine::new` 的宿主侧装配;CLI 还有三处自建, +/// 见 `docs/download-settings.md` §3 的「哪些路径吃这套设置」)。装配参数从该数据根的 [`wanted`] 取, +/// 不用裸 `EngineConfig::default()`(M193):并发 → `Semaphore` 容量、尝试次数 → `attempts_for()` +/// 上限、gh_proxy → 地区档案(`expand()` 只认档案里那个前缀)。值由宿主经 [`set_tuning`] 灌入。 fn build(cache_root: &Path) -> DownloadEngine { let now = now_ms(); let tune = wanted(cache_root); @@ -179,7 +178,7 @@ pub fn set_tuning(cache_root: impl AsRef, next: DownloadTuning) -> bool { mod tests { use super::*; - /// 每个用例一个独立数据根(登记处是进程级的,键撞了会互相干扰)。 + /// 每个用例一个独立数据根(登记处与调优都是进程级、按根存,键撞了会互相干扰)。 fn root(tag: &str) -> PathBuf { static SEQ: std::sync::atomic::AtomicUsize = std::sync::atomic::AtomicUsize::new(0); let seq = SEQ.fetch_add(1, std::sync::atomic::Ordering::SeqCst); @@ -325,17 +324,16 @@ mod tests { std::fs::remove_dir_all(&dir).ok(); } - /// **守门①②**:设置说 2 ⇒ 引擎**真实的并发闸门**就是 2(探针读 `Semaphore`,不是读配置); - /// 同一口装配点上的 gh-proxy 三档也真的改变 `plan()` 的候选链。 + /// **守门①②**:设置说 2 ⇒ 引擎**真实的并发闸门**就是 2(探针读 `Semaphore` 而非配置);gh-proxy + /// 三档也真的改变 `plan()` 的候选链;`retry_limit = 0` 落成「只试一次」。 /// - /// 变异证明(只改实现侧):① `build` 的 `tune.apply_to(...)` 换回裸 `EngineConfig::default()` - /// ⇒ 探针 8,红;② `tune.apply_gh_proxy(region)` 换回 `region` ⇒ `off` 档仍有候选,红; - /// ③ 删掉 `set_tuning` 里那条 `remove` ⇒ 换参数后交回旧引擎(探针 2 ≠ 5),红。 - /// gh-proxy 的**端到端**一半(schema 键 → 调优)要等 M197 登记该键,这里只守「调优 → 候选链」。 + /// 变异证明(只改实现侧):① `build` 换回裸 `EngineConfig::default()` ⇒ 探针 8 红;② + /// `apply_gh_proxy(region)` 换回 `region` ⇒ `off` 档仍有候选,红;③ 删 `set_tuning` 的 + /// `remove` ⇒ 换参数后交回旧引擎,红。gh-proxy 的端到端(schema 键 → 调优)等 M197 登记该键。 #[test] fn the_setting_and_the_gh_proxy_override_reach_the_engine() { use super::super::types::{DownloadRequest, ResourceKind}; - use super::super::RegionProfile; + use super::super::{config, RegionProfile}; let dir = root("tune"); // 镜像优先的档案:gh-proxy 只在这个模式下才生成候选。 @@ -363,13 +361,8 @@ mod tests { set(Some(2), Some(1), "off"); let engine = engine_for(&dir); assert_eq!(engine.concurrency_probe(), 2, "闸门必须真是 2 张许可"); - assert_eq!( - engine.config().max_attempts_per_source, - 1, - "尝试次数同一条路" - ); let off = chain(&dir); - assert!(!off.iter().any(|url| url.contains("gh-proxy")), "{off:?}"); + assert!(!off.iter().any(|u| u.contains("gh-proxy")), "{off:?}"); set(Some(5), None, "https://gh.example/"); let rebuilt = engine_for(&dir); @@ -377,23 +370,27 @@ mod tests { assert_eq!(rebuilt.concurrency_probe(), 5, "新闸门吃新值"); let over = chain(&dir); assert!( - over.iter() - .any(|url| url.starts_with("https://gh.example/")), - "覆盖前缀必须出现在候选链里:{over:?}" + over.iter().any(|u| u.starts_with("https://gh.example/")), + "{over:?}" ); - // 硬上限(纵深防御):宿主绕开 `from_settings` 直接塞 9999,闸门也只能开到 64。 + // P2-1:`retry_limit = 0`(旧配置里真有)不许回落出厂 3。硬上限:塞 9999 也只开 64。 + set(Some(8), Some(0), ""); + let zero = engine_for(&dir); + assert_eq!(zero.config().max_attempts_per_source, 1); + assert_eq!( + zero.attempts_for("official", ResourceKind::Other, now_ms()), + 1 + ); let wild = DownloadTuning { max_concurrency: 9_999, - ..DownloadTuning::default() + ..Default::default() }; set_tuning(&dir, wild); assert_eq!( engine_for(&dir).concurrency_probe(), - super::super::config::MAX_CONCURRENCY, - "9999 张许可不能真开" + config::MAX_CONCURRENCY ); - std::fs::remove_dir_all(&dir).ok(); } } diff --git a/crates/core/src/setting/keys.rs b/crates/core/src/setting/keys.rs index 687e3ba..177d81d 100644 --- a/crates/core/src/setting/keys.rs +++ b/crates/core/src/setting/keys.rs @@ -4,8 +4,6 @@ use super::catalog::SettingSchema; use super::schema::{SchemaId, SchemaVersion}; use super::spec::{AiPolicy, SettingSpec}; - -// M193:下载两键的默认值与硬上限的唯一来源在 `download::config`(引擎侧),这里只登记成 schema。 use crate::download::config as download; /// `core.data_mode` 允许值。 @@ -48,18 +46,23 @@ pub mod update; /// /// `1.1.0` 登记 D20 实例隔离键(`instances.mode` 等)。 /// `1.2.0` 登记 D23 的 JDK 落点与发行版优先级键(`java.installRoot` / `java.vendorPriority`): -/// 只推 minor、不强制迁移——[`super::document`] 的「默认值不落盘」让老文件缺键即取默认。 +/// 同样只推 minor、不强制迁移——[`super::document`] 的「默认值不落盘」让老文件缺键即取默认, +/// 迁移链(按 major 走)不需要新步骤;`1.1.0 → 1.2.0` 的差异只体现在文件里出现新键之后。 /// `1.3.0` 登记 D17 的「外观(高级)」P1 键(`appearance.bg_image*` / `panel_alpha` / `glass` / -/// `accent_color`)与 `1.5.0` 的窗口圆角、`1.4.0` 的外观下层三键(M91):都是纯增量—— -/// 出厂全默认即等于老文件缺键。 -/// `1.6.0` 登记 M161 的「自更新」两键(见 [`update`]):纯增量 + 一步迁移(见 [`super::update_prefs`])。 +/// `accent_color`):同一套纯增量语义——出厂全默认(高级特性全关)即等于老文件缺键。 +/// `1.4.0` 登记 P4 的外观下层三键(`window_opacity` / `titlebar_mode` / `palette_source`,M91): +/// 仍然只推 minor、不加迁移步骤——三者的出厂值正是「老文件没有这些键」时的等价物。 +/// `1.5.0` 登记 M116 的窗口圆角策略(`appearance.window_corner`,出厂 `system`):纯增量。 +/// `1.6.0` 登记 M161 的「自更新」两键(见 [`update`]):纯增量但带一步数据迁移 +/// (此前住在 `cache/update/prefs.json`,迁移见 [`super::update_prefs`])。 /// `1.7.0` 登记 M168 的中文字体下载地址覆盖键(`ui.font_cdn`,见 [`font`]):纯增量、无迁移。 /// /// **旧读新(方向相反,措辞必须精确)**:1.4.0 的客户端读 1.5.0 的文件时, /// [`super::schema::SchemaCompat::check_url`] 走 `found.minor > expected.minor` → -/// `ReadOnlyPreserveSchema` → `FileAccess::ReadOnly`:**整份配置对它只读**(值照读、`store.set` -/// 一律 `SettingError::ReadOnly`),不是「只是少一档」。这正是新键必须推 minor 的原因—— -/// 回退到旧版本会出现「设置改不动」,而原因只在 `$schema` 那一行里。 +/// `ReadOnlyPreserveSchema` → [`super::schema::SchemaCompat::access`] → `FileAccess::ReadOnly`。 +/// 也就是说**整份配置对它只读**(值照读、`store.set` 一律 `SettingError::ReadOnly`、`save` 跳过), +/// 不是「只是少一档」。这是 minor 提升的既定代价——也正是新键必须推 minor 而不是偷偷塞进旧版本的 +/// 原因:回退到旧版本会出现「设置改不动」,而原因只在 `$schema` 那一行里,不看版本号无从排查。 #[must_use] pub fn launcher_version() -> SchemaVersion { SchemaVersion::new(1, 7, 0) @@ -100,8 +103,6 @@ pub fn launcher_schema() -> SettingSchema { AiPolicy::sensitive(), "实例默认隔离模式:isolated(运行目录派生 versions/<版本 id>,D20 默认)/ shared(所有实例共用 .minecraft 根)", )) - // M193:默认值/区间只有一个来源——`download::config` 的常量。此前这里写 8、 - // `EngineConfig::default()` 写 64,界面说「当前 8」引擎却跑 64,调并发完全无效。 .with(SettingSpec::int( "download.concurrency", download::DEFAULT_MAX_CONCURRENCY as i64, @@ -112,9 +113,9 @@ pub fn launcher_schema() -> SettingSchema { .with(SettingSpec::int( "download.retry_limit", download::DEFAULT_MAX_ATTEMPTS_PER_SOURCE as i64, - (1, download::MAX_ATTEMPTS_PER_SOURCE as i64), + (0, download::MAX_ATTEMPTS_PER_SOURCE as i64), AiPolicy::silent(), - "单个下载源的最多尝试次数(含首次,1 = 不重试;出厂 3)。换源不受此限:候选链上有几个源就各给几次", + "单个下载源的最多尝试次数(含首次;出厂 3)。0 与 1 都等于「只试一次、不重试」——0 是旧版 GUI 提供过的档位,保留合法但不代表「不下载」。换源不受此限", )) .with(SettingSpec::enumeration( "download.region", @@ -227,9 +228,8 @@ pub fn launcher_schema() -> SettingSchema { AiPolicy::locked(), "LLM API 密钥——AI 永不读写的凭据(D9)", )) - // M39(P3 MCP server,02 §0「传输定论」):对外 agent 工具服务。 - // 三个开关默认「关 / 只读」——外部客户端拿到的是与内置客户端**同一注册表**的工具, - // 但写权限必须用户显式打开(02 §1「同一注册表、同一安全策略、同一审计日志」)。 + // M39(P3 MCP server,02 §0「传输定论」):对外 agent 工具服务。三个开关默认「关 / 只读」—— + // 外部客户端拿到的是与内置客户端**同一注册表**的工具,但写权限必须用户显式打开(02 §1)。 .with(SettingSpec::bool( "agent.mcp.enabled", false, diff --git a/crates/presenter/src/host/settings/download.rs b/crates/presenter/src/host/settings/download.rs index 22c0320..4e6be69 100644 --- a/crates/presenter/src/host/settings/download.rs +++ b/crates/presenter/src/host/settings/download.rs @@ -22,7 +22,7 @@ //! 「读起来是纯读、实际改全局状态」正是本仓吃过亏的那类形状。 use unlucky_core::download::config::{ - DownloadTuning, DEFAULT_MAX_ATTEMPTS_PER_SOURCE, DEFAULT_MAX_CONCURRENCY, + DownloadTuning, DEFAULT_MAX_ATTEMPTS_PER_SOURCE, DEFAULT_MAX_CONCURRENCY, MAX_CONCURRENCY, }; use unlucky_core::download::shared; @@ -33,8 +33,8 @@ use super::{int, selected, text}; /// 并发数的推荐档位(`selected()` 找不到时回 0;手改出来的非档位值会被插进选项表,见 [`group`])。 const CONCURRENCY_LADDER: [&str; 5] = ["4", "8", "16", "32", "64"]; -/// 单源尝试次数的推荐档位。 -const RETRY_LADDER: [&str; 5] = ["1", "2", "3", "5", "10"]; +/// 单源尝试次数的推荐档位(`0` 是旧版 GUI 提供过的档位,语义 = 只试一次,见 schema 描述)。 +const RETRY_LADDER: [&str; 6] = ["0", "1", "2", "3", "5", "10"]; /// 下载(D7):并发/重试/地区/镜像偏好/代理/GitHub 加速前缀。 pub(super) fn group(env: &HostEnv) -> SettingGroupView { @@ -64,14 +64,18 @@ pub(super) fn group(env: &HostEnv) -> SettingGroupView { .with(SettingRowView::choice( unlucky_core::download::config::KEY_CONCURRENCY, "并发数", - "同时下载的文件数:出厂 8,可调 1~64(引擎硬上限 64,防止填 9999 把机器拖死);越界或手改坏值按出厂值生效", + &format!( + "同时下载的文件数:出厂 {DEFAULT_MAX_CONCURRENCY},可调 1~{MAX_CONCURRENCY}(引擎硬上限,防止填 9999 把机器拖死);越界或手改坏值按出厂值生效" + ), &concurrency_options, selected(&concurrency_options, &concurrency), )) .with(SettingRowView::choice( unlucky_core::download::config::KEY_RETRY_LIMIT, "单源尝试次数", - "同一个源最多试几次(含首次;出厂 3)。换源不受此限:候选链上有几个源就各给几次", + &format!( + "同一个源最多试几次(含首次;出厂 {DEFAULT_MAX_ATTEMPTS_PER_SOURCE})。0 与 1 都等于「只试一次、不重试」——0 是旧版提供的档位,不代表「不下载」。换源不受此限" + ), &retry_options, selected(&retry_options, &retry), )) diff --git a/crates/presenter/src/host/settings_tests.rs b/crates/presenter/src/host/settings_tests.rs index 480747a..3dd3b7b 100644 --- a/crates/presenter/src/host/settings_tests.rs +++ b/crates/presenter/src/host/settings_tests.rs @@ -45,6 +45,20 @@ fn the_concurrency_setting_reaches_the_real_download_engine() { "尝试次数也要吃到设置" ); + // P2-1:`retry_limit = 0`(旧配置里真有)必须写得回去、且引擎真的只试一次(不是出厂 3)。 + set(&env, "download.retry_limit", "0").expect("0 是合法值(旧版档位)"); + let zero = crate::host::engine::engine(&env); + println!( + "retry_limit=0 => store={:?} engine.config().max_attempts_per_source={}", + env.store().doc().effective_i64("download.retry_limit"), + zero.config().max_attempts_per_source + ); + assert_eq!( + zero.config().max_attempts_per_source, + 1, + "0 必须落成「只试一次」,不许回落出厂 3" + ); + // 改回去 ⇒ 下一次取到的引擎跟着换(不是「重启才生效」)。 set(&env, "download.concurrency", "16").expect("再写并发"); let rebuilt = crate::host::engine::engine(&env); diff --git a/docs/download-settings.md b/docs/download-settings.md index c52972b..0c0ff43 100644 --- a/docs/download-settings.md +++ b/docs/download-settings.md @@ -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()` 的 diff --git a/docs/images/downloads-settings-zh.png b/docs/images/downloads-settings-zh.png index a9ecf73c5535ed7e47fa3be2d2b3727e37f0c95b..e3cef2dc386ec5831bef324a52c5e0590946adfd 100644 GIT binary patch delta 54959 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Μp7>;RkSX$Su4d7QJ@j0ajb0$EC5+7@Az&BcjPs0 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 P|1JGs`TKeAZP@?ctS}~u delta 55103 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 D>Mc__