dsh-theme-palette 1.8.2 → 1.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,112 @@
4
4
 
5
5
  ## 版本一览
6
6
 
7
+ ### 1.9.7
8
+ 暗色正文按策略 A 定标(用户反馈「白色文字太亮」):
9
+
10
+ - 非高对比模式正文目标从 12:1 降到约 **10:1**(950 上实测 10.1–11.5)
11
+ - 以侧栏/卡片面(950/875/850)定标;**模块面 800 不再为正文兜底**(约 5.6–6.5:1,仍过 AA)
12
+ - 报表口径同步:深色正文承诺 12→10,800/850 标为「政策外」而非违例
13
+ - README 的 12:1 表述待同步(发版前完成)
14
+
15
+
16
+ ### 1.9.6
17
+ 深色菜单/说明文字压暗(用户反馈「左侧菜单明度太高」):
18
+
19
+ - 深色 `label-secondary` / `label-tertiary` 按导航实际承载面(950/875)压到 L0.78 / L0.70
20
+ - 暖砂 `#cdb295`/`#b7987a`、靛蓝 `#a3b9d7`/`#88a0c1`、苔绿 `#a0c1a9`/`#84a990`
21
+ - 侧栏对比度 8.9:1 / 6.7:1,仍高于下限;四套(含自定义)同步
22
+
23
+
24
+ ### 1.9.5
25
+ 自定义配色对齐新的标签规则(不再只有三套预置享受):
26
+
27
+ - 二级/三级/更弱文字(`label-secondary/tertiary/dimmed`)在自定义下也按主题色相给足色度
28
+ - `midC` 0.010→0.020;侧栏补色度设上限 0.010,不会过度染色
29
+ - **画布不强制推白**:自定义的页面色仍由用户选的底色派生(保留选择权)
30
+ - 对比度仍按真实承载面求解
31
+
32
+
33
+ ### 1.9.4
34
+ 侧栏色度显式补足(用户对比参考实现发现侧栏偏中性):
35
+
36
+ - 画布收敛到近中性后,侧栏继承不到暖色;现按方案 `lightC×0.75` 显式补色度(保持明度)
37
+ - 暖砂 `#f8f4ef`(C0.008,参考 `#faf6ef` C0.009)、靛蓝 `#f0f3f8`、苔绿 `#eff5f2`
38
+ - 只改浅色侧栏底色,悬停/选中随之推导;深色侧不变
39
+
40
+
41
+ ### 1.9.3
42
+ 二级/三级/更弱文字**明暗两套**都提高鲜艳度(用户反馈「只是希望字色鲜艳一点」):
43
+
44
+ - 显式覆盖 `label-secondary` / `label-tertiary`:色度 0.050–0.055(原来是 0.01–0.03 的灰),明暗各一套
45
+ - 暖砂 `#785c40`/`#c9a98b`、靛蓝 `#526685`/`#8ea6c7`、苔绿 `#4a6c54`/`#8bb097`
46
+ - `label-dimmed` / `document-preview` 同步提到 C0.030–0.040
47
+ - 仍对真实承载面求解对比度(二级 6.2、三级 4.62),不牺牲可读性
48
+
49
+
50
+ ### 1.9.2
51
+ 更弱的注释层也跟随主题(用量统计 / 时间戳这类):
52
+
53
+ - 显式覆盖 `label-dimmed`(200/750)与 `label-document-preview`(300/700),色度提到 0.018–0.023
54
+ - 对比度按 3:1(次要信息下限)对真实承载面求解:暖砂 `#887e72`/`#958a7e`、靛蓝 `#7b8592`、苔绿 `#7d8577`
55
+ - 说明:若界面里该处仍发灰,可能是宿主直接用了 Tailwind 字面色而非 token,需要具体元素定位
56
+
57
+
58
+ ### 1.9.1
59
+ 注释/时间戳类文字跟随主题(用户反馈「颜色发灰」):
60
+
61
+ - `midC` 0.010→0.020:label-caption / label-tertiary / 边框等中间层色度提高约一倍
62
+ - `label-caption` 浅色不再直接用 400 号色(只有 ~2.4:1),改为对 00/60 求解到 AA;
63
+ 暖砂 `#776855`(C0.034,画布 5.22 / 卡片 4.68)、靛蓝 `#636d81`、苔绿 `#597165`
64
+ - 深色 caption 求解保持在 800/850 ≥4.6(暖砂 `#bbad9c` 4.66)
65
+
66
+
67
+ ### 1.9.0
68
+ 按参考实现(web.yily.top)的设计 token 做**精确重标定**,不再凭截图猜:
69
+
70
+ - 取得其四套配色的 surface / ink / link / accent 全表;三套预置的表面层逐字对齐:
71
+ 暖砂 、靛蓝 、苔绿 - 深色层对齐 (暖砂)等,四层与参考一致
72
+ - 正文/次级/三级/链接改用参考 ink 目标;**仍过对比度下限**——参考本身不达 AA 的三级文字会被最小幅度调深(唯一允许的偏离)
73
+ - 新增断言:三套 ink 与参考值 ΔE ≤4;深正文色相仍贴近 darkHue
74
+ - 删除旧的「三套正文色度比」断言:参考本身各套 ink 色度不同,等色度不是正确目标
75
+ - 中间层(75/100/200)按 60→150 的 OKLCH 插值,边框与悬浮态不跳变
76
+
77
+
78
+ ### 1.8.4
79
+ 三套预置统一「变轻」(依据参考实现的实际取色,不是凭感觉):
80
+
81
+ - 参考图实测:暖砂 页面 `#fcfbf7` / 卡片 `#f5efe3` / 控件 `#e8dfd0`;
82
+ 靛蓝 页面 `#ffffff` / 侧栏 `#f2f6fc` / 控件 `#e1e8f1`——共同点是**页面近白、染色集中在侧栏与控件**
83
+ - 原文三套都把色度均匀铺在所有表面上:暖砂 `#feeedb`(C0.030)、靛蓝 `#eaf1ff`(C0.020)、
84
+ 苔绿 `#e8f4ed`(C0.016),所以整体像「米黄/浅蓝/浅绿纸」
85
+ - 现在:`lightC` 暖砂 0.030→0.010、靛蓝 0.020→0.010、苔绿 0.016→0.009;
86
+ 三套画布统一到 `L0.955 / C0.008–0.010`(`#f5efe9` / `#edf0f7` / `#ebf2ef`),卡片与侧栏保留层次
87
+ - **刻意没有把画布推到纯白**:那会让「左侧栏:更浅」失去空间(ΔE 掉到 JND 以下)。
88
+ 三套实测三档 ΔE 均 ≥3.09 / 0 / 2.07,全部可辨
89
+ - 深色同步收敛:参考暗色页面 暖砂 `#1a1613` / 靛蓝 `#131723` / 苔绿 `#111b15`,
90
+ 侧栏与卡片几乎同色(扁平),只有控件提亮;
91
+ 原 `darkLift` 0.026/0.032/0.042 把画布抬到 L0.223–0.238 —— 现统一 `darkLift 0.006`,
92
+ 画布降到 `#1a1612` / `#13171f` / `#131815`(L0.203),`darkC` 0.010 / 0.019 / 0.010
93
+ - 副作用是好的:深色模块面(800)变暗后可达上限提高,「表面受限」从 8 处降到 5 处
94
+ - 正文/次级/链接的对比度全部复验(暖砂正文/画布 14.69 ≥ 12)
95
+ - 四张 README 截图与字体对照图同步重建
96
+
97
+ ### 1.8.3
98
+ 补齐 token 覆盖缺口(按宿主 118 个 alias/specific 做传递闭包统计:76% 跟随;余下 28 个逐项判断该不该跟):
99
+
100
+ - **深色菜单**:`--dsw-specific-menu` 宿主带字面量兜底(深 `#303136f0`),只改 `menu-surface-fill` 不够,
101
+ 深色菜单仍是冷灰 → 现在按配色给(浅 50/深 850,alpha 0.94)
102
+ - **品牌新色**:`--dsw-alias-brand-primary-new-…` 浅色写死 `#4176e6` 宿主蓝 → 两模式都归到强调色
103
+ - **文件 diff 温度调和**:6 个 `file-diff-*` 保留绿/红语义,色相往配色拉 16–22°、压低饱和;
104
+ 断言「新增仍是绿色系、删除仍是红色系」+ 正文对 diff 底 ≥4.5
105
+ - **对比度矩阵加菜单面**:半透明面按画布合成后给出参考值,标 `※`(不计硬门),
106
+ UI 与 `palette-dev` 共用同一份 `CONTRAST_SURFACES`(含 token 面)
107
+ - **诊断导出**:矩阵区新增「复制诊断」,输出 settings + 对比度矩阵 JSON,便于提 issue
108
+ - **forced-colors**:核实我们改的都是 UA 强制色属性,系统高对比模式会自动接管,
109
+ 因此**不加** `forced-color-adjust: none` 对抗(代码内已注明理由)
110
+ - 契约测试补 `--dsw-specific-menu` / `--dsw-alias-brand-primary-new-…` / `--dsw-alias-file-diff-added-bg`
111
+ - 明确不跟:`bg-mask-*`(遮罩)、`border-inverted*`(反色边框)、onboarding(一次性引导)——刻意保留宿主原值
112
+
7
113
  ### 1.8.2
8
114
  **暖砂字体体系修正**(用户反馈“和其他两套不一样,尤其字体颜色”):
9
115
 
package/README-es.md CHANGED
@@ -98,7 +98,7 @@ Las cinco más sorprendentes de la auditoría de 1.7.0 — cada una la encontró
98
98
  - **Un acento blanco generaba un enlace blanco** (1.13:1). El solucionador de contraste solo avanzaba en una dirección, alejándose del fondo, así que un acento más claro que el fondo seguía yendo hacia el blanco.
99
99
  - **Elegir un color cambiaba la página pero no el panel.** El componente se suscribía al id de paleta, que no cambia al cambiar un color; React comparó los snapshots, no vio diferencia y saltó el re-render.
100
100
  - **Compartir una configuración no compartía los colores.** El código corto llevaba los modos pero no los tres colores personalizados, así que importar en otra máquina informaba éxito y conservaba los valores locales.
101
- - **Las superficies modulares oscuras tienen un techo.** Aun el blanco puro llega solo a ~10.99:1 en la superficie más profunda, de modo que el objetivo 12:1 (15:1 en alto contraste) es físicamente inalcanzable ahí. Ajustamos al máximo alcanzable y lo etiquetamos.
101
+ - **Las superficies modulares oscuras tienen un techo.** Aun el blanco puro llega solo a ~10.99:1 en la superficie más profunda, de modo que el objetivo 10:1 (15:1 en alto contraste) es físicamente inalcanzable ahí. Ajustamos al máximo alcanzable y lo etiquetamos.
102
102
  - **Un selector que creíamos muerto estaba vivo.** La auditoría inicialmente lo reportó como roto; la prueba de contrato contra el CSS publicado demostró lo contrario. El hallazgo estaba equivocado, no el código.
103
103
 
104
104
  ## Sharing
package/README-hi.md CHANGED
@@ -98,7 +98,7 @@ node tools/release.mjs --tag # npm पर प्रकाशित +
98
98
  - **सफ़ेद एक्सेंट से सफ़ेद लिंक बनता था** (1.13:1)। कॉन्ट्रास्ट सॉल्वर केवल एक ही दिशा में चलता था — बैकग्राउंड से दूर — इसलिए बैकग्राउंड से हल्का एक्सेंट सफ़ेद की ओर ही बढ़ता गया।
99
99
  - **रंग बदलने पर पेज बदला, पैनल नहीं।** कंपोनेंट पैलेट id पर सब्सक्राइब था, जो रंग बदलने पर नहीं बदलता; React ने स्नैपशॉट की तुलना की, अंतर न मिला, और री-रेंडर छोड़ दिया।
100
100
  - **कॉन्फ़िगरेशन साझा हुआ, रंग नहीं।** शॉर्ट कोड में मोड्स तो थे पर तीन कस्टम रंग नहीं, इसलिए दूसरी मशीन पर इम्पोर्ट सफल बताता और स्थानीय मान रख लेता था।
101
- - **गहरे मॉड्यूल सतहों की एक सीमा है।** सबसे गहरी सतह पर शुद्ध सफ़ेद भी केवल ~10.99:1 तक पहुँचता है, इसलिए 12:1 (उच्च-कंट्रास्ट 15:1) वहाँ भौतिक रूप से असंभव है। अब हम उस सतह की अधिकतम प्राप्य सीमा तक समायोजित करके "सतह-सीमित" चिह्नित करते हैं।
101
+ - **गहरे मॉड्यूल सतहों की एक सीमा है।** सबसे गहरी सतह पर शुद्ध सफ़ेद भी केवल ~10.99:1 तक पहुँचता है, इसलिए 10:1 (उच्च-कंट्रास्ट 15:1) वहाँ भौतिक रूप से असंभव है। अब हम उस सतह की अधिकतम प्राप्य सीमा तक समायोजित करके "सतह-सीमित" चिह्नित करते हैं।
102
102
  - **एक चयनकर्ता जिसे हम मृत समझते थे, वह जीवित था।** ऑडिट ने शुरू में उसे टूटा बताया; शिप की गई CSS के विरुद्ध कॉन्ट्रैक्ट टेस्ट ने विपरीत साबित किया। गलती निष्कर्ष में थी, कोड में नहीं।
103
103
 
104
104
  ## Sharing
package/README-pt.md CHANGED
@@ -98,7 +98,7 @@ As cinco mais surpreendentes da auditoria da 1.7.0 — cada uma foi encontrada p
98
98
  - **Um acento branco gerava um link branco** (1.13:1). O solucionador de contraste andava só numa direção, afastando-se do fundo, então um acento mais claro que o fundo continuava indo para o branco.
99
99
  - **Escolher uma cor mudava a página mas não o painel.** O componente inscrevia-se no id da paleta, que não muda quando a cor muda; o React comparou os snapshots, viu que não havia diferença e pulou o re-render.
100
100
  - **Compartilhar uma configuração não compartilhava as cores.** O código curto carregava os modos mas não as três cores personalizadas, então importar em outra máquina informava sucesso e mantinha os valores locais.
101
- - **Superfícies modulares escuras têm um teto.** Mesmo o branco puro chega a apenas ~10.99:1 na superfície mais profunda, então a meta de 12:1 (15:1 em alto contraste) é fisicamente inalcançável ali. Ajustamos ao máximo alcançável e rotulamos.
101
+ - **Superfícies modulares escuras têm um teto.** Mesmo o branco puro chega a apenas ~10.99:1 na superfície mais profunda, então a meta de 10:1 (15:1 em alto contraste) é fisicamente inalcançável ali. Ajustamos ao máximo alcançável e rotulamos.
102
102
  - **Um seletor que achávamos morto estava vivo.** A auditoria inicialmente o reportou como quebrado; o teste de contrato contra o CSS publicado provou o contrário. O achado estava errado, não o código.
103
103
 
104
104
  ## Sharing
package/README-zh.md CHANGED
@@ -100,7 +100,7 @@ node tools/release.mjs --tag # 发 npm + 打 tag
100
100
  - **纯白强调色会生成纯白链接**(1.13:1)。对比度求解器原本只朝"远离背景"的单一方向走,强调色比背景还亮时只会一路推向白色。
101
101
  - **取了色,整页变了,面板没变。** 组件订阅的是配色 id,而取色不会改变它——React 比较快照发现没变,直接跳过重渲染。
102
102
  - **分享了配置,没分享颜色。** 短码带了各项模式,但没带自定义三色,换台机器导入提示成功,用的仍是本机旧值。
103
- - **深色模块面有硬上限。** 即使纯白,在最深的模块面上也只有约 10.99:1,12:1(高对比 15:1)物理上不可达。现在按该面可达上限钳位并标注"表面受限",而不是默默不达标。
103
+ - **深色模块面有硬上限。** 即使纯白,在最深的模块面上也只有约 10.99:1,10:1(高对比 15:1)物理上不可达。现在按该面可达上限钳位并标注"表面受限",而不是默默不达标。
104
104
  - **一个我们以为失效的选择器其实活着。** 审计最初判定 `_markdown_` 相关选择器已失效;契约测试对着实际构建 CSS 证明它还在——错的是结论,不是代码。
105
105
 
106
106
  ## Sharing
package/README.md CHANGED
@@ -99,7 +99,7 @@ The five that surprised us most during the 1.7.0 audit — each one was found by
99
99
  - **A white accent produced a white link** (1.13:1). The contrast solver only ever walked away from the background in one direction, so an accent brighter than the background kept moving toward white.
100
100
  - **Picking a colour changed the page but not the panel.** The component subscribed to the palette id, which never changes when a colour does — React compared the snapshots, saw no difference, and skipped the re-render.
101
101
  - **Sharing a configuration did not share the colours.** The short code carried the modes but not the three custom colours, so importing on another machine reported success and silently kept the local values.
102
- - **Dark module surfaces have a hard ceiling.** Even pure white reaches only about 10.99:1 on the deepest panel surface, so the 12:1 (high-contrast 15:1) target is physically unreachable there. We clamp to what the surface allows and label it "surface-limited" instead of quietly missing.
102
+ - **Dark module surfaces have a hard ceiling.** Even pure white reaches only about 10.99:1 on the deepest panel surface, so the 10:1 (high-contrast 15:1) target is physically unreachable there. We clamp to what the surface allows and label it "surface-limited" instead of quietly missing.
103
103
  - **A selector we thought was dead was alive.** The audit initially reported the `_markdown_` hooks as broken; the contract test against the shipped CSS proved otherwise. The finding was wrong, not the code.
104
104
 
105
105
  ## Sharing