Skip to content

Releases: xbzbing/dsh-hub-desktop

DSH Hub 0.1.6

Choose a tag to compare

@xbzbing xbzbing released this 25 Oct 11:11

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

Choose a tag to compare

@xbzbing xbzbing released this 18 Oct 20:06

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 view 404)时给出明确文案,不再透出裸命令行错误。
  • 实例分区放行纯音频采集权限,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

Choose a tag to compare

@xbzbing xbzbing released this 13 Oct 14:57

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、guest webContents 获焦,用于区分「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

Choose a tag to compare

@xbzbing xbzbing released this 09 Oct 17:01

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

Choose a tag to compare

@xbzbing xbzbing released this 20 Sep 13:01

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

Choose a tag to compare

@xbzbing xbzbing released this 20 Sep 09:30

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

Choose a tag to compare

@xbzbing xbzbing released this 20 Sep 02:54

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 实时记录
  • 刷新时清除工作区旧边界