Skip to content

Releases: hulibuld/dsh-refresh-restart

0.3.0 · Windows 重启不再「只关不开」

Choose a tag to compare

@hulibuld hulibuld released this 24 Oct 10:24

Windows 点「重启」只关不开(0.2.2)已修。

桌面版主进程整棵树都在 Chromium 那个带 kill-on-close 的 job object 里,从里面
spawn 的 detached 助手会跟着应用一起被回收 —— 所以它只能把应用关掉,没机会
再拉回来。macOS 没有这个机制,因此只有 Windows 症状明显。

  • 新增 lib/win-helper.ps1:纯 ASCII 的 PowerShell 助手(Windows PowerShell
    5.1 用 ANSI 解码无 BOM 的 UTF-8,中文注释会让脚本解析失败)。流程是
    CloseMainWindow → 等进程真的退出 → 借 explorer.exe 执行临时 .lnk 重开 →
    25 秒内确认新进程出现,没有就退回 Start-Process 直起。
  • 新增 lib/win.js:载荷、快捷方式、explorer 交接、8 秒报到确认;每条路失败
    退下一层,最后一层失败如实报错,不再让界面无限转圈。
  • busyHeld():助手报告 cancelled / launch-failed 时放开 busy,避免「在关闭
    提示里点取消后,按钮永远卡在正在重启」。
  • 修三个只有真机才会暴露的坑:快捷方式 TargetPath 必须是 PowerShell 绝对路径
    (写 powershell.exe 会按快捷方式工作目录找,找不到就静默不执行)、explorer
    参数里的 .lnk 路径要加引号、载荷 exe 为空时直接抛错(否则读不到路径的进程
    会被空字符串匹配上)。

40 条测试全过;macOS 与 Linux 的助手逻辑未改动。

v0.2.2

Choose a tag to compare

@hulibuld hulibuld released this 24 Oct 08:10

修复

  • 取消关闭不再导致崩溃:点「重启」后如果 DSH 弹出「关闭应用会中断当前正在进行的任务」,你点「取消」,以前助手会在 20 秒后照样强杀应用再重开一个新实例,两个实例抢同一个端口,界面直接崩。现在超时按「用户取消」处理:不发信号、不重开,只写一条 cancelled。
  • 强杀变成显式开关:forceKill 默认 false;确实卡死、且能接受丢草稿时才打开。
  • 界面能收尾:新增只读路由 GET /plugins/dsh-refresh-restart/state,助手把进度写成 requested → quitting → cancelled / relaunched;取消时按钮立刻松开并提示「已取消重启」,不再无限转圈。旧宿主没有该路由时静默退化为原行为。
  • macOS 上应用拒绝退出时 AppleScript 返回的 -128 User canceled 现在按「取消」处理,而不是「退出失败」。

验证

  • 30 项单元/端到端测试全过,含一条专门的取消保护用例:造一个不肯退出的进程,验证助手只写 cancelled、不发 SIGTERM/SIGKILL、不重开。
  • macOS / Windows / Linux 桌面版均已真机点过按钮。

安装 / 升级

dsh plugin add dsh-refresh-restart

或装本页附带的 tgz。装完完全退出 DSH 再打开——宿主那一半要在重启后才换成新逻辑。

v0.2.1

Choose a tag to compare

@hulibuld hulibuld released this 24 Oct 05:56

修复

  • Windows 上避开系统「应用 / 编辑」菜单按钮:这两个按钮由桌面端 preload 注入,和本插件的刷新 / 重启抢同一块地方。现在渲染前会先读它们的外框,被占着就把整组按钮右移让位,没占着就照原样贴在「收起侧边栏」左边。
  • 让位探测改在 pointer-events: none 下进行,避免命中自己导致让位失效。

安装

dsh plugin add https://github.com/hulibuld/dsh-refresh-restart/releases/download/v0.2.1/dsh-refresh-restart-0.2.1.tgz

或走 npm:dsh plugin add dsh-refresh-restart

macOS 已真机验证;Windows / Linux 逻辑由单元测试覆盖(27 项全过)。

v0.2.0

Choose a tag to compare

@hulibuld hulibuld released this 23 Oct 11:58

左上角「刷新」「重启」按钮,装在 DSH 桌面版界面里。

安装

dsh plugin add https://github.com/hulibuld/dsh-refresh-restart/releases/download/v0.2.0/dsh-refresh-restart-0.2.0.tgz

或在插件市场里搜索 dsh-refresh-restart(收录审核通过后)。装完重启一次 DSH。

这个版本

  • 刷新:只重载界面层,不打断宿主里正在生成的回合;插件改动能立刻生效。
  • 重启:二次确认后退出整个应用并自动重新打开,会话与工作区都在。
  • 三平台:macOS(osascript quit + open)、Windows(CloseMainWindow + 重开 exe)、Linux(SIGTERM + 重开 AppImage / 可执行文件)。
  • 安全:重启是 POST,必须带宿主每次启动随机生成的一次性 token,回环地址伪造不了;插件零依赖、不联网、不读会话内容。
  • 27 个单元测试;macOS 已真机验证,Windows / Linux 有单测覆盖但未真机跑过(见 README 的 Roadmap)。