Releases: IDKWhatID2Use/whales-launcher
Release list
WhalesLauncher v1.0.3(修启动崩溃 · 设置页勾选 · 打包修正)
WhalesLauncher v1.0.3 —— 修实例启动崩溃、设置页勾选与崩溃页排版,并修正打包
DeepSeek Harness (dsh) 的实例与版本管理启动器。本版修掉三个用户直接反馈的缺陷,
并修掉发布流程本身的一个缺陷:此前两版的发行包里,编译进侧车(bridge)的版本号都是
上一版的(v1.0.2 的包内写着 1.0.1,v1.0.1 的包内写着 1.0.0),于是「关于」页显示的
「启动器版本」与实例包元数据里的 launcherVersion 都写错了版本。
下载
| 文件 | 说明 |
|---|---|
WhalesLauncher-v1.0.3-win-x64.zip |
完整应用(解压后 231.71 MB;zip 89.32 MB,解压即用) |
解压后双击包内的 WhalesLauncher.exe 即可运行(包内另有 README-发布说明.txt 与
启动 WhalesLauncher.bat)。不需要安装 .NET 运行时(已自包含)。
环境要求
- Windows 10 1809(10.0.17763)或更高,64 位
- Node.js 不需要你预装 —— 本机已有的会被优先沿用;一个都没有时,启动器会自动下载
官方 Node v22 LTS 便携版(约 30MB,校验官方 SHA-256,解压到<启动器根>\runtime\node\,
免管理员权限、不改系统设置,且自带 npm)
本次修正(相对 v1.0.2)
1. 实例启动崩溃:settings.yaml 的换行被写成纯 CR(用户报告 krea2 启动即崩)
- 现象:实例每次启动都崩,日志尾部是
settings-file: invalid document … BLOCK_AS_IMPLICIT_KEY at line 1, column 15…。 - 根因:WinUI 的
TextBox(RichEdit)用\r作段落分隔符。在「实例详情 → 设置」里编辑并
保存settings.yaml时,读进来是 CRLF、交回后端的是纯 CR 文本;原来后端只做
"YAML 能解析"校验,而校验用的 js-yaml 接受纯 CR,dsh 用的yaml包不接受 ——
整份文件被当成一行,实例启动必然失败。前一个版本写入的文件因此是坏的。 - 修法(三层):
- 编辑器读写一律归一到
\n(YamlEditorView.xaml.cs)——
顺带修掉两个同源症状:装载完成就误报"有未保存的更改"、行号列只数出 1 行; - 后端写入前归一,并让
validateYaml显式拒绝孤立 CR
(src/core/profile.ts); - 实例包导入时同样归一(
src/core/modpack.ts)。
- 编辑器读写一律归一到
- 回归护栏:新增真 dsh 端到端用例"编辑器式 CR 文本经归一后实例必须能启动",以及
CR/CRLF 归一与孤立 CR 拒绝的单元用例。
2. 实例设置页看不到当前隔离策略(用户报告)
- 现象:四个维度(工作区 / 存档 / 设置 / 凭证)八个选项全是未选中的空圆点,
用户无法判断当前实例用的是哪一档;只有AutomationProperties.Name里写着维度名(喂屏幕阅读器)。 - 根因:
muxc:RadioButtons的程序化勾选不生效 ——SelectedIndex/SelectedItem
写进去读回都正确,界面就是不画勾。 - 修法:四个维度改用普通
RadioButton+GroupName(契约字面值放Tag,选中态直接写
IsChecked),并补上屏幕上可见的分组小标题(工作区 / 存档 / 设置 / 凭证)。 - 验证:UI 自动化用例 P3 全 8 项通过(含新增 P3-08「每个维度都有可见分组标题」),
截图确认当前档位已被勾中。
3. 崩溃页:日志读不到、按钮被顶歪(用户报告)
- 现象:实例崩溃后,崩溃原因与 stderr 原文被塞进页头那一行说明里;页头被撑成十几行,
右列的「返回 / 打开文件夹 / 启动」按钮随之错位,而被挤扁的内容区无法滚动。 - 修法:页头只留"状态 · 端口 · 地址",崩溃原文改为页头下方限高 160 且可滚动的错误条
(等宽字体、可选中复制),并给一个「查看日志」按钮直接跳到日志页签;实例卡片上的崩溃摘要
截断到 120 字(全文进 ToolTip),不再把卡片撑高。
4. 发布流程:包内版本号是上一版的(v1.0.1 与 v1.0.2 均受影响)
- 根因:版本号在构建期编译进
dist/bridge/server.cjs(--define:__WHALES_APP_VERSION__),
而dist/不入库;desktop/publish-release.ps1此前只做 .NET Release 构建、不重建侧车,
于是磁盘上陈旧的 bundle 静默进包。后果:app:version(「关于」页的「启动器版本」)
与pack:export写进实例包的launcherVersion都是错的版本号。 - 修法:
publish-release.ps1现在先重建侧车,并对dist/bridge/server.cjs
与入包后的bridge/server.cjs各做一次版本断言:与package.json不一致就退出
(exit 4 / 2),不再把版本号错的包发出去。 - 验证:本次发布的包解压后实跑,应用「关于」页显示 启动器版本 1.0.3。
质量与验证(本版)
- core 单元测试 18/18 文件通过(含新增的换行归一与孤立 CR 用例)
- 真 dsh 端到端 3/3 通过(创建 → 启动 → 探测界面地址 → 停止;CR 文本归一后启动)
- 渲染层 UI 自动化:73 通过 / 0 失败 / 1 不可判定(不可判定项需要访问 npm registry)
- 发布包实跑:把
WhalesLauncher-v1.0.3-win-x64.zip解压到干净目录、以全新数据根启动,
界面正常出现、「关于」页版本为 1.0.3、后端(侧车)握手成功
已知问题(如实列出)
- 日志页只显示实例运行时的实时输出,没有磁盘回填:崩溃后打开「日志」页仍是空态。
崩溃原因因此固定在崩溃条里呈现(可滚动、可复制),而不是只放在日志页。 - 深链进入详情页的页签选择存在偶发竞态:全套 UI 用例首轮偶见「日志」页 6 项失败
(选中页签仍是「插件」),单跑与复跑均通过。已登记,未在本版修。 - 教程配图未随本版重拍:
docs/assets/tutorial/*.png里画的左栏仍是改造前的形态,
设置页的隔离选项也还是"未勾中"的旧截图。 - 高对比度主题与 150% 文本缩放未走查(延续 v1.0.1 的登记)。
- 声明式
SelectedIndex在muxc:RadioButtons上的具体触发条件未继续深挖:本版只把
实例设置页换成普通RadioButton,向导页第 4 步(XAML 里内联选项)一直是正常的。
完整文档
校验
发布资产 SHA256:
36B154A83F559CF76BCED007284BD7AA219B68AD93A219928388121C74E8C87C WhalesLauncher-v1.0.3-win-x64.zip
下载后可用以下命令核对:
Get-FileHash .\WhalesLauncher-v1.0.3-win-x64.zip -Algorithm SHA256许可
Polyform Noncommercial 1.0.0
—— 非商业用途免费,未经授权不得商用。
WhalesLauncher v1.0.2
WhalesLauncher v1.0.2 —— 外壳左栏改为「功能列表」
DeepSeek Harness (dsh) 的实例与版本管理启动器。本版是一次界面信息架构修正:
左栏从「实例列表 + 两个底部入口」改为固定的功能列表,实例列表只保留在「实例」页内。
下载
| 文件 | 说明 |
|---|---|
WhalesLauncher-v1.0.2-win-x64.zip |
完整应用(89.31 MB,解压即用) |
解压后双击包内的 WhalesLauncher.exe 即可运行。不需要安装 .NET 运行时(已自包含)。
环境要求
- Windows 10 1809(10.0.17763)或更高,64 位
- Node.js 不需要你预装 —— 本机已有的会被优先沿用;一个都没有时,启动器会自动下载
官方 Node v22 LTS 便携版(约 30MB,校验官方 SHA-256,解压到<启动器根>\runtime\node\,
免管理员权限、不改系统设置,且自带 npm)
首次启动会跑一次环境与依赖自检,自动处理掉大部分"本该由你动手"的事:
| 情况 | 启动器的动作 |
|---|---|
数据目录(instances / engines / shared / cache)不存在 |
自动创建,并做一次写探针确认可写 |
| 本机没有任何 dsh 引擎 | 问一次后自动用 npm 安装最新版(联网、数百 MB、不可中途取消) |
| 本机没有任何可用的 Node.js | 问一次后自动下载官方便携版(约 30MB,免管理员权限) |
| 全局配置缺失 / 损坏 | 自动生成默认值;损坏的改名备份,不静默丢设置 |
如果你自己装过 Node,它会优先沿用你的:按 $WHALES_NODE_PATH → 配置里的 nodePath
→ 系统 PATH → 常见安装位置的顺序探测,每个候选都实际执行一次探针验证,绝不按路径名
猜测。也可以随时在「全局设置 → Node 运行时」里手动指定(自备便携版排在这些来源之后)。
⚠️ 不要用非官方 Node 运行时去跑 dsh:dsh 的原生模块按运行时指纹白名单匹配,
非官方指纹会直接启动失败(node-addon-require-builtin unsupported)。
本次修正(相对 v1.0.1)
1. 外壳左栏改为功能列表(消除用户指出的功能重复)
- 左栏现在是固定四项:实例 / 引擎版本管理 / 全局设置,底部固定关于。
- 实例列表只保留在「实例」页内 —— 卡片网格、页内搜索 / 状态筛选 / 排序全部照原样。
此前同一批实例数据同时出现在左栏和内容区(底部还另有一份「引擎版本管理 / 全局设置」),
是用户明确指出的功能重复。 - 左栏顶部的「筛选实例」输入框删除(与实例页内的搜索框重复)。
- 顺带修掉两个已登记的缺陷:
- 「实例」项在实例列表页与详情页都会点亮 —— P1 首屏左栏不再没有高亮;
- 返回按钮恢复规范语义(只在详情页出现)。旧版因为左栏没有「实例列表」入口,
不得不把返回按钮放宽成"任何非首屏路由且可后退";现在任意页面都能从「实例」项
一键回到实例列表。
- 新增**「关于」页**(左栏底部固定项),显示启动器版本、界面框架、Node 运行时、
已安装 dsh 引擎与存储位置。
2. 详情页面包屑可点击
面包屑改为三段「实例 › 实例名 › 页名」:第一段回实例列表、第二段回该实例的默认页签
(插件)、末段(当前页名)不跳转。
3. 验收阶段发现并修复的两处界面问题
| 问题 | 处理 |
|---|---|
| 关于页把许可证写成 MIT | 实际是 Polyform Noncommercial License 1.0.0(仓库 LICENSE 与 README 一致),已改为准确表述,并点明该许可证不是 OSI 认证的开源许可证 |
| 深色模式下标题栏右上角三个窗口按钮几乎不可见 | 这三个按钮由系统按系统主题绘制,不跟随窗口内容主题;深色窗口跑在浅色系统上时字形与标题栏同为暗色。现在按当前生效主题显式配色(深色白字形 / 浅色黑字形,背景透明),已实测确认 |
4. 自动化与工具
- UI 自动化用例:左栏相关断言改为按
AutomationProperties.Name精确匹配(不再靠
"文本出现在子树里");新增 SH-10(功能页 ↔ 实例页互跳,旧左栏没有实例入口的回归保护)
与 SH-11(「关于」是可导航页面而非弹框);SH-09 改为负向断言(筛选框必须不存在)。
全套 73 断言 / 0 失败。 - 修掉三处测试基建缺陷(都不是本版功能改动引入的,但会让用例红得莫名其妙):
- UIA 的
FindAll在窗口重绘时会瞬时抛异常,一个异常带崩整个用例 → 退回 TreeWalker 兜底; - 该驱动的
FindAll对子作用域返回的结果并不完整 → 改为FindAll+ TreeWalker
合并去重,查找不再取决于当帧拿到哪种形状; - 用例进程继承上游环境变量可能让应用静默打开别的页面 → runner 显式清理路由相关变量。
- UIA 的
5. 新增「环境与依赖自检」—— 把"要你自己动手"的部分接过来
首次启动自动跑一次,之后每次启动只做本地检查(不再联网),随时可在
全局设置 → 环境自检 重跑完整自检;报告逐项给出结论(正常 / 已自动修复 / 缺失 /
失败 / 未检查),缺失项带下一步建议。
| 情况 | 启动器的动作 |
|---|---|
数据目录(instances / engines / shared / cache)不存在 |
自动创建,并做一次写探针确认真可写 |
| 本机没有任何 dsh 引擎 | 问一次后自动用 npm 安装最新版(联网、数百 MB、不可中途取消) |
| 本机没有任何可用的 Node.js | 问一次后自动下载官方 v22 LTS 便携版(约 30MB,校验官方 SHA-256,落在 <根>\runtime\node\,免管理员权限、不改系统设置、自带 npm;官方源不可达时回退 npmmirror 镜像) |
| 全局配置缺失 / 损坏 | 自动生成默认值;损坏的改名备份,不静默丢设置 |
探测到的已有 Node 永远优先被沿用,自备便携版排在各来源之后 —— 它只是"一个都没有"时的兜底。
已知问题(如实列出)
- 教程配图未随本次左栏改造重拍:
docs/assets/tutorial/*.png里画的左栏仍是旧形态
(仍列出实例、仍有「筛选实例」输入框),与当前界面对不上;docs/guide/**的正文已按
新界面改写。重拍流程本身的两个工具缺陷已修好(见下),但修好后尚未完整重跑。 - 截图工具
scripts/tutorial/tour.ps1修掉了两处会静默拍错页面的缺陷:
只用FindAll找元素(本应用的 provider 对某些子树返回不完整结果,导致"点左栏条目"
这一步什么都不点)、以及clickcenter依赖SetForegroundWindow成功(本机上它会静默失败)。
现在分别改为合并双视图遍历、以及 pattern 优先 / 坐标点击兜底。 - 高对比度主题与 150% 文本缩放未走查(延续 v1.0.1 的登记)。
完整文档
校验
发布资产 SHA256:
F68748179B336BE83ECF565A114A3153ED91BC62AD366122F3685FD7485DEFD4 WhalesLauncher-v1.0.2-win-x64.zip
下载后可用以下命令核对:
Get-FileHash .\WhalesLauncher-v1.0.2-win-x64.zip -Algorithm SHA256许可
Polyform Noncommercial 1.0.0
—— 非商业用途免费,未经授权不得商用。
WhalesLauncher v1.0.1(WinUI 3 原生版)
WhalesLauncher v1.0.1 —— WinUI 3 原生版
DeepSeek Harness (dsh) 的实例与版本管理启动器。本次是前端整体替换式重构后的首个发布:
旧 Electron + DOM/CSS 前端已全部废弃,改为 WinUI 3(C#/XAML)+ Windows App SDK 原生界面。
下载
| 文件 | 说明 |
|---|---|
WhalesLauncher-v1.0.1-win-x64.zip |
完整应用(231.5 MB,解压即用) |
解压后双击包内的 WhalesLauncher.exe 即可运行。不需要安装 .NET 运行时(已自包含)。
环境要求
- Windows 10 1809(10.0.17763)或更高,64 位
- Node.js 22+ —— 必须自行安装,见下
重要:需要自备 Node.js
WhalesLauncher 是启动器,界面本身不需要 Node;但要管理 dsh 实例就必须有一个真正的
Node.js:https://nodejs.org/
程序会按 $WHALES_NODE_PATH → 配置里的 nodePath → 系统 PATH → 常见安装位置的顺序
探测,每个候选都实际执行一次探针验证,绝不按路径名猜测。没探到时界面仍可打开,并在
「全局设置 → Node 运行时」里提供手动指定入口。
⚠️ 不要用非官方 Node 运行时(例如某些软件内置的 Node)去跑 dsh:dsh 的原生模块按运行时
指纹白名单匹配,非官方指纹会直接启动失败(node-addon-require-builtin unsupported)。
本次修正(相对上一版)
- 修复发布脚本的一个缺口:
desktop/publish-release.ps1此前产出的是不含中文说明与双击入口
的包。现在这两个文件已作为源文件纳入desktop/release-assets/,脚本会一并打包。 - 从仓库移除两处旧前端残余(
.backup/85 文件、.fluent-b64/8 文件,均为已废弃前端
的快照与取证素材,无任何现用代码引用),仓库回到「只放源码」。
这个版本做了什么
界面(全部重写)
- WinUI 3 原生:控件与视觉令牌全部取自
microsoft-ui-xaml 官方体系,颜色/字号/圆角
一律走内置ThemeResource,不自建色板、不硬编码色值 - 原生窗口:官方
TitleBar并入客户区,窗口按钮由系统绘制(保留 hover / Snap Layouts) - Mica 窗口底面,系统不支持时自动退回实色兜底层
- 深浅双主题;注意当前契约里
theme只有dark/light,界面上明确写着"不跟随系统"
—— 这是如实呈现的契约缺口,不是漏做 - 8 个页面:实例列表、实例详情(插件 / 设置 / 存档 / 日志)、引擎版本管理、创建向导(4 步)、全局设置
- 日志渲染有行数上限 + 增量渲染,洪峰下不卡死 UI
架构
- C# 前端 ↔ Node 侧车进程(
dist/bridge/server.cjs),NDJSON over stdio,协议 v1 - 原 TypeScript 业务引擎(
src/core,约 7 000 行)一行未改直接复用 - 契约唯一事实源
src/shared/contracts.ts;启动时__handshake机械对账 39 条通道
质量
- 桥接冒烟 141/141 通过;core 单元测试 17/17 通过
- 渲染层 UI 自动化测试:9 个界面单元、69 条断言 → 68 通过 / 0 失败 / 1 不可判定
- 构建期断言:
src/main/**引用数 = 0(旧前端不可回流)
已知问题(如实列出)
- 实例包导入/导出暂无界面入口:
pack:export/pack:import/pack:pickFile通道与
服务方法都在,但没有任何视图调用它(旧版有此入口)。教程中对应配图仍为旧界面。 - 卡片「更多」菜单在自动化调用(UIA Invoke)时会触发
COMException;真实鼠标点击不受影响。 - 崩溃后的实例卡片状态需要手动点「刷新」才会更新为「已崩溃」。
- 高对比度主题与 150% 文本缩放未走查。
docs/video/promo-plan-v1.md中一处截图尺寸标注仍为旧值(1280×840,实际 1266×833)。
完整文档
校验
发布资产 SHA256:
09AC9259B8D04CBB5BCA3545F8B7AB8A3213C48614B4DE097714D73CB18CF52A WhalesLauncher-v1.0.1-win-x64.zip
下载后可用以下命令核对:
Get-FileHash .\WhalesLauncher-v1.0.1-win-x64.zip -Algorithm SHA256许可
Polyform Noncommercial 1.0.0
—— 非商业用途免费,未经授权不得商用。