dsh-session-mng 0.1.2 → 0.1.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.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,47 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.2 — 2026-10-27(unreleased)
3
+ ## 0.1.4 — 2026-10-28
4
+
5
+ ### Fixed
6
+
7
+ - **会话详情页标题行不随页面滚动**:详情页顶部(「← 返回列表」、标题、运行/分支等徽标、「打开 / 归档」按钮)改为吸顶(`position: sticky`),滚动摘要、生成标题、最近消息等内容时始终可见,与列表页的筛选工具栏行为一致。
8
+ - **操作结果提示不再常驻**:提示改为浮动 toast(固定在右下角,不随列表滚动消失),纯成功提示 5 秒后自动隐藏;失败提示与带操作按钮的提示保留到手动关闭,避免错过失败原因。
9
+ - **一键清理空会话超过 50 条时预览报错**:删除范围预览与彻底删除改为按 `maxBatch`(默认 50)分批请求并汇总结果,一次确认可清理任意数量(如「清理空会话(80)」)。
10
+
11
+ ### Added
12
+
13
+ - **「归档空会话(N)」**:有未归档空会话时显示,一键分批(每批 50)归档,归档后即可用「清理空会话」删除。
14
+
15
+ ### Changed
16
+
17
+ - **「清理空会话(N)」显示条件**:只要存在已归档空会话就显示(不再要求其中必须有可删除项);数量按全部已归档空会话计算,若其中有在 DSH 中打开、暂时无法删除的,按钮禁用并在悬停提示「重启后才能清理」。
18
+ - **页面头部布局**:「归档空会话 / 清理空会话 / 刷新」三个按钮移到「会话管理」标题同一行的右侧(顶部右对齐),副标题与统计信息在下方独占整行。
19
+
20
+ ## 0.1.3 — 2026-10-28
21
+
22
+ ### Fixed
23
+
24
+ - **分支会话被误判成子会话并默认隐藏**:只要会话 header 带 `parentSession` 就被当成子代理会话,导致侧栏有 2 条、设置页「会话管理」只有 1 条。现在按三态分类——根会话 / 分支会话(`isSeeded:true`、无委派深度)/ 子代理会话(`origin:'subagent'` 或 `delegationDepth≥1`)。
25
+ - **删除父会话会连带删掉历史分支**:宿主 `traceSession` 仍按 `parentSession` 把历史分支算作后代,插件原先按该谱系级联删除,且分支不需归档、也没有单独确认。现在只级联子代理;历史分支保留(父链接悬空无害,父被删后宿主会把它降级为顶层会话),预览单独提示,勾选后才删除。
26
+ - **父会话有历史分支时不能移动**:`has-descendants` 误拦。现在只有子代理后代阻止移动。
27
+
28
+ ### Added
29
+
30
+ - 分支会话默认显示,并在所属工作区内缩进挂在父会话下方;父行显示「N 分支」计数,分支行副行显示「↳ 来自:父标题」。
31
+ - 搜索父标题时,其分支会话也会命中。
32
+ - 总览行显示「已隐藏 N 个子代理会话」;开关文案改为「显示子代理会话」。
33
+ - 删除范围预览提示:被删会话名下的 `N` 个分支不会被删除,但会失去来源标识;如需一起删除请勾选。
34
+ - 分支的来源父会话已被删除时,行/详情显示「来源父会话已不存在」。
35
+ - 移动有分支的父会话时,详情提示「移动只迁移本会话,分支留在原工作区并继续独立使用」。
36
+
37
+ ### Changed
38
+
39
+ - 「子会话」文案统一改为「子代理」/「子代理会话」,与分支会话区分。
40
+ - 分支会话暂不支持跨工作区移动(保持父子同工作区),移动不可用提示按 live / 分支 / 子代理 / 有后代分别给出原因。
41
+ - `GET /state` 的行新增 `kind` / `isFork` / `parentTitle` / `parentPresent` / `forkCount`,`totals` 新增 `forks` / `hiddenSubagents`;`isSubagent` 保留用于兼容。
42
+ - 兼容声明增加 `0.2.1-rc.3: compatible`(保留 `0.2.1-rc.2`)。注意:当前安装的 rc.3 构建里普通 fork **仍会写** `parentSession`(DSH 源码中的「独立 fork」变更尚未进入该构建),所以「历史分支」形态短期仍会持续出现;插件对两种形态一视同仁。
43
+
44
+ ## 0.1.2 — 2026-10-27
4
45
 
5
46
  ### Added
6
47
 
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # dsh-session-mng
2
2
 
3
+ > 官网 / Website: <https://dsh.zlmix.com/session-mng/>
4
+
3
5
  [![npm package](https://img.shields.io/npm/v/dsh-session-mng.svg?label=npm)](https://www.npmjs.com/package/dsh-session-mng)
4
6
  [![DSH Web Plugin](https://img.shields.io/badge/DSH%20Web-Plugin-0f766e.svg)](https://github.com/deepseek-ai/deepseek-harness)
5
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
@@ -14,7 +16,8 @@
14
16
 
15
17
  ## 功能
16
18
 
17
- - **统一会话总览**:按工作区分组列出当前 profile 的全部会话(活跃 + 已归档)。显示标题、路径、会话 id、大小、最后活动时间、运行/已打开/已归档/已置顶/子会话标记;支持搜索、工作区筛选、排序、刷新、批量选择。
19
+ - **统一会话总览**:按工作区分组列出当前 profile 的全部会话(活跃 + 已归档)。显示标题、路径、会话 id、大小、最后活动时间、运行/已打开/已归档/已置顶/分支/子代理标记;支持搜索、工作区筛选、排序、刷新、批量选择。
20
+ - **分支会话默认显示**:从某条会话分出来的会话(fork)和主会话一样可见、可管理——缩进挂在父会话下方,父行显示「N 分支」,分支行标注「↳ 来自:父标题」;搜索父标题也能找到它。由委派产生的**子代理会话**仍默认隐藏(勾选「显示子代理会话」查看),总览行会提示「已隐藏 N 个子代理会话」。
18
21
  - **工作区优先 + 分页**:会话数 >100 时默认折叠工作区;每个工作区默认 50 条,「加载更多」继续展开;搜索自动展开命中工作区。过滤工具栏和批量条整体吸顶。
19
22
  - **选择跟随可见集**:切换筛选/折叠/搜索/刷新后,隐藏会话自动取消选择;`全选当前列表` 只作用于当前筛选与已展开的工作区。
20
23
  - **空会话默认隐藏**:侧栏本来就不显示的 `blank` 会话,会话管理默认也不显示;勾选「显示空会话」才出现。提供「清理空会话(N)」快速清理已归档空会话。
@@ -22,7 +25,7 @@
22
25
  - **生成标题**:选中任意会话(**包括已归档的冷会话**),让模型总结整段对话,给出可编辑的标题提案;**确认后才写入**。活跃会话走官方 `sessionTitle.rename`,冷会话按官方 `session/title` 事件形状追加,不需要恢复会话。
23
26
  - **归档 / 恢复**:调用官方 `workspaceRegistry.archiveSession` / `unarchiveSession`。运行中的会话先提示,用户二次确认后才停止并归档;恢复后回到原工作区原位置。
24
27
  - **跨工作区移动**:把冷会话真正迁移到目标工作区——改写会话日志 header 的 `cwd`、把日志目录迁到目标项目目录、同步 workspace 账本。SessionId、归档状态、pin 状态不变,事件字节不变。
25
- - **彻底删除已归档会话**:删除前先预览范围(根会话、子代理会话、目录、字节数);确认后把日志目录移出 store、清理归档集合与 workspace 账本,再删除。**不可恢复。**
28
+ - **彻底删除已归档会话**:删除前先预览范围(根会话、子代理会话、目录、字节数);确认后把日志目录移出 store、清理归档集合与 workspace 账本,再删除。**不可恢复。** 子代理会话随父级联删除;**普通分支会话不会**(它们仍是独立会话,来源父会话删除后保留下来),如需一并删除请把分支也勾选进来。
26
29
  - **预览最近消息**:不恢复会话即可看最近 10 条用户/助手消息。
27
30
  - **失效归档标记清理**:归档集合里有、但磁盘上已无日志的 id,会以横幅提示并允许清理。
28
31
  - **中英双语**、浅色/深色主题跟随宿主。
@@ -56,7 +59,7 @@ dsh plugin --profile <profile> add link:/绝对路径/dsh-session-mng
56
59
 
57
60
  Host 半是进程内模块:装完如果看不到页面,重启一次 dsh/应用再刷新页面;Client 半刷新页面即可。
58
61
 
59
- > 市场状态:awesome-dsh-plugin 收录 PR [#9672](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9672) 的 `check` 已通过;`Submission gate` 目前只差仓库满 1 天(约 2026-10-28 00:44 Asia/Shanghai 自动重跑),无需重新提交。合并后 dshmarket 读取同一份目录,卡片版本随 npm 显示 `0.1.1`。
62
+ > 市场状态:awesome-dsh-plugin 收录 PR [#9672](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9672) 已于 2026-10-27 合并(`check` 与 `Submission gate` 均通过)。dshmarket 读取同一份目录,卡片版本随 npm 自动更新,当前显示 `0.1.3`。
60
63
 
61
64
  ## 使用
62
65
 
@@ -91,11 +94,11 @@ Host route (lib/api.js) ──► service (lib/service.js)
91
94
 
92
95
  | 项 | 说明 |
93
96
  |---|---|
94
- | 实测宿主 | DSH `0.2.1-rc.2`(Desktop `desktop` profile,Web GUI) |
97
+ | 实测宿主 | DSH `0.2.1-rc.3`(Desktop `desktop` profile,Web GUI);`0.2.1-rc.2` 也已验证 |
95
98
  | Node | `>=20.3` 可运行总览/标题/归档/删除;**移动** 需要 `node:zlib` 的 Zstandard 支持(Node `>=22.15`,当前 Desktop 运行时为 Node 24.21) |
96
99
  | 会话后端 | 移动/删除只支持本地 JSONL 后端(`sessionPersistence.locate`);其他后端仍可用总览/标题/归档/恢复 |
97
100
  | 官方依赖 | 无 runtime 依赖;只使用 `ctx` 服务 |
98
- | 已知限制 | 已打开(live)会话不能移动或彻底删除,重启 DSH 后重试;有子代理后代的会话不能单独移动;子会话不出现在主列表(可勾选「显示子会话」查看) |
101
+ | 已知限制 | 已打开(live)会话不能移动或彻底删除,重启 DSH 后重试;有子代理后代的会话不能单独移动;子代理会话默认隐藏(可勾选「显示子代理会话」查看);分支会话默认显示,但暂不能单独移动(需与父会话留在同一工作区);删除父会话不级联普通分支,分支会失去来源标识(显示「来源父会话已不存在」) |
99
102
  | 规模限制 | 0.1.1 的折叠/分页只在客户端压 DOM,`state` 仍一次拉全量(202 条约 103 KB;10000 条约 5 MB)。Host 侧 overview + paged sessions 是 0.2.0 的主任务 |
100
103
 
101
104
  ### 版本敏感点(请读)
@@ -134,18 +137,20 @@ Host route (lib/api.js) ──► service (lib/service.js)
134
137
  ## 开发
135
138
 
136
139
  ```sh
137
- npm test # node --test,26 个单元/集成测试
140
+ npm test # node --test,29 个单元/集成测试
138
141
  node --check index.js client.js lib/*.js
139
142
  npm --cache /tmp/dsh-npm-cache pack --dry-run
140
143
  ```
141
144
 
142
- 实机验收:安装到 `desktop` profile → 确认 `settings.section` 出现 `session-mng-section` → 用**一次性测试会话**验证标题/归档/恢复/移动/删除 → 清理测试数据。0.1.1 的列表验收见 `docs/RELEASE-CHECKLIST-0.1.1.md`。
145
+ 实机验收:安装到 `desktop` profile → 确认 `settings.section` 出现 `session-mng-section` → 用**一次性测试会话**验证标题/归档/恢复/移动/删除 → 清理测试数据。0.1.3 的验收与实机记录见 `docs/RELEASE-CHECKLIST-0.1.3.md`。
143
146
 
144
147
  ## 当前状态与下一步
145
148
 
146
- - `0.1.1` 已发布到 npm / GitHub / Release;26 个测试全绿,31 个文件。
147
- - `0.1.2`(空会话清理 + 删除范围弹窗)已在工作区实现,待实机测试/发布。
148
- - 市场 PR [#9672](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9672) 等 1 天仓库年龄 gate,之后等维护者合并。
149
+ - `0.1.4` 已发布到 npm / GitHub / Release:详情页标题行吸顶;操作结果改为浮动 toast(成功 5 秒自动消失);头部按钮移到标题右侧;新增「归档空会话(N)」,「清理空会话(N)」只要有已归档空会话就显示,且超过 50 条自动分批预览/删除。
150
+ - `0.1.3` 已发布到 npm / GitHub / Release:三态会话模型(根/分支/子代理),分支默认显示并缩进在父会话下;删除父会话不再级联删掉普通分支;父会话有历史分支时也能移动;兼容声明增加 DSH `0.2.1-rc.3`。
151
+ - `0.1.2` 已发布:空会话默认隐藏、清理空会话、删除范围模态确认。
152
+ - 29 个测试全绿;0.1.4 包 37 个文件 / 583.2 kB(unpacked 834.8 kB)。
153
+ - 市场条目已收录:PR [#9672](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9672) 已于 2026-10-27 合并(`check` 与仓库年龄 gate 均通过);卡片版本随 npm 自动更新,当前 0.1.4。
149
154
  - 下一项主任务:**0.2.0 Host 侧 overview + 分页 sessions**,为 1000–10000 条会话设计;详细任务、验收标准、环境坑见 [接手说明](docs/HANDOVER-2026-10-27.md)。
150
155
 
151
156
  ## 文档索引
@@ -155,7 +160,11 @@ npm --cache /tmp/dsh-npm-cache pack --dry-run
155
160
  - [0.1.0 发布检查清单](docs/RELEASE-CHECKLIST-0.1.0.md)
156
161
  - [0.1.1 实施计划](docs/PLAN-2026-10-27.md)
157
162
  - [0.1.1 发布检查清单](docs/RELEASE-CHECKLIST-0.1.1.md)
158
- - [0.1.2 发布检查清单(待发布)](docs/RELEASE-CHECKLIST-0.1.2.md)
163
+ - [0.1.2 发布检查清单](docs/RELEASE-CHECKLIST-0.1.2.md)
164
+ - [0.1.3 实施计划(分支会话默认可见)](docs/PLAN-2026-10-28-branch-visibility.md)
165
+ - [0.1.3 实施计划(历史分支删除/移动安全)](docs/PLAN-2026-10-28-legacy-fork-safety.md)
166
+ - [0.1.3 发布检查清单](docs/RELEASE-CHECKLIST-0.1.3.md)
167
+ - [0.1.4 发布检查清单](docs/RELEASE-CHECKLIST-0.1.4.md)
159
168
  - [设计与实现说明](docs/01-design.md)
160
169
  - [开源、发 npm 与市场收录记录](docs/02-open-source-and-marketplace.md)
161
170
  - [路线图](ROADMAP.md)
package/ROADMAP.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Roadmap
2
2
 
3
- > 当前:`0.1.1` 已发布(npm latest / tag `v0.1.1` / Release)。市场 PR [#9672](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9672) 的 `check` 已过,只差仓库 1 天年龄 gate(约 2026-10-28 00:44 Asia/Shanghai 自动重跑)。下一项主任务是 0.2.0 的 Host 分页;详细接手任务见 [docs/HANDOVER-2026-10-27.md](docs/HANDOVER-2026-10-27.md)。
3
+ > 当前:`0.1.4` 已发布(npm latest / tag `v0.1.4` / Release):详情页吸顶、结果 toast、空会话归档/清理与分批删除。市场条目已收录(PR [#9672](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9672) 于 2026-10-27 合并)。下一项主任务是 0.2.0 的 Host 分页;详细接手任务见 [docs/HANDOVER-2026-10-27.md](docs/HANDOVER-2026-10-27.md)。
4
4
 
5
5
  ## 0.1.0 — delivered
6
6
 
@@ -19,12 +19,27 @@
19
19
  - 选择集裁剪到当前筛选与展开可见集;批量操作不触碰隐藏会话。
20
20
  - 批量移动提示区分 live 与一般不可移动项。
21
21
 
22
- ## 0.1.2 — in progress
22
+ ## 0.1.2 — delivered
23
23
 
24
24
  - 空会话默认隐藏 + 「显示空会话」开关;tab 计数与可见列表一致。
25
25
  - 「清理空会话(N)」批量清理已归档空会话,复用删除范围预览/确认。
26
26
  - 删除范围确认改为模态框,内容独立滚动、底部确认区固定,支持遮罩/Esc 取消。
27
27
 
28
+ ## 0.1.3 — delivered (published)
29
+
30
+ - 三态会话模型:根 / 分支(fork)/ 子代理;分支不再因 `parentSession` 被误判成子会话隐藏。
31
+ - 分支会话默认显示,缩进挂在父行下,父行「N 分支」、分支行「↳ 来自:父标题」;搜索父标题命中分支。
32
+ - 子代理仍默认隐藏,总览行提示「已隐藏 N 个子代理会话」;开关改名「显示子代理会话」。
33
+ - 删除只级联子代理:历史分支保留(预览提示会失去来源标识),不再静默删除;父会话有历史分支时也能移动。
34
+ - 分支的来源父会话被删除后显示「来源父会话已不存在」;移动有分支的会话时提示分支留在原工作区。
35
+
36
+ ## 0.1.4 — delivered (published)
37
+
38
+ - 详情页标题/操作行吸顶(返回列表、标题、徽标、打开/归档始终可见)。
39
+ - 操作结果改为浮动 toast:成功提示 5 秒自动消失,失败/带操作提示保留。
40
+ - 头部三个按钮移到会话管理标题右侧;副标题与统计信息独占下方整行。
41
+ - 空会话:「归档空会话(N)」一键分批归档;「清理空会话(N)」只要有已归档空会话就显示;删除范围预览与删除按 `maxBatch` 分批,超过 50 条也能一次确认完成。
42
+
28
43
  ## 0.2.0 — next (planned)
29
44
 
30
45
  首要目标:真正支撑 1000–10000 条会话,不再首屏拉全量 `state`。实施前先写 `docs/PLAN-2026-10-28.md` 并获批准。
@@ -43,7 +58,7 @@
43
58
  - 内容全文搜索(复用 `sessionQuery.searchSessions` / `searchEvents`),不只按标题/路径/id。
44
59
  - 导出所选会话为 Markdown / JSON(删除前的安全网;批量)。
45
60
  - 置顶 / 取消置顶(`workspaceRegistry.pinSession` / `unpinSession`)。
46
- - 整枝移动(父会话 + 子代理后代一起迁移)。
61
+ - 整枝移动(父会话 + 分支会话 + 子代理后代一起迁移),或在移动时保留父链接。
47
62
  - 会话体检 / 修复:重复目录、幽灵归档、workspace 账本与 header cwd 不一致、损坏日志报告。
48
63
  - 可选回收站(与「彻底删除」并存,默认关闭)。
49
64
  - 移动的增量实现(rename 而不是整目录复制),大日志更快。