Skip to content

Releases

v0.2.1 — 官方菜单里的那枚「彻底删除」

Choose a tag to compare

@Ruler4396 Ruler4396 released this 30 Sep 00:45

这一版是什么 / 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

  1. 删除失败:unknown — dsh 0.2.0 的 sessionPersistence.stat()/list() 返回的是快照 {header, revision, sizeBytes} 而不是 header;按旧形状读就永远判成"会话不存在"。同时修掉入口守卫(要求 list() 存在却优先用 stat())与后台复查里的同一处形状错。
  2. 删完反而跳进普通列表、点进去 session not found — 归档标记原先是无条件清的,可当会话正忙(宿主把分离延后)或不在本进程时,那一行还挂在界面上。现在只有确认广播已经把行摘掉才在请求里清标记;否则删文件 + recordHeld,浏览器半重拉一次官方会话列表(客户端 sessions.refresh())让行消失,之后再补清记录,不需要重载页面或重启。
  3. 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