两处都来自 M201(5dda9ac),非本轮 mission 引入。tower 合并门此前只跑 fmt+check+test,从未跑 clippy,所以 dev 上 CI 的 clippy job 一直是红的没人发现。 - presenter/host/settings/download_tests.rs: chosen 的显式生命周期可省略 - app-iced/.../download_tests.rs: drain(..).collect() -> mem::take 语义等价,纯 lint。门禁已补上 clippy(见 00-恢复指引 §6)。
M193 的用户投诉「设置页里改了不生效」的结构性根因是 iced 侧没有设置数据通路: `CoreEvent::SettingsChanged` 在 `crates/app-iced/src` 零命中、`pages::Model` 没有设置快照、 `download::State` 是空 struct。presenter 那套设置组早就是真值来源(`host::settings::groups` 由 `refresh_all` 与 `dispatch` 的 `SetSetting` 分支发成 `SettingsChanged`),只是没有接到 iced。 这条线现在通了: host::settings::groups → SettingsChanged → AppState::settings_groups → pages::Model.settings → settings::States.settings → 下载组控件 → AppCommand::SetSetting → 写盘 + 重新发 SettingsChanged(闭环) 主要改动 - presenter `host/settings/download.rs`:并发/重试两行改成画**引擎生效值**(`DownloadTuning`), 文件原值与生效值不一致时写明「原值 X 已按出厂 N 生效」(P3-5,两个数都现读); gh-proxy 行补「当前生效:跟随内置默认/已关闭/覆盖为 X」。 - app-iced `pages/settings/download.rs`:`GROUP.body = Some(body)`,按 `SettingControl` 画 choice(filter chip)/ text(输入框 + 应用)/ action(按钮)/ toggle / readonly;写回走 `app/update/settings/download.rs` → `AppCommand::SetSetting`(不做乐观回显)。 - `pages::Model.settings` + `settings::States.settings`:快照进页面的唯一通道。 - i18n:新增 `SettingsDownloadsApply`(金表锚点追加,`split_keeps_every_translation` 绿)。 - 取证:`ULL_SCREENSHOT_REAL_HOST=1` 让 `--screenshot` 接真 host(截图通道默认强制 mock, 而 mock 不发 `SettingsChanged`,真值屏拍不出来)。 测试(新增 11 条) - presenter `download_tests.rs`:P3-5 的越界回落 / 0→1 / 无差异不出提示 + P3-3 的 gh-proxy 文件→三态端到端链。 - app-iced `app/update/settings/download_tests.rs`:假后端闭环 ×4 + **真 `CoreHost` 端到端** (点 16 ⇒ 磁盘上 `launcher.json` 真的有 16)。 - `pages/settings/tests/download_section.rs`:`body.is_none()` 绊线翻成 `is_some()` + 控件形状 / 空快照不编值。