diff --git a/crates/app-iced/src/pages/harness.rs b/crates/app-iced/src/pages/harness.rs index 03e2ed0..817ab19 100644 --- a/crates/app-iced/src/pages/harness.rs +++ b/crates/app-iced/src/pages/harness.rs @@ -44,22 +44,31 @@ //! **forced 能到哪儿(M285 订正)**:`--force-state` 只改**画出来的**态,不改状态机。它经 //! `pages::Model.forced` → `settings::view(.., forced)` → `Group.body` 递到各控件。 //! -//! **已经消费的**:外观区 11 处 `choice`、语言 3 枚 / 主题 2 枚 chip、日志 2 颗 `action_button` +//! **已经消费的**:外观区 11 处 `choice`、语言 3 枚 / 主题 3 枚 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`)。 +//! 3. `components::selection` 的 `chip` / `switch` 站点里**还没搭线的那几处**(已知:update 的自动 +//! 检查 filter chip、ai 的 provider chip / reveal chip / 开关、download 的 switch 与 chip、java 的 +//! `prefs_view` 两对上下移 chip 与 `download_view` 的三处 chip、以及 **`java/view.rs` 运行时的 +//! 「设为默认」chip**——`action_chip` 在非默认行返回可点的 `Chip::filter`,`runtime_row` 没有 +//! forced 形参。这一串会漂,接线时请更新)。**同源 chip 里 `general/language.rs` 与 +//! `general/theme.rs` 那 6 枚是已接的**(见上一段),别算进这里; +//! 4. java 的字段 / 预设按钮(`java/fields.rs`、`java/prefs_view.rs`)——`java/download_view.rs` 里 +//! 一个 `Button` 都没有,它的下载控件是 chip,已在第 3 条; +//! 5. **其它组的文本框**:`ai/view.rs` 的 base_url / model / api_key 三只 `Field`(java 的两样在第 4 +//! 条、download 的整组在第 1 条)。`Field` 本来就有 `.state(..)`,这里是没搭线。 +//! +//! 这份清单是**残留快照,不是契约**:接上任何一处就把它从清单里划掉,别让它变成「文档说没接所以 +//! 不用接」;也别把它当穷举——判据只有一条:**这个控件有没有拿到 `forced`**。 //! //! ⚠️ **别把「没搭线」说成「组件库缺能力」**:`Slider::state` / `Field::state` / `Chip::state` / //! `Switch::state` 全都存在且**在被消费**(它们本来就是 gallery 状态矩阵用的「强制视觉态」)。