Skip to content

Releases: Yoshino-JF/dsh-deepseek-pet

v0.2.14 — 屏幕不会再被她一句话顶到老远

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 09:25

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 — 对话框抬高一点,不再挡她的头发

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 06:56

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 — 游戏屏能调大小了,画面剩下的东西也跟着一起走

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 06:34

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 提到跟屏刷新 + 新增性能档位

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 03:17

这个版本解决桌宠掉帧

真凶不是显卡、也不是特效 —— 是两处写死的低帧率:游戏屏 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 all 17 步全绿

0.2.10 — 修复眨眼时背景出现一道黑影

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 03:17

眨眼不再暗一下

现象:待机眨眼瞬间,桌宠背景上会多出一道黑影。

根因:眨眼是对整层跑 Opacity 关键帧动画,而桌宠是 AllowsTransparency 的分层窗口 —— 每帧都要重算整窗 alpha,于是整块闪一下。(实测素材本身没问题:blink.png 与 idle.png 同为 720×1090、平均亮度只差 0.8。)

修法:不再做透明度动画,改为直接替换底图(110ms 后还原),一次位图切换、无 alpha 重算。

0.2.9 — 修复启动时打死整个 DSH 宿主的致命崩溃

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 03:17

⚠️ 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 守卫故障)

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 03:17

这个 tag 对应的版本没有发布到 npm。

原因是发布工作流里的 YAML 守卫实现有误(node:util 的 parse 不是 YAML 解析器,且 ESM 下没有该导出),守卫在模块加载期就失败,导致 Publish 步骤被跳过。

修复在 v0.2.9:守卫改为仓库内的独立校验器 validate-cordis-patch.mjs,并带完整诊断输出。

v0.2.7 — 未发布到 npm(被 CI 守卫挡住)

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 07 Oct 03:17

这个 tag 对应的版本没有发布到 npm。

它本身包含 0.2.6 致命崩溃的修复(startPet() 读 null.pid → 改用 livePid();自动启动整体加 try/catch),但被当时有问题的发布工作流挡住。

同样的修复随后以 v0.2.9 正式发布。

v0.2.6 — 修复 @ 包名未加引号(YAML 致命问题)

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 05 Oct 01:11

修复: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 拒绝加载)

Choose a tag to compare

@Yoshino-JF Yoshino-JF released this 05 Oct 01:11

⚠️ 请不要使用这个版本

本版的 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 的发布流程里已加上自动校验。