Skip to content

v1.4.1

@EasyTZ EasyTZ tagged this 27 Aug 10:26
插件的 HTTP 路由安全基线
  四个插件此前只有终端面板有 Origin / Content-Type 防线,而 dsh-git 恰恰是
  唯一有 commit / push / undo-commit 这类会改动用户仓库的写路由的插件。现在
  四个都补齐,并加 test/plugin-http-baseline.test.js 跨仓库强制一致——连四份
  originAllowed 的实现是否逐字相同都比。插件 pin 同步升级。

热更新装不满就不许扶正
  _installPlugins 曾经是「一个插件装失败就 warn 一声接着装下一个」,漏出一个
  隐蔽的洞:装失败的若正好是被用户关掉的插件,它不在激活 overlay 里,_verify
  自检根本不加载它、照样通过、新内核被扶正;等用户哪天重新打开它并重启就秒退
  黑屏,而事故和「更新内核」这个动作隔了好几天。_activationPatch 同理不再吞
  异常。

_verify 改用 --port 0
  与 DshService 的正式启动路径统一。原先父进程探端口再交给内核,中间有固有
  时间差;Windows 上 Hyper-V / WSL2 / Docker 会动态预留大段端口,撞上就是
  listen EACCES——v1.3.1 修的正是这个,留在这条路上意味着恰恰在那批机器上
  内核热更新会反复自检失败。

清单校验与遗留清理
  plugins.json 增加重复 entryId / packageName 校验(重复 entryId 与「和上游
  撞名」同样导致内核秒退)和 packageName 形状校验(它会被摊进 path.join 再
  交给递归 rmSync)。遗留插件清理改为记账(dsh 的 package.json 里的
  dsDesktopPlugins),不再靠 dsh- 前缀猜——用户自己装的第三方 dsh-* 插件
  以前会被当遗留删掉。registerDependency 版本变了要改写,不再停在旧号。

构建与发版闸门
  package.json 新增 dshKernel.expected,prepare-kernel 核对本机全局 dsh 版本,
  对不上直接中止:内核此前完全来自打包机的环境状态,同一个 commit 不同时间
  打包可能装进不同内核。verify-plugin-pins 增加 tag 形状校验(原先只查是不是
  软链,改成 #main 照样能过)。脚本取插件名改为「清单 ∩ dependencies」。
  dist 解除联调前落标记文件,强杀导致 finally 不执行时由 install-plugin 与
  plugins-status 提醒。拷贝插件时跳过 test/ 与 .github/。
Assets 2
Loading