Overview
dsh-theme-windowsxp
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
- **只吃语义层**。113 个语义 token 全覆盖了,但组件内部用哈希类名(`.BynINW_frame` 这种)写死的几何、间距、动画碰不到——那种改法只能靠 DSH 暴露的 `data-*` 钩子(`[data-composer-seat]`、`[data-conversation-scroll]`、`[data-chat-flow]`、`[data-phase]`、`[data-menu-material]`、`[data-slot='…']` 等)去挂,属于第二阶段的活。 - **和其它皮肤互斥**。多个皮肤同时启用时靠文档顺序决定胜负。请只启用一个。 - **提醒逻辑在包里有两份**。`dsh-notify-complete` 是独立版(给非 XP 主题用),本包这份是融合版。改一边不会同步另一边。 - **首帧可能闪一下米色**。客户端插件是惰性的,`data-dsh-windowsxp` 要等插件物化才挂上。想彻底消除,得在宿主半侧 `ctx.on('webserver/index-inject', …)` 里注入 head CSS + body 脚本(`ui-theme` 的 `bootThemeInjections` 就是干这个的,`lib/index.js` 注释里留了写法)。 - **真机验证只覆盖了一部分**。token 映射、优先级、模块协议都按源码核对过,`check-tokens.mjs` 证明 134 个变量名全部真实存在,两个 smoke 共 85 项覆盖了生命周期与两条提醒路径。**已真机确认**:问题对话框里选中项的蓝色描边 —— 这条曾经因为通用按钮规则漏排除 `role='radio'` 而完全不可见(选中的和悬停的长得一模一样),是主人实测发现并确认修好的。**还没确认**:其它组件的观感、XP 界面配 Bliss 壁纸的整体效果、两种提示音的实际听感。 - **通用按钮规则需要不断补排除项**。它为了做出 Luna 外观必须拥有 (0,2,2),而组件自己的状态规则只有 (0,1,0),所以每遇到一个新的「长得像按钮、但外观属于它所在的列表/选择器」的元素,都得往排除表里加一条。排查方法:把客户端包 grep 一遍 `role: "…"` 看哪些 role 落在可交互元素上。`check-cascade.mjs` 里那张表就是护栏,漏一个会直接报错。 - 按钮的 `border` / `background` 被 Luna 样式替换,原本的焦点环会丢,所以本皮肤额外补了 XP 风格的**虚线焦点框**(只加在被本皮肤改过的控件上,不动全局 `:focus-visible` 规则)。
