diff --git a/crates/app-iced/src/pages/layout.rs b/crates/app-iced/src/pages/layout.rs index cf6000c..8019c54 100644 --- a/crates/app-iced/src/pages/layout.rs +++ b/crates/app-iced/src/pages/layout.rs @@ -37,14 +37,18 @@ //! //! ## 3. 行宽约束(历史事故:M68 的全宽单卡) //! -//! M68 骨架的内容区是**一张全宽卡**:1180 窗宽 − 88 rail − 2×24 留白 = **712px**。 -//! 那张卡里的正文是 `BodySmall` 12px:步进 = 14px 实测值 6.0526 × 12/14 = **5.19px/字符**, -//! 所以 712px **实测装了 137 字符**。视觉复审的判词因此是「**不能把全宽单卡当页面模板**, -//! 官方桌面口径是 supporting-pane / list-detail」。 +//! M68 骨架的内容区是**一张全宽卡**:卡片横跨 x=112..1156(**1044px**),卡片内文本区 **1004px** +//! (边距 24 + 卡片内边距 20)。那张卡里的正文是 `BodySmall` 12px:步进 = 14px 实测值 +//! 6.0526 × 12/14 = **5.19px/字符**,所以 137 字符 × 5.19 ≈ **711px** —— 与 +//! `DevDocs/ops/screens-m68/shell-light-cpu.png` 里那一行**实测 ink 712px**(x=133..845)吻合。 +//! 视觉复审的判词因此是「**不能把全宽单卡当页面模板**,官方桌面口径是 supporting-pane / list-detail」。 //! -//! > **订正记录**:早期文档把同一段事故按 `0.5em` 估算的「14px 正文步进」换算,既高估了步进、 -//! > 也对错了字号(M68 那张卡实际渲染的是 12px 辅助字号),两条叠加把事故说轻了 16%。 -//! > 现在事故描述一律用**实测步进 × 实际字号**,不再用估算值——这也是 +//! > **两个订正记录**(都是 P2 复审抓出来的): +//! > ① **712 是那一行的墨迹宽度,不是列宽**。早期文档写成「1180 − 88 − 2×24 = 712」, +//! > 那个减法得 1044,712 是 ink——列宽是 1004,ink 只占其中的 71%。 +//! > ② **字符数按实测算**:那一行是 **137 字符**(12px × 0.4323em = 5.19px/字符)。 +//! > 早期口径拿 `0.5em` 估算的「14px 正文步进」换算,既高估步进、也对错了字号,把事故说轻了。 +//! > 现在事故描述一律用**实测步进 × 实际字号**;这也是 //! > `line_length_is_capped_at_72_characters` 里那条「旧口径 504px 能放 83 字符」护栏的由来。 //! //! 所以正文列宽有**硬上限** [`measure_cap_px`]:按**实测**的 `BodyMedium` 14px 步进 diff --git a/crates/app-iced/src/pages/mod.rs b/crates/app-iced/src/pages/mod.rs index a5c3c52..b4fbfff 100644 --- a/crates/app-iced/src/pages/mod.rs +++ b/crates/app-iced/src/pages/mod.rs @@ -38,6 +38,17 @@ //! | `download` / `logs` | 下载 / 日志页(单列,两行页头的差异) | //! | [`harness`] | 截图 harness(`examples/pages_demo.rs` 的入口,**不是** `cli.rs` 的一部分) | //! +//! ## 偏离登记(D30 要求逐条写清;视觉复审 r1 要求把末两条补进来) +//! +//! | # | 偏离 | 为什么 | 什么时候收口 | +//! |---|---|---|---| +//! | 1 | 页头按 M3 口径**铺满页面宽度**(贴页边距),不与正文列对齐 | AppBar 本来就该满宽;1180 下页头右缘 1156 与详情列右缘 976 有 **180px 分歧** | 真 top bar 落地时按 M3 定语(页头右侧是操作区,不跟随列宽) | +//! | 2 | 空态标题 `HeadlineSmall 24` 比页标题 `TitleLarge 22` 大 | 12b §15.2 明确「空态是唯一允许 Headline 级的场景」,与 §16.4 的页标题档有 spec 张力 | 有意保留,不修 | +//! | 3 | 单列页(下载 / 日志)在 1180 下只用掉 **48%** 内容宽(435/1044) | 行宽上限的必然结果;空态居中不显空 | 版本浏览真正接数据后重新决议 `PaneKit`(现在写「一串线性进度项」是按单列定的) | +//! | 4 | 空态图标字形 **40px**(12b 15.1 是 `[估]` 32~48) | 令牌 `IconSize` 只有 24 一档,`frame::glyph` 按尺寸重算 stroke | 组件库的 `EmptyState`(M77)落地时 | +//! | 5 | 窄窗「Back to instances」没有前导箭头 | 占位文本按钮没有图标位 | 真 top bar / M78 的导航件落地时 | +//! | 6 | 实例页「未选中详情」空态**没有出图** | 演示数据固定选中第 1 条;空态代码路径在(`detail_empty`) | D30 状态矩阵补齐时补一张,不必重跑全套 | +//! //! ## 截图通道 //! //! ```text