Skip to content

Releases

v0.4.4 · 修复窗口恢复与多屏拖动裁切

Choose a tag to compare

@timevisitor timevisitor released this 10 Nov 02:18

下载

  • Windows 10/11 x64:catwhale-pet-v0.4.4-win-x64.zip,185126102 字节。
  • SHA256:573beb7ce423d9f5b2779fc282a2732b008ee5836c72da729477bccb963f931e;另附 SHA256SUMS.txt 供校验。
  • 解压后双击 桌宠.exe。升级时先从托盘退出旧版,再替换程序目录;个人设置和皮肤仍从本机用户配置目录读取。

这一版改了什么

  • 修复多显示器、缩放或工作区变化后,透明窗口仍保持旧尺寸,导致拖动角色在屏幕内部被矩形边界裁掉的问题。窗口会按所选屏幕的最新工作区自动校准;所选屏幕不可用时回退主屏。
  • 修复最小化后缺少明确恢复入口的问题。托盘新增「显示桌宠 / 恢复窗口」,再次启动程序也会恢复已有窗口并校准尺寸。
  • 窗口恢复和退出游戏模式后重新校准;游戏模式生效期间保持隐藏。保留原有角色位置、大小、皮肤和屏幕切换行为。
  • 本版包含 v0.4.3 的动画片段循环功能。

验收证据

  • 同一真实包测试脚本:注入陈旧窗口尺寸后,显示器参数变化、最小化恢复、隐藏后显示,旧版 0/3 通过,新版 3/3 通过。
  • 四屏切换、保存屏失效回主屏、二次启动恢复、游戏模式保持隐藏及退出恢复:8/8 通过。
  • Windows 实际鼠标拖动检查:5/5 通过,覆盖右侧、底部与左上位置,以及安装副本复验。
  • 新增工作区校准单元测试:11/11 通过;独立规格与代码质量审查通过。
  • 全量测试 92/94 通过;另 2 项测试夹具在旧版基线同样失败(旧源码定位锚点、外部变量桩缺失),此次未扩大范围处理。
  • 发布包源码/目录/ZIP 载荷哈希一致;个人信息与密钥扫描未发现命中。

前置条件与已知限制

  • 未重启电脑复验当次开机;已验证普通启动、恢复和多屏切换。原始故障由哪个系统事件触发,仍缺少当次开机轨迹。
  • 显示器事件回归采用真实 Electron 包内注入窗口旧尺寸和显示通知;未物理拔插显示器。
  • 桌宠与拖动功能可直接使用;文件搜索需 Everything,聊天需单独配置 API 和 DeepSeek Harness。

猫鲸桌宠 v0.4.3 · 动画片段循环

Choose a tag to compare

@timevisitor timevisitor released this 09 Nov 17:26

下载

下载 catwhale-pet-v0.4.3-win-x64.zip,解压后双击 桌宠.exe。Windows 10/11 x64,免安装。

  • 文件大小:185123853 字节
  • SHA256:b2f5770ffeadcb7a68df5de3564047eafb0b7e9ed8e652c1ae968adcf6882b77
  • 同页附 SHA256SUMS.txt,可用于下载校验。

这一版改了什么

  • 设置顶部新增「动画片段循环」:选择内置或当前皮肤的动作,填写起止秒数,预览后开启;一次性动作也能截取循环。
  • 关闭设置后继续循环;停止后恢复原自动行为。重启会恢复保存的开关和区间,拖拽及游戏模式结束后恢复片段。
  • 动画设置独立保存,不会因修改动画而重启聊天运行时。无效区间、损坏配置或缺失素材会给出明确提示。
  • 修复本地视频响应缺少长度信息导致指定时间回到 0 秒的问题,补上 Content-Length 和单区间 Range 响应。
  • 修复视频末尾回卷后不续播、加载重置起点,以及跳转失败时未真正暂停视频的问题。

使用入口:右键桌宠 → 设置 → 动画片段循环。选择动作和起止秒数,先点「预览片段」,确认后点「开启循环(保存)」;点「停止循环」恢复自动行为。

验收证据

  • 本次针对性测试:60/60 通过。
  • 完整打包程序的界面与播放检查:64 项通过,0 项失败;覆盖连续回绕、视频末尾、停止、重启恢复、拖拽、游戏模式、皮肤动作和异常配置。
  • 构建与证据核验:73 项通过,0 项失败;关键代码在源码、便携版和发布版中指纹一致。
  • 新增逻辑已经独立审查,片段跳转失败和回卷失败均有先失败后通过的回归验证。

前置条件与已知限制

  • 任意截取片段的首尾可能不连续,本功能按时间回跳,不会自动生成过渡帧。区间最短 0.2 秒,终点不能超过视频真实时长。
  • 固定片段优先于自动、菜单、Agent 与任务动作;用户手动互动可短暂插播。游戏模式和拖拽仍优先处理。
  • 包内不含个人 API key。聊天和文件搜索仍分别需要自己的 Harness 配置及 Everything。
  • 全仓回归有 2 项在原 v0.4.2 同样失败的历史测试夹具问题(DOM 代码截取锚点、Node 桩状态);本次新增功能的针对性测试通过。
  • 界面输入由 CDP Input 驱动;本次未重新用操作系统真实鼠标测点击穿透,未修改穿透链路。

v0.4.2 Agent 看板:修「输出中」僵尸会话堆积

Choose a tag to compare

@timevisitor timevisitor released this 07 Nov 17:20

修:Agent 看板「输出中」僵尸会话堆积

看板会话数会一直涨,一度显示 33 个会话、其中 32 个停在「输出中」,最久一条挂着 839 分钟(近 14 小时)。

根因

app/agent-dock.js 的 _expire() 只给 done / error / sleeping / working / waiting_user 做过期清理,漏了 speaking 与 idle。

而 Hermes 会话被中断(/stop、Ctrl+C、关桌面窗口、进程退出)时,收尾事件(on_stream_end / agent_loop_stopped)不会发出来,最后一条推送就停在 on_stream_delta —— 状态永久卡在「输出中」,只能等桌宠重启才清空。

修复

  • 新增 staleSpeakingMs(180 秒)与 staleIdleMs(300 秒)失联超时,和 working(150 秒)同一套判据。
  • 流式输出时 delta 间隔是秒级,180 秒足够宽松,不会误伤真在说话的会话。

验收

项 结果
tools/dock-selftest.js 42/42 通过(新增 3 条断言:speaking 未超时保留 / 超时收起 / idle 超时收起)
拿当时真实的 33 条快照跑新规则 33 → 2(只剩真活跃的两条)
重打包后重启实测 3 分钟后稳定在 1 条当前会话
发布包核验 zip CRC 全部通过(76 个条目);包内 agent-dock.js 含新代码、package.json 版本 0.4.2

下载

catwhale-pet-v0.4.2-win-x64.zip —— 解压后双击 桌宠.exe,免安装、免运行库(Windows 10/11 x64)。

v0.4.1 开机不再卡:启动提速 + Everything 自动适配 + 游戏模式

Choose a tag to compare

@timevisitor timevisitor released this 03 Nov 05:02

这一版修的是「开机那一刻」和「进游戏那一刻」

1. 开机不再卡主线程:1184ms → 12ms

病因:启动自检要查 git / node / pnpm 三个工具链版本。旧实现每个工具先同步跑 4 次 where.exe,
再同步跑一次 --version,一次约 1.3 秒,而自检里这条路径还走了两遍。主进程被同步阻塞,
这期间桌宠的拖动、点击穿透、动画切换全部停住——就是"开机卡一下"。

改法:

  • exeCandidates() 改成纯 JS 遍历 PATH 找可执行文件,不创建任何进程;查找顺序与旧版完全一致(.cmd → .exe → .bat,同扩展名按 PATH 顺序)。
  • tryRun / toolVer / envTools 改成异步,三个工具并行查,结果缓存 5 分钟;部署 harness 前传 force=true 现查。
  • 开机快检不再查工具链;全量自检时工具链与 Everything 探测并行。
  • resolveNode() 结果进程内缓存,envTools 查到合格 node 顺手填进去。

实测(新增 --startuptest:跑同一条开机代码路径,在固定 8 秒窗口量主进程事件循环最大延迟;新旧各 3 次):

场景 旧版 新版
Everything 已在运行 主线程最长冻 1184~1218ms 12~15ms
Everything 没在运行 1.2s + 2.4s + 1.2s,最后弹向导要手点 最长约 94~140ms,自动就绪

剩下的约 100ms 已用对照实验确认来自 Everything 冷启动载入 250MB 数据库时抢占整机资源
(只拉起 Everything、不跑任何检测也有同样延迟),不是桌宠的阻塞调用。

2. Everything 开机自动适配

以前每次开机都要在自检向导里手点「用检测到的这份启动」,今天点了明天还得点。

  • 新增 startupEnvRoutine():快检 → Everything 状态为 missing 就调 autoAdaptEverything() → 仍有缺项才弹向导。
  • autoAdaptEverything() 只启动 settings.json 里 everything.exe 记录的那份(用户点过/部署过的),
    参数 -startup(后台运行、不弹主窗口),然后异步轮询 IPC 就绪,实测 4~8 秒。
  • 便携 1.5 alpha 的 IPC 实例名是 1.5a:probeEsInstance 连上即写回 pet-state.json;
    同时从 exe 同目录的 Everything-<inst>.ini 推出实例名,排在候选第二位。
  • 偶发(8 次里 1 次):拉起的进程只建 EVERYTHING_DUMMY 窗口、IPC 一直不出来。处理方式只针对自己刚拉起的 pid,
    活着但 25 秒没连上就结束它重拉一次;用户自己开的 Everything 不碰。
  • 开关:settings.json 的 everything.autoLaunch(缺省 true),自检向导 Everything 卡片里也有勾选框。
  • 部署 Everything 写配置时改为合并写,不再覆盖掉 autoLaunch。

真机端到端:关掉 Everything → 无参数启动打包版 桌宠.exe → 9 秒后 es.exe 可查询,
Everything 父进程为桌宠、命令行 Everything.exe -startup,全程无人操作。

3. 游戏模式(反作弊兼容)

起因是有用户反馈桌宠与腾讯 ACE 冲突。先说实测到的桌宠系统级行为(Frida 拦主进程):

行为 结果
全局低级鼠标钩子 WH_MOUSE_LL 有,25 秒 1559 次回调(来源是 Electron 的 setIgnoreMouseEvents(true,{forward:true}))
全局热键 RegisterHotKey 4 个
全屏透明置顶窗口 有(WS_EX_LAYERED|TRANSPARENT,screen-saver 级置顶)
注入 DLL / 读其他进程内存 / 驱动 无

因此新增游戏模式:每 8 秒异步 tasklist(只看进程名),命中
SGuard64.exe / SGuardSvc64.exe / ACE-Tray.exe / EasyAntiCheat*.exe / BEService.exe / vgc.exe
(或 settings.json 里 gameMode.extraProcs 的进程名)就:

  1. setIgnoreMouseEvents(true, {forward:false}) → Electron 自己 UnhookWindowsHookEx 卸掉全局钩子;
  2. globalShortcut.unregisterAll() 释放全部热键;
  3. 取消置顶并隐藏窗口,停掉 sysinfo 采样;
  4. 页面侧关闭所有面板、暂停全部视频、停掉 50ms 光标轮询,tick() / applyState() 直接返回。

命中的进程消失后自动恢复:显示窗口、恢复置顶、重新注册热键、回待机。

托盘新增「🎮 游戏模式」:自动(默认)/ 现在就进入 / 关闭。

验证(改名的 ping.exe 冒充反作弊进程 + Frida 计数):

阶段 存活全局钩子 3 秒钩子回调 可见主窗口 视频解码
正常 WH_MOUSE_LL 1214 1 播放
进入游戏模式 无 0 0 2 秒增量 0 帧
退出游戏模式 WH_MOUSE_LL — 1 2 秒增量 48 帧

能力边界:只保证"游戏模式下桌宠没有上述系统级行为",不能保证 ACE 一定不再报(ACE 判定规则闭源)。
明确不做:隐藏进程、改名伪装、限制或关闭 ACE 进程/服务(有封号风险)。

升级说明

免安装便携版:解压覆盖到原来的目录即可。配置在 %APPDATA%\桌宠\(settings.json / pet-state.json),
覆盖 exe 不受影响;皮肤在 %APPDATA%\桌宠\skins\,也不受影响。

校验

项 值
资产 catwhale-pet-v0.4.1-win-x64.zip
大小 185,101,679 字节(176.5 MiB)
SHA-256 d3eba56ea6e601beee113394c7eed24adf36b90aaf013525c3b169a86724894c

出包前跑过个人信息硬门禁(API key / 用户名 / 个人路径 / 业务敏感词),扫描通过;
包内 main.js、preload.js、renderer/index.html 与仓库源码 md5 逐一比对一致。

已知限制

  • 游戏模式只在"检测到已知反作弊进程"时生效;真实环境下的进程名若不在名单里,可用 gameMode.extraProcs 补。
  • 真 ACE 环境(英雄联盟等)的验证还需要你自己开一局确认;本机只做了冒充进程的等价验证。
  • 稳态 CPU 的大头仍是 VP9-alpha 软解 + 全屏透明窗口合成,这一版没有动它。

v0.2.0 皮肤系统:动作素材外置 + 独立皮肤编辑器

Choose a tag to compare

@timevisitor timevisitor released this 24 Oct 02:57

皮肤系统:动作素材外置,换装不用重打 exe

这个版本把「动作素材」从安装包里解耦出来:你可以自己换视频、改触发逻辑、调大小与比例,
桌宠 2~3 秒内自己换装。

皮肤包长什么样

%APPDATA%\桌宠\skins\
  active.json                 {"slug":"my-catwhale"}
  my-catwhale\
    skin.json                 { format, id, name, updated, actions: { <动作id>: {...} } }
    videos\idle.webm ...

皮肤里的动作按 id 覆盖/追加到内置 states.json,没写的继续用内置素材——
所以「只改一个动作」和「整套替换」都成立,而安装包里内置的素材一个字节都没动。

桌宠侧

  • 新增 SKIN_ROOT、本地 http 的 /skin/ 路由、skin:get IPC。
  • 每 2.5 秒比对 skin.json 的 mtime+size,变了就地 reload();皮肤被删掉也会重载一次,
    自动退回内置素材。位置与聊天记录在 pet-state.json / chat-history.json,不受影响。
  • 皮肤视频走 http 而不是 file://:页面要靠 canvas 采样 alpha 做逐像素点击穿透,
    file:// 下 canvas 会被污染,穿透会退化成矩形。
  • transform 支持分轴缩放:scale(整体)/ scaleX·scaleY(宽高比例)/ offX·offY(百分比位移);
    都不写时等价于原来的 scale(1),老配置行为不变。
  • 空闲小动作改为按权重抽取(原来等概率),可用 weight 调出场率。

配套的独立编辑器(skin-editor/)

一个单独窗口程序,和桌宠只通过 %APPDATA%\桌宠\skins\ 交换文件,删掉它桌宠照常跑:

  • 导入动作:绿幕自动抠像(默认取左上角像素色)→ VP9+alpha WebM;也可直接吃带 alpha 的源。
  • 触发逻辑:空闲随机循环 / 空闲小动作 / 点击互动 / 干活中,各带权重。
    四个核心状态(待机 / 菜单 / 拖动 / 松手)由主程序按 id 直接引用,只能换视频、不能改名。
  • 大小与比例:整体缩放(以脚底 96.67% 为原点,放大人不离地)+ 宽/高分开的 scaleX/scaleY
    • 百分比位移,可一键套用到全部动作。
  • 三条参考线:脚底基线 / 标准身高(当前皮肤待机实测头顶)/ 当前动作头顶。
    后两条是解 VP9 alpha 量出来的(必须 libvpx-vp9 解码器,原生解码器不出 alpha),
    按 object-fit: contain 的留边和 transform 换算,紫线跟着缩放实时移动。

用法:解压后双击 skin-editor\启动编辑器.bat(用桌宠自带的 Electron 运行时,不需要另外安装)。

回退

编辑器里删掉皮肤,或直接删 %APPDATA%\桌宠\skins\active.json,2.5 秒内回到内置素材。

安装包

catwhale-pet-v0.2.0-win-x64.zip:解压后双击 桌宠.exe,免安装、免运行库。

  • sha256:e8cee5f36deaae92bb376136ca0730e31d7ff2a9b39c059540c7dc1240daafb2
  • 首次运行本版需要重启一次桌宠(旧进程占着文件),之后换皮肤都是热装。

猫鲸桌宠 v0.1.8(Windows x64 便携版)

Choose a tag to compare

@timevisitor timevisitor released this 20 Oct 16:29

猫鲸桌宠 v0.1.8(Windows x64)

这一版包含 v0.1.7 的四个新待机动画(v0.1.7 当时只推了源码、没有单独发 Release)。

下载

catwhale-pet-v0.1.8-win-x64.zip — 解压后双击 桌宠.exe(免安装、免运行库)

  • 大小:180788534 字节(约 172.4 MiB)
  • SHA256:23deff7a76ea00f1e8cf36afad5f49d71618c8f1f8f96c352fe05eb2b946d670

这一版改了什么

新:启动看门狗 + 兼容模式(针对 issue #1 的启动崩溃)

issue #1 报告的是双击后卡几秒、窗口一直没出现、进程直接消失,异常码
0x80000003(STATUS_BREAKPOINT,Chromium 的 CHECK() 失败走 __debugbreak)。
这类崩溃 JS 层接不住:uncaughtException、render-process-gone、crashReporter 都不会触发,
进程被系统直接回收,所以没法在崩溃当刻做任何补救。

能做的是下一次启动换一套更保守的参数:

  • 每次启动把阶段写进 %APPDATA%\桌宠\boot-guard.json:
    process-boot → window-created → page-loaded → ready。
  • ready 是终态,正常退出不会覆盖它,所以不会被误判成崩溃。
  • 下次启动若发现上次停在中间态、且距上次启动 10 分钟内(排除关机/强杀),判定启动期崩溃,
    兼容等级 +1,并往 %APPDATA%\桌宠\boot-guard.log 追加一行
    (含上次停在哪个阶段、检测到的输入法安装路径、Electron/系统版本、各阶段耗时)。
等级 做了什么 代价
L1 建窗延后 800 ms(让输入法的注入/初始化先跑完) 启动慢 0.8 秒
L2 L1 + disableHardwareAcceleration() + disable-gpu-compositing 透明窗口走软件合成,CPU 升高、动画可能掉帧
L3 L2 + disable-gpu + 延迟 3 秒 + 置顶从 screen-saver 降到 normal 启动慢 3 秒
  • 等级 >0 时托盘点顶部出现「🛡 兼容模式 Lx — 点这里恢复默认」,点一下清零(下次启动生效)。
  • 命令行:--compat=0..3(只影响本次,不落盘)、--compat-off(本次按正常跑)、
    --compat-reset(清零并清失败计数)。

修:disable-features 被后续开关整体覆盖

Chromium 只认最后一次 appendSwitch('disable-features', ...)。原先那行
CalculateNativeWinOcclusion 会被后加的开关整个顶掉,现在拼成一份再 append。

没有采用 disable-features=TSFImeSupport

本来想用它绕开输入法注入的 TSF hook,实测拦不住:同一环境里 L0 与
--compat=1 下进程的模块总数(93)与搜狗模块(7 个:SogouTSF.ime、SogouPY.ime、
ichat、isgpet、PicFace、systembeautify、Resource.dll)完全一致。
它唯一的确定效果是"用户可能打不了中文",收益又未证实,所以从降级档里移除。

验收证据(本机实测,非推演)

测试环境:Win11 26300、Electron 44.4.2、2560×1440 @150%(AppliedDPI=144)、
搜狗输入法 16.9.0.5535 常驻并注入 7 个模块。

  • 正常启动 3 次:全部存活到 ready,建窗 +120~130 ms,无新 dump。
  • 分档启动:L0 +112 ms / L1 +926 ms / L2 +918 ms / L3 +3119 ms,四档全部存活到 ready。
  • --compat=N 不落盘:level 始终 0,只记 runLevel。
  • 模拟崩溃(把 state 写成 phase=window-created、1 分钟前)后再启动:自动升到 L1,
    建窗延迟 932 ms 生效,正常到 ready。
  • 便携版重新打包后同样验证通过(包内 resources/app/boot-guard.js 存在且生效)。
  • 发布门禁:node tools/check-channels.js → CHANNELS-PASS(preload 5/33/8 与主进程
    5/33/8 对齐,setIgnoreMouseEvents 2 处调用点符合预期)。

要说清楚的:这套降级机制本身验证过了,但本机复现不出 issue #1 的崩溃
(同样的搜狗注入、同样的分辨率与 150% 缩放,就是不崩),所以"哪一档能真正救回那台机器"
仍未验证。那份 dump 显示他机是搜狗 16.6.0.4777 + RTX 4070 Laptop(驱动 617.14) +
Win11 25H2 预览版 26200.9457,差异可能在这三者。

前置条件(与上一版相同)

  • DeepSeek 聊天:需要在「设置」里填自己的 DeepSeek API key(只存本机、Windows 凭据加密),
    或先部署 DeepSeek Harness 仓库;环境自检向导里可以一键部署。
  • 文件搜索:需要本机装并运行 Everything(es.exe 已随包附带,无需另装)。
  • 两项都没装也能正常使用桌宠本体(拖拽/菜单/其它面板)。
  • exe 未做代码签名,SmartScreen 提示时点「更多信息 → 仍要运行」。

猫鲸桌宠 v0.1.6(Windows x64 便携版)

Choose a tag to compare

@timevisitor timevisitor released this 15 Oct 08:03

猫鲸桌宠 v0.1.6(Windows x64 便携版)

解压后双击 桌宠.exe 即可,免安装、免运行库。包内不含任何 API key —— key 由你自己在设置面板里填,
只存在本机 %APPDATA%\桌宠\settings.json(Windows 凭据加密)。

本次更新

优化

  • 视频按需加载:8 个状态原本一律预加载;现在只给常演状态(idle / stand_arms / grabbed / working)预加载,
    其余首次演到时才载入,空闲时段还会提前 7~14 秒预热下一个状态。
  • 事件监听器登记与清理:bindEvents() 里 43 处监听改由登记表统一管理,页面卸载时显式摘除。
  • harness 仓库探测结果落盘:命中缓存前先校验该路径当下仍是仓库根,目录移走就自动重扫(冷启动 40.0ms → 命中缓存 4.1ms)。
  • 仓库状态提示更明确:目录不对时直接给出「源码仓库根目录长什么样」的正例与常见反例。
  • 错误/异常文案集中到一处常量表,便于以后统一改写。

修复

  • 刷新页面后聊天记录不渲染:loadChatFromStorage() 原先落在函数体外的顶层裸语句上,脚本解析期即执行
    (此时 DOM 引用尚未就绪),内部 renderChat() 抛错被自身 catch 静默吞掉;已改为在 init() 末尾调用。
    验收方式是 CDP 直读刷新后的 #cmsg 文本:修前为空,修后为写入的标记文本。

仓库整理

  • tools/record/、tools/video/、HANDOFF_*.md 改为整目录/整模式忽略,并从提交历史中彻底清除
    (此前被 git add -A 误提交进公开仓库,其中交接单含开发机绝对路径)。

文件

项 值
文件名 catwhale-pet-v0.1.6-win-x64.zip
大小 164341634 字节(约 156.7 MB)
SHA256 6a13eb4b9fda860663667deedefe507abc1ba6eb04dec2cfe3ed9e23c4a4a9ed
内容 桌宠_发布版/(解压即用)+ 使用说明.txt

已知限制

  • 未签名 exe:首次运行 Windows SmartScreen 会拦一下 —— 「更多信息」→「仍要运行」。
  • Everything 不随包分发:包里只有官方 es.exe 命令行客户端,文件搜索需要你自己装 Everything 本体。
  • 聊天需要本机 harness:走你自己机器上的 DeepSeek Harness 源码仓库 + 你自己的 API key;
    仓库位置可在设置面板里选,或让它自动探测。
  • 只支持 Windows 10/11 x64。

猫鲸桌宠 v0.1.5(Windows x64 便携版)

Choose a tag to compare

@timevisitor timevisitor released this 01 Oct 02:18

猫鲸桌宠 v0.1.5(Windows x64)

下载

catwhale-pet-v0.1.5-win-x64.zip — 解压后双击 桌宠.exe(免安装、免运行库)

  • 大小:164338912 字节(约 156.7 MiB)
  • SHA256:a1439f963a820a40e4df4c6352e652e5d5cb2bd4d31e3dd8e6f739dcf4a8732a

这一版改了什么

修:环境自检向导弹出后,面板里的按钮全都点不动(用户反馈)

  • 症状:启动后弹出的「环境自检」窗口里,「重新检测 / 关闭 / 用检测到的这份启动」点了没反应。
  • 根因:桌面版是「全屏透明窗口 + 逐像素点击穿透」。页面里判定“光标这一处能不能点”的白名单漏了自检面板 #envwiz:
    面板画得出来、按钮的点击代码也都在,但窗口一直处于穿透状态 → 落在按钮上的鼠标事件被系统交给了窗口下面的东西
    (实测点「关闭」时前台窗口变成桌面 Program Manager),页面根本收不到点击。
  • 修法:白名单补上自检面板;面板开/关时各补一次命中重算,弹出当下就能点。
    另外「用检测到的这份启动」现在会把检测到的那份路径真正传给主进程(此前这个参数没被转发,
    实际会落回“配置里/自动探测到的那一份”)。

验收证据(真窗口 + 真光标 + 真点击,从窗口扩展样式外部读回,不靠程序自己的日志)

  • 修前:光标停在「关闭」按钮上时窗口仍带 WS_EX_TRANSPARENT(照样穿透);按真左键 → 前台变成 Program Manager(桌面)、
    向导依旧开着 —— 就是用户看到的“点了没反应”。
  • 修后:同一点上 WS_EX_TRANSPARENT 不置位(窗口可交互);按真左键 → 向导关闭、窗口恢复穿透。
  • 离屏对照台(真 preload.js + 真渲染器,只把主进程的环境通道换成桩):修前三个按钮的 uiHitAt / lastInteractive
    全为 false,修后全为 true,远离面板的空白点仍为 false(负例对照)。
  • 防回归:node tools/check-channels.js 新增白名单校验(web/index.html 与 app/renderer/index.html 都查)。
    反向对照已验:去掉 #envwiz 它会精确报错并以退出码 1 失败。

前置条件(与上一版相同)

  • DeepSeek 聊天:需要在「设置」里填自己的 DeepSeek API key(只存本机、Windows 凭据加密),
    或先部署 DeepSeek Harness 仓库;环境自检向导里可以一键部署。
  • 文件搜索:需要本机装并运行 Everything(es.exe 已随包附带,无需另装)。
  • 两项都没装也能正常使用桌宠本体(拖拽/菜单/其它面板)。

猫鲸桌宠 v0.1.4(Windows x64 便携版)

Choose a tag to compare

@timevisitor timevisitor released this 28 Sep 02:13

猫鲸桌宠 v0.1.4(Windows x64)

下载

catwhale-pet-v0.1.4-win-x64.zip — 解压后双击 桌宠.exe(免安装、免运行库)

  • 大小:164338844 字节(约 156.7 MiB)
  • SHA256:04097a6ffcae54edb9e038c2aa6dca178e3b3a74257e123a1ffbfa3375c97540

这一版改了什么

1. 新增:GitHub 新版本自动检测与更新提醒

  • 启动静默检测:应用启动 5 秒后在后台静默检查 GitHub Releases 最新版本(带超时防护与静默容错,不阻碍日常使用)。
  • 托盘菜单置顶提醒:检测到新版本时,托盘右键菜单最顶部出现「🎉 发现新版本 vX.Y.Z(点击下载)」,点击一键直达下载页面。
  • 设置面板一键检查:设置面板增加当前版本号显示与「检查新版本」按钮,有新版时高亮提供下载入口。

2. 修:DeepSeek Harness 仓库路径设置与误报排查(用户反馈修复)

  • 统一判定逻辑:统一设置面板、环境自检、保存配置与启动运行时的仓库解析逻辑,修复手动输入有效目录却因不在自动探测列表而误报红字的 Bug;
  • 路径容错增强:自动处理带引号路径、首尾空格、环境变量(%VAR%)、~ 用户目录、常见 src 嵌套与单一解压目录,Windows 自动探测盘符扩展至 C–Z;
  • 设置交互优化:“重新探测”失败保留已有输入,“测试连接”调整为“保存并测试连接”(先保存后测试,避免以旧配置测试);
  • 运行时容错:动态解析 tsx/esm 绝对路径与锁定 TSX_TSCONFIG_PATH,修复跨工作目录启动时别名解析失败与缺少 tsx 的问题;
  • 依赖与 Node 要求对齐官方:聊天启动支持 Node 22.19+(22.x)与 24+,遇低版本 Node 自动回退至 Electron 内置运行时;Electron 打包支持 harness-sdk 补丁文件解包;
  • 自动化测试:新增 18 项 Harness 回归测试与 5 项版本更新检测测试,全量验证通过。

猫鲸桌宠 v0.1.3(Windows x64 便携版)

Choose a tag to compare

@timevisitor timevisitor released this 21 Sep 02:48

猫鲸桌宠 v0.1.3(Windows x64)

下载

catwhale-pet-v0.1.3-win-x64.zip — 解压后双击 桌宠.exe(免安装、免运行库)

  • 大小:160806305 字节(约 153 MiB)
  • SHA256:1d16502fb905a69ddaae2d26df0277d286d74655f25d239cb4a607ee8270de17

这一版改了什么

1. 修:搜索 / 聊天 / 设置 / 自检面板翻到右侧时,抬手动画没镜像

上一版(v0.1.2)只给 SAO 菜单做了"翻到右边就镜像",文件搜索、聊天、设置、环境自检这些面板走的是另一条摆位代码,
翻到右侧时手仍然朝左指。现在统一成一条判据:看面板实际落在角色中心的哪一侧,放下之后再判、之后再重算:

  • 面板在角色右侧 → 抬手动画镜像;在左侧 → 不镜像;面板关闭 → 立刻复位;
  • 拖动角色、改大小、换边导致面板重新摆位时,镜像跟着重算(以前设置/自检这两个面板甚至不会跟着角色移动,这次一并修了);
  • 逐像素点击命中与镜像同步(镜像后"看到的"和"点得到的"仍然一致)。

验收(可自己跑):

:: 行为矩阵:搜索/聊天/设置/自检/菜单 × 角色贴左/贴右 = 10 项
桌宠.exe --panelmirrortest --exit-after-test

:: 像素级:在面板开着的情况下,比对"开镜像"与"关镜像绕站姿中轴翻转"
桌宠.exe --mirrortest --exit-after-test > %TEMP%\mirrortest_out.txt
python tools/check-mirror-pixels.py %TEMP%\mirrortest_out.txt --prefix="MIRRORTEST_PANEL "

实测:行为矩阵 10/10;面板场景像素比对 7/7 — 开镜像 vs 绕轴翻转残差 1.69/255,
不翻转对照 52.72,平移 40px 负例 110.96,轴位扫描偏移 +0.00px;菜单场景无退化(1.68/255)。

2. 新增「环境自检」向导 + 一键部署(本次主功能)

以前"能不能聊天 / 能不能搜索"要靠用户自己猜:harness 仓库没装依赖报 Cannot find package 'tsx'、
Everything 没启动就只是"搜不到"。现在启动时自动快检,缺什么直接给按钮:

  • 快检不打扰:不联网、不扫盘,Everything 只探 ≤2 次实例(每次 2.5 秒预算),不拖慢启动;
    只有真缺东西、且你没勾"以后别再自动提示"时,才弹一次向导。托盘菜单里常驻 🩺 环境自检…,随时可重跑。
  • Everything:自动从官方源下载便携版 → 用官方 sha256 清单核对我们下载的那个 zip 那一行 → 解压到你选的目录 → 顺手启动。
    也会先找你机器上已有的那份(Downloads\Everything-*\、%LOCALAPPDATA%\Everything、Program Files\Everything 等)优先复用;
    还可以直接"打开官网下载页"自己装。
  • DeepSeek Harness:检测仓库、依赖(node_modules/tsx)、工具链(git / node / pnpm 版本);
    「一键部署」= git clone --depth 1 到你选的目录 + pnpm install(默认走 npmmirror 国内镜像),
    实时日志与进度、可随时取消;也可「浏览…」指定已有仓库,或只补装依赖。
  • 不随包分发第三方二进制:Everything 与 harness 都在使用者自己的机器上按需获取,且只从各自官方地址取;
    下载完成先校验官方摘要,校验不过就删掉重来。

工具链探测上踩过的两个 Windows 坑(都已处理):where.exe 会把没有扩展名的 shim 排在小 .cmd 前面,
Node 根本跑不起来 → 改成按 .cmd → .exe → .bat → 无扩展名 逐个真跑一次 --version;
解压 zip 一律用 %SystemRoot%\System32\tar.exe(git-bash 里的 /usr/bin/tar 会把 C:\ 当远程主机而失败),失败再退 PowerShell。

3. 新增自检入口

桌宠.exe --envcheck --exit-after-test                  :: 环境自检 → JSON(harness / Everything / 工具链)
桌宠.exe "envdeploy=everything:D:\Everything" --exit-after-test   :: 非交互部署(真下载、校验、解压)
桌宠.exe --panelmirrortest --exit-after-test           :: 面板镜像矩阵

已知限制

  • exe 没有代码签名,Windows SmartScreen 会提示"未知发布者":点"更多信息 → 仍要运行"即可。
  • 聊天需要本机有 DeepSeek Harness(向导可一键部署,装完依赖约 1.8GB,主要耗时在下载);
    只 clone 不装依赖会报 Cannot find package 'tsx'。
  • 文件搜索需要 Everything 处于运行状态(向导可一键部署或启动你已有的那份)。
  • Everything 首次运行可能请求管理员权限(读 NTFS 索引);不给也能用,会退化成扫描模式。