Repository navigation
Releases: Yoshino-JF/dsh-deepseek-pet
Release list
v0.2.14 — 屏幕不会再被她一句话顶到老远
v0.2.14 — 屏幕不会再被她一句话顶到老远
桌宠本体(pet/DeepSeekPet.exe)已更新到 0.2.14。这一版修的是上版(0.2.13)之后你发现的那个构图问题。
修复
游戏屏与她之间的距离,被一句长台词永久顶远。
- 现象:屏幕离她特别远,而且她一声不吭时也远。
- 真因:屏幕与她之间那一行的高度 =
max(88, 气泡所需高度)。气泡高度原来是只升不降的高水位,
于是 16:04:22 那句 200 字留言(在当时的窄窗口里确实需要 217 DIP —— 这个值本身没错)
之后再不回落 ⇒ 之后所有时间屏幕都被顶高约 129 DIP。 - 改法:气泡预留位改为跟随当前需求 —— 长句该撑就撑(否则会被裁),句子说完就还回基准;
气泡收起时显式还位(Visibility = Hidden不会触发SizeChanged,不显式调就永远还不了)。 - 实测(真实
/say链路):灌 175 字 →bubble row -> 220 DIP→ 淡出后 →bubble row -> 0 DIP;
安静态窗口回到 268×533.6 DIP(屏幕与她之间 = 原来的 88 DIP 基准)。 - 短句完全不动屏幕:只有需要超过 3 行的长句才会短暂抬高,说完立刻落回。
顺带说明
上版(0.2.13)把对话框抬高 12 DIP 让它不再压到她的头发 ✓;那 12 DIP 会算进"气泡所需高度",
所以气泡显示时屏幕会比安静态略高一点 —— 这是刻意的(否则气泡又会贴回头发上)。
安装 / 升级
plugin_manager install_bundle @deepseekstudio/dsh-deepseek-pet
升级前请先停掉桌宠(托盘右键退出,或
pet_control action=stop)。
刚发布 24 小时内,pnpm 的供应链冷静期可能拦一次;按需临时放宽后立即还原即可。
改动史见 pet-src/DEVLOG.md(㉟ 条是本次修复的真因/修法/实测记录)。
v0.2.13 — 对话框抬高一点,不再挡她的头发
v0.2.13 — 对话框抬高一点,不再挡她的头发
桌宠本体(pet/DeepSeekPet.exe)已更新到 0.2.13。这一版只有一处改动,来自你的实测反馈。
修复
对话框(气泡)下沿贴在她的头发上 —— 现在抬高 12 DIP。
- 真因:气泡下边距只有 2 DIP,而气泡在它那一行是底部对齐的 ⇒ 视觉上就是"贴着头发"。
- 改法:
bubble.Margin的下边距2 → 14 DIP。 - 实测(放大 4 倍量像素):气泡下沿 267.5px、她头发(鲸鱼发箍)顶 277.5px ⇒
净空 10 物理像素 ≈ 8 DIP(改前 ≈ 0,即压着)。 - 联动:气泡所需高度是按含 Margin 量的,所以行高也会相应多 12 DIP ——
使用高水位机制,不会因此出现"她每说一句长话、窗口就跳一下"。
安装 / 升级
plugin_manager install_bundle @deepseekstudio/dsh-deepseek-pet
升级前请先停掉桌宠(托盘右键退出,或
pet_control action=stop)——
桌宠从包目录运行时,pnpm 无法替换该目录,会报ERR_PNPM_EPERM。若插件面板提示"发布未满 24 小时",那是 pnpm 的供应链冷静期;按需临时放宽后立即还原即可。
完整改动史见 pet-src/DEVLOG.md(0.2.12 的六轮修复与本机"社区态"切换记在 ㉝ 的 ①–⑱ 条)。
v0.2.12 — 游戏屏能调大小了,画面剩下的东西也跟着一起走
v0.2.12 — 游戏屏能调大小了,画面剩下的东西也跟着一起走
桌宠本体(pet/DeepSeekPet.exe)已更新到 0.2.12。这一版六轮修复都来自你的实测反馈,
每一处都在这台机器上用自检 + 截图验过。
新增
① 游戏屏可缩放(50% – 200%)
- 右键「游戏屏大小」→ 60% / 80% / 100%(默认)/ 120% / 150%
- 把鼠标悬在游戏屏上滚轮 → 无级调(每档 10%)
- 屏里的东西一起等比:MC 的 F3 文字 / 准星 / 九宫热键栏 / 小地图、galgame 的立绘与中文台词、
选项框、暂停条 —— 不会出现"屏变大了、字还是原来那么大" - 点了不会点歪:屏幕点击与滚轮判定的坐标仍落在 120×80 游戏像素空间里
② 屏到她之间的距离、以及投影光柱,随屏大小等比
- 屏越大 → 屏"浮"得越高、光柱越长,且光柱末端始终接在屏幕下沿
- 她本人不会被放大或缩小(大小只由「大小」菜单 / 滚轮决定)
- 实测 100% / 150% / 200%:间距 81 → 129 → 165 DIP,光柱长 191 → 240 → 276 DIP,立绘恒 131×198
③ 新增「过渡速度」五档
- 关闭(直接切)/ 极速 66ms / 快 160ms / 标准 320ms(默认) / 柔和 560ms
- 修掉 0.2.11 把姿态过渡写死成 66ms 造成的"过渡变得飞快"(表情过渡当时是 320ms,两者差 5 倍)
- 实测四档的帧开销没有差异(8 秒 CPU 2.2–2.7s,屏 200% 也一样),所以按眼睛挑就行
④ 余额徽章 / 对话框自适应(都不再被窗口裁掉)
- 徽章文案变长(状态词 + 余额数字)时,窗口自动加宽到装得下
- 长句台词(余额播报这种)换行后,会按需把"屏与她之间"那一行撑高
修复
- 状态锁定为"玩游戏"时,把「游戏屏」改成关闭不生效(屏幕照样开着)
- 游戏屏放大到 150%/200% 后窗口顶出屏幕、屏被切(现在会自动拉回工作区)
- 她被你拖到屏幕左边缘外一点之后,下次启动会莫名跳回右下角(负坐标被误判成"未设置")
- 「性能档位」菜单点任意一档会把四个勾全去掉(闭包踩了
for循环变量)
开发侧(不影响使用)
- 新增
--usertest:用真实菜单项点击走「状态 × 大小」矩阵共 44 步,每步核对布局不变量 --zoomtest增加读数:间距 / 光柱长 / 立绘尺寸 / 徽章宽度- 行为回归统一加
--nopoll隔离宿主事件;所有自检开关挂NoSave,不会再改你的配置
安装 / 升级
plugin_manager install_bundle @deepseekstudio/dsh-deepseek-pet
升级前请先停掉桌宠(托盘右键退出,或
pet_control action=stop)——
桌宠从包目录运行时,pnpm 无法替换该目录,会报ERR_PNPM_EPERM。
0.2.11 — 帧率从 9/20 FPS 提到跟屏刷新 + 新增性能档位
这个版本解决桌宠掉帧
真凶不是显卡、也不是特效 —— 是两处写死的低帧率:游戏屏 20 FPS、待机呼吸/摇摆 9 FPS(当年为省 CPU 砍的,源码注释里写着)。
改动
- 待机动画:改用
CompositionTarget.Rendering(跟随显示器刷新率)驱动 —— 不再受 50/110ms 定时器限制 - 游戏屏:
50ms → 16ms(20 → 60 FPS),固定步长改为时间制步长 - 性能档位(新增):右键菜单 →「性能档位」→
自动跟随屏幕(推荐)/ 30 帧(省电)/ 60 帧 / 120 帧 - 姿态过渡:
打断 → 震惊 → 转工作那一下的卡顿已消除(分层窗口里的慢速透明度动画改为 2 帧过渡)
速度不会变
三套游戏屏(伪 3D 砍树 / 2D 横版清关 / galgame)的逻辑全部按 dt 时间积分(云速、重力、粒子、打字机、受击闪烁),所以提高帧率只影响平滑度,不改变任何动作速度。
代价
- 60 FPS 待机约 1.38% 单核 CPU(原来 9 FPS 约 0%)
- 内存约 150 MB
其它
- 内建帧率探针:启动后日志里会打 8 条
idlefps:便于排查(自动停止) --scenetest all17 步全绿
0.2.10 — 修复眨眼时背景出现一道黑影
眨眼不再暗一下
现象:待机眨眼瞬间,桌宠背景上会多出一道黑影。
根因:眨眼是对整层跑 Opacity 关键帧动画,而桌宠是 AllowsTransparency 的分层窗口 —— 每帧都要重算整窗 alpha,于是整块闪一下。(实测素材本身没问题:blink.png 与 idle.png 同为 720×1090、平均亮度只差 0.8。)
修法:不再做透明度动画,改为直接替换底图(110ms 后还原),一次位图切换、无 alpha 重算。
0.2.9 — 修复启动时打死整个 DSH 宿主的致命崩溃
⚠️ 0.2.6 有致命缺陷,请勿使用,升级到本版
现象:装了 0.2.6 的机器上,DSH 启动约 3 秒后弹「应用无法启动或已意外停止」并退出。用户的处置是禁用全部插件才恢复。
根因:startPet() 里两处判断语义不一致 —— petRunning() 的真值可以来自最近还在轮询(此时 pet.proc 是 null),却无条件读 pet.proc.pid → TypeError。而这个调用跑在宿主启动定时器里,未捕获异常直接冒泡成 uncaughtException → 整个宿主进程退出。
修法(两处):
- 改用文件里已有的安全访问器
livePid() - 新增
autoStartPet(),把自动启动整体包在 try/catch 里 —— 以后无论出什么问题最多打一条日志,插件不再有能力关掉整个应用
另含 CI 发布链路的修复(工作流里的 YAML 守卫原本写错模块,导致守卫从未执行、堵死了所有发布)。
v0.2.8 — 未发布到 npm(CI 守卫故障)
这个 tag 对应的版本没有发布到 npm。
原因是发布工作流里的 YAML 守卫实现有误(node:util 的 parse 不是 YAML 解析器,且 ESM 下没有该导出),守卫在模块加载期就失败,导致 Publish 步骤被跳过。
修复在 v0.2.9:守卫改为仓库内的独立校验器 validate-cordis-patch.mjs,并带完整诊断输出。
v0.2.7 — 未发布到 npm(被 CI 守卫挡住)
这个 tag 对应的版本没有发布到 npm。
它本身包含 0.2.6 致命崩溃的修复(startPet() 读 null.pid → 改用 livePid();自动启动整体加 try/catch),但被当时有问题的发布工作流挡住。
同样的修复随后以 v0.2.9 正式发布。
v0.2.6 — 修复 @ 包名未加引号(YAML 致命问题)
修复:cordis.patch.yml 里 @ 开头的包名缺少引号
这是本版唯一的致命修复。0.2.5 因为这个问题无法被 DSH 加载——安装会被直接拒绝:
dsh: installation rejected: Cannot validate installed package:
YAMLException: bad indentation of a mapping entry (7:13)
7 | name: @deepseekstudio/dsh-deepseek-pet
-----------------^
根因:@ 是 YAML 的保留指示符,以 @ 开头的标量必须加引号。
0.2.3 / 0.2.4 时代包名是 dsh-deepseek-pet(不以 @ 开头),不加引号也能解析;
改成 scope 包名后引号成了必需项,而它在某次同步中丢失。
判定方式(用 DSH 同款解析器 js-yaml 5.4.2 实测,并排除了 BOM 与制表符干扰):
| 输入 | 结果 |
|---|---|
| 未加引号 | ❌ bad indentation of a mapping entry (7:13) |
| 单引号 | ✅ 解析成功 |
| 双引号 | ✅ 解析成功 |
其他改动
- 三处版本号同步为 0.2.6:
package.json/index.js/src/Pet.cs - 清理重复嵌套目录:删除
pet-src/src/src/(7 文件)与pet-src/tools/tools/(8 文件)。
它们是同步时多套一层的副本,除Pet.cs外与正式副本逐字节相同,纯属冗余;
发布物文件数因此由 64 降至 49 - 发布流程迁移到 Trusted Publishing (OIDC):不再需要 npm token,也不再需要 OTP,
账号无需开启 2FA;provenance 签名自动附带
发布前的自动校验
.github/workflows/publish.yml 在发布前会强制检查:
- tag 与
package.json版本一致 cordis.patch.yml能被真正 YAML 解析,且name与包名一致
(上一版用 grep 正则检查,正则看不出引号问题,所以放行了 0.2.5)pet/DeepSeekPet.exe存在- 发布后 tarball 必须能下载(元数据即时、CDN 转储延迟可达 15 分钟)
完整安装命令
plugin_manager install_bundle @deepseekstudio/dsh-deepseek-pet
注意:0.2.5 已被标记为 deprecated(npm 上会给出警告),请勿使用。
v0.2.5 — ⚠️ 请勿使用(DSH 拒绝加载)
⚠️ 请不要使用这个版本本版的
cordis.patch.yml里包名@deepseekstudio/dsh-deepseek-pet缺少引号,
而@是 YAML 保留指示符 —— DSH 会直接拒绝加载本插件:YAMLException: bad indentation of a mapping entry (7:13) 7 | name: @deepseekstudio/dsh-deepseek-pet -----------------^本版已发布到 npm 并标记为 deprecated。请改用 v0.2.6。
保留此 tag 与发布记录,仅为如实反映历史。
本版做了什么(相对 0.2.4):
- 三处版本号同步为 0.2.5(
package.json/index.js/src/Pet.cs) - 桌宠重编译(exe 内含 0.2.5)
- 移除
@deepseek-ai/dsh-tools的dependencies声明,改为纯peerDependencies
(profile 配置autoInstallPeers: false时,声明成 dependencies 会在 profile 层
hoist 一份缺 peer 的残缺副本)
教训:包名以 @ 开头时,YAML 里必须加引号 —— 这一条在 0.2.6 的发布流程里已加上自动校验。