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:
worker-dlmsettings authored and AskaEth committed 2026-11-09 05:24:12 +08:00
1 parent e8544b19a7
commit 94f56f9d9c
10 files changed
+173 -130

No files matched your search

@@ -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),
))
@@ -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);