Repository navigation
Releases
Releases · LEEKINBUN-dsh-tools/dsh-shredder
v0.2.1 — 官方菜单里的那枚「彻底删除」
这一版是什么 / What this is
一枚只做一件事的 dsh 插件:在官方会话行的 "…" 菜单里,"取消归档"下面,加一枚红色的「彻底删除」,只对该会话已归档时出现。删除 = 停手 → 落盘 → 驱逐驻留实例 → 摘工作区成员槽 → 删日志目录 → 移出归档集,另加 +2s/+6s/+15s 后台复查。
A single-purpose dsh plugin: one red Shred session row inside the native session menu, below Unarchive session, shown only for archived sessions.
v0.2.1 修的三件事 / Fixed in this release
删除失败:unknown— dsh 0.2.0 的sessionPersistence.stat()/list()返回的是快照{header, revision, sizeBytes}而不是 header;按旧形状读就永远判成"会话不存在"。同时修掉入口守卫(要求list()存在却优先用stat())与后台复查里的同一处形状错。- 删完反而跳进普通列表、点进去
session not found— 归档标记原先是无条件清的,可当会话正忙(宿主把分离延后)或不在本进程时,那一行还挂在界面上。现在只有确认广播已经把行摘掉才在请求里清标记;否则删文件 +recordHeld,浏览器半重拉一次官方会话列表(客户端sessions.refresh())让行消失,之后再补清记录,不需要重载页面或重启。 sessions服务在启动那一刻还没到 — 客户端模块启动顺序不保证,解析挪到点击那一刻;拿不到时行上直接写明缺哪一样(sessions 服务不在场/sessions.refresh 不在场)。
已知边界 / Known limits
- 不可恢复;"shred" 指 unlink 整个会话目录,不做磁盘覆写。
- 投影缓存条目与内容寻址的上传件归 dsh 自己管,本插件不动。
- 删历史格式(
session.v3/v4.jsonl.zstd)的会话就是更慢:官方stat()要对整个会话根目录做指纹。 absent(任何进程里都不驻留)那种情况不会通知其它标签页。- 兼容性声明:
dsh.compatibility.dshReleases里精确记了0.2.0-rc.2: compatible,那是实测过的那一版。
验证 / Verification
node test/delete-endpoint.mjs(7 档,含 deferred / absent / 幽灵记录 / 负对照)、node test/style-injection.mjs(4 场景)全绿;安装副本与工作树逐枚同字节同 sha256;DSH STORE 官方提交校验器 check-plugin-submission.mjs 在本 commit 上 passed / source verified / security pass。
Full docs: README.zh.md · README.md