dsh-napcat-keeper 2.7.1 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.7.2 — 根上一点不留
4
+ - **修的什么**:2.7.0 的搬迁兜底扫描会跳过「规范老名字」(`napcat-keeper-state.json` 这种已经安排好去处的),本意是别把刚搬完的东西又归一次档。但碰上**目标位已经有同名文件**的情况(新目录里先躺着一份 `state.json`),根上那份老的既搬不走、也不归档,就永远留在 `~/.dsh` 根上了 —— 正是这次要收拾的那种乱。
5
+ - 现在兜底扫描不再挑名字:只要还留在根上、名字对得上插件的老命名,一律归档进 `legacy/`;被别的进程攥着搬不动的,下次启动再搬。跑完根上一个不剩。
6
+ - 顺带删掉因此没用了的 `CANONICAL_LEGACY` 常量。升级不用改配置。
7
+
3
8
  ## 2.7.1 — 搬迁时不留半截副本
4
9
  - **修的什么**:2.7.0 的自动搬迁里,「rename 失败就复制再删」这两步原先裹在同一个 `try` 里。碰上源文件正被别的进程攥着(比如 QQ 那条 cmd 还在往 `launch.log` 里追加),`copyFileSync` 会成功、`unlinkSync` 会失败 —— 结果目标位落了个**残缺副本**,而且因为「目标已存在就跳过」,以后每次启动都不会再搬它,残缺文件就一直留在那儿。
5
10
  - 现在两步分开:删不掉源文件就把刚复制的撤掉,返回「没搬成」,下次启动再试一遍。真正搬不动的文件原地不动,不污染新目录。
package/README.md CHANGED
@@ -239,7 +239,7 @@ QQ 那条进程链挂在本 DSH 实例下面——DSH 开着它就在,DSH 关
239
239
  ```
240
240
 
241
241
  - `env.bat` 只在「记住密码」开启时才有;两份 `autogen*.bat` 只在需要时出现(每次拉起前按当前配置重写,删掉也会自己长回来)。整个目录删掉 = 插件回到没配置过的状态。
242
- - **从老版本升上来(< 2.7.0)**:第一次启动会自动把原来散在 `~/.dsh` 根上的文件搬进这个目录(`napcat-keeper-config.json` → `config.json` 这种),改名一次就固定;计划任务里写死的旧路径也会一并改指新位置 —— 那一步用 `schtasks /change` 就地改,不结束正在跑的 QQ。老备份之类的零碎挪进 `legacy/`。
242
+ - **从老版本升上来(< 2.7.0)**:第一次启动会自动把原来散在 `~/.dsh` 根上的文件搬进这个目录(`napcat-keeper-config.json` → `config.json` 这种),改名一次就固定;计划任务里写死的旧路径也会一并改指新位置 —— 那一步用 `schtasks /change` 就地改,不结束正在跑的 QQ。老备份、以及搬不动的老文件(目标位已经有同名的那份、或者正被别的进程占着)都归到 `legacy/`,`~/.dsh` 根上不会留东西;实在被占着搬不动的,下次启动再搬一次。
243
243
  - `~/.dsh/qq-bridge-state.json` **不在**这个目录里,也不归这个插件:它由 `dsh-qq-bridge` 写,插件只是读一下它的时间戳,判断那边轮询还活着没有。
244
244
 
245
245
  ## 出事了先跑体检:`npm run check`
package/lib/index.js CHANGED
@@ -1,9 +1,14 @@
1
1
  /**
2
- * dsh-napcat-keeper —— NapCat 看门狗 v2.7.1(可发布通用版)
2
+ * dsh-napcat-keeper —— NapCat 看门狗 v2.7.2(可发布通用版)
3
3
  *
4
4
  * 解决的问题:DSH 是桌面应用,重启 DSH 时 NapCat(QQ 协议端) 不会跟着起来,
5
5
  * 于是 dsh-qq-bridge 一直轮询一个死端口,你在 QQ 里说的话就石沉大海。
6
6
  *
7
+ * v2.7.2:根上一点不留
8
+ * - 搬迁的兜底扫描原先跳过「规范老名字」,于是目标位已经有同名文件时(比如新目录里
9
+ * 已经躺着一份 state.json),根上那份老文件既搬不走、也不归档,永远留在那儿;
10
+ * - 现在只要名字对得上 LEGACY_LEFTOVER 就归档进 legacy/,搬不动的下次启动再来。
11
+ *
7
12
  * v2.7.1:搬迁时别留半截副本
8
13
  * - moveOne() 的复制兜底原来一把 try 包着「复制 + 删源」,源文件被别的进程攥着时
9
14
  * 会出现「复制成功、删源失败」——目标位落了个残缺文件,之后每次搬迁都因为
@@ -127,7 +132,7 @@ import { homedir, tmpdir } from 'node:os'
127
132
  import path from 'node:path'
128
133
 
129
134
  export const name = 'napcat-keeper'
130
- export const version = '2.7.1'
135
+ export const version = '2.7.2'
131
136
 
132
137
  /** tools 用来注册 napcat_* 工具;webServer 用来挂设置界面接口。拿不到也不至于把 DSH 拖崩。 */
133
138
  export const inject = ['tools', 'webServer']
@@ -271,9 +276,8 @@ const LEGACY_FILES = [
271
276
  ['napcat-autogen.bat', 'autogen.bat'],
272
277
  ]
273
278
  const LEGACY_DIRS = [['napcat-keeper-setup', 'setup']]
274
- /** 老版本留下的零碎(配置备份、bom-backup 之类):扫一遍挪进 legacy/,不参与运行 */
279
+ /** 老版本留在 ~/.dsh 根上的东西(没搬走的、配置备份、bom-backup 之类):统一归档进 legacy/ */
275
280
  const LEGACY_LEFTOVER = /^(napcat-keeper[.-]|napcat-qr\.|napcat-autogen)/
276
- const CANONICAL_LEGACY = new Set([...LEGACY_FILES, ...LEGACY_DIRS].map(([oldName]) => oldName))
277
281
 
278
282
  let migratedFor = ''
279
283
  /** 上一次搬迁搬了几个(给 apply 写一行日志用) */
@@ -328,9 +332,11 @@ function migrateLegacyFiles(dir) {
328
332
  }
329
333
  } catch {}
330
334
  }
335
+ // 兜底:还留在根上的(目标位已有同名文件、或者正被别的进程占用搬不动)一律归档进 legacy/,
336
+ // 别让它们继续躺在 ~/.dsh 根上冒充「插件还在用老布局」。这一趟搬不动的,下次启动再来。
331
337
  try {
332
338
  for (const entry of readdirSync(home)) {
333
- if (CANONICAL_LEGACY.has(entry) || !LEGACY_LEFTOVER.test(entry)) continue
339
+ if (!LEGACY_LEFTOVER.test(entry)) continue
334
340
  try {
335
341
  mkdirSync(path.join(target, 'legacy'), { recursive: true })
336
342
  if (moveOne(path.join(home, entry), path.join(target, 'legacy', entry))) moved += 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-napcat-keeper",
3
- "version": "2.7.1",
3
+ "version": "2.7.2",
4
4
  "description": "发现没有能够随着dsh打开自动启动napcat的插件,遂使用大肥鱼制作此插件,建议搭配Yuuyuko-uu的dsh-qq-bridge使用~",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",