✨ feat(client): 清理入口移到插件页,不再藏在组件行里

This commit is contained in:
pyh
2026-09-30 17:26:31 +08:00
parent b977f57fa4
commit 7b29e900f7
3 changed files with 35 additions and 27 deletions
+8 -2
View File
@@ -30,7 +30,7 @@ DSH 原本只能归档会话——归档只是把会话从列表里移开,日
### 2. 清理临时文件
**设置 → 插件 → 会话彻底删除**(点会话彻底删除那一行右侧的配置按钮),清理 spill 后端留下的**孤儿**目录。判定偏保守:
**设置 → 插件 → 会话彻底删除**(打开插件页就能看到,不必再点进「包含的组件」里那一行),清理 spill 后端留下的**孤儿**目录。判定偏保守:
1. 目录名必须精确等于 `session-<sha256(会话 id) 前 12 位>`——这是 spill 后端唯一会生成的形状;
2. 该名字不属于任何已知会话(`sessionQuery.listSessions()` 已经把存量会话与内存中正在运行的会话合并成同一份语料,所以「已知」只需要一个来源);
@@ -39,7 +39,13 @@ DSH 原本只能归档会话——归档只是把会话从列表里移开,日
结果直接显示在该页(清理了几个目录、几个文件、释放多少空间),可反复点击。
这个页面占的是 `plugins.row.config` 槽位——和官方插件「终端」的配置页是同一个位置。注册了这个槽位的 key(`<包名>#<行 id>`)之后,插件行就会长出配置入口,所以本插件不声明 `Config` 也能有自己的页面。
这块清理占的是 `plugins.bundle.config` 槽位,key 就是本包的**包名**(`@dsh-plugin/session-delete`)。它渲染在插件页的**描述与「包含的组件」之间**,所以打开插件页即可看到,不用再点一次。
没有用行级槽位 `plugins.row.config`(key 形如 `<包名>#<行 id>`):它只会在「包含的组件」那一行上多长出一个「配置」入口,把本插件唯一的控件藏到二级页面里。本插件页顶部是 DSH 自己渲染的插件标题与描述,所以这块配置不再重复标题,直接讲清理这件事本身。
### 关于「包含的组件」
插件页下方的「包含的组件 / 组件」是 **DSH 插件页固定渲染**的:`ui-plugin-manager` 无条件列出这个 bundle 在 `cordis.patch.yml` 里声明的**每一行**(行 id、运行状态、单独开关),没有"跳过"的口子。任何 bundle 都至少要声明一行才能挂上宿主半,所以这一节必然出现——本插件就是这一行。它也不是纯冗余:它标出运行状态、允许单独关掉这个组件。插件侧没法隐藏它,但插件的功能不再挂在它下面——清理入口已经在页面本身上了。
## 行为与边界