- 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 = 只试一次)。
56 lines
3.0 KiB
Rust
56 lines
3.0 KiB
Rust
//! 设置页「Downloads」分组:并发 / 单源尝试次数 / GitHub 加速前缀(M193)。
|
||
//!
|
||
//! **这一组归 download 线**:接真控件时在本文件把 `body` 换成 `Some(download::body)`(渲染器也写在本文件),
|
||
//! `settings/mod.rs` 的注册表不用动。
|
||
//!
|
||
//! 注意与下载页(`pages/download*`)的区别:那是「装哪个版本」,这里是「怎么下」的默认值。
|
||
//!
|
||
//! ## 为什么这三行是「说语义」而不是「说当前值」(M193)
|
||
//!
|
||
//! 原来这三行是**写死的演示值**(`("Concurrency", "8 threads")` / `("Preferred source",
|
||
//! "Automatic (region)")` / `("Verify checksums", "On")`)。用户实测把它们当成真值投诉过
|
||
//! (「它默认显示 8,可我改成 2 也没变」)——因为 iced 侧**根本没有设置数据通路**:
|
||
//! `pages::Model` 没有设置快照、`grep -rn "SettingsChanged" crates/app-iced/src` 零命中、
|
||
//! [`State`] 是个空 struct 且无人填。而这三行里「8 threads」当时还是**假的**:引擎真值曾是 64
|
||
//! (schema 说 8),「Verify checksums」更是没有任何校验开关(校验恒开)。
|
||
//!
|
||
//! 所以这一轮把假值换成**不会撒谎的语义行**:区间、默认值、「留空 / off / 前缀」三态各是什么。
|
||
//! 真值(用户在 `launcher.json` 里填的那个数)不在这里显示——**宁可不说,也不说假的**。
|
||
//! 真正的可改控件要等一条 presenter 快照 → app → `Groups.download` 的数据通路,另立 mission。
|
||
//!
|
||
//! **生效保证**:这三条设置真的会被引擎读走(`core::download::shared::set_tuning`,宿主侧
|
||
//! 翻译在 `presenter::host::settings`),所以「行里的语义」与「引擎行为」是同一份契约。
|
||
|
||
use unlucky_design::icons::IconKind;
|
||
|
||
use super::Group;
|
||
|
||
/// Downloads 分组。
|
||
pub(super) const GROUP: Group = Group {
|
||
name: "Downloads",
|
||
icon: IconKind::Download,
|
||
rows: &[
|
||
("并发数", "出厂 8 · 可调 1~64"),
|
||
("单源尝试次数", "出厂 3 · 含首次 · 0/1 = 只试一次"),
|
||
("GitHub 加速前缀", "留空 = 跟随内置默认"),
|
||
("关掉它", "填 off = 关闭"),
|
||
("换掉它", "填 URL 前缀 = 覆盖"),
|
||
],
|
||
body: None,
|
||
};
|
||
|
||
/// Downloads 分组的运行期状态(M101 r2:**只归 download 线**)。
|
||
///
|
||
/// 加字段只改本文件:`Groups` 只认 `Groups.download` 这一个字段。
|
||
/// 现在仍然是空的——真值的数据通路还没接(见文件头「为什么这三行是说语义」)。
|
||
#[derive(Debug, Default)]
|
||
pub struct State {}
|
||
|
||
/// Downloads 分组的消息(M101:**只归 download 线**,加变体只改本文件)。
|
||
///
|
||
/// 落点是 `app/update/settings/download.rs`;`pages/mod.rs` 与 `page_messages.rs` 都不用动(它们只认
|
||
/// [`GroupMessage`](super::GroupMessage))。异步结果(例如「测这个源可用」)在自己那条落点里构造
|
||
/// `Message::Page(pages::Message::Settings(GroupMessage::Download(…)))` 回来即可。
|
||
#[derive(Debug, Clone)]
|
||
pub enum Message {}
|