@xrn1997/dsh-session-delete 0.1.0 → 0.2.0

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 (54) hide show
  1. package/README.md +6 -5
  2. package/icon.svg +18 -18
  3. package/lib/client.js +1448 -487
  4. package/lib/index.js +1185 -455
  5. package/lib/types/api/dispatch.d.ts +51 -0
  6. package/lib/types/client/batch-bar.d.ts +24 -0
  7. package/lib/types/client/batch-confirm.d.ts +31 -0
  8. package/lib/types/client/batch-menu-item.d.ts +19 -0
  9. package/lib/types/client/batch-select.d.ts +97 -0
  10. package/lib/types/client/context.d.ts +31 -0
  11. package/lib/types/client/copy.d.ts +167 -0
  12. package/lib/types/client/delete-confirm.d.ts +40 -0
  13. package/lib/types/client/delete-menu-item.d.ts +20 -0
  14. package/lib/types/client/index.d.ts +19 -0
  15. package/lib/types/client/markdown.d.ts +11 -0
  16. package/lib/types/client/remote.d.ts +178 -0
  17. package/lib/types/client/trash-detail.d.ts +27 -0
  18. package/lib/types/client/trash-entry.d.ts +6 -0
  19. package/lib/types/client/trash-panel.d.ts +10 -0
  20. package/lib/types/client/trash-store.d.ts +4 -0
  21. package/lib/types/client/ui/Button.d.ts +21 -0
  22. package/lib/types/client/ui/Checkbox.d.ts +29 -0
  23. package/lib/types/client/ui/MenuItemButton.d.ts +32 -0
  24. package/lib/types/client/ui/Modal.d.ts +35 -0
  25. package/lib/types/client/ui/Tag.d.ts +16 -0
  26. package/lib/types/client/ui/Toast.d.ts +36 -0
  27. package/lib/types/client/ui/Tooltip.d.ts +37 -0
  28. package/lib/types/client/ui/format.d.ts +18 -0
  29. package/lib/types/client/ui/icons.d.ts +33 -0
  30. package/lib/types/client/ui/recipe.d.ts +11 -0
  31. package/lib/types/client/ui/styles.d.ts +2 -0
  32. package/lib/types/client/undo-toast.d.ts +49 -0
  33. package/lib/types/client/use-column-resize.d.ts +62 -0
  34. package/lib/types/client/use-panel-width.d.ts +15 -0
  35. package/lib/{index.d.ts → types/index.d.ts} +9 -36
  36. package/lib/types/log/session-log.d.ts +40 -0
  37. package/lib/types/log/zstd-frames.d.ts +30 -0
  38. package/lib/types/ports/fs-port.d.ts +16 -0
  39. package/lib/types/ports/host-port.d.ts +85 -0
  40. package/lib/types/remote/map-error.d.ts +19 -0
  41. package/lib/types/shared/wire.d.ts +134 -0
  42. package/lib/types/trash/detail.d.ts +40 -0
  43. package/lib/types/trash/entry.d.ts +35 -0
  44. package/lib/types/trash/manifest.d.ts +18 -0
  45. package/lib/types/trash/reconcile.d.ts +35 -0
  46. package/lib/types/verbs/apply.d.ts +3 -0
  47. package/lib/types/verbs/delete-session.d.ts +30 -0
  48. package/lib/types/verbs/errors.d.ts +20 -0
  49. package/lib/types/verbs/purge-trash.d.ts +6 -0
  50. package/lib/types/verbs/restore-session.d.ts +19 -0
  51. package/locale/en.json +6 -6
  52. package/locale/zh.json +6 -6
  53. package/package.json +14 -9
  54. package/lib/client.js.map +0 -1
package/README.md CHANGED
@@ -23,8 +23,8 @@
23
23
 
24
24
  ## 功能特性
25
25
 
26
- - **删除 = 移入回收站**:会话条目「…」菜单里的「删除」把会话搬进回收站,可随时恢复;删完有一条停留 6 秒的撤销提示
27
- - **显式彻底删除**:单条「彻底删除…」或页脚「清空回收站…」,两者共用同一个二次确认
26
+ - **删除 = 移入回收站**:会话条目「…」菜单里的「删除」把会话搬进回收站(**连同它在盘上的子会话与更深的后代一起**——那些行宿主的列表里本来就不显示,不说会像是消失了没找回来),**点之前确认框就说出「含 N 个子会话,将一起移入回收站。」**(没有子会话时那半句一个字都不出现),可随时恢复;删完有一条停留 6 秒的撤销提示
27
+ - **显式彻底删除**:单条「彻底删除…」或页脚「清空回收站…」,两者共用同一个二次确认;单条那张卡片报的是**这一次会释放多少**(父加跟着进来的孩子,与页脚合计同一个数)
28
28
  - **回收站面板**:清单在左、详情在右——左栏是按项目分组的会话列表(每条两行:标题 / 删除时间 · 大小,「恢复」与「彻底删除…」在行右侧),右栏是选中那条的详情(**时间/体量/计数/位置**四组元信息,加人与助手的文字;逐格名单以 `src/client/trash-detail.tsx` 与现状稿 §7 为准,这份不列——列成清单就是一条会漂的东西);中央列不够宽(<900px)时改成下钻:点一条看详情,「← 返回清单」回来。清单为空或读不到时也只一列——那时右栏既没得选也没得点
29
29
  - **那一列自己可以收**:组头可折叠(也可以一键全部折叠)、两栏之间那根线可拖(也能用键盘 ←→/Home/End 调);宽度夹在「元信息那一行读得完」与「详情还读得开」之间
30
30
  - **多选挑着彻底删**:那一排的「多选」进入,勾选若干条后页脚那颗从「清空回收站…」换成「彻底删除 N 条」,一次确认后逐条执行,没删掉的把原因留在它自己那一行;组头那颗可以一次把整个项目的会话全选上(包括折叠起来看不见的)
@@ -63,9 +63,9 @@ dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
63
63
 
64
64
  **回收站**:侧栏面板列表里常驻的「回收站」一行(与「插件」「小说」同层)。打开后是中央面板:
65
65
 
66
- - 清单按项目分组,每条两行——标题 / 「刚刚删除 · 24KB」或「删除于 7分钟前 · 350KB」;「恢复」与「彻底删除…」在行右侧(前者描边、后者安静的红),点行本身是选中并在右边看详情
66
+ - 清单按项目分组,每条两行——标题 / 「刚刚删除 · 24KB」或「删除于 7分钟前 · 350KB」(带子会话的那行还会说「含 N 个子会话」;级联落地前删掉的存量说「盘上还剩 M 个子会话」——两个数各说各的);「恢复」与「彻底删除…」在行右侧(前者描边、后者安静的红),点行本身是选中并在右边看详情
67
67
  - 头部是条数与合计占用(「2 个会话 · 共 49KB」);页脚是「清空回收站…」——**整页唯一一块实心红**
68
- - 头部下面那一排(不随清单滚走)从左到右:**全部折叠 / 全部展开**、**多选**,最右是**刷新**(图标,悬停给说明)
68
+ - 头部下面那一排(不随清单滚走):**全部折叠 / 全部展开**、**多选**(「刷新」已删——每次读清单都会先与回收站目录对账,不再需要手动刷)
69
69
  - 组头可以单独折叠(也可以一键全部折叠),折叠起来的组条目直接收掉、计数还留在组头上;多选态下组头多出一颗**三态**勾选框——点它就是把这个项目的**全部**会话选上(包括折叠起来看不见的),只勾了几条时显示半选
70
70
  - 两栏之间那根线可以左右拖(也能聚焦后用 ←→ 调,Home 回默认 420):最窄 330(再窄「删除于 … · 大小」那一行就被截断了),最右拖到「详情还读得开」为止
71
71
  - 多选态下:行右侧两颗按钮退场、标题左侧出勾选框,点行就是切换勾选;页脚那颗换成「彻底删除 N 条」(一条没勾时置灰并说明原因),确认后按清单顺序逐条执行,失败的那条把原文留在自己身上。退出多选即清空勾选,不留看不见的勾选
@@ -81,6 +81,7 @@ dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
81
81
  | 回收站清单 | 本插件自己的 storage domain(介质在 `~/.dsh/storages/`) |
82
82
 
83
83
  - 回收站与 `~/.dsh/sessions/` **同卷**:搬进搬出靠整目录 `rename`,原子、瞬时
84
+ - **一格目录 = 一个会话**:一条父会话与跟着它进来的子会话**各占一格**,面板上折成一行显示——手工翻回收站目录时看到比清单多的目录,那是子会话
84
85
  - **清单丢了不致命**:会话文件自描述,解压后第一行即 header,含 `id` 与 `cwd`
85
86
  - **不自动过期**:不设天数上限,清空是显式动作;界面显示条数与占用
86
87
  - **附件不连坐**:附件是全局内容寻址的,与会话不是父子关系——删除不连带,也不会回收;被删会话独享的附件会留成垃圾(要回收得先有引用计数,属另一件事)
@@ -101,7 +102,7 @@ dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
101
102
 
102
103
  **正在运行的会话为什么删不掉?**
103
104
 
104
- 判据用的是宿主自己的活跃检查(与官方归档的准入同源)。首版一律拒绝,不替用户终止正在进行的活——先停下这个会话再删。
105
+ 判据用的是宿主自己的活跃检查(与官方归档的准入同源)。首版一律拒绝,不替用户终止正在进行的活——先停下这个会话再删。**它正在跑的子会话也算**:一条父会话的子会话在跑时,整条删除会被拒绝,报的是那个子会话的 id(那一行宿主的列表里不显示,所以别看列表没在跑就以为删得掉)。
105
106
 
106
107
  **能恢复多久?**
107
108
 
package/icon.svg CHANGED
@@ -1,18 +1,18 @@
1
- <!--
2
- 插件卡片/组件行的图标(`package.json` 顶层 `icon`,宿主按**图片**读它、不内联 HTML)。
3
-
4
- 形状逐字取自 `@deepseek-ai/dsh-client-ui-primitives@0.2.0-rc.2` 的 `IconTrashOutlineRegular`
5
- (与插件界面里那枚垃圾桶图标同源)。
6
-
7
- 两处与组件版不同:
8
- 1. 颜色写死。图片形式的 SVG **不继承 `currentColor`**(它是一份独立文档),所以不能像组件里那样
9
- 吃宿主的字色 ⇒ 取一个浅色/深色底上都能读的中灰。
10
- 2. 不带 `aria-hidden`。这不是行内构件,可及名由承载它的宿主卡片提供。
11
- -->
12
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="#8a9099" stroke-width="1">
13
- <path d="M1.28149 3.88831H14.7187" />
14
- <path d="M5.41602 3.88833V2.47962C5.41602 2.29282 5.52492 2.11366 5.71876 1.98157C5.9126 1.84948 6.17551 1.77527 6.44964 1.77527H9.55053C9.82466 1.77527 10.0876 1.84948 10.2814 1.98157C10.4753 2.11366 10.5842 2.29282 10.5842 2.47962V3.88833" />
15
- <path d="M2.57349 3.88831L3.19366 13.2943C3.21937 13.5502 3.33952 13.7872 3.53065 13.9593C3.72178 14.1313 3.97016 14.2259 4.22729 14.2246H11.7728C12.0299 14.2259 12.2783 14.1313 12.4694 13.9593C12.6605 13.7872 12.7807 13.5502 12.8064 13.2943L13.4266 3.88831" />
16
- <path d="M6.44946 6.98926V11.1238" />
17
- <path d="M9.55054 6.98926V11.1238" />
18
- </svg>
1
+ <!--
2
+ 插件卡片/组件行的图标(`package.json` 顶层 `icon`,宿主按**图片**读它、不内联 HTML)。
3
+
4
+ 形状逐字取自 `@deepseek-ai/dsh-client-ui-primitives@0.2.0-rc.2` 的 `IconTrashOutlineRegular`
5
+ (与插件界面里那枚垃圾桶图标同源)。
6
+
7
+ 两处与组件版不同:
8
+ 1. 颜色写死。图片形式的 SVG **不继承 `currentColor`**(它是一份独立文档),所以不能像组件里那样
9
+ 吃宿主的字色 ⇒ 取一个浅色/深色底上都能读的中灰。
10
+ 2. 不带 `aria-hidden`。这不是行内构件,可及名由承载它的宿主卡片提供。
11
+ -->
12
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="#8a9099" stroke-width="1">
13
+ <path d="M1.28149 3.88831H14.7187" />
14
+ <path d="M5.41602 3.88833V2.47962C5.41602 2.29282 5.52492 2.11366 5.71876 1.98157C5.9126 1.84948 6.17551 1.77527 6.44964 1.77527H9.55053C9.82466 1.77527 10.0876 1.84948 10.2814 1.98157C10.4753 2.11366 10.5842 2.29282 10.5842 2.47962V3.88833" />
15
+ <path d="M2.57349 3.88831L3.19366 13.2943C3.21937 13.5502 3.33952 13.7872 3.53065 13.9593C3.72178 14.1313 3.97016 14.2259 4.22729 14.2246H11.7728C12.0299 14.2259 12.2783 14.1313 12.4694 13.9593C12.6605 13.7872 12.7807 13.5502 12.8064 13.2943L13.4266 3.88831" />
16
+ <path d="M6.44946 6.98926V11.1238" />
17
+ <path d="M9.55054 6.98926V11.1238" />
18
+ </svg>