Skip to content

Releases: IDKWhatID2Use/whales-launcher

WhalesLauncher v1.0.3(修启动崩溃 · 设置页勾选 · 打包修正)

Choose a tag to compare

@IDKWhatID2Use IDKWhatID2Use released this 22 Sep 11:48

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不接受 ——
    整份文件被当成一行,实例启动必然失败。前一个版本写入的文件因此是坏的。
  • 修法(三层)
    1. 编辑器读写一律归一到 \nYamlEditorView.xaml.cs)——
      顺带修掉两个同源症状:装载完成就误报"有未保存的更改"、行号列只数出 1 行;
    2. 后端写入前归一,并让 validateYaml 显式拒绝孤立 CR
      src/core/profile.ts);
    3. 实例包导入时同样归一(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 的登记)。
  • 声明式 SelectedIndexmuxc: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

Choose a tag to compare

@IDKWhatID2Use IDKWhatID2Use released this 21 Sep 15:13

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(仓库 LICENSEREADME 一致),已改为准确表述,并点明该许可证不是 OSI 认证的开源许可证
深色模式下标题栏右上角三个窗口按钮几乎不可见 这三个按钮由系统系统主题绘制,不跟随窗口内容主题;深色窗口跑在浅色系统上时字形与标题栏同为暗色。现在按当前生效主题显式配色(深色白字形 / 浅色黑字形,背景透明),已实测确认

4. 自动化与工具

  • UI 自动化用例:左栏相关断言改为按 AutomationProperties.Name 精确匹配(不再靠
    "文本出现在子树里");新增 SH-10(功能页 ↔ 实例页互跳,旧左栏没有实例入口的回归保护)
    SH-11(「关于」是可导航页面而非弹框);SH-09 改为负向断言(筛选框必须不存在)。
    全套 73 断言 / 0 失败
  • 修掉三处测试基建缺陷(都不是本版功能改动引入的,但会让用例红得莫名其妙):
    1. UIA 的 FindAll 在窗口重绘时会瞬时抛异常,一个异常带崩整个用例 → 退回 TreeWalker 兜底;
    2. 该驱动的 FindAll 对子作用域返回的结果并不完整 → 改为 FindAll + TreeWalker
      合并去重,查找不再取决于当帧拿到哪种形状;
    3. 用例进程继承上游环境变量可能让应用静默打开别的页面 → runner 显式清理路由相关变量。

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 原生版)

Choose a tag to compare

@IDKWhatID2Use IDKWhatID2Use released this 21 Sep 13:12

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
—— 非商业用途免费,未经授权不得商用