Repository navigation
Releases: hulibuld/dsh-refresh-restart
Releases · hulibuld/dsh-refresh-restart
Release list
0.3.0 · Windows 重启不再「只关不开」
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
修复
- 取消关闭不再导致崩溃:点「重启」后如果 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
修复
- 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
左上角「刷新」「重启」按钮,装在 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)。