Overview
dsh-yexueqing-skin
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
- **`bg-base` 透明会让工具卡之类的小容器也变透**。这是「画面能被看见」的必要 代价:那些容器与全屏框架共用同一个 token,无法按尺寸区分。承载正文的卡片、 气泡、弹窗用的是另外几个 token,仍然不透明,所以正文区始终有干净的底。 若某类卡片观感不佳,调晕影强度(档位)而不是改回不透明。 - **画面靠 `z-index` 负值的伪元素**,因此依赖「应用根容器不建立会截断负层级的 堆叠上下文」这一前提。当前 ui-layout 的 `.frame` 只有 `position:relative` 而没有 `z-index`,成立;若将来 DSH 给根容器加了 `z-index` 或 `isolation:isolate`, 画面会被压到看不见(表现为「皮肤只剩配色」)。 - **一个 token 的覆盖面可能远超预期。** `--dsw-alias-state-business-primary` 是 DSH 的「业务 / 强调」色(默认是品牌蓝),全 UI **约 140 处**在用:激活标签页、 chip、链接、输入光标、焦点环……改皮肤配色时要意识到这一点。 - **色阶必须保持单调**:`label-primary > dimmed > secondary > tertiary > caption`。 提亮某一档后若不同时调整相邻档,就会出现「hover 反而变暗」这类倒挂 —— 实测踩过:把 tertiary 提到比 DSH 默认的 secondary 还亮。测试里有断言守着。 - **正文可读性靠「背板被模糊」而不是靠高不透明度**:玻璃块背后的画面被模糊成 低频色块,所以填色可以压到 0.46~0.58。若关掉模糊,那些透明度需要同步提高。 - **磨砂玻璃依赖两组稳定钩子**:`[data-composer-card]`、`[data-plan-card]`、 `[data-single]` 是 DSH 自己的 data 属性;`pre` 是语义标签;`code` 也是标签。 只有「新对话」按钮没有 data 钩子,用 `button[class*="_newSession"]` 后缀匹配 —— DSH 改本地类名则这一条失效(只影响观感,不会坏界面)。 - 字体已子集化到 3.62 MB(`npm run subset-font` 可重新生成),并经 brotli 压缩到约 1.89 MB 传输。若日后要做 WOFF2,`@font-face` 的 `src` 已按 `woff2 → ttf` 顺序声明,把 `.subset.woff2` 放进 `assets/` 即可自动优先。 - 互斥的第二级会**改写用户的插件开关状态**(虽然可逆)。若不希望任何自动改动, 关掉「独占皮肤」开关即可,此时仍保留第一级的 token 栈顶互斥。 - **不注册新的主题 id**:`theme.register` 是让用户在内置 Appearance 选择器里 多一个条目;本皮肤要的是「一个开关控制整套外观 + 互斥」,因此用 `overrideTokens` 覆盖层,与实际交互一致。 - **不注册面向模型的工具**:皮肤开关是纯用户偏好,授权类动作保持 user-only。 持久化走 `localStorage`(静态 bundle 的 Client 半没有 `host` builtin)。
