From a75ee465a70156e0d3a36920dd2d47c4cad3b65a Mon Sep 17 00:00:00 2001 From: AskaEth Date: Thu, 12 Nov 2026 23:03:30 +0800 Subject: [PATCH] =?UTF-8?q?docs(app-iced):=20harness=20=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E7=9A=84=E6=AE=8B=E4=BD=99=E6=B8=85=E5=8D=95=E6=94=B9=E5=86=99?= =?UTF-8?q?=EF=BC=88=E4=B8=89=E6=9D=A1=E4=B8=8E=E4=BB=A3=E7=A0=81=E4=B8=8D?= =?UTF-8?q?=E7=AC=A6=E7=9A=84=E5=8F=A5=E5=AD=90=EF=BC=8CM285=20r2=20p2-1?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit r2 复审逐句拿代码核过,三处不符: (a) 「裸 iced::button 已经消费」—— 8 颗预设色块本身就是裸 button(...) 且不消费(accent.rs:153/ 163-166,ACCENT_PRESETS: [&str; 8])⇒ 改成「这几类控件(choice / chip / action_button)已消费」。 (b) 残余清单漏了三类 ⇒ 补:Downloads 组整组(body 形参就是 _forced,switch/chip/两颗 Button::new 都不看 forced;实测 --screen=download 三态 md5 全等 e283c585…)、所有 components::selection 的 chip / switch 站点(update 自动检查 chip、ai provider/reveal chip 与开关、download 两处、java prefs_view 与 download_view)、java 的字段/预设/下载按钮(fields.rs / prefs_view.rs / download_view.rs)。同时修掉与本 mission 自己的 artifact README §1「下载页不消费 forced」的 互相打脸。 (c) 「要接得先给组件开口」对滑块/文本框是假的 ⇒ Slider::state / Field::state / Chip::state / Switch::state 全都存在且被消费(gallery 矩阵用的强制视觉态),没接是**没搭线**;真正缺 forced 入口的只有本地助手 accent::swatch。并加一句反向锚:别把「裸 button」当「已消费」的同义词。 纯文档,零接线改动。harness.rs 330 → 347 行。 --- crates/app-iced/src/pages/harness.rs | 37 ++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/crates/app-iced/src/pages/harness.rs b/crates/app-iced/src/pages/harness.rs index 4ca179d..03e2ed0 100644 --- a/crates/app-iced/src/pages/harness.rs +++ b/crates/app-iced/src/pages/harness.rs @@ -41,17 +41,34 @@ //! 改成 900×600,落盘的就是 900×600 那张)。现在闸门在 [`should_request_capture`],日志里的 //! `落盘次数=` 必须恒为 1。 //! -//! **forced 能到哪儿(M285 订正,原句已过时)**:`--force-state` 只改**画出来的**态,不改状态机。 -//! 它经 `pages::Model.forced` → `settings::view(.., forced)` → `Group.body` 递到各控件: -//! **裸 `iced::button` 已经消费**——外观区 11 处 `choice` + 语言 / 主题两类 chip + 日志两颗 -//! `action_button`,一律走 `settings::resolve_state`;`components::buttons::Button` 那三组 -//! (update / ai / java)走 `settings::forced_button` 的 `.state(..)`。**仍然不消费的**:外观区的 -//! 滑块 / 文本框 / 8 颗预设色块(`accent::swatch` 的描边闭包没有 forced 入口)——那几处要接, -//! 得先给对应的组件开口,不在本通道的账上。 +//! **forced 能到哪儿(M285 订正)**:`--force-state` 只改**画出来的**态,不改状态机。它经 +//! `pages::Model.forced` → `settings::view(.., forced)` → `Group.body` 递到各控件。 //! -//! ⚠️ 上一段在本 mission 之前写的是「裸 `iced::button` 都不消费 forced」——**那句正是 M282/M284 -//! 放弃像素验收的理由**,已经不成立:这四类的 hover / pressed 现在出得来像素证据(判据见 -//! M285 的 `DevDocs/artifacts/forcedwire/`)。别把它再改回去。 +//! **已经消费的**:外观区 11 处 `choice`、语言 3 枚 / 主题 2 枚 chip、日志 2 颗 `action_button` +//! ——这几类(`choice` / chip / `action_button`)一律走 `settings::resolve_state` 这个唯一 resolve 点; +//! 另有 `components::buttons::Button` 的 7 处 `.state(..)` 走 `settings::forced_button` +//! (update 3 / ai 2 / java 2)。 +//! +//! **仍然不消费的(残余清单——**别**把它们当成「已接」)**: +//! +//! 1. **Downloads 组整组**:`settings/download.rs` 的 `body` 形参就是 `_forced`(接住不用),组里的 +//! `switch` / `chip` / 两颗 `Button::new` 都不看 forced。实测 `--screen=download` 加 +//! `--force-state=rest|hover|pressed` **三张图 md5 全等**(`e283c585fc06a0dd08efaf5596c9aa6f`); +//! 2. 外观区的**滑块 / 文本框 / 8 颗预设色块**(`ACCENT_PRESETS: [&str; 8]`;`accent::swatch` 是 +//! 本地助手,没有 forced 形参,描边闭包只看 `button::Status`); +//! 3. 所有 `components::selection` 的 `chip` / `switch` 站点:update 的自动检查 filter chip、 +//! ai 的 provider chip / reveal chip / 开关、download 的两处、java 的 `prefs_view` 与 +//! `download_view`; +//! 4. java 的字段 / 预设 / 下载按钮(`java/fields.rs`、`java/prefs_view.rs`、`java/download_view.rs`)。 +//! +//! ⚠️ **别把「没搭线」说成「组件库缺能力」**:`Slider::state` / `Field::state` / `Chip::state` / +//! `Switch::state` 全都存在且**在被消费**(它们本来就是 gallery 状态矩阵用的「强制视觉态」)。 +//! 上面那些站点只是没把 `forced` 递进去;真正缺 forced 入口的只有本地助手 `accent::swatch`。 +//! +//! 本段之前写的是「裸 `iced::button` 都不消费 forced」——**那句正是 M282/M284 放弃像素验收的理由**, +//! 已经不成立(残余清单之外的那几类现在出得来像素证据,见 M285 的 `DevDocs/artifacts/forcedwire/`)。 +//! 但也**别**反过来把「裸 `button(...)`」当成「已消费」的同义词:8 颗预设色块本身就是裸 +//! `button(...)` 且不消费。 //! //! ```text //! cargo run -p unlucky-app-iced --example pages_demo -- --screen=instances --width=1180 \