Repository navigation
Releases: xbzbing/dsh-hub-desktop
Release list
DSH Hub 0.1.6
DSH Hub v0.1.6
- 发布日期: 2026-10-25
- 标签:
v0.1.6
分发方式
windows-unsigned
产物
DSH-Hub-Setup-0.1.6.exe(Windows x64 NSIS 安装包,未签名)SHA256SUMS.txt(上述安装包的 SHA-256 校验清单)
安装包未经代码签名,Windows 首次运行会出现 SmartScreen「未知发布者」提示——点「更多信息 → 仍要运行」即可继续。下载后请用
SHA256SUMS.txt校验完整性。macOS 暂不提供官方二进制,仍需从源码构建。
概述
本版本把「当前运行的 app 用了什么、风险在哪」摆到台面上:「关于」面板新增第三方依赖清单,只列真正打包进产物的 62 个包(按 main / preload / renderer 三个构建产物汇总,含实际安装版本),可就地展开查看、区块内独立滚动。插件升级确认框里的更新内容不再按纯文本显示——GitHub Release 与 CHANGELOG 本就是 Markdown,现按 dsh 同款 micromark/mdast 生态渲染成受净化的 React 元素,原始 HTML 一律不执行。同时完成两条安全升级:Electron 44→45(Chromium 152→156、Node 24.21→24.22,修复 2 条安全通告)与 zod 4.6.5→4.6.7(修复 1 条高危原型污染通告)。
亮点
- 关于面板第三方依赖清单:「关于」对话框新增可折叠的第三方依赖区块——只列打包进构建产物的包(构建期由 rollup 钩子扫描三个 target 的 chunk 模块清单汇总,版本取 pnpm 实际解析版本),不列开发期工具链;
vitest、eslint这类纯 devDependency 永不出现。目的是第三方组件爆出安全风险时,用户能在自己的运行包里一眼核对「我是否受影响、影响哪个版本」。默认折叠、展开计数,展开后清单在 150px 的独立区域内滚动,不会把整个对话框撑满;对话框本身加宽 10%(452 → 497px)容纳版本列。 - 插件更新内容按 Markdown 渲染:升级 / 安装确认框的「更新内容」取自 GitHub Release body 与仓库 CHANGELOG 原文,此前按纯文本显示,标题、列表、表格、代码块全是字面量。现用 mdast-util-from-markdown + GFM 扩展解析为 mdast 树,映射成 React 元素渲染——不生成 HTML 字符串、不走
dangerouslySetInnerHTML,正文原始 HTML 一律不执行;链接仅 http(s) / mailto 可点击,javascript:、data:、file:与相对路径降级为纯文本,外链统一交主进程按协议白名单后交给系统默认程序。确认框同步加宽 10%(560 → 616px)给表格与代码块留横向空间。 - Electron 45 + zod 4.6.7 安全升级:Electron 44.4.3 → 45.0.0(Chromium 152.0.7977.130 → 156.0.8078.48、Node 24.21.0 → 24.22.0、V8 15.6),消除 Electron 分发线上的 2 条已知安全通告;zod 4.6.5 → 4.6.7 修复 zod <4.6.6 的原型污染通告(GHSA-mrhx-c7xc-m3w5)。zod 仍是唯一进入产物的运行时依赖,
dependencies保持为空由测试守护。
修复与体验
- 停止实例按整棵进程树排空:hub 停止本机实例时 spawn 的是 dush/duush 启动器,包装器收到 SIGTERM 立刻死、其下的 dsh 被 reparent 后仍异步优雅退出(最长 5s)——原实现 2ms 就宣布停止完成,紧随其后的 start 撞端口,且残留 dsh 脱离托管后被外部探测误报为「本机已在运行的 dsh web」。现停止判据改为整棵进程树排空(POSIX 探测进程组存活,上限 6s 后升级强杀;Windows 走
taskkill /T),决策见 ADR-0012。 - 外部 dsh 探测按进程树判定:探测器原先只认旧命令行形态
dsh web,当前 CLI 的dsh --profile web一条都认不出来,向导与详情页的接管入口整块不渲染。现命令行形态与「是否 Hub 托管」拆成两件事:后者按进程树判定并以托管端口兜底;命令行出主进程前脱敏(dsh token 写在命令行上)。多个 dsh 在跑时向导用下拉选择;新增 live 验收脚本防止合成夹具与真实 CLI 形态脱节,决策见 ADR-0011。 - stderr 凭据脱敏:插件命令与运行时安装失败的错误消息取自 npm stderr 尾部、会经 IPC 到达界面 toast——补上键值凭据形态(
npmToken=xxx/password=xxx)的脱敏,与既有的 URL 查询串脱敏并列,失败原因本身保留。 - 插件详情加名称行:确认与详情区新增可复制的插件名行,操作行的 GitHub 图标移除。
- 关于面板:数据列沿用点击复制;对话框宽度加宽后版本信息与依赖清单列不再拥挤。
测试与 CI
- 半自动发布链路(ADR-0008):新增
release:publish脚本——按序推 tag、建/更新 Draft、上传资产并做白名单核验,--publish才正式发布,每步幂等可重跑;release:check离线演练发布说明与打包配置。 - E2E 数据目录隔离(ADR-0009):用例数据统一经
e2eDataDir/e2eEnv注入仓库内hub-data/e2e-*并加静态守卫,真实用户数据目录不再有被测试触碰的可能。 - 架构护栏:ESLint 分层规则(
src/shared等不得 import Electron)、IPC 通道四面对账(contracts/register/bridge/preload 漏同步即红)、发布文档本地路径引用检查;ADR 0001–0012 与发布 runbook 入库。 - 大规模模块拆分:plugin-manager、register 测试、store、传输与运行时、ssh-tunnel、local-runtime、i18n 扫描、共享契约、npm 调用层按职责拆成独立单元并抽共享 testkit,单测 1585 项、E2E 63 项全绿。
- 开发依赖大版本升级:ESLint 10(react-hooks 7)、Vitest 5、electron-vite 6、npm 12、@types/node 26,其余仅跟 patch/minor;dependabot 改为 devDependencies 分组并忽略 major。
从源码构建
需要 Node 22+、pnpm,以及目标平台对应的构建环境:
pnpm install
pnpm build
pnpm test
pnpm dist:win # Windows 本地构建(Windows 上)
# 或 pnpm dist:win:local # mac 上交叉构建 Windows 包
# 或 pnpm dist:mac # macOS 本地构建(未签名 .app,仅本机验证)本地构建生成的产物未签名、未公证;macOS 产物仅适用于开发、本机验证或受控测试,不随发布上传。
当前限制
- Windows 安装包未签名,首次运行会触发 SmartScreen 提示;macOS 不提供官方二进制,需从源码构建。
- 第三方依赖清单只覆盖打包进产物的包;
out/未完整构建时(如全新克隆后仅pnpm dev)该区块不显示。 - 插件更新内容只渲染 Markdown 正文,不执行任何内嵌 HTML;表格样式随系统原生排版。
- 外部 dsh 探测依赖进程树与托管端口,包装器先退出且 dsh 被 init 收养的极端形态以端口兜底。
- 版本检查仅覆盖 hub 托管的本地实例;SSH / 远程实例暂无获取其 dsh 版本的途径。
Windows 代码签名与 macOS 二进制分发的门槛见 发布策略。
完整变更
自 v0.1.5 以来共 115 个提交,覆盖关于面板依赖清单、插件更新内容 Markdown 渲染、Electron 45 与安全升级、停止语义与外部探测两处进程树修复,以及半自动发布链路与大规模模块拆分。完整差异见 v0.1.5...v0.1.6。
DSH Hub 0.1.5
DSH Hub v0.1.5
- 发布日期: 2026-10-19
- 标签:
v0.1.5
分发方式
windows-unsigned
产物
DSH-Hub-Setup-0.1.5.exe(Windows x64 NSIS 安装包,未签名)SHA256SUMS.txt(上述安装包的 SHA-256 校验清单)
安装包未经代码签名,Windows 首次运行会出现 SmartScreen「未知发布者」提示——点「更多信息 → 仍要运行」即可继续。下载后请用
SHA256SUMS.txt校验完整性。macOS 暂不提供官方二进制,仍需从源码构建。
概述
本版本把插件安装与升级做成「先看清、再执行」的完整闭环:安装改为两步——先解析出确切版本、发布时间、近 30 天下载与 dsh 兼容性,确认后才下发 name@x.y.z;升级二次确认支持切换 npm 安装源(解析与升级强制同源),版本行改为「旧版 → 新版」,并回显插件名防止升错对象。同时修复了 hub 与 dsh 对「替换已装包是否需要重启」的判定分歧:HMR 可用时热生效,不再无条件要求重启。设置侧新增「安装镜像」的编辑入口(此前只能在创建向导里设置),插件检查/安装的默认源随之联动。
亮点
- 插件安装两步走:第一步输入插件标识并选定安装源(默认国内镜像),确定后先解析——npm 裸名按「dist-tag latest 与最大稳定版的较大者」选版本(
@latest同口径,dist-tag 滞后也装得到新版),显式版本与具名 dist-tag 各按其口径,github:/file: 不联网直接进入确认;第二步确认区给出插件名 / 版本 / 发布时间 / 近 30 天下载 / dsh 兼容 / 更新内容(GitHub Release → 仓库 CHANGELOG → 无 逐级降级),不兼容必须勾选风险确认才能提交。安装参数固定为解析出的name@x.y.z并与解析同源追加--registry,registry 后续发新版不影响本次已确认的选择;「安装后启用」默认勾选,取消则只安装、落在禁用态。 - 升级可切换安装源:升级二次确认顶部新增安装源选择(npmmirror / npmjs,默认与检查同源);改选即作废当前计划、按新源重新解析,解析与升级必须同源,档位经 zod 校验的枚举透传到主进程,非法值在 IPC 边界即被拒绝。
- 版本演进行 + 插件名回显:确认区版本行在已装版本与目标版本不同时渲染「
1.0.0 → 1.1.0」(旧版弱化在左、目标徽标在右,箭头即说明);「版本」行之上新增「插件」行回显包名,先看清对象再读版本,避免点错。 - 重启判定与 dsh 同口径:dsh-hmr 按磁盘身份(inode/size/mtime)判定模块过期并热重载,dsh 自身的
change()只在无 HMR 或 reconcile 报重启原因时才要求重启。hub 此前把「替换已装包」判成无条件需重启(前提「Node 模块缓存无法换模块代」是错的),现 install/upgrade/remove 统一按「实例是否启用热更新」给出 applied / restart-required,重启提示文案改为只解释「该实例未启用热更新」。 - 安装镜像可随时改:编辑实例对话框新增「安装镜像」四档(跟随系统 npm 配置 / npmmirror / npmjs / 自定义 URL,https 信任根,本地镜像放行回环 http),应用级设置、对所有实例生效;同一设置推导插件命令与安装/升级对话框的默认安装源,dsh 下载与插件检查/安装的默认源自此一致。
修复与体验
- 插件安装对话框加宽到与日志浮层同档,版本事实与更新内容一屏读完;「安装后启用」的后果说明收进问号气泡,hover 或键盘聚焦才展开,不再常驻占版面。
- 气泡互斥:焦点展开改为只认键盘焦点(
:focus-visible),鼠标点选说明文本后移开即收起,相邻行不会同时弹出两个气泡。 - 检查结果可读性:行内截断的不兼容/检查失败说明改为 hover 气泡展开完整文案(可聚焦、读屏可读);检查有更新、不兼容、失败都写入底部信息栏,批量检查按类别各汇总一行。
- 设置页重排:通用偏好卡的长说明收进标题旁问号图标气泡,分组标题行右侧挂载控件(重新检测、工作区缓存上限);「刷新环境缓存」改为报告刷新前后的环境差异(只回传 PATH 条目与变量名,变量值可能含凭据、绝不出主进程),toast 按「有变化 / 无变化 / 不可比」三种结果反馈。
- 运行环境卡:操作按钮上方增加分隔线,升级按钮与版本数据留在线上方,操作区贴底。
- 关于面板:数据列支持点击复制。
- 插件未发布到 npm(
pnpm view404)时给出明确文案,不再透出裸命令行错误。 - 实例分区放行纯音频采集权限,dsh web 的语音输入可用。
测试与 CI
- 新增
plugin:resolveInstall/plugin:packageInfo通道与安装源枚举契约的单测;E2E 覆盖安装两步全流程、升级换源后确认区收回再回来、确认后add带--registry、版本演进行与插件名行的位置断言。 - 环境 diff 测试按平台显式选 PATH 分隔符(POSIX 夹具传 darwin),修复 Windows CI 上整串 PATH 被当成单条目的失败。
- 「刷新环境缓存」补基线/冷缓存单测与「出结果 toast、不弹重启确认」的 E2E。
从源码构建
需要 Node 22+、pnpm,以及目标平台对应的构建环境:
pnpm install
pnpm build
pnpm test
pnpm dist:win # Windows 本地构建(Windows 上)
# 或 pnpm dist:win:local # mac 上交叉构建 Windows 包
# 或 pnpm dist:mac # macOS 本地构建(未签名 .app,仅本机验证)本地构建生成的产物未签名、未公证;macOS 产物仅适用于开发、本机验证或受控测试,不随发布上传。
当前限制
- Windows 安装包未签名,首次运行会触发 SmartScreen 提示;macOS 不提供官方二进制,需从源码构建。
- 插件自定义安装源只支持两档预设(npmmirror / npmjs);镜像地址里的自定义 registry 作用于 dsh 下载,插件命令的默认源按两档预设映射,其余地址回落默认档。
- 首次创建本地实例可能需要联网准备 dsh 运行时;内网环境可设置
DSH_HUB_NPM_REGISTRY或在编辑实例中改安装镜像。 - 版本检查仅覆盖 hub 托管的本地实例;SSH / 远程实例暂无获取其 dsh 版本的途径。镜像
latest标签滞后于新发布时,以版本列表最大值为准。
Windows 代码签名与 macOS 二进制分发的门槛见 发布策略。
完整变更
自 v0.1.4 以来共 16 个提交,覆盖插件安装两步走、升级切换安装源与版本演进行、重启判定与 dsh 对齐、安装镜像编辑入口,以及设置页说明气泡与环境刷新报告。完整差异见 v0.1.4...v0.1.5。
DSH Hub 0.1.4
DSH Hub v0.1.4
- 发布日期: 2026-10-13
- 标签:
v0.1.4
分发方式
windows-unsigned
产物
DSH-Hub-Setup-0.1.4.exe(Windows x64 NSIS 安装包,未签名)SHA256SUMS.txt(上述安装包的 SHA-256 校验清单)
安装包未经代码签名,Windows 首次运行会出现 SmartScreen「未知发布者」提示——点「更多信息 → 仍要运行」即可继续。下载后请用
SHA256SUMS.txt校验完整性。macOS 暂不提供官方二进制,仍需从源码构建。
概述
本版本是焦点行为的修补版本:修掉三条会把 DSH Hub 窗口顶到前台、抢走其它应用(如如流)焦点的路径,让「正在别的应用里操作,DSH 突然跳到最前」不再复现;同时修掉插件卡三处信息显示错误(兼容范围显示为空、升级提示过期、发布时间缺失),并在「关于」面板补上构建 commit 与打包时间。
亮点
- 前台抢焦点:三条路径修复(承接 0.1.3 已生效的后台闸门,本轮修的是前台路径):
app.on('activate')只在没有任何可见窗口时(最小化到托盘 / 窗口已销毁)才召回窗口,窗口已可见时不再show()+focus()。这是日志坐实的主路径:activate 可能由非用户操作触发,而真正的 Dock 点击由 macOS 自行把应用带回前台,不需要我们再置前一次。focusEntry的延迟聚焦在回调真正执行时再次校验窗口是否仍聚焦:从调度到执行之间用户若已切走,放弃本次聚焦,不再把窗口抢回前台。- 宿主窗口失焦后跳过工作区悬停提示。提示窗是浮动子窗口,对它在后台调用
showInactive时,这个置前请求会被 macOS 挂起数秒后再批准,把整个应用顶回前台;现在只在宿主窗口聚焦时显示提示。
- 关于面板展示构建信息:构建期把 git 短 hash 与打包时刻注入主进程 bundle(运行时不再触碰 git),「关于」面板在版本号下方新增「构建版本 / 打包时间」两行,打包时间按本地时区展示,便于一眼确认当前运行包的来源与新鲜度。无
.git或 git 不可用时回落unknown。
修复
- 插件「兼容版本」显示为空:dsh 兼容范围此前只读主包
@deepseek-ai/dsh的 peer,而插件普遍只声明若干锁步同版本的@deepseek-ai/dsh-*子包(如dsh-skill、dsh-tools),主包为空就渲染成「dsh —」。现按「主包优先,否则取各子包的公共范围」派生,升级不兼容提示同步受益,不再出现没有信息量的「要求 dsh —」。 - 插件升级提示过期:持久化的检查记录缺少「检查时的已装版本」,渲染层只用候选版本是否等于已装版本来判断「已升级过」;当已装版本高于记录中的候选(手动安装、降级等绕过 hub 升级流程的变化)时该判定失效——已装 1.1.17 仍提示「新版 1.1.15 要求 dsh … 不满足」。现记录绑定检查时的已装版本,版本一变旧结果即失效;更早版本写入的记录因无法校验是否仍适用,在读取时丢弃。同时「是否有更新」改用版本序比较,已装版本高于镜像
latest时不再误报。 - 插件发布时间缺失:
dsh plugin view <name> time --json只查time单字段时返回的是裸的「版本 → 发布时刻」映射,多字段查询才嵌套在time键下;此前只按嵌套形状解析,导致详情页线上必现「点检查升级获取」。现两种形状都兼容。
测试与 CI
- 向导「等待外部 dsh」用例覆盖 Windows 最坏预算(PowerShell 15s + netstat 10s = 25s),单轮等待放宽到 30s,并在仍不出现时关掉向导重开触发新一轮扫描(此时 CIM 已热),修复 Windows CI 上的偶发超时。
- E2E 隐藏模式放行悬停提示窗的前台守卫,恢复提示窗样式用例。
- 新增焦点排查日志:
win.blur、shell.openExternal三个入口、app.activate、guestwebContents获焦,用于区分「DSH 主动让出焦点」与「被其它应用抢占」。
从源码构建
需要 Node 22+、pnpm,以及目标平台对应的构建环境:
pnpm install
pnpm build
pnpm test
pnpm dist:win # Windows 本地构建(Windows 上)
# 或 bash docs/local/build-win-local.sh # mac 上交叉构建 Windows 包
# 或 pnpm dist:mac # macOS 本地构建(未签名 .app,仅本机验证)本地构建生成的产物未签名、未公证;macOS 产物仅适用于开发、本机验证或受控测试,不随发布上传。
当前限制
- Windows 安装包未签名,首次运行会触发 SmartScreen 提示;macOS 不提供官方二进制,需从源码构建。
- 焦点行为依赖对 macOS 前台/后台事件的观察,相关日志仅在排查时启用。
- 首次创建本地实例可能需要联网准备 dsh 运行时;内网环境可设置
DSH_HUB_NPM_REGISTRY。 - 版本检查仅覆盖 hub 托管的本地实例;SSH / 远程实例暂无获取其 dsh 版本的途径。镜像
latest标签滞后于新发布时,以版本列表最大值为准。
Windows 代码签名与 macOS 二进制分发的门槛见 发布策略。
完整变更
自 v0.1.3 以来共 10 个提交,覆盖焦点抢占三条路径修复、插件卡信息显示修复、关于面板构建信息与 Windows E2E 稳定性。完整差异见 v0.1.3...v0.1.4。
DSH Hub 0.1.3
DSH Hub v0.1.3
- 发布日期: 2026-10-09
- 标签:
v0.1.3
分发方式
windows-unsigned
产物
DSH-Hub-Setup-0.1.3.exe(Windows x64 NSIS 安装包,未签名)SHA256SUMS.txt(上述安装包的 SHA-256 校验清单)
从本版本起,Release 附带本地构建的 未签名 Windows 安装包。安装包未经代码签名,Windows 首次运行会出现 SmartScreen「未知发布者」提示——点「更多信息 → 仍要运行」即可继续。下载后请用
SHA256SUMS.txt校验完整性。macOS 暂不提供官方二进制,仍需从源码构建。
概述
本版本是功能大版本:新增 dsh 版本管理(详情页检测与一键升级、新建实例版本下拉、安装进度实时可见)、环境变量重新检测(无需重启应用即可让实例获取新装的 git/node 等)、插件操作日志按天归并、侧栏实例快捷键、运行时阻止系统休眠开关、详情页底部信息栏、设置页空间管理、应用内「关于」面板,并合入一轮整仓评审的必须项修复。
亮点
- dsh 版本管理:详情页显示当前版本与镜像最新版本,一键升级走「停止 → 安装 → 版本写回 → 重启」的单飞编排,进度实时驱动进度条与底部信息栏日志;新建实例的版本下拉默认「跟随最新稳定版」,可显式选定历史版本。版本元数据从安装队列拆到独立队列并加缓存,检查更新与版本列表不再被安装阻塞;npm 镜像可配置(
DSH_HUB_NPM_REGISTRY或设置页镜像项)。 - 环境变量重新检测:设置页新增「重新检测环境变量」按钮,刷新主进程缓存的登录 PATH / 登录 shell 环境后,询问是否重启运行中的本机实例,让启动应用后才安装的 git/node 等被实例获取,而不必重启整个应用;详情页重启实例时也会先刷新一次缓存。
- 插件操作日志按天归并:插件安装/升级产生的
operation-*目录在沉降后并入按天的plugin-operations.<YYYY-MM-DD>.log,默认保留 30 天,避免大量零散目录堆积。 - 侧栏实例快捷键:按住切换修饰键(macOS 为 ⌘,Windows/Linux 为 Alt)满 0.5 秒,侧栏按当前可见顺序显示 #1–#9 序号;修饰键 + 数字立即切换实例。工作区原生视图持有键盘焦点时,主进程按白名单转发修饰键与数字组合,切换在工作区内同样生效。
- 详情页底部信息栏:常驻单行滚动展示运行状态与安装进度日志(超长截断省略、不换行),「更多」打开宽屏日志对话框,支持复制与清空;运行环境卡片新增「关闭实例」。
- 设置:空间管理与界面语言:新增隔离空间管理入口;界面语言可跟随系统或显式固定中文/英文,打包不再裁剪 Chromium 语言包。
- 应用内「关于」面板:以独立叠加窗口浮在当前页面之上,展示应用版本、项目主页,以及实际运行的 Electron、Chromium、Node.js、V8 版本。
- 运行时阻止系统休眠:设置页新增开关,开启后只要有本机实例在运行就持有系统电源断言,阻止空闲休眠,长任务不被打断;合上笔记本盖子仍按系统合盖策略休眠,熄屏与锁屏不受影响。默认关闭。
- 远程实例登录引导:经向导新建的远程实例(http/ssh)运行后先探测认证,若使用 dsh-auth-gateway 需登录,则先弹出登录框引导登录、登录成功后再打开工作区,而不是直接打开工作区显示网关登录页。
修复
- 重新登录后刷新工作区:auth-gateway 远程实例会话失效、重新输入密码登录成功后,重新打开工作区会强制刷新——注入最新会话 Cookie 并导航回工作区 URL,不再停留在会话失效前的旧页面。
- 升级时运行环境卡片不再随日志抖动:升级运行时的运行环境卡片只显示阶段文字(检查中 / 下载中 / 安装中),不再内嵌逐条下载/安装日志,卡片高度不再随日志长短忽长忽短;完整日志仍在底部信息栏逐条展示。
- 后台不再抢占其它应用焦点:实例停止/断开、工作区变为可见等后台事件,只在 Hub 窗口当前已聚焦时才交还或转移键盘焦点;应用不在前台时跳过,避免 macOS 下
webContents.focus()把窗口顶到最前、抢走其它应用(如如流)的焦点。 - 升级插件后同步发布时间:升级完成后直接取新版本的发布时间并落成快照,详情页「发布时间」无需再次检查即可显示(取不到时清掉旧版本的陈旧快照)。
- mac 升级插件兼容既有 profile:按平台决定随包 pnpm 在 PATH 的位置——Windows 前置(系统 pnpm 全局 shim 已损坏),mac/Linux 后置兜底,优先用与既有 profile 的 store 版本匹配的系统 pnpm,消除
ERR_PNPM_UNEXPECTED_STORE。 - 整仓评审必须项:删除幻影实例提前短路;凭据保险库恢复默认保存并对齐文档;打开工作区加载页超时兜底,避免卡死;SSH socket 目录改 0700 并校验属主,防共享临时目录劫持;semver tilde 通配上界修正。
- 打包产物在 ready 前把 Chromium 语言钉为系统语言,修复新实例整站显示英文。
- 对话框统一支持 Escape 关闭、焦点圈闭于对话框内、小窗口限高滚动、页脚常驻。
- 「关于」改为独立叠加窗口,打开/关闭不跳转、不隐藏工作区视图;隐藏工作区原生视图时把键盘焦点交还宿主渲染层。
- 实例详情「连接方式」「运行环境」卡片放开文本选中复制;数据目录由主进程预计算,消除混合分隔符。
- Windows 下 npm 调用方式解析修正;打包前显式准备 Electron 二进制;重建应用图标,修复渲染为黑块。
测试与 CI
- CI 覆盖 ubuntu(xvfb + gnome-keyring)与 Windows 双平台,单元测试与 E2E 全绿。
- 发布演练支持
source-only与windows-unsigned两种分发模式,并对资产清单做形态白名单校验:mac 二进制、latest-*.yml、.blockmap任何模式都拒绝。
从源码构建
需要 Node 22+、pnpm,以及目标平台对应的构建环境:
pnpm install
pnpm build
pnpm test
pnpm dist:win # Windows 本地构建(Windows 上)
# 或 bash docs/local/build-win-local.sh # mac 上交叉构建 Windows 包
# 或 pnpm dist:mac # macOS 本地构建(未签名 .app,仅本机验证)本地构建生成的产物未签名、未公证;macOS 产物仅适用于开发、本机验证或受控测试,不随发布上传。
当前限制
- Windows 安装包未签名,首次运行会触发 SmartScreen 提示;macOS 不提供官方二进制,需从源码构建。
- 首次创建本地实例可能需要联网准备 dsh 运行时;内网环境可设置
DSH_HUB_NPM_REGISTRY。 - 版本检查仅覆盖 hub 托管的本地实例;SSH / 远程实例暂无获取其 dsh 版本的途径。镜像
latest标签滞后于新发布时,以版本列表最大值为准。
Windows 代码签名与 macOS 二进制分发的门槛见 发布策略。
完整变更
完整差异见 v0.1.2...v0.1.3。
DSH Hub 0.1.2
DSH Hub v0.1.2
- 发布日期: 2026-09-20
- 标签:
v0.1.2
分发方式
source-only
概述
本版本将运行时从 Electron 43 升级到 Electron 44(Chromium 150 → 152),并补充 E2E 隐藏窗口运行模式与工作区进入断言稳定性修复。升级后的 Chromium 152 仍在官方支持窗口内,安全基线前移一个主版本。
GitHub Release 当前仅发布标签、发布说明以及 GitHub 自动生成的源码归档(Source code (zip)、Source code (tar.gz))。不提供官方 .app、.dmg、.zip、.exe、自动更新元数据或校验和文件。
从源码构建
需要 Node 22+、pnpm 11,以及目标平台对应的构建环境:
pnpm install
pnpm build
pnpm test
pnpm dist:mac # macOS 本地构建
# 或 pnpm dist:win # Windows 本地构建本地构建生成的产物未签名、未公证,仅适用于开发、本机验证或受控测试;构建成功不代表可以安全公开分发。请勿将它们作为官方 Release 资产重新上传。
亮点
- Electron 44 运行时升级:Chromium 150.0.7871.250 → 152.0.7977.130,Node 24.21.0。Electron 44 的破坏性变更(clipboard 模块重构并移出 renderer、
select-client-certificate回调参数可空、ANGLE 静态链接、macOS 12 弃用)经逐一核对,对当前代码零影响:项目不使用 Electron clipboard API,renderer 内为标准navigator.clipboard;不监听客户端证书事件;不依赖net.request帧请求。typecheck、lint、766 项单测、25 项 E2E 与打包链路全部在 Electron 44 上通过。 - E2E 隐藏窗口模式:新增
DSH_HUB_E2E_HIDDEN环境变量,本机开发时可让 Playwright 跑的 Electron 窗口不显示、不进 Dock、不抢焦点,边工作边跑 E2E 不再打断手头操作。 - 工作区进入断言稳定:工作区 loading 为瞬态状态,明文警告用例改为只断言最终进入工作区,消除偶发时序失败。
修复
- 无新增功能缺陷修复;本版本为运行时升级与测试基建改进。
测试与 CI
- E2E 25/25 通过(Electron 44.4.3 真机运行),覆盖窗口外壳、preload 桥接白名单、注册表 IPC、外部 dsh 接管、SSH 认证对话框与 UI 基线。
- 发布元数据离线校验(版本与发布说明一致性、electron-builder 无 publish provider、打包脚本结构上不可能误发布)全部通过。
当前限制
- 未提供签名和公证的官方桌面安装包,自动更新不对外可用。
- 首次创建本地实例可能需要联网准备 dsh 运行时;内网环境可设置
DSH_HUB_NPM_REGISTRY。
恢复官方二进制分发需要 Apple Developer Program、Developer ID 签名、公证与 staple、干净机器安装验证,以及可复核的更新元数据和校验和。完整门槛见 发布策略。
完整变更
自 v0.1.1 以来共 4 个提交,涵盖 Electron 43 → 44 运行时升级(含三方依赖与文档同步)、E2E 隐藏窗口模式、工作区进入断言稳定性修复与 v0.1.2 版本发布说明。
DSH Hub 0.1.1
DSH Hub v0.1.1
- 发布日期: 2026-09-20
- 标签:
v0.1.1
分发方式
source-only
概述
本版本聚焦 Windows 平台完整兼容与 CI 质量门强化:外部 dsh web 探测、运行时发现、单测与 E2E 全部质量门现已在 windows-latest 上运行并通过;新增本机实例「重启实例」操作;修复工作区复制失效与重复打开导致的原生视图边界竞争,并让 Linux 无头环境下的凭据保险库与真实桌面行为一致。
GitHub Release 当前仅发布标签、发布说明以及 GitHub 自动生成的源码归档(Source code (zip)、Source code (tar.gz))。不提供官方 .app、.dmg、.zip、.exe、自动更新元数据或校验和文件。
从源码构建
需要 Node 22+、pnpm 11,以及目标平台对应的构建环境:
pnpm install
pnpm build
pnpm test
pnpm dist:mac # macOS 本地构建
# 或 pnpm dist:win # Windows 本地构建本地构建生成的产物未签名、未公证,仅适用于开发、本机验证或受控测试;构建成功不代表可以安全公开分发。请勿将它们作为官方 Release 资产重新上传。
亮点
- Windows 平台兼容:外部 dsh web 进程探测(
Get-CimInstance+netstat)、运行时 PATH 探测、注册表与审计相关单测完成跨平台适配;CI 新增 Windows 作业执行 lint、typecheck、test、build 与 E2E 全量质量门。 - 本机实例重启:实例详情新增「重启实例」操作,先完全停止再按当前配置重新拉起 hub 托管的 dsh 进程;工作区打开时随启动完成自动重开。安装插件后无需再手动停止再启动。
- Linux 无头环境保险库可用:通过
--password-store显式指定 safeStorage 后端并补齐 libsecret 依赖,凭据保险库在无头环境与真实桌面行为一致(此前回退 basic_text 被判为降级、跨重启凭据丢失)。 - 契约测试对齐官方插件仓库:CI 契约作业固定 checkout
xbzbing/dsh-auth-gateway并在每次提交上运行。
修复
- 工作区内 dsh 网页的复制按钮失效:权限处理器此前拒绝全部能力请求,
navigator.clipboard写入被拒;现仅放行剪贴板写入类权限,读取等其余能力仍一律拒绝 - Windows 下命令行含换行的进程(如
node -e启动的外部 dsh web)在扫描输出中被断行丢失,导致探测不到 - 已打开的工作区再次收到打开请求时,原生视图被隐藏后重开、边界短暂归零(0,0)
- 工作区打开在途时,重复的 running 状态事件不再重复触发打开
- 保险库降级审计记录具体加密后端枚举,便于排查系统钥匙串选择失败
- 校验和脚本主入口判定不再依赖在 Windows 上失效的 argv 归一化
测试与 CI
- Linux E2E 补齐 dbus + gnome-keyring 密钥环,显式校验 Secret Service 可用后再运行
- E2E 失败时收集错误上下文与审计日志用于诊断;凭据保险库密文目录永不上传,测试数据纪律已在文档中明确
- E2E 无头环境自动拒绝 dsh 下载确认原生对话框;启动参数统一收敛到共享模块
- 跨平台单测:平台相关行为固定平台断言,POSIX 专属用例(0600 权限、AF_UNIX、ControlPath 长度)在 Windows 上跳过
当前限制
- 未提供签名和公证的官方桌面安装包,自动更新不对外可用。
- 首次创建本地实例可能需要联网准备 dsh 运行时;内网环境可设置
DSH_HUB_NPM_REGISTRY。
恢复官方二进制分发需要 Apple Developer Program、Developer ID 签名、公证与 staple、干净机器安装验证,以及可复核的更新元数据和校验和。完整门槛见 发布策略。
完整变更
自 v0.1.0 以来共 31 个提交,覆盖本机实例重启、Windows 平台兼容、CI 质量门与密钥环基建、工作区生命周期与剪贴板修复和测试跨平台化。
DSH Hub 0.1.0
DSH Hub v0.1.0
- 发布日期: 2026-09-16
- 标签:
v0.1.0
分发方式
source-only
概述
DSH Hub 是用于统一管理多个 dsh(DeepSeek Harness)实例的 Electron 桌面工具,支持本地进程、SSH 隧道与远程 HTTP 直连;认证对接 dsh-auth-gateway(密码、TOTP 与 HttpOnly Cookie 分区注入)。
GitHub Release 当前仅发布标签、发布说明以及 GitHub 自动生成的源码归档(Source code (zip)、Source code (tar.gz))。不提供官方 .app、.dmg、.zip、.exe、自动更新元数据或校验和文件。
从源码构建
需要 Node 22+、pnpm 11,以及目标平台对应的构建环境:
pnpm install
pnpm build
pnpm test
pnpm dist:mac # macOS 本地构建
# 或 pnpm dist:win # Windows 本地构建本地构建生成的产物未签名、未公证,仅适用于开发、本机验证或受控测试;构建成功不代表可以安全公开分发。请勿将它们作为官方 Release 资产重新上传。
亮点
- 多实例管理:本地 dsh、SSH 隧道与远程 HTTP 端点统一创建、编辑、打开和删除。
- 侧边栏拖拽排序:支持拖拽调整实例顺序,首页表格同步显示手动排序。
- 认证一体化:网关登录、TOTP、会话恢复、已存密码静默登录及分区 Cookie 注入。
- 工作区链接:工作区内
target="_blank"链接自动在系统浏览器中打开。 - 安全边界:凭据不写入注册表或审计日志;SSH 使用 TOFU 主机指纹确认;WebContentsView 权限与导航受限。
- 工作区生命周期:可断开内嵌工作区而不停止运行时或清除凭据,随后可从实例列表重新打开。
- 双语与外观:中文/英文界面、系统主题跟随、托盘、通知和开机自启配置。
当前限制
- 未提供签名和公证的官方桌面安装包,自动更新不对外可用。
- 首次创建本地实例可能需要联网准备 dsh 运行时;内网环境可设置
DSH_HUB_NPM_REGISTRY。 - Windows 本地构建需 Windows 或兼容的构建环境。
恢复官方二进制分发需要 Apple Developer Program、Developer ID 签名、公证与 staple、干净机器安装验证,以及可复核的更新元数据和校验和。完整门槛见 发布策略。
完整变更
这是首个公开 source-only 版本,包含实例注册表与 IPC、本地/SSH/HTTP 三种连接方式、认证与凭据保险库、工作区 Cookie 注入与生命周期控制、审计、双语界面、安全加固和本地打包能力。
新功能
- 侧边栏拖拽排序,首页表格同步手动顺序
- 实例排序持久化(IPC reorder 通道)
- 认证面板支持用已保存的密码直接登录
- 工作区
target="_blank"链接在系统浏览器中打开
修复
- 会话失效时不再误判为已恢复
- OTP 屏密码输入框因状态耦合自卸载
- 认证面板关闭后丢弃已输入的凭据
- 窗口失焦隐藏提示窗,复焦恢复工作区焦点
- 已打开的工作区不再等待认证探测
- 修复侧栏提示圆角边框缺失
- 同步远程工作区语言
- 拖拽排序放下位置改用 ref 实时记录
- 刷新时清除工作区旧边界