Repository navigation
Releases
Releases · kaelorvyn/dsh-archived-sessions
v1.2.0 — 永久删除 + 多选批量
新增「永久删除」
把会话文件从磁盘上删掉(整目录),并报告这次释放了多少空间。
- DSH 没有会话索引数据库(列表是扫磁盘得来的),所以删掉目录就彻底消失
- 同一个 id 可能在多个分组目录下各有一份(会话移动过分组时会发生),会把所有同名目录都删掉,不留残留
- 磁盘上已经没有的条目按「幽灵条目」处理:只移出归档列表,不报错
新增多选与批量
顶部「多选」→ 每行出现复选框 → 上方提供「全选 / 批量恢复 / 永久删除」。
批量是一条命令带多个 id,不是循环调 N 次 —— 宿主侧一次校验、一次事务、汇总一个总体积。
安全设计(删除不可逆)
- id 白名单
^session-[A-Za-z0-9._-]+$,从根上杜绝目录穿越 - 解析后的绝对路径必须仍在会话根目录内(二次防线)
- 只允许删归档集合里的会话 —— 正在使用的会话结构上就删不到
- 界面里当前会话不参与多选,也不给删除按钮
- 删除按钮要点两次(「永久删除」→「确认删除」),中途可取消
- 批量时一个 id 非法即整批拒绝,不做「删一半」
- 单次上限 1000 个 id
测试
新增 test/,两个不依赖测试框架的纯 Node 脚本,共 65 项断言:
node test/purge.test.mjs # 36 项:原子性 / 去重 / 目录穿越 / 幽灵条目 / 批上限
node test/client-smoke.mjs # 29 项:真求值 bundle 并渲染多选模式做断言dsh-archived-sessions v1.0.0
DSH 客户端插件:设置面板新增「已归档会话」页,列出全部已归档会话并一键恢复。
适用环境:DSH Desktop(静态客户端插件,dsh.bundle.patch 注入 + 客户端 lib/client.js)
安装
# 解压后指向插件目录安装(DSH 会自动挂 bundle 行)
dsh plugin --profile desktop add <解压出的目录>
# 装完重启一次 DSH Desktop(bundles 只在启动时读取)文件
| 文件 | 说明 |
|---|---|
dsh-archived-sessions-v1.0.0.zip |
插件源码包(含 package.json / cordis.patch.yml / lib/),解压即用 |
源码以对应 tag 的提交为准。