跨端: 三级文字**浅色也一样不够**(12 处 2.85:1)+ 判据不再只验一半
## 一、这是"我自己推的理由"被实测推翻 上一条我把 `textSubtleFor()` 写成**只改深色**,理由是: > 「浅色下这些令牌本来就是为浅底配的,量它们没有信息量」 **那个理由是错的。** 切到浅色主题复扫,立刻抓到 12 处: ``` "用户名 / 显示名 / 角色 / 状态 / 创建时间 / 最后登录" 2.85:1 "已同步" / "37%" / "3px"(外观区) 2.85:1 "这一天没有日程" 2.85:1 ``` `ink rgb(153,153,153)` 压白底 —— 全是 `textSubtle`。 对照 WebUI 浅色(`index.css` `:root`): - `gray-400` = `107 114 128` = **4.83:1** - `gray-500` = `90 98 112` = **6.15:1** ⇒ 系统三级色**两个主题下都不够**。它的语义只是"比二级更淡", **不保证任何可读性下限**;WebUI 那边两套主题都做过适配,这边一档都没有。 修:`textSubtleFor()` 两个主题都返回 `textMuted` (系统二级色,语义就是"次要文字",且**跟随主题** —— 不必再维护两个手写常量、不必登记)。 ## 二、判据从"只验深色"改成"两个主题都验" 原来那条设备判据**在浅色下直接 skip**,skip 的理由正是上面那句错话。 现在两个主题都扫,断言消息里带上主题名(`深色主题下…` / `浅色主题下…`)。 ★ 纪律:**色令牌的可读性是两个主题各自的事,不能只验一半。** "另一半没问题"若没量过,就只是推测。 **变异验证**:把 `textSubtleFor()` 改回"两主题都用 textSubtle" (此时设备正在浅色主题)⇒ **判红**;还原 ⇒ 绿。 ## 三、设备复扫(浅色主题) ``` [通信] 扫 41 段,低对比 0 [日历] 扫 84 段,低对比 0 [联系人] 扫 50 段,低对比 0 [我的] 扫 40 段,低对比 0 ``` **215 段文字全部 ≥3:1。** 两个主题合起来:深色 219 段 + 浅色 215 段,全绿。 ## 四、顺手改掉的 测试名从「深色下短文本必须都读得动」改成「**当前主题**下…」 —— 名字得跟着它实际判的东西走(否则下一个人会以为它只管深色)。 `run-all.mjs` → `checks=515 pass=515 fail=0 skip=0 red=0 broken=0 unreported=0`。 **当前设备主题**:浅色(本轮为验另一半切过去的;服务端 `theme=light`)。
This commit is contained in:
@ -108,7 +108,23 @@ export class Theme {
|
||||
* 同一条纪律:**别在页面里自己写 `isDark ? a : b`**。
|
||||
*/
|
||||
static textSubtleFor(dark?: boolean): Resource {
|
||||
return Theme.isDarkNow(dark) ? Theme.textMuted : Theme.textSubtle;
|
||||
/*
|
||||
* ★★ 2026-09-19 **浅色也要换**(第一版只改了深色,漏了另一半)。
|
||||
*
|
||||
* 切到浅色主题复扫,立刻抓到 12 处:
|
||||
* 浅色 `textSubtle` 实测 `rgb(153,153,153)` 压白底 = **2.85:1**
|
||||
* 而 WebUI 浅色的 gray-400 是 `rgb(107,114,128)` = **4.83:1**,
|
||||
* gray-500 是 `rgb(90,98,112)` = **6.15:1**。
|
||||
*
|
||||
* ⇒ 系统三级色**两个主题下都不够**,不是"只有深色有问题"。
|
||||
* 同一档位在 WebUI 那边两套主题都做了可读性适配,
|
||||
* 而系统语义色只管"比二级更淡"这层关系。
|
||||
*
|
||||
* 所以两个主题都返回二级色(`textMuted`)。
|
||||
* ★ 为什么不各写一个手写值:系统二级色本身就是"次要文字",
|
||||
* 语义对得上,且**跟随主题**(不必再维护两个常量、不必登记)。
|
||||
*/
|
||||
return Theme.textMuted;
|
||||
}
|
||||
|
||||
// ─────────────── 遮罩与材质:交给系统 ───────────────
|
||||
|
||||
Reference in New Issue
Block a user