Skip to content

v4.3.3 — 多屏改架构、待办语音播报、四条用户反馈修复

Choose a tag to compare

@klxxya klxxya released this 17 Oct 21:32
· 37 commits to main since this release

v4.3.3 — 多屏改架构、待办语音播报、四条用户反馈修复

版本日期:2026-10-18。上一个版本 v4.3.2 仍可下载。
本版改了一处架构(多屏合成窗),其余是用户反馈修复与新功能。

一句话

桌宠现在用一张合成窗铺满整个虚拟桌面:跨屏拖拽不再有"隔断",副屏直接拖过去;
同时修掉右键改大小被回弹、台词语音一个文件都不生成、直播捕获模式下改大小失效,
并给待办提醒加上到点语音播报。

一、多屏:每屏一张窗 → 一张窗铺满桌面(#302 / #303 / #283)

为什么要换:旧拓扑"每块有宠物的屏各一张合成窗",跨屏要靠"缝上通道"把角色从
一个宿主搬到另一个。两个用户实测问题都出在这个模型上——

  • #303 / #283:开了「允许桌宠跨屏」也拖不过去,身体被钳在 x=0,副屏窗口
    从不创建。报告者 2604 个采样点显示光标已深入副屏约 900 像素,身体 x 恒为 0。
  • #302:窗口铺满 screen.geometry()(含任务栏),Wallpaper Engine 与
    TrafficMonitor 按窗口矩形自判全屏,于是点「抽签/天气」时动态壁纸停住、悬浮窗消失。
    对照实验:同一进程把窗口高度从 1440 改成 1392 后立刻恢复。

现在:

项 行为
合成窗数量 全进程 1 张,永不因跨屏多开
窗口矩形 所有屏幕可用工作区的并集包围矩形(不含任务栏)
可站立域 每块屏的可用区各一块矩形的集合(错位拼接的屏间空洞不可站立)
跨屏 同一张窗内自由移动——拖动时连续跟随光标,松手才把落脚点钳回真实屏
关闭「允许桌宠跨屏」 可站立域只留家那块屏(拖不过去),窗口仍铺满桌面
帧率 取全部显示器里最高的一档(本机 170Hz,不再被 60Hz 副屏拖到 16ms)

代价与边界(如实):

  • 一张窗只有一个 DPR(Qt 物理限制)。混合缩放(如 100% + 150%)下必有一块屏的
    角色略糊;本机两屏同为 100%,未实测。
  • 多屏时窗口矩形必然包含某块屏任务栏那一行,#302 在单屏场景收口;多屏下
    WE / TM 仍可能误判,可给 dsh-pet-standalone-webm-chat.exe 加「全屏时保持运行」
    规则、或在 TrafficMonitor 里取消「全屏时隐藏主窗口」。
  • 角色被"看不见的墙"挡住时的力/反弹边界仍按并集矩形算(位置钳制是精确的多矩形)。

二、待办提醒支持语音播报

设置 → 自动化与联动 → 待办提醒 → 语音播报(默认关)。

  • 到点提醒念出来,走语音报时那条进程内唯一音频通道,音色 / 语速 / 音调 / 音量
    沿用「语音报时」,不新增任何语音参数键。
  • 语音与气泡说的是同一句(共用一个文案 builder)。
  • 免打扰期间不出声,结束后也不补播(过期的提醒不该几分钟后突然念出来)。

三、右键改桌宠大小不再被回弹(#304)

开着「直播捕获兼容」时,右键 →「大小」→ 任意档:闪一下变新尺寸又弹回,
config-slot-0.json 里仍是旧值;只有设置页能改。

根因:改大小时写了个"用户自定义过"的旗标但它留在未落盘的草稿区,紧接着的
尺寸自存直接写档案,于是文件监视器触发的重读拒绝作废旧快照——读回写入之前的
尺寸并照着它把窗口弹回去。修法两侧各一刀:旗标当场落盘 + 几何自存后作废只读视图。

四、台词语音不再「一个文件都不生成」(#305)

「设置里点试听有声音,但台词语音不生成」——两条完全独立的链路:

  • 「试听」走内置 TTS 注册表(edge / SAPI / 豆包 / MiMo);
  • 「台词语音」原本绕开注册表,直连机主自建的 CosyVoice 服务,服务不在线只打一行
    日志就返回。

现在台词语音改用与试听同一个后端("试听能响"因此等价于"台词能生成"),
自建服务保留为可选覆盖;补上"独立设置进程保存后立即触发";台词名单改为按每只
宠自己的档案
读(之前读主配置,只看到 5 句默认台词,而本机实际是 22 句)。
另外修掉一个让离线语音彻底不可用的既有缺陷:SAPI 合成缺线程级 COM 初始化,
后台合成一律报 尚未调用 CoInitialize。

五、其他修复

  • 歌词不再长期占用高优先级气泡位(#300):开着「显示歌词」时 Agent 联动的
    开始/完成气泡几乎永不出现——歌词每秒重刷把重要气泡位永久续期了。改为歌词不占位。
  • 任务栏不再被压到 z 序底部(#296):合成窗给窗口设了 Shell 的官方豁免
    NonRudeHWND,不再被当成全屏应用。
  • Hermes Agent Link 桥接(PR #298,作者 NoelLuo):把 Hermes 的生命周期与
    审批 hook 接进桌宠既有 Agent Link,并记录 Chat 走 Hermes API Server 的接入方式。

六、升级说明

  • 无需迁移:没有新的配置格式、没有既有键改名;新增的唯一键
    todo_reminder_speak 默认关。
  • 安装形态不变(onedir + Inno Setup 安装包 + 便携 zip)。
  • 多屏用户升级后建议检查一次设置 → 窗口与系统 →「允许桌宠跨屏」是否按需开启。

七、已知问题

  • 混合 DPI 下多屏渲染会有一侧略糊(Qt 单窗只能一个 DPR),见 §一。
  • 换音色/换后端不会让已缓存的台词失效:缓存键只有文本,旧句子仍播旧音色。
  • issue #286(Windows 11 + 150% DPI 下桌宠不可见、鼠标整屏失效)仍未定性,
    本版不含它的修复。
  • 截图识别的检测/识别分块仍有误差(例如把相邻词块多带一个字母),不在本版范围。