Skip to content

v1.0.1 — 卸载救援脚本与卸载文档

Choose a tag to compare

@PanChengN PanChengN released this 26 Sep 04:56
· 1 commit to main since this release

本版没有改动插件运行代码(index.js / client.js 与 v1.0.0 一致),修的是 path 安装的卸载陷阱。

修的问题

从 GitHub clone 后按 path 方式安装,DSH 会把绝对路径写进 profile。直接删掉 clone 出来的目录后,profile 里留下悬空引用:

位置 内容
profiles/<profile>/package.json dependencies 的 link:<已删路径> 与 dsh.profile.bundles 条目
profiles/<profile>/node_modules/@local/dsh-bundle-session-delete 指向已删目录的符号链接
profiles/<profile>/cordis.yml Loader 真正启动的 leaf 配置里那一行 - id: session-delete

症状:启动异常、插件清单出现失败条目、界面「加载失败;点击重试」、宿主报
dsh: cannot resolve profile bundle "@local/dsh-bundle-session-delete" ...。

机制补充:loadProfileDirectory() 对每个 bundle 逐个 try/catch,解析失败的 bundle 会被跳过并记入
skippedBundles,所以整个 profile 不会因此起不来;界面上看到的异常来自上述残留引用。

新增

  • scripts/fix-stale-install.py —— 救援脚本。默认 dry-run,--apply 才写入,每个被改动的文件先备份为
    *.bak-<时间戳>。会清理悬空 link: 依赖与对应的 dsh.profile.bundles 条目、profile 私有层的悬空符号链接、
    cordis.yml 的残留顶层行;锁文件只报告;profiles/node_modules 共享挂载层只统计不删。
    python3 scripts/fix-stale-install.py            # 只检查
    python3 scripts/fix-stale-install.py --apply    # 执行清理
  • README「卸载与换设备(必读)」 —— 正确顺序(先在 Plugins 里 Remove 再删目录)、症状与机制、
    脚本用法、不想跑脚本时的手工救援步骤,以及两条禁令:别直接 rm -rf 已启用的插件目录;
    别同时装两份(包名/行 id/路由都会撞)。

卸载的正确姿势

  1. 侧栏 Plugins 页面里 Disable / Remove 本插件
  2. 再删掉 clone 出来的目录

首次发布见 v1.0.0。