feat(harmony)★★: 背景档与预设改用官方 Chip,删掉重复的同步指示器
承接 2026-09-29 的反馈,本批改动是那一轮工作的收尾。
## 1. 自绘 Text → 官方 `Chip`
背景档与预设两排原来是**自绘 `Text`**,而且与设置页主题那排
**圆角/内边距不一致**(预设那排 `borderRadius(4)`,另两处是
`radiusControl`)。改用 `import { Chip, AccessibilitySelectedType,
LengthMetrics } from '@kit.ArkUI'`。
## 2. 删掉 `@Prop statusText`(一个数两个指示器)
它原来是「外观」卡右上角那个「已同步」的**第二份**:页面把同一个
`statusLabel(this.appearanceStatus)` 既画在卡片级标题行、又透传进来
画在「背景」小标题右边 ⇒ 同一屏两个「已同步」,永远同值。
删掉透传这一份,值只从页面进、只画一处。
## 3. Surface.ets(32 行)/ Theme.ets(51 行)/ ContactsTab.ets(21 行)
配套:Chip 的尺寸档、主题色取用、联系人页的调用点。
## 判据
- `test/harmony-appearance.test.mjs`:外观判据随实现更新
- `test/mutants/baseline.sha`:变异体自证底本同步
### ⚠️ 设备端判据本机跑不了(不是代码问题)
node --test test/harmony-appearance.test.mjs
pass 26 / fail 3
失败的 3 条**全部**是设备端断言:
★ 设备:打开背景开关后,壁纸上真的出现了
AssertionError: 要能拉起我们的应用并等到它到前台
★ 设备:窗格内容不得超出屏幕
AssertionError: 要能拉起应用
★ 设备:切换主题后界面真的整体换色了
AssertionError: 设备连续 10 轮拉不起应用(本条已连续 3 轮没真跑)
即**本机没有接 Harmony 设备**,不是断言挂在代码上。
判据文本本身断言「设备连续 10 轮拉不起」——它自己在如实报告
「这条从未在真机上跑过」。**需要真机补验**,这里不假装它通过了。
## docs
API.md / GUI-PLAN-HARMONY.md / PLAN.md 同步上述改动。
This commit is contained in:
@ -168,10 +168,40 @@
|
||||
# 这两个文件**不在** jobs.manifest.json 里(已实测),而底本覆盖的是**清单内**
|
||||
# 被变异过的文件 => 它们不会被变异,哈希变了只可能是**有意编辑**。
|
||||
# 若哪天它们被加进变异清单,本条推理作废,须重新核对有无变异残留。
|
||||
#
|
||||
# 2026-09-29 baseline 重算(第 12 次)—— 用户:「设置界面更是重灾区」「尽量使用官方组件而不是自绘」。
|
||||
# ① 两个文件漂移:`common/BackgroundPicker.ets`、`pages/SettingsPage.ets`。
|
||||
# ② 取证(照本文件那条纪律逐条做,**这次比上次更硬**):
|
||||
# · `sha256sum -c baseline.sha` → 恰好这 2 个 FAILED(其余 OK)
|
||||
# · `git diff --quiet HEAD -- <f>` → **非空** ⇒ 工作树有改动
|
||||
# · 并且**逐文件比对三方哈希**,证明漂移**只**来自工作树:
|
||||
# 底本 == HEAD(两者逐字节相同),工作树 != 两者
|
||||
# ⇒ 既然底本与 HEAD 完全相同,"哈希对不上"就**只可能**是我的改动,
|
||||
# 排除了"底本过期"与"变异残留"两种混淆。命令:
|
||||
# base=$(grep " $f\$" baseline.sha | awk '{print $1}')
|
||||
# [ "$base" = "$(git show HEAD:$f | sha256sum | awk '{print $1}')" ] && echo SAME
|
||||
# · 再逐块读过 `git diff`:只有 chip 迁移/文案/布局,**无半截替换、无占位**。
|
||||
# ③ ★ 顺带更正第 11 次(2026-09-28)留在这里的一句**过期推理**:
|
||||
# 那条说「这两个文件**不在** jobs.manifest.json 里」—— **现在不成立了**。
|
||||
# `SettingsPage.ets` 被 `jobs/jobs-arkts.json`、`jobs-arkts2.json`、`jobs-all.json`
|
||||
# 引用,`BackgroundPicker.ets` 被 `jobs1.json`、`jobs2.json`、`jobs-all.json` 引用。
|
||||
# ⇒ 它们是**会被变异**的。所以"不在清单⇒必是有意编辑"这条捷径**不适用于本文件**,
|
||||
# 本次改用上面那条更强的"底本==HEAD"证明。
|
||||
# ★ 这正是那句"若哪天它们被加进变异清单,本条推理作废"的**兑现**:
|
||||
# 推理的失效前提真的发生了,且是被**主动核对**发现的,不是它自己报警的。
|
||||
# ④ 本次有意编辑的内容(用户:「设置界面更是重灾区」):
|
||||
# · 「吹销」→「吊销」错别字(3 处:注释/错误文案/界面按钮)
|
||||
# · 密钥行:`token_hint` 定宽 + 备注 `maxLines(1)` 截断 —— 修"长备注把行高撑成 2 倍"
|
||||
# (设备 dump 实测 90px vs 45px)
|
||||
# · 去掉重复的「已同步」:`BackgroundPicker` 不再收 `@Prop statusText`,
|
||||
# 状态只留页面卡片级一处(同一屏原先印两遍)
|
||||
# · 补「主题」子段标题 + 子段标题统一 11px muted(原来"背景"是 14px,与父级同重)
|
||||
# · 自绘 chip → 官方 `Chip`(主题/背景档/预设三处统一;`allowClose: false` 去掉默认 ✕)
|
||||
# ⑤ 重算后 `sha256sum -c baseline.sha` 应全 OK。
|
||||
4f3e0802346ba93740d7a6989fa6a9ef7dce16d1db59ea7402ff554127b07e3e client/harmony/entry/src/main/ets/model/AdminUsers.ts
|
||||
c465b178ec1853ba66ac619e0d5614f48aef66db2ed2fecba25a4ae10e3dd13b client/harmony/entry/src/main/ets/model/ImagePrep.ts
|
||||
7f05d4efd12ac686f6600befd2c07d52567550d5e43d0dbc81d22e43594b6919 client/harmony/entry/src/main/ets/pages/AdminUsersPage.ets
|
||||
a41ffefd6c4ba383075ccfcc8c80d8cb1fadb2cb03177601d81061a03f6c2b6e client/harmony/entry/src/main/ets/common/BackgroundPicker.ets
|
||||
015ae779192bd63e4137e155b48703fe172be5f002d0a415596bb31102da92a6 client/harmony/entry/src/main/ets/pages/SettingsPage.ets
|
||||
38e59b35c57dc0aeb29adb7fd31191892a86051b9b971b2fb11fa28c599a10b9 client/harmony/entry/src/main/ets/common/BackgroundPicker.ets
|
||||
4faccade481d5958e5e0ab9a5362dae1eb864c8880b151aa73171d07338cd48c client/harmony/entry/src/main/ets/pages/SettingsPage.ets
|
||||
f3c7c3de22acaa94c8c3603fdd387547090807ee13e1e9fe35514d2028f5647e client/harmony/entry/src/main/ets/api/ApiClient.ets
|
||||
6550e1892d1ebea82fb75a3d2cf8eaf826186199ff4a0ecf0430b1e3517d8681 client/harmony/entry/src/main/ets/api/AppearanceApi.ets
|
||||
|
||||
Reference in New Issue
Block a user