0.3.0 —— 固定用户数据落点,补上无头测试
dsh-multi-instance 0.3.0
把 DeepSeek Harness(dsh)的 Web 界面装进一个多窗格桌面客户端:
多开多个实例、每个实例一个窗格、自由排布与缩放、每格独立浏览器会话。
这个版本修掉了一个会丢用户数据的缺陷,并给仓库补上了能无头运行的测试。
下载哪个
| 文件 | 说明 |
|---|---|
DSH.Multi-Instance-Setup-0.3.0.exe |
安装包(NSIS)—— 可选安装目录,建桌面与开始菜单快捷方式 |
DSH.Multi-Instance-0.3.0-x64.zip |
免安装包 —— 解压即用,不写注册表,适合放 U 盘 |
文件名里的点是 GitHub 上传时把空格换掉的(本地产物名里是空格)。
需要 Windows 10/11。软件不含 dsh —— 装完在界面里点「下载实例」,或者接你已有的 DSH。
修了什么(重要)
用户配置会在改名后静默丢失。 Electron 的 app.getPath('userData') 默认等于 <appData>/<应用名>,
而应用名在开发态取 package.json 的 name、在打包态取 productName —— 于是开发态落在
%APPDATA%\dsh-multi-instance\,打包版落在 %APPDATA%\DSH Multi-Instance\。
这个项目改过三次名字,每改一次,旧目录里的实例列表、窗格排布和 Partitions/(持久化的登录态)
就留在原地没人认领。
实测现场:%APPDATA%\dsh-shell\config.json 里有 1 个窗格和 14MB 的 Partitions,
而当时的落点目录里只剩一个 ui 键。
这个版本把落点钉死,并在启动时做一次旧目录迁移:只在当前目录没有窗格时才动手,
取窗格最多的那一份 config.json,连带 Partitions/ 一起接过来。幂等,跑过一次之后不会再动。
如果你装过 0.2.0 或更早:升级后实例会自动接回来,日志里会有一行
[appdata] 已从 <旧目录> 迁移: config.json, Partitions(窗格 N 个)。
新增
npm test:36 条零依赖、纯 Node、不需要图形界面的用例,覆盖落点解析与迁移的全部分支
(含幂等、坏配置、不覆盖已有会话、失败不抛)、实例地址解析、npm 入口的运行时查找。
原先仓库里只有要起真窗口的--selftest*,CI / SSH / 容器里一条都跑不了 —— 上面那个缺陷就是这么漏过去的。- GitHub Actions:push 与 PR 时在 Windows + Linux 上跑测试、语法检查、以及
package.json与CHANGELOG.md的版本一致性检查。 CHANGELOG.md/SECURITY.md/CONTRIBUTING.md/ issue 表单 / PR 模板。tools/social-preview.py:生成 1280×640 的社交预览图(配色直接取style.css的纸色变量)。
文档修正
- 删掉一条实测为假的说法:「构建路径不要含中文」。electron-builder 26.15.3 在含中文的路径下能正常打包 ——
这两个产物就是在原地(路径含中文)打出来的。 - README 中英双侧补齐:目录导航、
npm test一节、落点钉死与自动迁移的说明、
「升级后实例列表空了」的排障条目、相关项目互链、CI 徽章。
校验
npm test→PASS passed=36 failed=0(exit code 0)- 产物:
exe是有效 PE(MZ+PE\0\0签名);zip79 个条目、testzip()无损坏 - 产物内
resources/app.asar的package.jsonversion =0.3.0,
且确实含src/main/appdata.js(APP_DIRNAME常量与迁移函数都在) - 真实数据上跑过迁移:从
%APPDATA%\dsh-shell\迁出config.json+Partitions(1 个窗格),
第二次运行为skip-target-ok
完整变更:CHANGELOG.md