# 变更日志 本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/);破坏性改动会写在对应条目里。 --- ## 4.1.3 **加一张总体效果封面,并按使用者的精简把「图示」一节收成一图** - README 顶部(徽章之下)加 `docs/cover.png`:桌面客户端 + 出厂默认设置的总体效果。 这是仓库里**唯一一张真实截图** - 用的是使用者提供的**原件 PNG、逐字节复制、未重编码**:1920×1032,2 783 083 字节, sha256 `9F1A053AD5DE2820825FAE7C96D9005D3FCBDA663837E9A100CAEFEFAEDCB393` - 版权表补上这一行(画面里有同一张受版权保护的壁纸与立绘) - **「图示」一节按使用者的编辑收成一张**:只留配色板,删掉层叠结构、图形元素、 底纹与身份层元素三张图及其说明文字;对应那三个 PNG 也从 `docs/figures/` 移除 (`node tools/make-figures.mjs` 仍会一次生成四张,需要时一条命令就回来) - **顺手修掉一个漂移**:README 身份表里的版本号从 4.0.0 起就没人更新过,一直落后到 4.1.2。 自检新增一条「README 身份表里的版本号与 package.json 一致」把它钉住,143 → **144** 项 --- ## 4.1.2 **README 换成示意图(图示),不再放界面截图** - 删除 `docs/screenshots/` 五张真实截图与 `tools/capture-shots.mjs`。原因有两条: 截图会带上使用者的桌面与工作区信息,且画面里有米哈游的版权美术 —— 公开仓库里不该再多一份 - 新增 `docs/figures/` 四张**示意图**与 `tools/make-figures.mjs`: - **配色板**:`src/30-palette.js` 的全部设计色(夜档/昼档),表面色垫浅色棋盘格显通透度, 带 alpha 下限的表面标出 `↓0.92` - **层叠结构**:壁纸层 → 立绘层 → 令牌层 → 身份层 → 挂件层,谁画在哪、归谁管 - **图形元素**:烈霜轮廓(同一份矢量化路径画 188/92/34/14px)与八档月相 - **底纹与身份层元素**:斜切网格在强度 0/50/78/100 四档下的样子 + 扫描线/噪点/警示条/角括号 - 这套图的价值在**同源**:颜色与几何不是手抄,而是把 `src/` 的 10 个片段拼进沙箱**求值**取得 (与 `tools/check.mjs` 同一套机制);底纹那两张更直接把 `ART_background()` / `ART_noise()` / `ART_tape()` 的返回值交给浏览器渲染 —— 所以图不可能与代码脱节,改一个系数图就跟着变 - 自检里的那条守卫跟着换门控:`has('docs/figures')` → 断言「README 引用的本地图片都存在」, 仍然指向新的四张图(143 项不变) - 仓库体积 +约 1.1 MB,但不再包含任何界面截图;版权声明里那条「`docs/screenshots/*.jpg`」 也随之删掉 (4.1.1 那条记录保留原样:那一版确实发布过截图,4.1.2 把它们撤掉。) --- ## 4.1.1 **补上 README 示例图,统一术语为「烈霜」,并修掉两个「只有看图才发现」的问题** - **术语统一:霜星 → 烈霜**(与游戏内星见雅的属性名一致)。仓库内 10 个文件共 21 处: README、`assets/art.json`(会显示在设置页)、`assets/README.md`、`locale/zh.json` 与 `package.json` 的描述、`src/40-art.js` 与 `src/85-console.js` 的注释、 `tools/build.mjs` 与 `tools/check.mjs` 的文案。**「霜点」(粒子档位)是另一个词,未动。** (本条目的历史记录沿用当时的写法「霜星」。) - 新增 `docs/screenshots/` 五张**真实运行界面**截图(主界面/快速控制条/身份层细节/ 通用设置速切行/皮肤控制页),README 顶部新增「示例图」一节 - 新增 `tools/capture-shots.mjs`:无头 Edge + DevTools 协议抓图。 不用 `--screenshot` 开关是因为 `--headless=new` 已不支持它;走 CDP 还能顺带在页面里 读回计算值,把「看起来对了」变成「量出来对了」。用独立 user-data-dir, **主图裁掉左侧栏**(那里是使用者的会话列表,不该进公开仓库) - **修**:设置 → 通用里那行速切还写着「立绘固定左侧」,而位置早已是四选一 (现在是「立绘可选位置(默认贴左)」) - **修**:左下角金色 HUD 标签 `第6課 · H.S.O.S.6` 横排时与宿主自己的「设置」按钮 水平区间重叠、字被压在按钮下沿。改成**沿左缘竖排**(与右上竖排标签对角呼应), 实测与按钮 `overlaps: false`,留 8px 间隙 - README 的「已验证到哪一步」重写:原来说「没有浏览器控制权限、没做像素级验证」—— 这个说法不再成立。现在如实分三段记录:宿主侧接线、**页面内计算值**(默认设置下 `--dsw-alias-bg-base` 实测 `rgba(8,8,17,0.307)`,与代码算出的 0.3074 吻合; 弹层 0.938、代码块 0.75,即下限生效)、以及逐张看图;并明确列出**仍未验证**的部分 (跨环境观感、浅色档无实拍、未读浏览器控制台、只覆盖了部分交互路径) --- ## 4.1.0 **默认改成「壁纸优先」:界面不透明度 40%、立绘不透明度 100%** - `panelOpacity` 默认 **100% → 40%**:默认设置下画布层壁纸透出率从 56.2% 升到 **69.3%**, 侧栏 68.0%,也就是一装上就是壁纸清晰可见的样子 - `artOpacity` 默认 **42% → 100%**:夜档立绘原样生效(实际可见度 **69.3%**), 昼档仍走 0.5 天花板(33.7%),防止照片压穿浅底文字 - **给「必须压住壁纸」的表面加了 alpha 下限**(`PAL_SURFACE` 三元组第三项): 弹层 0.92 / 选区 0.82 / 代码块 0.68 / 代码行 0.82。 没有这个下限,「界面不透明度」40% 会把弹层乘到 0.38、代码块乘到 0.29 —— 下拉菜单和代码块就会透出壁纸、字压不住。现在这一项只调**氛围面板** (画布、侧栏、卡片、气泡、输入框、菜单),文本容器保持可读 - 配置基线升到 `cfgRev 4`,`panelOpacity` 与 `artOpacity` 都登记为**设计基线字段**: 已有的旧配置会把这两项拉回新默认,其余偏好(开关、动效、粒子、控制条、彩蛋)原样保留 - 自检从 135 项增加到 **142 项**:钉住两个新默认、钉住「立绘按档位生效」这条规则, 并新增一组**最狠组合**断言(强度 100% + 界面不透明度 40% 时弹层与代码块仍压得住壁纸) > 一处断言是**替换**而不是新增:原来那条「立绘不透明度有上限(默认 ≤ 60%)」写的是旧默认, > 不是设计不变量 —— 默认调到 100% 之后它必然失败。已换成描述真实规则的断言: > 夜档按设置原样生效、昼档 0.5 天花板。壁纸可见度的下限断言一条没动。 --- ## 4.0.0 **改名为 `dsh-theme-miyabi`:仓库名、包名、主题 id 三者统一** - 包名 `@local/ui-skin-miyabi` → **`dsh-theme-miyabi`** - 主题 id、loader 行 id、`ctx.locale` 命名空间:`ui-skin-miyabi` → **`dsh-theme-miyabi`** - 浏览器模块 id(`window.__ModuleLoader__.load({ id })`)随之变成 `dsh-theme-miyabi`, 与构建产物、boot graph 的键保持一致 - 配置文件键:`ui-skin-miyabi:cfg:v2` → **`dsh-theme-miyabi:cfg:v2`** ### 升级已有安装要注意(破坏性) 1. **必须重装**:profile 里原先那条 `link:` 依赖与 loader 行都指向旧名, 需要按 README 重新 `dsh plugin --profile

add "link:<路径>"`, 并把 patch 里指向旧 id 的行改成 `dsh-theme-miyabi`(否则会报 `patch: entry "ui-skin-miyabi" not found`,整层 patch 组合失败)。 2. **必须重启进程**:包名的解析结果在启动时缓存,改 bundle 的启用状态也要重启(startup profile)。 3. **设置会重置一次**:`localStorage` 的键名跟着改了,皮肤会回到出厂默认 (开关、强度、界面不透明度、立绘位置与浓淡、动效、氛围开关、控制条、彩蛋)。 这是刻意选择 —— 公开分发的插件不该留着旧身份的存储键。 4. 主题在 `ctx.theme` 里注册的 id 变了,所以「设置 → 外观」里原来指向旧 id 的偏好会失效; 皮肤自己在启动时会重新 `setTheme`,无需手工处理。 (此前各版本的改动见下。) --- ## 3.0.2 **烈霜(雪花图样)改为从位图矢量化** - 新增 `tools/trace-emblem.mjs`:零依赖把徽记位图矢量化成轮廓 (自解 PNG → 面积平均降采样 → 走边界取全部闭合环 → Douglas–Peucker 简化 → 按着墨包围盒等比居中 → **回栅格化算 IoU 自证**,低于 0.97 直接报错不产出) - 产物 `assets/emblem.json`:4 条闭合环 / 794 顶点 / IoU **0.9981**, **路径不含任何颜色** —— 颜色在渲染时给(粒子=白、控制条按钮=`currentColor`), 所以「只改形状、颜色不变」是结构上成立的 - 控制条上的 `❄` 字体字形也换成同一个矢量图样,各处雪花终于一致 - 徽记文件缺失时自动退回内置手绘八向花瓣 ## 3.0.1 **立绘位置恢复可选** - `art` 回到四选一:`none` / `left`(默认)/ `right` / `watermark` - 贴左、贴右按高度贴合坐底边,水印是右侧竖直居中;横向超出由窗口裁掉 - 设置页恢复「立绘位置」一行 ## 3.0.0 **收敛:单一模式、单一底纹、单一立绘来源、无声音** - **移除声音模块**:删掉 `src/60-audio.js`(Web Audio 合成的打字音与斩击音)、 `sound` / `volume` 两个配置项、设置页声音分组、控制条弹层声音行。 刀光保留,代码里不再有 `AudioContext` - **底纹只留斜切网格**:删掉鸟居/半调/樱与月/夜行都市四种纹样与 `pattern` 配置项 - **立绘只用使用者提供的图**:删掉自制狐面月徽与官方立绘裁切,以及 `artSource` 选择项; 自备立绘的 IndexedDB 导入通道一并移除 - **只保留「霜」**:删掉「刃」「夜行」两档强调色、`mode` 配置项、模式卡片与控制条循环按钮 - 配置加 `cfgRev` 设计基线版本:升版只重置基线字段(如 `artOpacity`),用户偏好原样保留 - 自检新增「收敛」一组:扫描构建产物,已删除的模块一律不得复活 ## 2.0.1 **修复:壁纸看不见** - 根因:壁纸与立绘画在所有面板**之下**,面板 alpha 就是壁纸可见度的总闸门。 `--dsw-alias-bg-base` 设计值 0.62 在默认强度下换算成 0.704 实际不透明, 壁纸只剩 **29.6%** 透出,立绘再乘 26% 后实际可见度只有 **7.7%** - 画布层 alpha 0.62 → **0.28**、侧栏 0.70 → **0.32**,默认强度下壁纸透出率 **29.6% → 56.2%**; 立绘默认不透明度 26% → **42%**(实际可见度 7.7% → **23.6%**);底纹浓度基数 ×1.5 - **没有放松**:弹层(0.94)、代码块(0.72)、选区(0.86)继续保持高不透明,各有断言守着 - 新增「界面不透明度」滑杆(40–100%) - 自检新增「壁纸」一组断言,把上面这些数值钉死,防止再次被「顺手调实」 ## 2.0.0 **整体重写:从青绿冷调到霜蓝 × 新艾利都 CRT** - 令牌层改为 `ctx.theme.register()` + `setTheme()` + `overrideTokens()` 三层配合, 116 个 `--dsw-*` 令牌各给浅深两档取值 - 新增身份层:CRT 扫描线、录像带噪点(`feTurbulence`)、暗角与色散边、 信号故障、HUD 四角与警示条、斜切网格底纹 - 新增挂件层:`shell.overlay` 氛围浮层 + 可拖动快速控制条、`settings.section` 控制页、 `settings.general.item` 速切行 - 三档模式(霜/刃/夜行)、强度无级调节、五种底纹、四种立绘位置、真实月相、斩击彩蛋 - 全部装饰只长在插件自己的元素上:**不给宿主元素挂伪元素**,宿主元素只吃设计令牌