0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-25 10:16:33 +00:00

review(ui): 复评观影记录同步弹窗深色模式改动并加固守卫

对 ad21137c0f 的双轴评审(Standards / Spec)发现 5 个问题,本次全部修复。

1) 守卫测试缺乏区分力(最高价值)
   原守卫是整文件子串存在性检查:三个文件里 colorOnSurface()/
   colorOnSurfaceVariant() 各有多处调用点,只回退其中一处为 Color.GRAY /
   0xFF5F6368 / R.color.<旧字面量> 时 5 项测试仍全绿,缺陷可静默回归。
   原守卫只拦 Color.parseColor("# 加 9 个禁用字面量,另有四条路径漏网:
   裸 Color.* 常量、8 位整型色、R.color.<非调色板资源>、Color.rgb(...)
   (MpvCustomButtonDialog / PlaybackPerformanceModal 正是用 Color.rgb 写死
   #202124)。
   改为 REQUIRED_SITES + 花括号配平的 methodBody(),把断言从「整文件出现过
   该 token」收紧为「该方法的函数体内必须出现该 token」;签名缺失或重复显式
   失败。新增四条拒绝规则,仅放行 Color.TRANSPARENT 与 5 个 res/color/ 中
   全量指向 webhtv_color_* 的选择器资源。

2) 暂停行丢失描边级错误线索
   原提交保留 colorErrorContainer() 底色但描边改为通用 colorOutlineVariant(),
   删掉了唯一的描边级线索;而错误底与普通卡片填充对比仅 1.15:1(日)/
   1.83:1(夜),线索退化为纯色相。恢复为配对的 colorError() 描边,与
   CustomCspDialog.rowBackground 既有范式一致。

3) 死参数:PlaybackRemoteSyncDialog.rowBackground(config) 已不读 config,
   调用点仍传参,删参以与 ViewingRecordSyncDialog 对齐。

4) 引用数字错误:注释称两个描边灰阶差 1.02:1,实为 1.09:1,已更正。

5) 重复代码:VIEWING_RECORD_SYNC_SOURCES 逐字重复 DIALOG_SOURCES 中 3 项,
   徽标测试又硬编码同样两个名字第三次;改为 concat 派生并按方法体取。

保留的判断(未改,理由见文档):卡片仍取 colorSurfaceContainerLow(与面板
差 1.10:1 / 1.27:1,两表可分辨,全部文字过 AA);暂停行前景仍用表面前景而非
colorOnErrorContainer(CustomCspDialog 既有范式,实测全部过 AA)。

验证:
- DialogForegroundTokenTest 5 项通过
- theme.* + ui.dialog.* 共 60 套件 349 项,0 失败 0 错误
- 守卫区分力实测:回退到修复前源码 4/5 失败;单点回退标题为 Color.GRAY、
  单点回退暂停行描边、注入 Color.rgb + 0xFF5F6368 均失败;修复后 5/5 通过
- check_ui_tokens.py --strict PASS(violations=0 legacy=0,pairs=38 min=4.28)
- 对比度复算:标题 15.43/13.29、说明 8.39/10.06、徽标 6.53/11.78、
  暂停错误字 5.14/5.51,均过 WCAG AA
- 本机 bash 不可用(HCS_E_SERVICE_NOT_AVAILABLE),.codex/scripts 仅有
  task_guard.sh 无便携入口,故未运行 task_guard,逐项手工核对允许路径
This commit is contained in:
Silent1566 2026-10-19 12:12:56 +08:00
commit b414bc3444
5 changed files with 340 additions and 41 deletions