Skip to content

Releases: zuoyunlai/dsh-theme-palette

dsh-theme-palette 1.9.10 · 撤除右侧栏底色 + 高对比边框重新定标

Choose a tag to compare

@zuoyunlai zuoyunlai released this 25 Oct 12:12
v1.9.10

dsh-theme-palette 1.9.10

撤除一个做不到的设置,修好一处「高对比一开就像换了主题」的观感问题。

撤除「右侧栏底色」一档

宿主右栏没有可染的落点,留着这个开关只会一直看起来像坏的(用户拍板:做不到就去掉)。

  • 真正的右栏面板是 position:absolute; top:0; bottom:0 的整高透明覆盖层,它盖在网格列上、自己不上底色;透明时露出主栏画布 —— 所以只染网格列几乎看不出差别,这就是「设了像没设」。
  • 连面板本体一起染会盖住主栏一大块,右栏开关按钮也被压在它下面(实测过,已回退)。
  • 整条链路一并删除:设置页那一行、4 语种文案、状态/监听/持久化、分享码 r 字段、RIGHTBAR_MODES、三个 --dshtp-rightbar-* token、buildTokens 第九参数、契约断言。
  • 旧分享码与旧 localStorage 仍然能读:未知字段读到即忽略,不报错、不复活。
  • 扫描组合从 2160 降到 1080(去掉右栏这一维)。

高对比边框改对中间两层定标

深色有四层面(950 侧栏 / 875 / 850 / 800 模块面),对比度在暗面单调 —— 面越暗读数越高。1.9.9 按最亮的 800 定标后,同一根线在 950 上读 5.3 / 6.1 / 7.1:1,比浅色侧还硬。

token 目标 对 850 对 950(原 → 现) 对 800
border-l2 3.2 3.24 5.32 → 3.81 2.17
border-l3 3.6 3.63 6.05 → 4.27 2.43
border-l4 4.1 4.15 7.10 → 4.88 2.77

取舍写在明面上:950 不再比浅色侧硬,代价是 800 从 3.0 降到 2.2–2.8(分界仍看得见,但不再满足 SC 1.4.11 的 3:1)。浅色侧、标准档(墨色 alpha 发丝线)、border-l1 全部不动。

验证

  • npm run check 全绿(结构 / 宿主契约 / 自愈 / 审计 19 组);新增第 19 组把上面这个决定钉住:浅色对 00/60 ≥ 3.0/3.4/4.0、深色对 875/850 ≥ 3.2/3.6/4.1、950 ≤ 5.0、800 ≥ 2.0,外加「标准档必须是墨色 alpha」「l1 两档都不变」。
  • palette-dev.mjs 标准 / 高对比两档均 exit 0:1080 组配置 × 承诺面「低于 AA 4.5 = 0、硬失败 = 0」。

dsh-theme-palette 1.9.9 · 审计反哺:可读性、侧栏与高对比收口

Choose a tag to compare

@zuoyunlai zuoyunlai released this 25 Oct 10:30
v1.9.9

dsh-theme-palette 1.9.9

按审计报告逐条核实后的修订批(11 条问题 + 两处用户实测缺陷):

  • 深色文字下限:深底单独一套下限(次级 8.0 / 三级 6.4,高对比 9.6 / 7.6);Lc<60 组合 11/48 → 2/48,剩下 2 组是自定义配色的深色链接(已按 APCA ≥60 收口)
  • 色阶单调:compressL 连续化 + 收尾 enforceRampOrder;4 套配色 × 两档 × 12 个面档全部单调
  • 文字着色三档对预置恢复有效:参考墨色降级为起点,色度由档位驱动;静↔浓正文 ΔE 3.2 / 4.7 / 4.1(代价:次级/三级不再逐 token 钉参考值)
  • 高对比边框与滚动条:按 SC 1.4.11 定量到 3:1 以上(实测 3.26–3.39 / 3.01–3.07)
  • 侧栏「同色」真的等于画布:苔绿原被染成薄荷绿(ΔE 2.49),现 ΔE 0.00;深色侧栏独立步长,画布↔侧栏 ΔE 1.9–2.3 → 4.1–5.0
  • 「更浅」不再反向压暗:LIGHT_CAP 抬到 0.995 + 单调保护;悬停/选中给 0.012 步进地板(此前两套配色 ΔE 0.00)
  • 浅色画布回归参考实现:00/60/150 取 surface / surface-subtle / surface-strong,跨套差异留在次层
  • 报表新增 APCA Lc 列(不设门);新增 --dshtp-border-control
  • 工程:rampCache LRU 96、buildTokens memo、无效模式 id 告警、无彩色底不再派生偏色、新增 check-selfheal.mjs

npm run check 380 条断言全绿;palette-dev.mjs 标准/高对比两档均 0 未达标、0 低于 AA。

dsh-theme-palette 1.9.7 · 表面重标定与暗色舒适度

Choose a tag to compare

@zuoyunlai zuoyunlai released this 23 Oct 11:28
v1.9.7

dsh-theme-palette 1.9.7

暗色正文按策略 A 定标(用户反馈「白色文字太亮」):

  • 非高对比模式正文目标从 12:1 降到约 10:1(950 上实测 10.1–11.5)
  • 以侧栏/卡片面(950/875/850)定标;模块面 800 不再为正文兜底(约 5.6–6.5:1,仍过 AA)
  • 报表口径同步:深色正文承诺 12→10,800/850 标为「政策外」而非违例
  • README 的 12:1 表述待同步(发版前完成)

dsh-theme-palette 1.8.3 · token 覆盖收口

Choose a tag to compare

@zuoyunlai zuoyunlai released this 23 Oct 04:45
v1.8.3

dsh-theme-palette 1.8.3

补齐 token 覆盖缺口:深色菜单、品牌新色、文件 diff 温度调和、矩阵菜单面、诊断导出。

  • 深色菜单:--dsw-specific-menu 宿主带字面量兜底(深 #303136f0),只改 menu-surface-fill 不够,
    深色菜单仍是冷灰 → 现在按配色给(浅 50/深 850,alpha 0.94)
  • 品牌新色:--dsw-alias-brand-primary-new-… 浅色写死 #4176e6 宿主蓝 → 两模式都归到强调色
  • 文件 diff 温度调和:6 个 file-diff-* 保留绿/红语义,色相往配色拉 16–22°、压低饱和;
    断言「新增仍是绿色系、删除仍是红色系」+ 正文对 diff 底 ≥4.5
  • 对比度矩阵加菜单面:半透明面按画布合成后给出参考值,标 ※(不计硬门),
    UI 与 palette-dev 共用同一份 CONTRAST_SURFACES(含 token 面)
  • 诊断导出:矩阵区新增「复制诊断」,输出 settings + 对比度矩阵 JSON,便于提 issue
  • forced-colors:核实我们改的都是 UA 强制色属性,系统高对比模式会自动接管,
    因此不加 forced-color-adjust: none 对抗(代码内已注明理由)
  • 契约测试补 --dsw-specific-menu / --dsw-alias-brand-primary-new-… / --dsw-alias-file-diff-added-bg
  • 明确不跟:bg-mask-*(遮罩)、border-inverted*(反色边框)、onboarding(一次性引导)——刻意保留宿主原值

安装

cd ~/.dsh/profiles/desktop
pnpm add dsh-theme-palette@1.8.3

装完重启 GUI。

dsh-theme-palette 1.8.2 · 语法高亮与暖砂体系归一

Choose a tag to compare

@zuoyunlai zuoyunlai released this 23 Oct 04:17
v1.8.2

dsh-theme-palette 1.8.2

语法高亮跟随配色 + 暖砂字体体系归一(深正文色度按色域统一、消除双色相)。

  • 根因 1:深色正文字色度没有按色域归一。paperC 是绝对值,×2.4 后暖砂请求 130%、靛蓝 166% 色域上限,
    实际色度被裁成 0.0244 / 0.0115 / 0.0303——暖砂深正文几乎是靛蓝的两倍黄。现在三套统一 paperC=0.0053
    (标准档实际 ≈0.0127),浅/深正文色度比降到 1.21 / 1.10
  • 根因 2:暖砂是唯一「深色面 60°、正文 84°」的双色相预置。深色面橙棕、正文黄绿,色相分裂 24°;
    现在 paper 角色跟随 darkHue,并把暖砂 hue 84→72、darkHue 60→66,全套色相收敛到 12° 内
  • 新增断言:深正文色相偏离 darkHue ≤12°、三套浅色正文色度比 ≤1.25、深色 ≤1.5
  • 新增 tools/preview-typography.mjs:三套 × 明暗并排渲染同一段文字,发版前目检

语法高亮跟随配色(1.8.1 里“未做”的那条,前提已实测):

  • 实测依据:宿主渲染器用 Shiki 的 css-variables 模式(class="shiki css-variables",
    style="background-color:var(--shiki-background)"),token 颜色走 CSS 变量,
    所以覆盖 --shiki-token-* 生效,不需要 !important
  • 色相策略:从强调色相取 3 个色族(强调 / +150° 冷族 / -60° 暖族),
    同族靠明度分常/表达;每个 token 对代码块底求解到 ≥4.6:1,四族最小 ΔE ≥10
  • 覆盖 9 类 token(keyword / function / constant / parameter / string / string-expression /
    comment / punctuation / link)+ --shiki-background / --shiki-foreground
  • md=off 时不输出任何 shiki token,交回宿主原色
  • 新增 tools/preview-code.mjs:用生产 token 渲染一段真实代码,发版前肉眼确认
  • 断言:9 类 token 对比度 ≥4.6、四族 ΔE ≥10、shiki 背景与代码块一致、md=off 无输出

安装

cd ~/.dsh/profiles/desktop
pnpm add dsh-theme-palette@1.8.2

装完重启 GUI。

dsh-theme-palette 1.8.1 · Markdown 配色丰富化

Choose a tag to compare

@zuoyunlai zuoyunlai released this 23 Oct 04:05
v1.8.1

dsh-theme-palette 1.8.1

Markdown 配色丰富化:标题三档、引用/表格/列表结构色,并修掉代码块双层底。

  • 标题三档:h1/h2 → h3/h4 → h5/h6 由强到弱(--dshtp-md-h1/h2/h3),不再六级同色;
    层级按着色强度区分,字号仍由宿主决定
  • 引用 / 表格 / 分割线 / 列表:引用淡底 + 左侧强调边、表头淡底、表格边框与分割线跟随语义 token、列表标记用三级文字色
  • 修代码块双层底:宿主 <pre> 背景来自 --shiki-background → --dsw-alias-markdown-code-block(bluish-50/900),
    此前只染 .md-code-block 外层,内层仍是宿主中性色;现在直接覆盖该 token(含 banner),两层同色
  • 新增断言:标题三档互异、正文/代码块底 ≥4.5、正文/引用底 ≥4.5、次级/表头底 ≥5.5、
    <pre> 底色与代码块一致、md=off 时全部继承;契约测试补 --dsw-alias-markdown-code-block
  • 未做:语法高亮(--shiki-token-*)跟随配色。宿主构建里这 9 个变量只定义、无消费者,
    需先在 GUI 实测渲染器是吃变量还是内联色,再决定方案——不在未验证的情况下强改

安装

cd ~/.dsh/profiles/desktop
pnpm add dsh-theme-palette@1.8.1

装完重启 GUI。

dsh-theme-palette 1.8.0 · 竞品差距反哺

Choose a tag to compare

@zuoyunlai zuoyunlai released this 23 Oct 03:46
v1.8.0

dsh-theme-palette 1.8.0

依据竞品调研反哺:把工程严谨变成可见、可分享、可验证的东西,不改求解器。

  • 对比度矩阵:设置页新增可折叠「对比度」区,4 个前景角色 × 7 个承载面的实测/目标/表面受限三态;
    CONTRAST_SURFACES / CONTRAST_ROLES 成为唯一定义,palette-dev.mjs 改为消费同一份(消除两套口径)
  • 「试试示例」:导入区一键填入演示短码并触发预览;码由生产 encodeConfig 运行时生成,schema 演进自动跟随
  • 五语 README 叙事:新增 ## Pitfalls we hit(1.7.0 的 5 条审计事故)与 ## Trade-offs
    (明确不做玻璃/壁纸/市场/AI 生色),标题逐字一致由脚本断言
  • 五语 ## Sharing:放一条真实示例短码(生产编码器生成 + decodeConfig 往返自检),说明它包含三色
  • 截图资产重建:4 张(浅/深/自定义面板含解释性校正/高对比),screenshots.json 3→4
  • 主题包导出(单向):npm run packs 导出 dsh-dream-skin/pack 格式 8 个包(4 配色 × 明暗,每包 90 tokens),
    全部通过正文/画布对比度自检;不实现导入——导入会绕过对比度求解器
  • 工具:preview-settings 支持 --notice/--hc/--out,透传 id/scope/title/data-*;
    新增 sample-code / insert-readme-sections / insert-readme-gallery / export-theme-pack;
    check-ui 扩到 69+ 断言(矩阵、示例码可解码、五语标题一致、单一 SURFACES 定义)
  • 无存储键变更;无求解器行为变更

安装

cd ~/.dsh/profiles/desktop
pnpm add dsh-theme-palette@1.8.0

装完重启 GUI。

dsh-theme-palette 1.7.0 · 审计反哺修订

Choose a tag to compare

@zuoyunlai zuoyunlai released this 23 Oct 01:53
v1.7.0

dsh-theme-palette 1.7.0

依据 2026-10-23 审计反哺(对 DSH 0.2.1-rc.2 实际 token 与承载面核实):修复极端强调色可读性、自定义状态订阅、分享缺三色、caption/深色承载面求解等问题,并落地解释性校正、导入预览、一次性升级提示与契约测试。

  • A01 极端强调色:accentL 钳位到 0.30–0.64;链接求解器改为双向搜索并对 00/60/150 同时达标;
    新增 --dsw-alias-button-info-fill 覆盖(与主按钮一样按白字 4.5 压暗),不再出现白底白链/白勾
  • A02 自定义色订阅:readCustom 改为按存储内容缓存的冻结快照,新增 subscribeCustom;
    取色/重置/导入会更换引用并触发重渲染,空闲时快照稳定(useSyncExternalStore 语义)
  • A03 分享完整:dshs1. 短码新增 x(三色),旧码仍可导入并提示未含自定义色;
    applyConfigCode 返回 {ok,hasCustom},非法码不部分写入
  • A04 承载面求解:深色正文(50)、次级(300)、caption(500)补上求解;目标按承载面可达上限
    钳位(0.93 余量),palette-dev 打印「实际/目标/可达」并标注「表面上限」,不再虚报 12/15;
    caption 注释里的 6.5:1 更正为实测值
  • A05 文字色相:自定义文字色相进入 700/750/1000/50 档(此前只取色度)
  • A06 HEX 校验:改为 draft + 提交,非法值显示 aria-invalid 与行内错误,Enter 提交、Esc 回滚
  • A07 键盘模型:分段控件 roving tabindex + 方向键/Home/End
  • A08 标签结构:自定义色改为 role=group + 色盘/HEX 两个独立 label
  • A09 健康检测:探针比对期望值(支持 #rgb/#rrggbb/rgb()/rgba()),报 mismatched;mono 覆盖更多 token
  • A10 测试门:palette-dev.mjs 改用生产 floors(),支持 --hc,硬失败退出码 1
  • A11 边界:grid/swatches 改 minmax(min(100%,N),1fr);说明 _markdown_/.md-code-block
    在当前宿主构建 CSS 中仍存在(属契约风险而非失效);ramp 缓存上限 48
  • 建议落地:自定义面板新增解释性校正(强调色归一化 / 链接压暗,带实际对比度);
    导入改为先预览后确认(预览不写存储);新增按版本一次的升级提示(notice.v1,不碰配色键;
    仅升级前已有配置的用户可见);高对比从「更多选项」移到阅读区;新增 tools/check-host-contract.mjs
    契约测试与 tools/check-ui.mjs 结构回归,并把它们接入 npm run check 与发版预检
  • 新增 tools/check-audit.mjs:覆盖极端色、分享往返、文字色相、caption、深色正文可达上限、HC 卡层

安装

cd ~/.dsh/profiles/desktop
pnpm add dsh-theme-palette@1.7.0

装完重启 GUI。

dsh-theme-palette 1.6.0 · 视觉与可访问性整改

Choose a tag to compare

@zuoyunlai zuoyunlai released this 22 Oct 11:07

dsh-theme-palette 1.6.0

按第三方 UI 视觉验收审计(60/100)整改 15 项:布局改容器驱动、配置块重做、复制不再谎报成功、
可访问性四件套(lang / radiogroup / aria-live / aria-label)、自定义面板层级与 hex 可输入。

视觉与可访问性整改(依据 2026-10-22 第三方 UI 视觉验收审计,60/100):

  • A2 配置块重做:改用 .dsh-tp-field 容器(与普通行同节奏),导出/导入各占一行,
    反馈文案就地显示(复制→复制按钮旁,导入→导入按钮旁),导出框加 text-overflow:ellipsis
  • A3 复制不再谎报:await navigator.clipboard.writeText(),失败或无 API 时显示
    「复制失败,请手选后 Ctrl+C」,不再无条件报成功
  • A4 布局从视口断点改容器驱动:卡片 repeat(auto-fit,minmax(196px,1fr))、色块 minmax(86px,1fr)、
    行与分段控件 flex-wrap;日语长标签改短(右栏「サイドバー / キャンバス」、滚动条「無彩 / 追従 / 強調」)。
    实测 4 语 × 内容宽 564/336/216:越界元素 0(改前日语 216px 溢出 61px)
  • A5 语言属性:<section lang> 跟随手选语言,auto 时回落宿主 documentElement.lang
  • A6 分段控件有名字:role="radiogroup" + aria-labelledby 指向行标题,选项改
    role="radio" aria-checked(8 组 22 个按钮)
  • A7 反馈可播报:复制/导入/自愈状态挂 role="status" aria-live="polite",错误用 alert;
    导入框补 aria-label
  • A8 自定义面板层级:面板底改 bg-layer-1(按钮不再与面板同底 1.00:1)、说明文字提到
    label-secondary 12px;色值从只读 <code> 改为可输入 hex(回车/失焦生效,非法值忽略)
  • A9 缩略图跟随侧栏档位:cardColors() 接收 sidebarMode,不再写死默认档
  • A11 黑白配色下「滚动条」「开关」置灰禁用(点了也不会有变化)
  • A12 卡片与分段按钮 :focus-visible{outline-offset:2px},焦点环不再与选中边框贴死
  • A13 加 prefers-reduced-motion 降级
  • A14 docs/DESIGN.md 补「当前标定值」表(旧推演内容保留,注明以 client.js 为准)
  • A15 删掉 4 语共 36 条从未渲染的文案键与未被调用的 swatches()
  • A10 证据链:README 首图换成当前版本(5 张卡)的静态渲染,按真机内容宽 564 px 出图
    (浅色 / 深色 / 自定义面板三张,--scale 2 即 1240 px 宽),并在五语 README 里注明「静态渲染」;
    screenshots.json 同步为这三张
  • 工具:tools/preview-settings.mjs 新增 --width(默认按真机 564px 内容宽)与 --adv(默认折叠),
    token 跟随 --palette;新增 tools/measure-preview.mjs(量越界/行高/关键计算色,非 0 越界退出 1)

安装

cd ~/.dsh/profiles/desktop
pnpm add dsh-theme-palette@1.6.0

装完重启 GUI。

dsh-theme-palette 1.5.2 · 自定义配色实时取色

Choose a tag to compare

@zuoyunlai zuoyunlai released this 22 Oct 08:35

dsh-theme-palette 1.5.2

设置页交互重排:自定义配色不再埋在「更多选项」里,取色实时生效。

设置页交互重排(用户反馈:自定义不该埋在「更多选项」里、取色看不到即时效果):

  • 自定义配色提为一级区块:选中「自定义」卡片后,面板直接出现在卡片网格下方,
    不再需要展开「更多选项」
  • 取色实时生效:同时接 onInput(拖动过程中)与 onChange(确认后),
    一次 buildTokens 实测 0.15 ms,整页配色随取色实时变化,不需要"确认"动作
  • 色块放大:input[type=color] 变成 44px 高的圆角色块(隐藏原生 swatch 边框),
    下方显示字段名与十六进制值;三个色块一排,窄屏自动堆叠
  • 恢复默认:面板右上角一键回到出厂三色
  • 修:预览渲染器不输出 value/placeholder/readonly,导致静态预览里色块是黑的、
    导出码框是空的(真实应用不受影响)

安装

cd ~/.dsh/profiles/desktop
pnpm add dsh-theme-palette@1.5.2

装完重启 GUI。