test(预设): 钉住两端预设清单的 id 与顺序;更正"模糊只由壁纸层负责"这条被撤回的口径
pi 2026-09-14 的三处答复,逐条处理:
1. **§1 预设渲染(他担心的信息对等缺口)实际不存在**:鸿蒙侧 `model/Wallpaper.ts` 已有
`PRESET_IDS = ['aurora','dusk','mint','sand','ink','mesh']` + 标签 + 归一化 + `layersFor`,
计划文档 §P4 行也早写着"预设 6 档都能画出来 ✅"。所以 P4c(上传入口)不必让位。
**但缺口在判据上**:原先只钉了"服务端默认预设要在鸿蒙清单里"与"预设色板的值两边相同",
**id 集合与顺序没钉**。新增判据:`PRESET_IDS` 必须与 WebUI `PRESETS` 的 id **与顺序**逐项一致
(顺序也是契约:顺序不同会让两端的选择界面看起来"选错了")。变异验证:把 aurora/dusk 对调 → 红。
2. **§3 模糊口径**:他说判据"现在是后者"(只有导航必须有材质)—— 实际**两条都在**
(`harmony-appearance.test.mjs`:壁纸层不许有 `backgroundBlurStyle`、也不许有任何 `blur(`;
导航条必须有 `.backgroundBlurStyle(Theme.navMaterial)`)。所以这里不需要改代码。
需要改的是**文档里的规则原文**:`docs/HARMONY-ALIGN-PLAN.md` 第 9 行那句
"模糊只由壁纸层负责"是**被撤回的原话**(它其实是 WebUI 的架构结论:WebUI 壁纸自带
`filter: blur()`,所以浮在它上面的面再 `backdrop-filter` 就是糊第二遍),已换成两段式规则
"同一张底只许被模糊一次 / 模糊该出现在背后是可变内容的层",并把撤回本身留痕。
3. **§3 补的第二件(语义转换)**:§7.12 的表里新增一行 —— WebUI 的 `bg_blur` 是**像素半径**、
作用在壁纸图层;鸿蒙**没有对应物**,栏上的系统材质档位是唯一一次模糊,壁纸层不糊。
写清"不是同一个物理量,`bg_blur=8px` 与档位对不上不是 bug",否则以后必被当 bug 报。
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
> **负责人:dsh**(2026-09-14 起由 jianf 指定)。移交信:
|
||||
> 线索 `harmony-ui-alignment`(`dsh@/home/program/agentmail`),
|
||||
> 信里交代了状态、判据纪律与踩过的坑(判据要点"用户真正会点的那一层"、
|
||||
> 不许新写死颜色、不要给单个面单独做深色、模糊只由壁纸层负责、
|
||||
> 不许新写死颜色、不要给单个面单独做深色、**同一张底只许被模糊一次**、
|
||||
> 列表项每项一张卡、ArkTS 编译坑、视觉不可验要如实标注)。
|
||||
>
|
||||
> 我(pi)保留 WebUI/Electron 侧:需要两边一起加令牌之类的配合,回信给 pi。
|
||||
@ -160,7 +160,7 @@ WebUI 侧 `npm test` 在 **HEAD 上就是红的**(`test/background.test.mjs`
|
||||
但深色那套已在 `faacd3c`(修"导航栏还是黑色")里被有意去掉,
|
||||
现在 `index.css` 只剩 `--nav-bg: 255 255 255 / 0.72`。
|
||||
- `导航在壁纸模式下仍参与模糊` —— 期望 `html[data-bg='on'] .nav-rail` 里有
|
||||
`backdrop-filter: blur(`,而该规则现在**是空的**("模糊由壁纸层负责,这里不叠",
|
||||
`backdrop-filter: blur(`,而该规则现在**是空的**("同一张底只许被模糊一次",
|
||||
见 `index.css:892`)。
|
||||
|
||||
两条判据编码的都是**已被有意回滚的设计**,判据没跟着改。红成了常态,
|
||||
@ -239,7 +239,7 @@ ArkUI 只认单值,故用 `Theme.overlay()` 组装。**WebUI 侧不立同名
|
||||
### 6.3 那两条红判据的 patch:已落地,且验证过能判红
|
||||
|
||||
`test/background.test.mjs` 第 18 组三条按 pi 的 patch 重写:标签改回它真正断言的东西,
|
||||
两条方向相反的断言取代原两条(`.dark` 不许单独给导航换色 / 模糊只由壁纸层负责)。
|
||||
两条方向相反的断言取代原两条(`.dark` 不许单独给导航换色 / 壁纸层不许有模糊)。
|
||||
变异验证:
|
||||
|
||||
- 往某个 `.dark { }` 里塞一行 `--nav-bg: 15 23 42 / 0.72;` → **红**;
|
||||
@ -513,6 +513,7 @@ deb 也不必从 targets 里摘。已写进 `client/electron/BUILD.md`(含排
|
||||
|---|---|---|---|
|
||||
| 圆角 | 自声明 `--radius-card: 0.875rem` | 系统 `sys.float.ohos_id_corner_radius_card/button` | 系统圆角会随设备/主题/无障碍设置变;跟着系统才是"系统方案" |
|
||||
| 材质(玻璃) | 自声明 `--nav-bg: 255 255 255 / 0.72` + `backdrop-filter` | 系统 `backgroundBlurStyle(BlurStyle.COMPONENT_THICK)` | 系统材质自带深浅两套颜色与模糊半径,手写 alpha 跟不了深色 |
|
||||
| **壁纸模糊度** | 用户的 `bg_blur`(**像素半径**,初值 4px)作用在壁纸图层上 | **没有对应物**:栏上的系统**材质档位**(`BlurStyle.*`)是唯一一次模糊,壁纸层不糊 | **不是同一个物理量**:`bg_blur=8px` 与"材质档位"对不上**不是 bug**,是映射 —— 不写清就会有人当 bug 报(pi 2026-09-14 指出) |
|
||||
| 动效 | 自定义 transition/时长 | `animateTo` + 系统 `curves` | 动效曲线应跟随系统设置(含"减弱动效") |
|
||||
| 遮罩 | 自声明 `--bg-scrim` + `--bg-dim` 两段式 | 系统 `sys.color.ohos_id_color_mask_regular` | 遮罩要随主题换向(浅色洗白/深色压黑),这件事系统已经做了 |
|
||||
| **品牌色** | `--c-blue-600: 37 99 235` | `Theme.accent = '#2563EB'` | **不允许差异** —— 两个客户端是同一个产品 |
|
||||
@ -527,6 +528,14 @@ deb 也不必从 targets 里摘。已写进 `client/electron/BUILD.md`(含排
|
||||
它是自绘弹层唯一还需要引用的那一个令牌;判据钉两件事:值来自系统、且**在 `Theme.ets` 之外确有使用点**
|
||||
(只有声明没有使用 = 死令牌,pi 点过这条)。
|
||||
|
||||
**"模糊归谁"这条规则更正过(pi 2026-09-14 撤回自己的原话)**:原话"模糊只由壁纸层负责"是
|
||||
**WebUI 的架构结论,不是通用规则**(WebUI 壁纸自带 `filter: blur()`,所以浮在它上面的面再
|
||||
`backdrop-filter` 就是把同一张已糊的底糊第二遍 —— 那条规则在 WebUI 是空的)。正确的判据形式是两条:
|
||||
**① 同一张底只许被模糊一次;② 模糊该出现在"背后是可变内容"的层**(WebUI 的 `.narrow-nav` 就有
|
||||
`backdrop-filter`,因为背后是会滚动的内容)。鸿蒙这边栏上是系统材质、壁纸层不糊 ⇒ 满足"只一次",
|
||||
而且比原话更符合"能给系统的全给系统"。判据已按**互斥形式**钉:壁纸层不许有 `backgroundBlurStyle`/`blur(`,
|
||||
导航条必须有 `.backgroundBlurStyle(Theme.navMaterial)`。
|
||||
|
||||
**材质为什么是 `COMPONENT_THICK`**(pi 指出:判据只能钉"来自系统枚举",钉不了"选对没选对",
|
||||
所以理由要写下来,免得后人以为随便挑的):底部导航栏是**内容之上的一层**,要挡住滚动内容
|
||||
又不至于把内容糊没 —— `COMPONENT_*` 系列是"组件材质"(作用于一个组件表面),
|
||||
|
||||
Reference in New Issue
Block a user