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 \