dsh-cuigengji-plugin 0.4.3 → 0.4.4

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.
Files changed (67) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1 -1
  3. package/cordis.patch.yml +3 -3
  4. package/docs/CHANGELOG.md +7 -0
  5. package/docs/agent-installation.md +19 -12
  6. package/docs/architecture.md +74 -74
  7. package/docs/desktop-migration-20260930.md +26 -26
  8. package/docs/development.md +7 -3
  9. package/docs/getting-started.md +17 -7
  10. package/docs/layout-progress.md +31 -31
  11. package/docs/market-listing.md +5 -3
  12. package/docs/npm-publishing.md +28 -12
  13. package/docs/package-name-migration.md +3 -3
  14. package/docs/planning-board.md +44 -44
  15. package/docs/presets.md +24 -24
  16. package/docs/release-process.md +15 -11
  17. package/docs/tavern-compatibility-audit-20261001.md +109 -109
  18. package/docs/test-report.md +139 -129
  19. package/docs/upgrade.md +3 -1
  20. package/docs/usage-review.md +13 -13
  21. package/lib/client.js +18 -14
  22. package/package.json +18 -14
  23. package/skills/cuigengji-maintenance/SKILL.md +2 -2
  24. package/src/adapters/dsh/prompt.js +36 -36
  25. package/src/adapters/dsh/rpc.js +96 -96
  26. package/src/adapters/dsh/skills.js +17 -17
  27. package/src/adapters/mcp/actions.js +6 -6
  28. package/src/adapters/mcp/client.js +172 -172
  29. package/src/adapters/mcp/server.js +40 -40
  30. package/src/application/bindings/session.js +72 -72
  31. package/src/application/queries/context.js +15 -15
  32. package/src/application/store.js +412 -412
  33. package/src/client/features/chapters/clipboard.ts +27 -27
  34. package/src/client/features/chapters/history.ts +11 -11
  35. package/src/client/features/chapters/index.jsx +118 -118
  36. package/src/client/features/chapters/sync.ts +155 -155
  37. package/src/client/features/chapters/useChapterSync.ts +39 -39
  38. package/src/client/features/context/index.jsx +22 -22
  39. package/src/client/features/memory/index.jsx +73 -73
  40. package/src/client/features/planning/Decorations.tsx +1 -1
  41. package/src/client/features/planning/Pages.tsx +11 -11
  42. package/src/client/features/planning/data.js +16 -16
  43. package/src/client/index.tsx +130 -130
  44. package/src/client/launcher.tsx +78 -78
  45. package/src/client/shared/creation.tsx +34 -34
  46. package/src/client/shared/detail-page.tsx +61 -61
  47. package/src/client/shared/drafts.js +17 -17
  48. package/src/client/shared/evidence.jsx +11 -11
  49. package/src/client/shared/groups.tsx +34 -34
  50. package/src/client/shared/preferences.tsx +104 -104
  51. package/src/client/shared/select-style.ts +25 -25
  52. package/src/client/shared/state.js +95 -95
  53. package/src/client/shared/ui.jsx +19 -19
  54. package/src/client/shared/workspace.tsx +11 -11
  55. package/src/client/style.ts +274 -274
  56. package/src/client/visual.ts +190 -190
  57. package/src/contracts/actions.js +19 -19
  58. package/src/contracts/planning.ts +52 -52
  59. package/src/domain/manuscript.ts +4 -4
  60. package/src/domain/planning/index.ts +113 -113
  61. package/src/domain/planning/model.ts +59 -59
  62. package/src/domain/preset/index.js +89 -89
  63. package/src/index.js +91 -91
  64. package/src/infrastructure/migrations/legacy.js +96 -96
  65. package/src/infrastructure/migrations/tavern.js +78 -78
  66. package/src/infrastructure/persistence/atomic-store.ts +80 -80
  67. package/src/infrastructure/persistence/project-layout.ts +1 -1
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 mistnest
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 mistnest
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -57,7 +57,7 @@
57
57
 
58
58
  ## 开始使用
59
59
 
60
- 当前主要适配 DSH Windows 桌面版,已验证的宿主版本是 **0.2.0-rc.2**。普通用户无需另装 Git、Node.js 或编译源码。
60
+ 当前主要适配 DSH Windows 桌面版,0.4.4 支持 **0.2.1-rc.2** 和 **0.2.0-rc.2**。旧插件 0.4.3 会被新版 DSH 的版本检查拒绝,更新催更姬即可,小说数据与原有功能保持不变。普通用户无需另装 Git、Node.js 或编译源码。
61
61
 
62
62
  推荐把[安装与更新指南](docs/agent-installation.md)交给 Agent;也可以按[桌面安装步骤](docs/getting-started.md),在 DSH“添加插件”中安装[成品包](https://github.com/mistnest/dsh-cuigengji-plugin/releases/latest)。更新时自动备份、迁移并校验已有作品,详见[更新与数据迁移](docs/upgrade.md)。
63
63
 
package/cordis.patch.yml CHANGED
@@ -1,3 +1,3 @@
1
- - insert:
2
- - id: cuigengji
3
- name: dsh-cuigengji-plugin
1
+ - insert:
2
+ - id: cuigengji
3
+ name: dsh-cuigengji-plugin
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # 更新记录
2
2
 
3
+ ## 0.4.4 新版 DSH 兼容修补
4
+
5
+ - 支持 DSH Windows 桌面版 0.2.1-rc.2,保留 0.2.0-rc.2 兼容;修复原 0.4.3 因宿主版本声明被新版插件管理器拒绝安装的问题。
6
+ - 安装维护工具兼容新版桌面内置包管理器的位置,继续使用 DSH 原生安装流程,无需用户额外安装 Git、Node.js 或编译源码。
7
+ - 发布验收使用各版桌面自带的包管理器和运行时,覆盖新版实际工作台、接口、工具与 Skill,以及旧宿主 0.4.3 到新版宿主 0.4.4 的完整数据保留。
8
+ - 此版本仅基于公开 0.4.3 做兼容修补,正文、规划、设定、预设和存储格式沿用原有行为;0.5 开发功能不在本次更新中。已有用户保留原数据目录更新即可,无需重新导入作品。
9
+
3
10
  ## 0.4.3 固定发布与验收流程
4
11
 
5
12
  - 维护者通过统一发布入口完成预检、打包、GitHub 发布、npm 可信发布、安装与升级验收及市场条目同步,减少渠道版本和安装包不一致的问题。
@@ -4,12 +4,12 @@
4
4
 
5
5
  ## 下载入口
6
6
 
7
- - 目标发布:[0.4.2](https://github.com/mistnest/dsh-cuigengji-plugin/releases/tag/v0.4.2)
8
- - 成品安装包:[dsh-cuigengji-plugin-0.4.2.tgz](https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/dsh-cuigengji-plugin-0.4.2.tgz)
9
- - 哈希校验:[SHA256SUMS](https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/SHA256SUMS)
10
- - 已验证宿主:DSH Windows 桌面版 **0.2.0-rc.2**。后续宿主版本以对应发布说明为准。
7
+ - 目标发布:[0.4.4](https://github.com/mistnest/dsh-cuigengji-plugin/releases/tag/v0.4.4)
8
+ - 成品安装包:[dsh-cuigengji-plugin-0.4.4.tgz](https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.4/dsh-cuigengji-plugin-0.4.4.tgz)
9
+ - 哈希校验:[SHA256SUMS](https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.4/SHA256SUMS)
10
+ - 已验证宿主:DSH Windows 桌面版 **0.2.1-rc.2** 和 **0.2.0-rc.2**。后续宿主版本以对应发布说明为准。
11
11
 
12
- npm 发布后可在 DSH“添加插件”的“包名或地址”中填 `dsh-cuigengji-plugin`;Agent 更新使用精确版本 `dsh-cuigengji-plugin@0.4.2`,并先查明该版本确已公开。也支持仓库地址 `https://github.com/mistnest/dsh-cuigengji-plugin`;0.4.1 起仓库包含完整编译文件,不需要构建授权。固定版本与无 Git 安装可使用上面的 `.tgz` URL,或下载后的 Windows 绝对路径。GitHub 的源码 ZIP 不替代 `.tgz` 包。
12
+ 安装或更新优先使用精确版本 `dsh-cuigengji-plugin@0.4.4`,执行前核对 npm 精确版本与发布说明。无 Git 验收覆盖新装、旧宿主的 0.4.3 同名升级及 0.4.1 旧名升级,升级后检查完整逻辑工作库保留。备用入口使用上面的 `.tgz` URL,或下载后的 Windows 绝对路径。也支持仓库地址 `https://github.com/mistnest/dsh-cuigengji-plugin`;0.4.1 起仓库包含完整编译文件,不需要构建授权。GitHub 的源码 ZIP 不替代 `.tgz` 包。
13
13
 
14
14
  **环境清单中若存在旧包 `dsh-cuigengji`,先按[安装名称迁移](package-name-migration.md)以关闭状态装入新包,再离线转接启用项和原配置。不要直接同时启用两个包。** 新安装或已经使用统一名称的更新继续本页流程。
15
15
 
@@ -19,7 +19,7 @@ npm 发布后可在 DSH“添加插件”的“包名或地址”中填 `dsh-cui
19
19
 
20
20
  ## 用户可直接交给 Agent 的话
21
21
 
22
- > 请按催更姬的 Windows Agent 安装指南帮我安装或更新 dsh-cuigengji-plugin 到 0.4.2。使用 DSH 原生插件管理与已公开成品包;如果存在旧安装名,先完成名称迁移。保留已有配置和小说数据,完整重启后确认实际加载版本、数据目录和迁移校验结果。重新进入插件时应能直接继续写作。
22
+ > 请按催更姬的 Windows Agent 安装指南帮我安装或更新 dsh-cuigengji-plugin 到 0.4.4。使用 DSH 原生插件管理与已公开成品包;如果存在旧安装名,先完成名称迁移。保留已有配置和小说数据,完整重启后确认实际加载版本、数据目录和迁移校验结果。重新进入插件时应能直接继续写作。
23
23
 
24
24
  ## 1. 查明当前环境
25
25
 
@@ -41,10 +41,16 @@ Windows 外部 Agent 可以用 PowerShell 的 `Get-FileHash -Algorithm SHA256`
41
41
 
42
42
  ## 3. 由宿主安装和启用
43
43
 
44
- 通过 DSH 原生工具安装 URL:
44
+ 通过 DSH 原生工具安装固定版本:
45
45
 
46
46
  ```json
47
- {"action":"install_bundle","target":"https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/dsh-cuigengji-plugin-0.4.2.tgz","enabled":true}
47
+ {"action":"install_bundle","target":"dsh-cuigengji-plugin@0.4.4","enabled":true}
48
+ ```
49
+
50
+ 需要使用 GitHub 成品包时:
51
+
52
+ ```json
53
+ {"action":"install_bundle","target":"https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.4/dsh-cuigengji-plugin-0.4.4.tgz","enabled":true}
48
54
  ```
49
55
 
50
56
  或把 `target` 换成已经核对过的本地 `.tgz` 绝对路径。没有原生工具访问能力的外部 Agent,可以先准备好包,交由 DSH 的原生插件页安装,并继续接手后面的验证。
@@ -53,9 +59,9 @@ Windows 外部 Agent 可以用 PowerShell 的 `Get-FileHash -Algorithm SHA256`
53
59
 
54
60
  desktop profile 由桌面应用管理。普通 DSH CLI 会拒绝对它直接操作;不要创建同名 profile、手工改 bundles 或在用户 profile 直接运行 `pnpm add`。本仓库的 `install-desktop.ps1` 是开发者维护脚本,不属于普通用户安装路径。
55
61
 
56
- ## 4. 完整重启与自动迁移
62
+ ## 4. 重新加载与自动迁移
57
63
 
58
- 请用户先保存编辑中的内容,然后从 DSH 菜单正常退出,包括托盘进程,再从原快捷方式启动。具备相应权限的安装 Agent 可以完成重启;否则说明唯一剩余步骤并在重启后继续验收。
64
+ 先读取宿主安装结果。报告需要重启或仍加载旧版本时,请用户保存编辑中的内容,从 DSH 菜单正常退出,包括托盘进程,再从原快捷方式启动。宿主已热重载时可直接验收实际版本;未完成加载就不能报告成功。具备相应权限的安装 Agent 可以完成重启;否则说明唯一剩余步骤并在重启后继续验收。
59
65
 
60
66
  插件加载阶段完成升级前的完整原始快照、挂起事务恢复、物理布局迁移和完整逻辑校验。用户不需要单独运行迁移命令,也不会看到迁移向导。**负责更新的 Agent 必须完成这一步的验证,才能说更新结束。**
61
67
 
@@ -70,12 +76,12 @@ desktop profile 由桌面应用管理。普通 DSH CLI 会拒绝对它直接操
70
76
  再核对版本、原数据根和原作品 ID;下面的数据目录是示例,请换成之前查明的目录:
71
77
 
72
78
  ```json
73
- {"action":"verify","args":{"expectedVersion":"0.4.2","expectedDataRoot":"C:\\Users\\用户名\\AppData\\Local\\cuigengji","expectedNovelIds":[]}}
79
+ {"action":"verify","args":{"expectedVersion":"0.4.4","expectedDataRoot":"C:\\Users\\用户名\\AppData\\Local\\cuigengji","expectedNovelIds":[]}}
74
80
  ```
75
81
 
76
82
  `expectedNovelIds` 可填升级前作品的真实 ID,不用新 ID 替代。确认:
77
83
 
78
- - `status.status=ready`,实际加载版本为 0.4.2,数据根与更新前一致。
84
+ - `status.status=ready`,实际加载版本为 0.4.4,数据根与更新前一致。
79
85
  - `verify.verified=true`,各作品、正文版本、回收站、设定、规划页和绑定数量符合原数据。
80
86
  - 原有作品仍能通过只读工具访问。初次安装应是可用空库,不会附带作者小说。
81
87
 
@@ -85,6 +91,7 @@ desktop profile 由桌面应用管理。普通 DSH CLI 会拒绝对它直接操
85
91
 
86
92
  ## 失败时怎样处理
87
93
 
94
+ - **新版 DSH 拒绝旧 0.4.3**:旧包仅声明支持 0.2.0-rc.2。DSH 0.2.1-rc.2 使用本页的 0.4.4 更新入口,保留原配置和数据根,不添加兼容豁免或停用供应链检查。
88
95
  - **无法从依赖变更中确定安装了哪一个包**:若重复用了同一个仓库地址,改为目标版本的 `.tgz` URL 或明确的新提交地址;核对安装结果与重启后版本,不把无依赖变更当作更新完成。
89
96
  - **找不到 Git / `git ls-remote`**:核对是否误用了仓库地址,换成已核实的 `.tgz`。
90
97
  - **不兼容或构建批准提示**:保留宿主的具体结果,按相应发布说明处理,不绕过宿主检查。
@@ -1,67 +1,67 @@
1
- # 催更姬模块与工作数据
2
-
3
- ```mermaid
4
- flowchart TD
5
- UI[写作界面:正文 / 规划 / 设定] --> RPC[DSH RPC 适配层]
6
- DATAUI[工作数据区:位置 / 清单 / 导入导出] --> RPC
7
- AGENT[Agent 工具与技能] --> POLICY[会话绑定与操作记录]
8
- RPC --> POLICY
9
- RPC --> DATA[WorkData 全库备份服务]
10
- POLICY --> STORE[Store:作品操作与事务]
11
- DATA --> STORE
12
- UPGRADE[启动升级协调器:完整快照 / 恢复 / 迁移 / 校验] --> STORE
13
- MAINTENANCE[不绑定作品的维护工具 / RPC] --> UPGRADE
14
- STORE --> DISK[独立小说数据目录]
15
- POLICY --> MCP[MCP 图谱桥接]
16
- MCP --> STORE
17
- ```
18
-
19
- - `src/client/features`:正文、规划、设定、预设与工作数据界面,仅使用 RPC。
20
- - `src/adapters/dsh`、`src/adapters/mcp`:宿主通信、技能注册与工具边界;全库导入导出仅供作者界面。
21
- - `src/application/backup`:全库备份格式、SHA-256 校验、冲突预览、合并与导入前备份。
22
- - `src/application/maintenance/upgrade.ts`:加载阶段统一备份、恢复、迁移、逻辑摘要比对和可用闸门;`upgrade-backup.ts` 管理根目录之外的完整原始快照。维护查询不要求绑定小说,迁移失败也不会挡住宿主 Agent 和插件管理。
23
- - `src/application/bindings`、`src/application/queries`:会话绑定和按需接手信息;不会自动塞小说全文或全库资料。
24
- - `src/domain/planning`、`src/domain/memory`、`src/domain/preset`:规划事务、资料分组与预设规则。
1
+ # 催更姬模块与工作数据
2
+
3
+ ```mermaid
4
+ flowchart TD
5
+ UI[写作界面:正文 / 规划 / 设定] --> RPC[DSH RPC 适配层]
6
+ DATAUI[工作数据区:位置 / 清单 / 导入导出] --> RPC
7
+ AGENT[Agent 工具与技能] --> POLICY[会话绑定与操作记录]
8
+ RPC --> POLICY
9
+ RPC --> DATA[WorkData 全库备份服务]
10
+ POLICY --> STORE[Store:作品操作与事务]
11
+ DATA --> STORE
12
+ UPGRADE[启动升级协调器:完整快照 / 恢复 / 迁移 / 校验] --> STORE
13
+ MAINTENANCE[不绑定作品的维护工具 / RPC] --> UPGRADE
14
+ STORE --> DISK[独立小说数据目录]
15
+ POLICY --> MCP[MCP 图谱桥接]
16
+ MCP --> STORE
17
+ ```
18
+
19
+ - `src/client/features`:正文、规划、设定、预设与工作数据界面,仅使用 RPC。
20
+ - `src/adapters/dsh`、`src/adapters/mcp`:宿主通信、技能注册与工具边界;全库导入导出仅供作者界面。
21
+ - `src/application/backup`:全库备份格式、SHA-256 校验、冲突预览、合并与导入前备份。
22
+ - `src/application/maintenance/upgrade.ts`:加载阶段统一备份、恢复、迁移、逻辑摘要比对和可用闸门;`upgrade-backup.ts` 管理根目录之外的完整原始快照。维护查询不要求绑定小说,迁移失败也不会挡住宿主 Agent 和插件管理。
23
+ - `src/application/bindings`、`src/application/queries`:会话绑定和按需接手信息;不会自动塞小说全文或全库资料。
24
+ - `src/domain/planning`、`src/domain/memory`、`src/domain/preset`:规划事务、资料分组与预设规则。
25
25
  - `src/infrastructure/persistence`、`src/infrastructure/migrations`:跨进程锁与原子写入、旧格式转换。
26
26
  - `project-store.ts` 按操作读取相关索引与目标正文;`project-layout.ts` 划分持久文件;`file-transaction.ts` 负责多文件提交、校验和中断恢复。业务 Store 与 Agent 工具仍使用原来的 action 和版本契约。
27
- - `src/application/store.js`:仍编排作品、章节和图谱命令;进一步拆分时保持既有 action 与备份格式。旧路径保留兼容转发,TypeScript 迁移尚未覆盖全部 JS/JSX。
28
-
29
- ## 作者交互组件
30
-
31
- `features/welcome` 提供欢迎页与作品入口,复用现有创建、导入和会话绑定操作;打开“作品首页”不解除当前绑定。`shared/WorkbenchHeader.tsx` 展示首页、正文、规划、设定、刷新、设置以及独立的关于入口,作品切换从首页完成,写作预设从设置进入。“关于催更姬”直接打开交流与支持信息,关闭后返回原页面并恢复按钮焦点。`shared/refresh.tsx` 只让各资源重新读取服务端索引,草稿、正文滚动位置和画布相机由各自组件继续持有。`shared/batch-management.tsx` 与 `batch-style.ts` 统一设定、规划的批量操作区和选择列表,移动范围限制为当前筛选可见的已选项,业务保存仍由对应功能模块负责。
32
-
33
- 章节目录行由 `DirectoryRow.tsx` 展示打开、字数和回收站操作,`useChapterReorder.ts` 单独管理拖拽、自动滚动与目录版本检查。正文标题用 `InlineTitle.tsx` 原位修改;删除前通过正文同步器等待已有保存,再保存后续输入,避免回收站吞掉本地草稿。恢复复用删除前版本,不改变正文版本契约。
34
-
35
- 作品首页的卡片主体与右侧回收按钮是并列按钮,分别负责打开作品与整本回收,避免嵌套按钮或点击穿透。“作品与备份”内的作品回收站提供恢复与永久删除。整本回收沿用 `archived`,新增可选的 `archivedAt`;旧归档作品也能恢复,不改变布局版本或业务 ID。
36
-
37
- `application/novels/lifecycle.ts` 管理整本回收、恢复与永久删除。生命周期操作只开放给作者的 RPC,使用作品 revision 检查并发;会话策略检查这本作品的所有活动 Agent,运行中拒绝回收。回收会解除该作品的全部会话绑定,普通工具、旧编辑器和导入目标不能继续写入回收的作品;恢复不自动重新绑定会话。跨面板刷新仅传递变更通知,不传递正文。正文、章节历史、设定关系、规划页面、预设与导入原件在回收时保持原样。
38
-
39
- 永久删除必须从回收站发起,使用文件事务日志 v3:先核对目录路径和内部作品 ID,将完整目录暂存于事务目录,再提交作品索引、绑定和请求记录的变更,最后清理暂存目录。进程中断时通过原日志完成操作,其他作品与历史导出备份不受影响;旧 v1/v2 日志仍兼容。新增请求记录带作品 ID,以便清理该作品的重试缓存;无法确认归属的旧记录和审计日志不做猜测性清理。
40
-
41
- 规划的 `CanvasDraft.tsx` 管理原位新建和同请求重试,`DecorationInlineEditor.tsx` 管理批注草稿与冲突合并,`SceneCard.tsx` 统一卡片层级,`CanvasInspector.tsx` 提供不阻塞画布的详情侧栏。共享画布负责坐标、选择、移动和连线;成功写入后更新当前页面索引及批注,下一次操作使用已保存的版本。
42
-
43
- 缩放到总览时,`graph-style.ts` 将规划与设定统一为“状态或类型标识+标题”的缩略卡片;隐藏摘要与章节引用,重新分配留白。缩略展示沿用原卡片的世界坐标尺寸和连线锚点,类型、标题、选中边框及连接点随缩放保持可辨识。
44
-
45
- ## 独立数据目录
46
-
27
+ - `src/application/store.js`:仍编排作品、章节和图谱命令;进一步拆分时保持既有 action 与备份格式。旧路径保留兼容转发,TypeScript 迁移尚未覆盖全部 JS/JSX。
28
+
29
+ ## 作者交互组件
30
+
31
+ `features/welcome` 提供欢迎页与作品入口,复用现有创建、导入和会话绑定操作;打开“作品首页”不解除当前绑定。`shared/WorkbenchHeader.tsx` 展示首页、正文、规划、设定、刷新、设置以及独立的关于入口,作品切换从首页完成,写作预设从设置进入。“关于催更姬”直接打开交流与支持信息,关闭后返回原页面并恢复按钮焦点。`shared/refresh.tsx` 只让各资源重新读取服务端索引,草稿、正文滚动位置和画布相机由各自组件继续持有。`shared/batch-management.tsx` 与 `batch-style.ts` 统一设定、规划的批量操作区和选择列表,移动范围限制为当前筛选可见的已选项,业务保存仍由对应功能模块负责。
32
+
33
+ 章节目录行由 `DirectoryRow.tsx` 展示打开、字数和回收站操作,`useChapterReorder.ts` 单独管理拖拽、自动滚动与目录版本检查。正文标题用 `InlineTitle.tsx` 原位修改;删除前通过正文同步器等待已有保存,再保存后续输入,避免回收站吞掉本地草稿。恢复复用删除前版本,不改变正文版本契约。
34
+
35
+ 作品首页的卡片主体与右侧回收按钮是并列按钮,分别负责打开作品与整本回收,避免嵌套按钮或点击穿透。“作品与备份”内的作品回收站提供恢复与永久删除。整本回收沿用 `archived`,新增可选的 `archivedAt`;旧归档作品也能恢复,不改变布局版本或业务 ID。
36
+
37
+ `application/novels/lifecycle.ts` 管理整本回收、恢复与永久删除。生命周期操作只开放给作者的 RPC,使用作品 revision 检查并发;会话策略检查这本作品的所有活动 Agent,运行中拒绝回收。回收会解除该作品的全部会话绑定,普通工具、旧编辑器和导入目标不能继续写入回收的作品;恢复不自动重新绑定会话。跨面板刷新仅传递变更通知,不传递正文。正文、章节历史、设定关系、规划页面、预设与导入原件在回收时保持原样。
38
+
39
+ 永久删除必须从回收站发起,使用文件事务日志 v3:先核对目录路径和内部作品 ID,将完整目录暂存于事务目录,再提交作品索引、绑定和请求记录的变更,最后清理暂存目录。进程中断时通过原日志完成操作,其他作品与历史导出备份不受影响;旧 v1/v2 日志仍兼容。新增请求记录带作品 ID,以便清理该作品的重试缓存;无法确认归属的旧记录和审计日志不做猜测性清理。
40
+
41
+ 规划的 `CanvasDraft.tsx` 管理原位新建和同请求重试,`DecorationInlineEditor.tsx` 管理批注草稿与冲突合并,`SceneCard.tsx` 统一卡片层级,`CanvasInspector.tsx` 提供不阻塞画布的详情侧栏。共享画布负责坐标、选择、移动和连线;成功写入后更新当前页面索引及批注,下一次操作使用已保存的版本。
42
+
43
+ 缩放到总览时,`graph-style.ts` 将规划与设定统一为“状态或类型标识+标题”的缩略卡片;隐藏摘要与章节引用,重新分配留白。缩略展示沿用原卡片的世界坐标尺寸和连线锚点,类型、标题、选中边框及连接点随缩放保持可辨识。
44
+
45
+ ## 独立数据目录
46
+
47
47
  配置优先级:插件 `dataRoot` > `CUIGENGJI_DATA_ROOT` > 系统默认目录。小说数据应存放在仓库之外,与源码、DSH Home 和 Electron 浏览器数据分开;公开仓库不提供个人作品或运行数据。工作数据页显示服务实际使用的绝对路径,迁移应核对作品名称清单,不能只按文件是否复制成功判断。
48
48
 
49
- 存储布局版本 4 按书名目录隔离,章节、设定和规划页使用“可读名称 + 稳定短 ID”作为文件名。`library.json` 保存作品 ID 与目录名的映射,各模块索引保存对象 ID 与文件名的映射;工具、正文引用和备份仍使用完整业务 ID:
49
+ 存储布局版本 4 按书名目录隔离,章节、设定和规划页使用“可读名称 + 稳定短 ID”作为文件名。`library.json` 保存作品 ID 与目录名的映射,各模块索引保存对象 ID 与文件名的映射;工具、正文引用和备份仍使用完整业务 ID:
50
50
 
51
51
  ```text
52
52
  dataRoot/
53
- library.json 作品索引、ID → 目录名与存储格式版本
54
- novels/<书名>/
53
+ library.json 作品索引、ID → 目录名与存储格式版本
54
+ novels/<书名>/
55
55
  project.json 作品信息、卷目录与模块清单
56
56
  chapters/index.json 目录、字数及版本引用索引
57
- chapters/第1章 雨夜来信--a1b2c3d4.json 当前正文与元信息(含软删除章节)
57
+ chapters/第1章 雨夜来信--a1b2c3d4.json 当前正文与元信息(含软删除章节)
58
58
  planning/index.json 页面、事件、关系及变更索引
59
- planning/主线--main.json 默认画布
60
- planning/码头决战--e5f6a7b8.json 本页事件、箭头、框与便签
59
+ planning/主线--main.json 默认画布
60
+ planning/码头决战--e5f6a7b8.json 本页事件、箭头、框与便签
61
61
  planning/legacy.json 旧规划原文(如存在)
62
62
  settings/index.json 设定索引
63
- settings/entries/角色-林序--c9d0e1f2.json 人物全文
64
- settings/entries/世界-雾港--a3b4c5d6.json 世界设定全文
63
+ settings/entries/角色-林序--c9d0e1f2.json 人物全文
64
+ settings/entries/世界-雾港--a3b4c5d6.json 世界设定全文
65
65
  settings/groups.json 设定分组(如存在)
66
66
  settings/relations.json 设定关系
67
67
  preset.json 作者预设及导入原文(如存在)
@@ -70,7 +70,7 @@ dataRoot/
70
70
  history/planning/<变更ID>.json 完整规划变更与撤销快照
71
71
  history/planning-legacy.json 画布转换前的旧规划原文(如存在)
72
72
  runtime/bindings.json 会话绑定
73
- runtime/upgrade.json 实际加载版本、升级阶段和完整性结果
73
+ runtime/upgrade.json 实际加载版本、升级阶段和完整性结果
74
74
  runtime/requests/<请求哈希>.json 防止重复操作的结果记录
75
75
  audit/ 操作日志
76
76
  backups/ 迁移及导入前快照
@@ -78,31 +78,31 @@ dataRoot/
78
78
 
79
79
  索引不保存全文;普通查询只读取目标作品的所需索引,正文读取不带历史,规划详情只读取对应画布页。保存只提交变化的文件。涉及正文、设定失效标记、画布结构与请求结果的修改,使用同一个跨进程锁及持久事务日志,恢复完成后才允许下一次操作读取。事务暂存内容全部通过校验后才开始覆盖目标,中断后的操作会先完成恢复。
80
80
 
81
- 0.4.0 插件加载阶段先在数据根旁的 `.cuigengji-upgrade-backups` 创建完整原始快照,再恢复事务、验证整个旧数据并迁移;存储层仍保留 `backups/before-storage-*` 等逻辑检查点。迁移前后比较完整逻辑摘要,保留对象 ID、revision、正文版本、回收站、页面、批注、导入原文、绑定和请求记录;格式不合法会报错并保留原文件。迁移后的 `store.json` 是旧快照,新版以 `library.json` 与作品目录为准。升级完成后正常查询继续按需读取,不把维护记录放进写作上下文。
82
-
83
- 已有布局版本 2 的 ID 目录会在完整验证后迁移到书名目录;迁移前将完整逻辑数据、原索引与目录对应表保存到 `backups/before-project-names-*`。书名中的 Windows 非法字符替换为下划线,保留原始显示书名;重名(含仅大小写不同)或已有同名文件使用“书名(2)”等后缀,保留已有目录编号。书名长度限制仅影响文件夹名。在插件内重命名作品会同步迁移目录,大小写或非法字符替换后等价的改名保留当前目录。
84
-
85
- 已有布局版本 3 会先验证完整逻辑数据,保存 `backups/before-readable-files-*` 快照,再通过事务生成新文件、更新索引并清理原先托管的 ID 文件。短 ID 取完整业务 ID 的 SHA-256 前 8 位,仅用于文件命名,不替代任何引用。Windows 非法字符、保留名、长标题、大小写和同名冲突均处理;若目标位置有作者自存文件,会增加“(2)”等后缀,保留原文件。历史、请求和事务文件继续使用内部 ID。
86
-
87
- 在插件内修改章节标题、设定名称或规划页名称会同步更新文件名;恢复旧章节标题也会更新。目录拖拽顺序不写进文件名,避免一次排序引起大量改名。改名只改变物理存储映射,正文、历史、角色来源、规划连线及正文版本引用保持完整;规划页改名会先读取该页完整内容。
88
-
89
- 目录移动、文件改名、元信息、索引和请求结果共用可恢复事务;中断后先恢复,再允许读写。整个目录移动会保留未加载的正文、历史和作者额外存放的文件。切换存储格式前关闭旧版宿主;旧版程序不接受布局版本 4。插件维护索引与文件名;给作者交换内容继续使用一键导入/导出。
90
-
91
- ## 备份契约
92
-
81
+ 0.4.0 插件加载阶段先在数据根旁的 `.cuigengji-upgrade-backups` 创建完整原始快照,再恢复事务、验证整个旧数据并迁移;存储层仍保留 `backups/before-storage-*` 等逻辑检查点。迁移前后比较完整逻辑摘要,保留对象 ID、revision、正文版本、回收站、页面、批注、导入原文、绑定和请求记录;格式不合法会报错并保留原文件。迁移后的 `store.json` 是旧快照,新版以 `library.json` 与作品目录为准。升级完成后正常查询继续按需读取,不把维护记录放进写作上下文。
82
+
83
+ 已有布局版本 2 的 ID 目录会在完整验证后迁移到书名目录;迁移前将完整逻辑数据、原索引与目录对应表保存到 `backups/before-project-names-*`。书名中的 Windows 非法字符替换为下划线,保留原始显示书名;重名(含仅大小写不同)或已有同名文件使用“书名(2)”等后缀,保留已有目录编号。书名长度限制仅影响文件夹名。在插件内重命名作品会同步迁移目录,大小写或非法字符替换后等价的改名保留当前目录。
84
+
85
+ 已有布局版本 3 会先验证完整逻辑数据,保存 `backups/before-readable-files-*` 快照,再通过事务生成新文件、更新索引并清理原先托管的 ID 文件。短 ID 取完整业务 ID 的 SHA-256 前 8 位,仅用于文件命名,不替代任何引用。Windows 非法字符、保留名、长标题、大小写和同名冲突均处理;若目标位置有作者自存文件,会增加“(2)”等后缀,保留原文件。历史、请求和事务文件继续使用内部 ID。
86
+
87
+ 在插件内修改章节标题、设定名称或规划页名称会同步更新文件名;恢复旧章节标题也会更新。目录拖拽顺序不写进文件名,避免一次排序引起大量改名。改名只改变物理存储映射,正文、历史、角色来源、规划连线及正文版本引用保持完整;规划页改名会先读取该页完整内容。
88
+
89
+ 目录移动、文件改名、元信息、索引和请求结果共用可恢复事务;中断后先恢复,再允许读写。整个目录移动会保留未加载的正文、历史和作者额外存放的文件。切换存储格式前关闭旧版宿主;旧版程序不接受布局版本 4。插件维护索引与文件名;给作者交换内容继续使用一键导入/导出。
90
+
91
+ ## 备份契约
92
+
93
93
  作者的单本、局部内容和全库操作统一进入“导入 / 导出”。全库使用独立版本化格式 `cuigengji-workspace`,保存整个 Store(含归档作品、删除章节及历史、规划变更、原始预设、绑定和请求记录),并附带操作日志、旧规划迁移备份及校验码。
94
94
 
95
95
  磁盘布局版本与导出版本独立:现有 `cuigengji` 单本备份和 `cuigengji-workspace` 全库备份仍可导入。新范围选择使用 `cuigengji-package` 数据包;全库保持原有格式,旧单本 RPC 也保持原逻辑格式。整库备份会完整重建并验证数据,不从索引代替正文,不递归打包本机旧快照或事务暂存文件。
96
-
97
- 导入前预览;确认时在同一 Store 锁内重新校验冲突。相同作品跳过,不同内容的同 ID 作品、不同绑定或分叉日志拒绝导入。当前工作数据先存入 `backups/before-import-*`,再合并;源备份不修改。相同日志的前缀版本保留较长一份。导入前备份是本机回滚快照,不递归打包进后续导出,避免备份无限膨胀。
98
-
99
- 这是小说工作数据备份,不是 DSH 整机备份:聊天记录、附件、凭据由 DSH 管理,浏览器未保存草稿需先保存。备份预览会明确提示边界。恢复会话绑定依赖相同的 DSH 会话 ID;只迁移小说时仍可在新会话手动选择作品。
100
-
101
- ## 后续解耦边界
102
-
103
- 后续可将 `application/store.js` 的 Novel/Chapter 与 Graph 命令继续分离,逐步为剩余 JS/JSX 增加类型契约。每一步都应以旧数据、版本冲突和完整备份的回归测试保证兼容;Agent 始终是写作助手,正文优先,资料按需读取。
96
+
97
+ 导入前预览;确认时在同一 Store 锁内重新校验冲突。相同作品跳过,不同内容的同 ID 作品、不同绑定或分叉日志拒绝导入。当前工作数据先存入 `backups/before-import-*`,再合并;源备份不修改。相同日志的前缀版本保留较长一份。导入前备份是本机回滚快照,不递归打包进后续导出,避免备份无限膨胀。
98
+
99
+ 这是小说工作数据备份,不是 DSH 整机备份:聊天记录、附件、凭据由 DSH 管理,浏览器未保存草稿需先保存。备份预览会明确提示边界。恢复会话绑定依赖相同的 DSH 会话 ID;只迁移小说时仍可在新会话手动选择作品。
100
+
101
+ ## 后续解耦边界
102
+
103
+ 后续可将 `application/store.js` 的 Novel/Chapter 与 Graph 命令继续分离,逐步为剩余 JS/JSX 增加类型契约。每一步都应以旧数据、版本冲突和完整备份的回归测试保证兼容;Agent 始终是写作助手,正文优先,资料按需读取。
104
104
 
105
105
 
106
106
  ## 统一导入与导出
107
107
 
108
- 文件识别、范围和关联收集、复用时的 ID 重映射、预览与原子保存分别位于 `src/application/transfer` 的独立 TypeScript 文件,共享契约位于 `src/contracts/transfer.ts`。页面位于 `src/client/features/transfer`,其他模块只传递预选范围。详细格式、恢复与复用行为见[导入与导出](import-export.md)。
108
+ 文件识别、范围和关联收集、复用时的 ID 重映射、预览与原子保存分别位于 `src/application/transfer` 的独立 TypeScript 文件,共享契约位于 `src/contracts/transfer.ts`。页面位于 `src/client/features/transfer`,其他模块只传递预选范围。详细格式、恢复与复用行为见[导入与导出](import-export.md)。
@@ -1,26 +1,26 @@
1
- # 桌面版迁移说明
2
-
3
- 插件使用 DSH 官方 Windows 桌面应用;当前已验证的宿主版本为 0.2.0-rc.2。实际版本请以应用和依赖清单为准,不根据安装包文件名判断。
4
-
5
- ## 把小说从旧环境带过来
6
-
7
- 1. 在旧插件里保存正文和草稿,从“工作数据 · 导入/导出”导出小说数据。
8
- 2. 保留这份备份,再安装新 DSH 和插件;步骤见[安装说明](getting-started.md)。
9
- 3. 在新工作台查看实际数据目录,导入备份并核对作品、正文、历史、规划和设定。
10
- 4. 进入新会话时重新选择作品;跨环境的会话绑定依赖 DSH 会话 ID,不能仅凭小说文件推断聊天已迁移。
11
-
12
- DSH 的聊天记录、附件、模型配置、凭据与界面偏好不属于催更姬小说备份。需要迁移它们时,使用 DSH 自身的数据迁移方式并核对原会话能否打开。不要把个人 DSH Home、小说导出或截图提交到公开源码仓库。
13
-
14
- ## 已有原始小说目录
15
-
16
- 在应用停止写入后保留整个旧目录副本。配置新插件的 `dataRoot` 或使用导出/导入;确认工作数据页显示预期目录和作品清单后再继续创作。不要让两套 DSH 同时写同一小说目录。
17
-
18
- ## 桌面运行时
19
-
20
- Electron 的 `process.execPath` 指向桌面程序。插件启动 MCP 子进程时使用 Node 模式,避免误开第二个桌面窗口;普通 Node 与桌面内置 Node 都需要覆盖这条链路。
21
-
22
- 升级插件后需要完全退出并重启 DSH。安装脚本检查构建文件,不能替代重启后真实工作台的操作检查。
23
-
24
- ## 回退
25
-
26
- 回退之前先备份新环境里产生的作品和聊天。保留旧版本与升级前数据副本,但不要直接用旧备份覆盖升级后新增的正文。小说数据独立于插件源码,恢复作品不需要回退 Git 分支。
1
+ # 桌面版迁移说明
2
+
3
+ 插件使用 DSH 官方 Windows 桌面应用;当前已验证的宿主版本为 0.2.0-rc.2。实际版本请以应用和依赖清单为准,不根据安装包文件名判断。
4
+
5
+ ## 把小说从旧环境带过来
6
+
7
+ 1. 在旧插件里保存正文和草稿,从“工作数据 · 导入/导出”导出小说数据。
8
+ 2. 保留这份备份,再安装新 DSH 和插件;步骤见[安装说明](getting-started.md)。
9
+ 3. 在新工作台查看实际数据目录,导入备份并核对作品、正文、历史、规划和设定。
10
+ 4. 进入新会话时重新选择作品;跨环境的会话绑定依赖 DSH 会话 ID,不能仅凭小说文件推断聊天已迁移。
11
+
12
+ DSH 的聊天记录、附件、模型配置、凭据与界面偏好不属于催更姬小说备份。需要迁移它们时,使用 DSH 自身的数据迁移方式并核对原会话能否打开。不要把个人 DSH Home、小说导出或截图提交到公开源码仓库。
13
+
14
+ ## 已有原始小说目录
15
+
16
+ 在应用停止写入后保留整个旧目录副本。配置新插件的 `dataRoot` 或使用导出/导入;确认工作数据页显示预期目录和作品清单后再继续创作。不要让两套 DSH 同时写同一小说目录。
17
+
18
+ ## 桌面运行时
19
+
20
+ Electron 的 `process.execPath` 指向桌面程序。插件启动 MCP 子进程时使用 Node 模式,避免误开第二个桌面窗口;普通 Node 与桌面内置 Node 都需要覆盖这条链路。
21
+
22
+ 升级插件后需要完全退出并重启 DSH。安装脚本检查构建文件,不能替代重启后真实工作台的操作检查。
23
+
24
+ ## 回退
25
+
26
+ 回退之前先备份新环境里产生的作品和聊天。保留旧版本与升级前数据副本,但不要直接用旧备份覆盖升级后新增的正文。小说数据独立于插件源码,恢复作品不需要回退 Git 分支。
@@ -2,7 +2,7 @@
2
2
 
3
3
  渠道分工、版本规则与每次发布的顺序统一见[渠道维护与发布流程](release-process.md);本文说明具体构建、测试和迁移验收工具。
4
4
 
5
- 当前插件版本 0.4.2,统一公开名称 `dsh-cuigengji-plugin`,Node.js 24+,DSH 兼容基线 0.2.0-rc.2。源码同时包含 TypeScript、JavaScript 和 JSX,尚未完成全部模块的 TypeScript 迁移。
5
+ 当前插件版本 0.4.4,统一公开名称 `dsh-cuigengji-plugin`,Node.js 24+,DSH 支持 0.2.1-rc.2 和 0.2.0-rc.2。源码同时包含 TypeScript、JavaScript 和 JSX,尚未完成全部模块的 TypeScript 迁移。
6
6
 
7
7
  ## 模块与构建
8
8
 
@@ -59,13 +59,17 @@ node scripts/check-project-names-migration.mjs <数据目录> <报告目录>
59
59
 
60
60
  Windows 上 `scripts/check-release-install.mjs` 在临时 profile 中调用 DSH 原生 `runPluginCommand`,把 PATH 限制为桌面内置 Node shim 与 Windows 系统目录,检查找不到 Git,再验收本地或远程 `.tgz` 的新安装/旧包更新。它保留无关 profile 字段、启用组合包,随后用桌面 Node 加载 node_modules 中的编译包,验证维护工具、正文、规划、预设和真实 stdio MCP。不会读写用户 desktop profile。
61
61
 
62
+ 包操作通过 `scripts/desktop-package-operation.mjs` 在指定桌面的 Electron Node 中执行,解析该桌面自己携带的插件管理器。兼容旧 `resources/runtime/pnpm/` 和新 `resources/runtime/primary-runtime/dependencies/pnpm/`,不借用开发依赖或修改宿主版本豁免。跨宿主升级添加 `--old-desktop-exe <旧版exe>`:旧包先在旧宿主运行,随后用新宿主升级,比较前后完整逻辑工作库摘要。
63
+
64
+ `npm run test:host-compat -- --desktop-exe <exe> --package <tgz> --report <json>` 在临时 profile 启动该桌面内置的真实 DSH Host,通过 headless 浏览器验收侧栏入口、首次建书、正文自动保存、规划、设定、预设和导入导出,并检查宿主工具与 Skill 注册。只用合成数据,不发送聊天或调用模型;失败截图与诊断保存在报告旁。正式 `release prepare` 也会执行这项检查。
65
+
62
66
  ```powershell
63
- node scripts/check-release-install.mjs --desktop-exe "C:\你的DSH安装目录\DeepSeek Harness.exe" --package "C:\发布目录\dsh-cuigengji-plugin-0.4.2.tgz" --old-package "C:\旧包目录\dsh-cuigengji-0.3.13.tgz" --report "C:\验收目录\update.json"
67
+ node scripts/check-release-install.mjs --desktop-exe "C:\新版DSH\DeepSeek Harness.exe" --old-desktop-exe "C:\旧版DSH\DeepSeek Harness.exe" --package "C:\发布目录\dsh-cuigengji-plugin-0.4.4.tgz" --old-package "C:\旧包目录\dsh-cuigengji-plugin-0.4.3.tgz" --report "C:\验收目录\update.json"
64
68
  ```
65
69
 
66
70
  省略 `--old-package` 验证全新安装;`--package` 也可使用真实 Release `.tgz` URL、完整 GitHub 仓库 URL 或固定提交的 `github:owner/repo#commit`。默认不提供 Git,固定提交使用完整 40 位 SHA;不固定提交的仓库地址加 `--with-git` 验收宿主的 Git 引用解析。GitHub 路径同样检查安装后的编译文件、无构建授权和旧库内容。用户安装使用[原生 Agent 指南](agent-installation.md),不运行此开发者验收脚本。
67
71
 
68
- npm 首次发布与后续可信发布流程见 [npm 发布](npm-publishing.md)。首次发布成功后,同一验收脚本可用 `--npm-package dsh-cuigengji-plugin@0.4.2` 检查按包名安装;它与 `--package` 二选一,继续使用没有 Git 的隔离 profile。名称转换由 `tests/package-identity.test.js` 和真实安装验收覆盖,包括自定义数据根、home/profile 配置、去重、配置原始备份和幂等重试。
72
+ npm 首次发布与后续可信发布流程见 [npm 发布](npm-publishing.md)。首次发布成功后,同一验收脚本可用 `--npm-package dsh-cuigengji-plugin@0.4.4` 检查按包名安装;它与 `--package` 二选一,继续使用没有 Git 的隔离 profile。名称转换由 `tests/package-identity.test.js` 和真实安装验收覆盖,包括自定义数据根、home/profile 配置、去重、配置原始备份和幂等重试。
69
73
 
70
74
  ## 小说数据与源码分离
71
75
 
@@ -1,6 +1,6 @@
1
1
  # 安装与开始使用
2
2
 
3
- 使用 DSH Windows 桌面版自带的插件管理即可,普通用户无需另装 Git、Node.js 或 pnpm,也不用编译源码。当前已验证 DSH **0.2.0-rc.2**,其他宿主版本请先核对对应发布说明。
3
+ 使用 DSH Windows 桌面版自带的插件管理即可,普通用户无需另装 Git、Node.js 或 pnpm,也不用编译源码。0.4.4 支持 DSH **0.2.1-rc.2** 和 **0.2.0-rc.2**,其他宿主版本请先核对对应发布说明。
4
4
 
5
5
  ## 交给 Agent 安装或更新
6
6
 
@@ -12,20 +12,28 @@
12
12
 
13
13
  ## 自己在桌面版安装
14
14
 
15
- 0.4.2 起统一名称为 `dsh-cuigengji-plugin`。新安装与已使用统一名称的用户可按下面步骤安装[成品包](https://github.com/mistnest/dsh-cuigengji-plugin/releases/tag/v0.4.2)。旧安装名为 `dsh-cuigengji` 的用户,把[名称迁移指南](package-name-migration.md)交给 Agent,由它保留配置与小说完成转换。
15
+ 当前稳定版为 **0.4.4**,统一名称为 `dsh-cuigengji-plugin`。新安装与已使用统一名称的用户可直接按包名安装。旧安装名为 `dsh-cuigengji` 的用户,把[名称迁移指南](package-name-migration.md)交给 Agent,由它保留配置与小说完成转换。
16
16
 
17
17
  1. 从 DSH 左侧进入“插件”,点击“添加插件”。
18
- 2. 在“包名或地址”中粘贴下面的成品包地址。
18
+ 2. 在“包名或地址”中填写下面的包名。
19
19
  3. “安装源”保持默认,或选择 npm 官方源 / 中国大陆镜像源;它用于下载依赖,不填写 GitHub 仓库地址。
20
- 4. 点击“安装”,完成后按 DSH 提示完整重启,从左侧“催更姬”进入。
20
+ 4. 点击“安装”,完成后按 DSH 返回结果处理;需要重启时保存编辑并正常退出,包括托盘,再打开。从左侧“催更姬”进入。
21
21
 
22
22
  ```text
23
- https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/dsh-cuigengji-plugin-0.4.2.tgz
23
+ dsh-cuigengji-plugin
24
24
  ```
25
25
 
26
- 也可以先[下载成品包](https://github.com/mistnest/dsh-cuigengji-plugin/releases/tag/v0.4.2),将下载后的 Windows 绝对路径填入同一输入框。需要核对下载文件时,可使用 Release 中的 `SHA256SUMS`,或交给 Agent 检查。GitHub 的“Download ZIP”是源码下载,不是这里的成品包。
26
+ 需要固定本次版本时,填写 `dsh-cuigengji-plugin@0.4.4`。更新已有插件也可填写精确版本,保留原有配置与小说数据。镜像暂未同步时,可改选 npm 官方源。
27
27
 
28
- npm 安装使用相同名称 `dsh-cuigengji-plugin`,固定版本填写 `dsh-cuigengji-plugin@0.4.2`。包名入口以 npm 实际发布结果为准;尚未发布或镜像未同步时使用上面的成品包,不填写旧包名。
28
+ ### 成品包备用入口
29
+
30
+ 也可以在同一“包名或地址”输入框安装 GitHub Release 成品包:
31
+
32
+ ```text
33
+ https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.4/dsh-cuigengji-plugin-0.4.4.tgz
34
+ ```
35
+
36
+ 或者先[下载成品包](https://github.com/mistnest/dsh-cuigengji-plugin/releases/tag/v0.4.4),将下载后的 Windows 绝对路径填入同一输入框。需要核对下载文件时,可使用 Release 中的 `SHA256SUMS`,或交给 Agent 检查。GitHub 与 npm 使用同一份已验收的包;GitHub 的“Download ZIP”是源码下载,不是这里的成品包。
29
37
 
30
38
  ### GitHub 地址安装
31
39
 
@@ -75,6 +83,8 @@ Windows 桌面版是当前主要验证环境;其他系统的默认目录已实
75
83
 
76
84
  **安装后没有入口**:在 DSH 插件管理中检查催更姬是否已安装、启用,并按提示完全退出、重启。仍没有入口时,将[Agent 安装指南](agent-installation.md)交给 Agent 核对当前环境和实际加载状态。
77
85
 
86
+ **新版 DSH 提示 0.4.3 不兼容**:在“包名或地址”填写 `dsh-cuigengji-plugin@0.4.4` 更新,不用关闭版本检查或移动小说。0.4.4 保留原有功能与数据格式。
87
+
78
88
  **提示版本冲突**:保留草稿,读取最新内容后比较。不要修改版本号强行覆盖另一会话或 AI 的修改。
79
89
 
80
90
  **找不到以前的作品**:检查“工作数据”显示的实际目录,再从旧环境导出备份。切换数据目录不会自动迁移。
@@ -1,31 +1,31 @@
1
- # 工作台 UI 精简进度
2
-
3
- 更新:2026-09-28。状态:第一轮精简代码已完成,真实页面视觉与交互验收待恢复。
4
-
5
- ## 分模块改动
6
-
7
- | 部分 | 已实施 |
8
- | --- | --- |
9
- | 公共框架 | 两行顶部;作品选择、AI 参考、作品菜单;欢迎页只保留选择/新建/导入入口;来源跳转附返回入口;菜单操作后关闭 |
10
- | 正文 | 分卷折叠及搜索时展开,记住折叠状态;新空章直接编辑;历史入口去重;比较独立面板且可原位合并文字;默认字号18 |
11
- | 设定 | 新建收成类型菜单;酒馆导入独立视图;删除列表底部全量关系,改为当前资料关系及搜索/局部图;导入结果可打开新增资料 |
12
- | 规划 | 按面板宽度选择初始列表/流程图并记住手动选择;筛选和视图菜单;卡片减字段;仅显示存在的下级入口;新建直接打开;关系折叠;变更先列字段摘要,再展开完整比较;显式标记已读 |
13
- | 预设 | 名称和总开关置顶;导入/名称编辑/原文件/读取保存配置收进设置;待适配过滤;新增后选中,删除后选中邻项;保存栏只在有草稿时显示 |
14
- | AI 参考 | 当前任务直接显示;自动章节预览在前、工具查询入口在后;原始文本按需展开 |
15
- | 作品备份 | 管理入口与文件步骤分开;预览说明冲突策略;取消;导入成功与打开作品分开反馈 |
16
- | 样式 | 统一18px标题、正文行宽与行距;列表行式显示,减少卡片边框;合并重复顶层CSS规则;窄屏与触屏样式 |
17
-
18
- ## 本轮验证
19
-
20
- - 前端构建通过;现有43项测试通过;git diff --check通过。
21
- - 测试覆盖现有数据/工具/草稿逻辑,不证明新增UI点击与视觉正确。
22
- - 没有把此前50次RPC结果当成本轮视觉验收。
23
-
24
- ## 尚未完成
25
-
26
- - 真实DSH页面:320/480/800/1200px面板,深浅色、200%缩放、键盘焦点、菜单遮挡、保存栏可见性。
27
- - 长篇正文、密集关系图、规划跨页跳转与返回的实际操作验收。
28
- - 所有业务错误就近展示、保存状态完全按模块拆分仍待后续调整;当前写入继续串行。
29
- - 规划目录折叠的持久化、逐条已读状态和窄屏比较切换尚未实现;当前提供目录折叠、显式整批已读及响应式上下排列。
30
-
31
- 此前浏览器安全检查拒绝错误页导航,目前不能绕过。需恢复支持的页面访问后继续实际验收,再决定哪些视觉细节需要二次调整。
1
+ # 工作台 UI 精简进度
2
+
3
+ 更新:2026-09-28。状态:第一轮精简代码已完成,真实页面视觉与交互验收待恢复。
4
+
5
+ ## 分模块改动
6
+
7
+ | 部分 | 已实施 |
8
+ | --- | --- |
9
+ | 公共框架 | 两行顶部;作品选择、AI 参考、作品菜单;欢迎页只保留选择/新建/导入入口;来源跳转附返回入口;菜单操作后关闭 |
10
+ | 正文 | 分卷折叠及搜索时展开,记住折叠状态;新空章直接编辑;历史入口去重;比较独立面板且可原位合并文字;默认字号18 |
11
+ | 设定 | 新建收成类型菜单;酒馆导入独立视图;删除列表底部全量关系,改为当前资料关系及搜索/局部图;导入结果可打开新增资料 |
12
+ | 规划 | 按面板宽度选择初始列表/流程图并记住手动选择;筛选和视图菜单;卡片减字段;仅显示存在的下级入口;新建直接打开;关系折叠;变更先列字段摘要,再展开完整比较;显式标记已读 |
13
+ | 预设 | 名称和总开关置顶;导入/名称编辑/原文件/读取保存配置收进设置;待适配过滤;新增后选中,删除后选中邻项;保存栏只在有草稿时显示 |
14
+ | AI 参考 | 当前任务直接显示;自动章节预览在前、工具查询入口在后;原始文本按需展开 |
15
+ | 作品备份 | 管理入口与文件步骤分开;预览说明冲突策略;取消;导入成功与打开作品分开反馈 |
16
+ | 样式 | 统一18px标题、正文行宽与行距;列表行式显示,减少卡片边框;合并重复顶层CSS规则;窄屏与触屏样式 |
17
+
18
+ ## 本轮验证
19
+
20
+ - 前端构建通过;现有43项测试通过;git diff --check通过。
21
+ - 测试覆盖现有数据/工具/草稿逻辑,不证明新增UI点击与视觉正确。
22
+ - 没有把此前50次RPC结果当成本轮视觉验收。
23
+
24
+ ## 尚未完成
25
+
26
+ - 真实DSH页面:320/480/800/1200px面板,深浅色、200%缩放、键盘焦点、菜单遮挡、保存栏可见性。
27
+ - 长篇正文、密集关系图、规划跨页跳转与返回的实际操作验收。
28
+ - 所有业务错误就近展示、保存状态完全按模块拆分仍待后续调整;当前写入继续串行。
29
+ - 规划目录折叠的持久化、逐条已读状态和窄屏比较切换尚未实现;当前提供目录折叠、显式整批已读及响应式上下排列。
30
+
31
+ 此前浏览器安全检查拒绝错误页导航,目前不能绕过。需恢复支持的页面访问后继续实际验收,再决定哪些视觉细节需要二次调整。
@@ -1,6 +1,8 @@
1
1
  # 插件市场展示与维护
2
2
 
3
- 催更姬的市场条目通过 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 目录提交,由 dsh-market 使用该目录展示。提交成功不代表已经收录,需要目录维护者审核并合并;收录规则以其 [contributing.md](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/contributing.md) 为准。
3
+ 催更姬的市场条目通过 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 目录提交,由 [dshmarket](https://github.com/dsh-market/dsh-market)(npm 包名 `dshmarket`)使用该目录展示。提交成功不代表已经收录,需要目录维护者审核并合并;收录规则以其 [contributing.md](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/contributing.md) 为准。
4
+
5
+ 按作者 2026-10-11 的决定,不再维护另一个 `2BingLing/dsh-market`(`dsh.market` / `@dsh-market/plugin`)渠道。它自动索引到本仓库不代表其安装器已经通过本项目验收。
4
6
 
5
7
  首次收录申请:[PR #7064](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7064)。审核、合并与反馈以该页面的实际状态为准。
6
8
 
@@ -15,7 +17,7 @@ category: ui
15
17
  description:
16
18
  en: A fiction-writing workbench for DSH with chapter editing, shared plot canvases, grouped character and world settings, writing presets, and scoped import/export for author-agent collaboration.
17
19
  zh: 催更姬:DSH 小说写作工作台,支持章节编辑、共享剧情画布、人物与世界设定分组、写作预设和按范围导入导出,供作者与 AI 一起讨论和推进故事。
18
- tarball: https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/dsh-cuigengji-plugin-0.4.2.tgz
20
+ tarball: https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.3/dsh-cuigengji-plugin-0.4.3.tgz
19
21
  ```
20
22
 
21
23
  市场显示名统一为 `dsh-cuigengji-plugin`,中文介绍保留“催更姬”,便于按英文名称或中文名称查找。条目文件名和仓库地址仍用于识别作者与项目,不随显示名修改。
@@ -25,7 +27,7 @@ tarball: https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4
25
27
  ## 收录验收
26
28
 
27
29
  1. 确认收录 PR 已合并,再核对公开 `https://awesome-dsh-plugin.com/plugins.json` 中的名称、仓库地址与 `tarball`。PR 检查通过不等于已经上架。
28
- 2. 在 dsh-market 内分别搜索 `dsh-cuigengji-plugin`、`cuigengji` 和 `催更姬`,确认结果指向同一仓库。
30
+ 2. 在 `dshmarket` 内分别搜索 `dsh-cuigengji-plugin`、`cuigengji` 和 `催更姬`,确认结果指向同一仓库。
29
31
  3. 从该条目完成安装,确认使用公开 Release 成品包,随后重启并打开催更姬核对版本和作品数据。成品包的直接安装验收不能替代市场入口验收。
30
32
 
31
33
  如果 PR 尚未合并或公开目录尚未更新,记录“待收录”,不能宣称用户已经能通过市场搜索和安装。此时可以使用 Release 成品包经 DSH 的“添加插件”入口安装,步骤见 `agent-installation.md`。