# Changelog ## v2.5.0 (2026-10-21) ### 新增 - **第三个小游戏「鲸鱼翻翻乐」**:4×4 记忆配对,16 张牌来自 8 对现有立绘(不新增素材)。60 秒一局,配对 +100 基础分、连击最多 +80、零失误按剩余秒数加时间奖励;配对 8 对通关、5 对及格。鼠标点击与键盘(方向键移动、Enter/Space 翻牌、Escape 关闭)双通道;与戳泡泡 / 接点心互斥,开新局会先关旧局;通关、零失误、六连与首玩各对应一个成就。入口:右键 → **小游戏:鲸鱼翻翻乐**。每日奖励局数与另外两个游戏共享(3 局)。 - **养成数据跨端迁移**:设置 → 看板娘 → 新增「跨端迁移」分组。可**导出 JSON 存档**、**复制迁移码**(`WM1-<校验>-` 核心档)、**导入存档 / 粘贴迁移码**。迁移范围含心情 / 好感度 / 饱食度 / 等级 / 签到 / 成就 / 任务 / 游戏记录 / 成长日记 / 称呼;**不含**悬浮位置、天气城市与经纬度(设备相关)。导入后写回 localStorage 并广播 `save-import`,桌宠立即重读,无需刷新页面。 - **长期陪伴成就**:新增「百日之约」(陪伴 100 天)与「一年之约」(陪伴 365 天);连同翻翻乐 4 项,成就总数 39 → **45**。 ### 修复 - **设置里「重置养成」后桌宠仍用旧内存数据**:`growth-reset` 事件此前只触发重排,表现层内存里的成长值要刷新页面才更新。现在 `growth-reset` / `save-import` 都会重新读取 localStorage 的成长、游戏与用量数据并立即 reconcile。 ### 工程 - 迁移码的 base64 / UTF-8 改为纯 JS 实现,不依赖 `Buffer` / `btoa` / `atob`:同一份 core 在桌面端、旧版 Web 与测试沙箱三种环境都能解码中文。 - 迁移存档做了逐字段校验:数值钳制、成就白名单去重、JSON 字段结构检查与 64KB 上限;坏码/未来版本/非本插件 JSON 都会明确报错,**不会改动现有存档**。 - 翻翻乐的纯逻辑全部下沉 core(发牌 / 翻牌 / 翻回计时 / 结算),表现层只做面板与事件;新增零浏览器 UI 验收,用 DOM 桩真执行注入的 core + presenter。 - **npm 发布**:2026-10-22 发布 `dsh-whale-musume@2.5.0`(latest);安装不再依赖 GitHub/git,`dsh plugin add dsh-whale-musume` 即可。包体 12.9 MB / 103 文件,发布前跑完整测试,带 provenance。 ### 测试 - 单元与契约 **163 → 203 全绿**:新增翻翻乐 14 项、迁移存档 11 项、零浏览器交互 9 项(含真实右键菜单开第三游戏、通关 8 对落盘成就、键盘翻牌、坏码不覆盖)与接线自检 6 项。 ## v2.4.0 (2026-10-19) ### 适配 - **声明兼容 DSH `0.2.1-rc.1` / `0.2.1-rc.2`**:对照 tag `dsh-v0.2.1-rc.2` 的源码,鲸鱼娘用到的 DOM 标记(`[data-tool]` + `data-state`、`[data-chat-running]`、`[data-terminal]`、`[data-composer-input]`、`[data-shortcut-modal="settings"]`、`body[data-ds-dark-theme]`)和 `settings.section` 注册都还在,表现层选择器没有增删。`conversation.input.model.label` 是新 slot,本插件不注册 - **补上顶层 `engines.dsh`**:从 DSH `0.2.1-alpha.4` 起,安装门禁优先读这个字段;没声明才回落 `@deepseek-ai/dsh*` peer。本包没有那些 peer,不声明就等于任何版本都放行。范围是 `>=0.1.0-rc.6 <0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1 || 0.2.1-rc.2`,旧版 Web(`0.1.0-rc.6` 起)和已实测的桌面端 `0.2.0-rc.2` 仍放行;`0.2.0-rc.1`、`0.2.1-alpha.*` 与 `0.2.1` 正式版不放行 - **兼容性矩阵**:`dsh.compatibility.dshReleases` 增加 `0.2.1-rc.1` 与 `0.2.1-rc.2`,值为 `compatible`。这个字段 0.2.1 的安装器不读;`compatible` 的依据是静态契约加单元测试,**不是**在真实 Electron 桌面端复跑的验收。`0.2.0-rc.2` 仍是隔离 profile 上验收过的版本 - **桌面端端口**:0.2.1 的 desktop host 用 `--port 0`(系统分配),不再写死 `19387`。插件不读端口。文档 origin 仍是 `dsh-app://app`,资源路由仍避开 `/assets/` ### 文档 - 新增 `docs/desktop-0.2.1-rc.2-contract.md`(契约差分)与 `docs/desktop-0.2.1-rc.2-deploy.md`(相对 0.2.0 部署手册的差分)。0.2.0-rc.2 的验收报告不改写 ### 测试 - 单元 **158 → 163 全绿**:新增 `test/dsh-engines.test.mjs`(5 项:版本与 `engines.dsh` 字面量、矩阵保留旧条目并写入 0.2.1 rc、放行表、拒绝表、表现层标记仍在且不注册模型名 slot) ## v2.3.0 (2026-10-14) ### 新增 - **工作中台词两档:话痨 / 安静**([#24](https://github.com/Sutera-Diffusus/dsh-whale-musume/issues/24)):工作态(思考 / 工具 / 成功 / 出错)台词此前每跳一次状态就弹一句,十几分钟的长任务能刷几十条。现在四种状态共用随机冷却窗口——**话痨 15–40 秒**、**安静 90–240 秒**,窗口之内只说一句;`thinking` / `tool` 台词按当前任务话题取词(复用主动闲聊的本地分类),`success` / `failure` 保留各自语料。切档立即生效,空闲问候与天气不受影响,默认话痨。设置入口:**DSH 设置 → 看板娘 → 陪伴表现 → 工作中台词**。 ### 修复 - **右键菜单贴底被窗口边缘裁掉**([#23](https://github.com/Sutera-Diffusus/dsh-whale-musume/issues/23)):菜单高度此前写死 `innerHeight - 160`,而真实高度是 268px(开小游戏 8 项)/ 204px(关小游戏 6 项),贴右下角右键最多被裁掉 108px。现在挂载后量真实尺寸,下方放不下就翻到光标上方,最后统一钳进视口 8px 边距;量不到尺寸时按最坏的 268px 保守处理。 ### 社区 - **合并 PR [#25](https://github.com/Sutera-Diffusus/dsh-whale-musume/pull/25)**([@KS001-A3](https://github.com/KS001-A3)):四处列表渲染补稳定 key(消除切换设置页签时的 React key 警告);摸头成长改用累计计数 `addUsageStat("pat")`(修复「十连 / 百连」成就永不触发,键盘路径同样累计并补发任务信号);`registerSettings` 兼容只以 ctx 属性暴露 slots 的宿主。 ### 文档 - README 中英文新增**安装失败排查**章节([#21](https://github.com/Sutera-Diffusus/dsh-whale-musume/issues/21) / [#22](https://github.com/Sutera-Diffusus/dsh-whale-musume/issues/22) / [#26](https://github.com/Sutera-Diffusus/dsh-whale-musume/issues/26)):registry 与镜像、`git ls-remote` 网络自查(DSH 预检默认 5s 超时)、`allowBuilds` 提示为何对本插件是误报、Release 资产本地安装步骤、如何确认装上了、版本没更新时先卸载再装。 ### 测试 - 单元 **143 → 158 全绿**:新增 `test/menu-placement.test.mjs`(7 项:贴底翻转、6/8 项高度不越界、极小视口钳制、量不到尺寸回落、源码不再写死常量)与 `test/work-speech.test.mjs`(8 项:两档窗口区间、四态共用冷却、切档立即生效、非法值回落话痨、话题取词、成功 / 出错保留语料、总开关优先、render 三处闸门防漏)。 ## v2.2.1 (2026-10-01) ### 修复 - **弹出层贴边跑出屏幕**([#18](https://github.com/Sutera-Diffusus/dsh-whale-musume/issues/18)):台词气泡与偏好面板此前都用 `left: 50% + translateX(-50%)` 挂在桌宠中心,没有视口钳制——桌宠拖到屏幕最左/最右时有一半在屏幕外,拖到最顶部时向上弹出同样出屏。现在按桌宠的视口位置写 `align` / `valign` 两枚懒标记,CSS 据此换锚定边:贴左/贴右改为贴边对齐,贴顶改为向下弹出并翻转小三角;小三角通过 `--dsh-whale-anchor` 仍精确指回桌宠中心。标记只在贴边时写入、离开边缘即移除,正常位置的样式完全不受影响。 ### 工程 - **README 徽章改为自托管,不再依赖 shields.io**:实测 GitHub 的图片代理(camo)会把「带 URL 编码中文」与「需查 GitHub API」的 shields.io 徽章拖到 504 超时——仓库页 9 个徽章里 5 个变成坏图(单元测试 / 平台 / 桌面端 / 旧版 Web / 下载量)。现在 12 个徽章由 `tools/make-badges.mjs` 生成并随仓库分发,图片由 GitHub 自己提供,不经 camo、不经第三方,任何网络环境都能显示。 - **下载量徽章自动更新**:新增 `.github/workflows/refresh-badges.yml`,每天定时 + 每次发版时重算下载量并提交(内容无变化则不产生提交)。 ### 测试 - 单元 **142 → 143 全绿**:新增 `i7`,覆盖桌宠贴左 / 贴右 / 贴顶 / 居中四种位置,并断言 CSS 真的消费了这两枚标记(防止标记变成死代码)。 ## v2.2.0 (2026-09-29) ### 适配 - **适配 DSH 桌面端 `0.2.0-rc.2`(Electron 壳,内嵌 DSH 0.2.0-rc.2)**:桌面端主窗口的文档 origin 是 `dsh-app://app`(不是 `http://127.0.0.1:<端口>`),旧版 Web 下的 `whale-moe:*` localStorage(悬浮位置 / 养成数据 / 开关偏好 / 成长日记)不会自动带过来,桌面端首次打开是全新状态。旧版 Web(`0.1.x`)的适配与行为保持不变 - **客户端模块改为惰性 CJS 契约**:引导时机移到 factory 物化期——`window.__ModuleLoader__.load({id, factory})` 注册路径不变,但执行 bundle 只注册 factory,包括 CSS 注入在内的副作用都发生在 factory 物化期,`boot()` 因此从 `apply()` 移入 factory 体内(`apply()` 只保留 MiMo TTS 桥接与设置面板注册) - **DOM 契约更新**(选择器只增不减,旧宿主行为不受影响):工具卡改用 `[data-tool]`(值 = 工具名)+ 同元素 `data-state`,其中只有 `running` / `preparing` 算「正在工作」——卡片完成后仍留在 DOM 里(`ok` / `stopped` / `error`),按存在性匹配会让桌宠被历史卡片永久钉在工作态;新增会话运行标记 `[data-chat-running]`;终端块 `[data-terminal]`;输入框是 contenteditable `[data-composer-input]`(不再是 textarea) - **主题属性适配**:桌面端的明暗写在 `body[data-ds-dark-theme]`(属性值为空串表示暗色),主题来源写在 `html[data-ds-theme-source]`(`light` / `dark` / `system`);旧版 Web 的 `data-theme` / `dark` class 识别保留为回落 - **设置面板判据适配**:「设置面板已打开」改用 `[data-shortcut-modal="settings"]`(桌面端的引导弹窗同样是 `role="dialog"`,旧判据会误命中) - **兼容性声明**:`package.json` 的 `dsh.compatibility.dshReleases` 新增 `0.2.0-rc.2: "compatible"` ### 修复 - **修复桌面端首页被误判为设置页**:刷新后常驻的引导弹窗(OnboardingModal)同样是 `role="dialog"`,旧判据 `[role="dialog"]` 会把首页误认成设置页;v2.1.0 起该场景已是 120px 右下角 mini(不再整体隐藏),本次把判据收敛到 `[data-shortcut-modal="settings"]`,桌面端首页不再误命中 - **修复冷启动头几秒误判工作态**:`toolGoneAt` 初值 0 会被「首次下沿」分支当成刚消失的工作信号,导致首屏摆出 running 并念出工具台词;初值改为远期过去(`-1`),首屏稳定停在待机 - **清理死代码**:删除永不命中的 `ANIM_ROOT` 资源路径改写(presenter 里从来没有这个常量,`assets/anim/*.webm` 未被引用) ### 测试与文档 - 单元 **108 → 142 全绿**(新增 34 项桌面端契约与回归断言:`[data-tool]` / `[data-chat-running]` / `[data-terminal]` 信号、composer 输入框、主题属性、设置面板判据、历史工具卡不得钉住忙态,以及上述两条回归;跑 `npm test`) - 新增桌面端文档:`docs/desktop-0.2.0-rc.2-contract.md`(契约审计)、`docs/desktop-0.2.0-rc.2-deploy.md`(部署手册)、`docs/desktop-0.2.0-rc.2-acceptance.md`(验收报告) - 新增验收工具:`tools/dom-stub.mjs`、`tools/cdp-verify-whale.mjs`、`tools/cdp-contract-whale.mjs`、`tools/asar.mjs` ## v2.1.0 (2026-09-14) - **可选 MiMo TTS 台词播报**(Issue #9 / PR #10,感谢 @ppy-web):检测到 `dsh-xiaomi-tts` 服务时显示默认关闭的「台词播报」开关;开启后播报头部、肚皮、尾巴与三连击台词。未安装、未配置或播放失败均不影响原交互,并补充异步播放拒绝保护 - **修复弹窗导致鲸鱼娘永久消失**(Issue #12 / PR #13,感谢 @icemaple77):完全位于视口外的 off-canvas drawer 不再被视为可见弹窗;设置页与可见弹窗场景改为 120px 右下角 mini,不再整体隐藏 - **修复设置面板注册时序**:按 DSH 客户端约定声明 `slots` inject,避免启动时拿不到服务而永久跳过「看板娘」设置栏目 - **修复多币种余额误判**(Issue #14 / PR #15,感谢 @icemaple77):DeepSeek 同时返回 USD/CNY 账户时优先选择 CNY;没有 CNY 时回落第一条记录 - **持续集成**:新增 GitHub Actions,在 Node.js 18 与 22 上运行完整测试;单元测试 **102 → 108 全绿** ## v2.0.1 (2026-09-05) - **DSH STORE 兼容性声明**:在 `package.json` 的 `dsh.compatibility.dshReleases` 中逐版本声明兼容矩阵——`0.1.1-rc.2`(实际运行环境)与 `0.1.2-rc.1`(官方最新)标记为 `compatible`,`0.1.2-alpha.4` / `0.1.2-alpha.5` 标记为 `unknown` - 恢复与商城目录固定 Commit(`a61b09d`,v1.5.0)的历史血缘(此前 main 被整体 rebase,候选不再是目录 Commit 的有界直接后继),使新版本满足 DSH STORE 固定源更新审查 - 说明:`0.1.2-rc.1` 的 compatible 为作者级来源声明(核心状态机 DOM-free,表现层信号检测对 0.1.2-rc.1 会话流改造有抗性,且已过滤历史卡片的陈旧状态标记),尚未在 0.1.2-rc.1 上跑完整运行时验收;升级到该版本后建议执行 `npm test` 与 `npm run qa` ## v2.0.0 (2026-08-28) 路线图里 v1.6.0–v1.9.0 四个版本的内容合并发布,按主题组织如下。 ### 余额关心(原 v1.6.0) - **新增·账户余额显示与播报**:新增「余额」分组,显示当前余额,并让她用一句话说明情况(分 充裕 / 正常 / 偏紧 / 告急 / 已见底 五档,共 29 条台词) - 数据源为本机余额代理 `127.0.0.1:3020`(`dsh-statusbar` 的 balance-proxy)。代理只监听 127.0.0.1、不回显密钥,上游请求在服务端完成,因此**浏览器侧依然只访问本机**,不违背「无外部请求」的承诺 - 60 秒轮询一次(与代理缓存对齐);**默认关闭**,代理未运行或取不到数据时静默失败,不弹错不刷日志 - 沿用「忙碌时不露脸」:播报只发生在待机时;充裕档几乎不主动提(6 小时一次),偏紧档 30 分钟一次 - 金额敏感,提供「余额显示数字」开关,关闭后只显示档位措辞,截图不泄露余额 - 低余额判定改由真实金额得出,仍复用既有的 `balance-low` 立绘与「🪙 余额告急」成就 ### 素材加载(原 v1.6.0) - **新增·立绘预加载**:90+ 张立绘此前无任何加载策略,冷启动后首次切到冷门姿势会迟滞。现在首屏只预载 5 张常用姿势,其余在空闲时段每 120ms 取一张,避免几十个请求同时抢带宽 - 优先使用 `requestIdleCallback`,不支持时退化为延时 2.5 秒启动;预取失败完全静默,不影响正常显示路径 ### 工具类型细分(原 v1.7.0) - **新增·按工具类型切换工作姿态**:跑命令、改文件、搜索、测试、评审、部署、调试各有对应姿态,**全部复用仓库里已有的 work-* 立绘**,不新增素材 - 识别方式是读取工具卡片文本做关键词匹配,**识别不了就回落到通用工作姿势**,绝不因为猜错而乱切 - 新增「工具细分」开关(默认开启) ### 拖拽物理(原 v1.7.0) - **新增·拖拽惯性**:松手后按瞬时速度滑行一小段并旋转回正;撞到屏幕边缘就停住(「抓住」边缘)不再继续转 - 轻放(速度过小)只做一次轻微回弹,避免抖一下 - 落盘时机调整到物理滑行结束之后,保存的是最终位置 - 新增「拖拽惯性」开关(默认开启) ### 主动关怀(原 v1.8.0) - **新增·四条主动关怀线**:久坐提醒(连续忙 25 分钟)、深夜劝休息(23 点后仍在忙)、卡住陪伴(同一状态停滞 8 分钟)、回来打招呼(离开超过 3 分钟) - 铁律是「陪着,不是指挥」——**工作态绝不插嘴**;关怀之间至少间隔 15 分钟,避免变成噪音 - 台词基调是提醒而非催促,共 19 条 - 新增「主动关怀」开关(默认开启) ### 无障碍(原 v1.8.0) - **新增·可选无障碍模式**:桌宠原本是 `aria-hidden` 的纯装饰,读屏用户完全感知不到。开启后可 Tab 聚焦、Enter/Space 摸头、方向键微调位置(Shift 加速),状态变化经 `aria-live` 播报 - 使用 `role="button"` + 动态 aria-label(含自定义自称),焦点可见 - **默认关闭**:既不给默认体验添负担,也给有需要的人留一条路 ### 成长日记(原 v1.9.0) - **新增·成长日记**:养成数据原本只能重置、不能回看。现在会按时间记录关键节点(羁绊升级、成就解锁),设置面板新增「成长日记」分组,倒序展示最近 12 条并标注相对时间 - 同一天同类事件只记一条,避免刷屏;最多保留 80 条,全部留在 localStorage ### 主题适配(原 v1.9.0) - **新增·跟随宿主明暗主题**:识别 DSH 的 `data-theme` / `dark` class,退化到系统 `prefers-color-scheme`,结果写入 `data-wm-theme` - 只影响气泡、菜单这类 UI 元素,**立绘不做滤镜**,避免把画风改坏 - 仅在主题变化时写入,不做每帧探测 ### 测试 - 单元 99 → **102 全绿**(新增余额档位 1 项、金额格式化 1 项、新增台词库完整性 1 项) ## v1.5.0 (2026-08-28) - **新增·自定义看板娘自称**(issue #4,@Vulpexl):设置面板总览卡新增「她的自称」输入框,与既有「如何称呼我」成对;留空或清空即回落到默认的「鲸鱼娘」。台词库里 363 处自称在出口处统一替换,不逐条改写 - **新增·关闭后的找回入口**(issue #5,@VectorAC):在设置里关掉看板娘后,左下角会出现一枚唤回按钮(🐋),点击即把她叫回来,按钮随即消失。因所在页面而自动隐藏的场景(设置页等)不会出现该按钮,避免打扰 - 实现:称呼/自称替换提取为 core 的纯函数 `applyNames(line, title, selfName)`(core 仍不碰 localStorage,存储读取留在表现层),便于单测与复用 - 测试:单元 97 → 99 全绿(新增自称替换 8 项断言 + 台词库默认自称覆盖 1 项) ## v1.4.2 (2026-08-28) - **修复出错后永久停留「翻车」立绘**(PR #7,wrzrmzx):`errorVisible()` 原把启动后出现的任何错误节点当作永久「活错误」,而 DSH 会保留失败步骤的错误卡片,导致鲸鱼娘被永久钉在 failure 立绘。现按「出错后对话是否继续推进」判定翻篇(新增 `ERROR_MIN_MS = 3000` 最小反应时长);并新增 `SETTLE_MS = 10000` 加载期结算窗口,避免刷新后异步挂载的历史错误卡片被误判为活错误 - 修复「打开看板娘设置」无反应(PR #2,haitang1):右键菜单原按文本「设置」查找按钮,新版 DSH 设置入口为纯图标按钮(`[data-slot="sidebar.settings"] button`),现按 结构 slot → `settings.trigger` 宿主按钮 → 文本兜底 三级查找 - bundle 安装方式补齐「看板娘」设置面板(PR #2,haitang1):`lib/client.js` 注册 `settings.section`(id=mascot,label=看板娘),内容与 `--mascot-settings` v27 同源(总览卡 / 陪伴表现开关 / 天气 / 日常与养成 / 成就墙 / 数据与重置),读 `whale-moe:*` localStorage 并与桌宠本体实时联动 - **适配 DSH 0.1.1-rc.2**:设置面板改经 `settings.section` slot 注册,不再依赖改写 `@deepseek-ai/dsh-client-ui-theme` 的 dist 文件(该目录在 0.1.1-rc.2 已移除,旧补丁路径彻底失效) - 设置面板健壮性加固:`renderSlot` 缺失或抛错时回落到内置 `MascotPrefRows`,面板不会空白;`slots` 服务不可用或注册失败时跳过面板并保留桌宠本体 - 兼容性声明更新:README 标注已实测 DSH 0.1.1-rc.2 - 测试:单元 97 项全绿 ## v1.4.1 (2026-08-18) - 设置面板 v27:顶部概览外卡宽度调整为 95% 居中,与下方折叠分组外卡视觉对齐(定稿) ## v1.4.0 (2026-08-18) - 修复小游戏「玩不了」:暂停条件收敛为仅页面隐藏,工作状态与设置页打开时均不再误暂停;游戏面板 role 修正,不再被误判为设置视图 - 立绘大扩充(新增 45 张,总计 90+):思考 / 离开 / 工具三态、戳头 / 戳肚子 / 戳尾巴分区互动、成长四态(升级 / 成就 / 每日完成 / 甩尾)、游戏四态、天气三态、节日五套(圣诞 / 万圣 / 中秋 / 春节 / 情人节)、梗表情 13 种 - 新互动·分区点击:头部 / 肚子 / 尾巴三区判定,各有专属立绘、特效与台词 - 新互动·关键词表情:聊天命中 13 个梗关键词(kyun / OMG / doge / sike / 膜拜 / peace / 怀疑人生 / waku waku 等)自动变身表情包 - 新功能·节日自动换装:圣诞 / 万圣 / 中秋 / 春节 / 情人节当天自动切换节日立绘 - 设置面板 v24 重构:折叠分组(陪伴表现 / 天气 / 日常与养成 / 成就墙 / 数据与重置)、标签页收纳(今日任务 / 本周签到 / 称号)、总览卡与分组卡等宽对齐 - 测试:单元 73 → 97 全绿(新增戳分区 / 节日 / 关键词词库 16 项断言) ## v1.3.0 (2026-08-18) - 新功能·互动小游戏「戳泡泡·泡泡派对」:右键菜单进入,4×4 网格 + 键盘方向键可达;普通/星星/炸弹三种泡泡、连击奖励、30 秒一局三档结算;每日 3 局养成奖励上限防刷;新增 4 个成就 - 新功能·养成玩法加深:每日任务(3 槽自动刷新,签到常驻)、周签到 7 天里程碑(1/3/7 天奖励)、羁绊等级解锁(Lv3 新待机动作 / Lv5 称号「鲸汐守护者」/ Lv7 彩蛋);设置面板新增「今日任务」「本周签到」「称号」三卡;新增 5 个成就 - 新功能·天气视觉特效:全屏 canvas 氛围特效 9 类 ×3 档(雨/雪/雷闪/风/雾/热浪/霜雾/阴/晴),基于温度/风速现推导 hot/cold/wind(修复三态词库从未触达的死代码);天气卡新增「天气特效」开关(默认开);工作态自动降档、雷闪禁播,页面隐藏暂停,性能预算 160 粒子上限 - 心情分层台词:心情 <40 低频低落句、≥70 高扬句;新增羁绊词库(Lv3/Lv5/Lv7 各 5 条 + 高/低心情各 5 条) - teasing 死代码复活:非工作台视图待机低频毒舌(不进入状态机,工作态稳定规则不变) - 词库扩容至 530+ 条;成就墙 30 → 39 - 设置面板 marker v12 → v13(旧版本自动升级,零迁移;新增小游戏/天气特效开关) - 测试:单元 42 → 73 全绿;CDP 全量 + 8 项新断言全绿;motion-qa / soak-work 回归保持绿色 ## v1.2.0 (2026-08-17) - 新增标准组合包形态:package.json 声明 dsh.bundle.patch + dsh.client.platform: web,可通过 dsh plugin --profile web add github:Sutera-Diffusus/dsh-whale-musume 或插件市场安装(通过 mydsh.dev 严格校验) - 新增宿主插件 lib/index.js:只读静态资源路由 /api/dsh-whale-musume/assets(含路径穿越防护、MIME 与缓存头),不改任何内置包文件 - 新增浏览器插件 lib/client.js:注入样式 → 状态机 → 表现层,资源根改写为宿主路由,防重复引导 - bundle 模式验证:真实 DSH 0.1.0-rc.6(3181 测试副本)安装 + 重启 + CDP 全量验收 38/38 通过,零控制台错误 - README 新增「组合包安装」章节并修正设置面板说明(bundle 模式自带面板,实测确认) ## v1.1.5 (2026-08-16) - 修复全新安装体验:`apply` 不再注册「鲸鱼娘·海洋甜点工房」主题选项,全新安装即是纯桌宠模式 - 保留 legacy `patchHost/patchClient/untheme` 帮助函数用于老版本清理 - 新增「从 Release zip 到全新 DSH 副本启动」的端到端验收流程,CDP 全绿 ## v1.1.4 (2026-08-16) - 修复半屏窗口鲸鱼娘变小:移除 ≤980px 视口自动缩成 48px 的规则,任何窗口宽度保持正常尺寸 - 修复后台/无头标签页中换图动画被浏览器暂停导致的姿势卡死:新增 1.6s 超时兜底,强制落地已加载的新姿势 - 安装器备份目录创建改为 recursive,默认备份位置泛化到系统临时目录 - CDP 窄屏断言改为「保持正常尺寸」,全量回归保持绿色 ## v1.1.3 (2026-08-15) - 修复「出现代码块后鲸鱼娘变小」:关闭代码密集自动迷你化 - 悬浮形态任何代码量都保持 200px,不再缩到 56px - 侧边/底部形态也不再因代码块缩小,只保留窄屏(≤980px)适配 - 手动迷你形态不受影响(若历史设置里存了 mini) - CDP 新增断言:3 个代码块出现时尺寸保持正常、无 dense 属性 - 全量回归保持绿色 ## v1.1.2 (2026-08-15) - 待机动作过渡链路彻底排查: - 余额不足等自动情绪也改为带动画进入(此前会瞬切) - debug 暴露 `moodAnimate` 便于现场诊断 - 新增 `mood-churn` 压测:24 轮动画/瞬切混合打断、117 帧采样,无空白帧、无叠影、无卡死,最终稳定回到 idle-cute;连续 5 轮通过 - 全量回归(42 单元 + motion QA + soak + CDP)保持绿色 ## v1.1.1 (2026-08-15) - 自称统一为「鲸鱼娘」,清除 DS娘 / 鲸汐 混用 - 待机日常动作(端咖啡等)进入时恢复「下压 → 换图 → 弹起」过渡,不再瞬间切换 - 设置面板与主题名同步为鲸鱼娘 - motion QA 新增「待机动作必须带动画进入」回归断言 ## v1.1.0 (2026-08-15) - 台词总量扩至 494 条:状态/日常/工作/互动全场景扩容 - 新增梗关键词:打工人、摸鱼、DDL、画饼、发疯文学、立 flag、bug 玄学 - 新增任务话题台词(写代码/写作/调研/修 bug/数据/部署)与天气台词、分时问候 - 5–8 分钟主动闲聊:问候/天气变化 > 任务贴题 > 通用梗,工作态不插嘴 - 天气陪伴:设置面板新增城市、选填 API Key、测试连接;Open-Meteo 免费无需 Key,城市留空零联网 - 深夜 23:00–5:59 不主动问候;工作态稳定规则保持不变 ## v1.0.2 (2026-08-15) - 布局层同样拦截情绪姿势:忙时 `statePose()` 不再让任何 mood 覆盖 running(v1.0.1 只拦了渲染层,仍有漏网路径) - 移除随机 `teasing` 状态闪烁:待机在任何随机数下都稳定保持 `idle-cute` - 工作释放路径固定为 running → success → idle,不发生回弹或中间空帧 - 新增 `soak-work` 60s 压测:6s 信号空洞 ×5、24 轮快速闪烁、忙时强塞情绪、释放与待机稳定性,全程帧采样 - motion QA 增加「mood 必须真正完成换层」与「开始前必须回到 calm」的前置断言 - 调试面板新增 `toolWasActive / lastSuccessAt / toolGoneAt / toolSeenAt` 字段 ## v1.0.1 (2026-08-15) - 修复工作态反复「抽搐」:换图动画被打断时不再误清新动画的防重入标记 - 工作信号短暂消失又出现时,工作姿势持续钉住(工作台 8s / 其他页面 4s) - 工作中不再随机切「工作小剧场」,情绪姿势让位给 running(点击互动除外) - 低余额提示在忙碌时不再切姿势,只在待机时露脸 - motion QA 新增「信号短暂断开不得翻姿势」回归检查 ## v1.0.0 (2026-08-15) - 首发公开版:鲸鱼娘看板娘插件 - 悬浮拖拽(拖拽姿态 + 光标跟随摇摆) - 待机 / 工作双状态与 320ms 动势遮断过渡 - 摸头养成、签到、陪伴时长、30 个成就、成就墙 - 47 张立绘(含工作中、表情包、日常) - 点击 emoji/星星特效、三连击庆祝 - 设置面板卡片化(基础 / 智能 / 养成 / 成就 / 位置与数据)