Repository navigation
Releases
v1.3.0 — 工作区批量删除与回收站
新增:工作区批量删除 + 回收站
设置页从单一页面改为三个标签页:插件 / 工作区 / 回收站。
工作区标签页
- 列出所有 DSH 工作区(标题、路径、会话数)
- 多选、全选、全不选后批量删除
- 软删除:只取消工作区注册,并把会话目录移入回收站 —— 数据不丢失
回收站标签页
- 列出被删除的工作区会话目录
- 恢复选中项:把会话目录还原回
~/.dsh/sessions/ - 一键清空:永久删除回收站全部内容(红色二次确认)
删除是怎么实现的
删除工作区时执行两步,只移动、不删除:
workspaceRegistry.delete(id)— DSH 移除该工作区注册(侧边栏消失)- 把
~/.dsh/sessions/<编码后的路径>/移到~/.dsh/.trash/<时间戳>__<编码>/
因此回收站里的条目可以原样恢复;只有点「一键清空」才真正 rm -rf。
会话目录名由工作区路径编码而来:分隔符
:\/折叠为单个-,非 ASCII 字符转为~XXXX(前缀无后缀),整体包裹为--…--。该规则已对着真实磁盘逐字节验证。
Host 新增 API
| 方法 | 路径 |
|---|---|
| GET | /dsh-batch-uninstall/workspaces.json |
| POST | /dsh-batch-uninstall/workspaces/delete |
| GET | /dsh-batch-uninstall/trash.json |
| POST | /dsh-batch-uninstall/trash/restore |
| POST | /dsh-batch-uninstall/trash/empty |
保持不变
- 插件批量卸载、核心插件锁定保护、风险分级、二次确认、实时进度
- Client 半只注入
slots,样式内联,apply()全程异常隔离 —— 插件失效不会影响 DSH 启动
安装
dsh plugin --profile <你的profile> add dsh-batch-uninstall或
dsh plugin --profile <你的profile> add github:MaYucong6/dsh-batch-uninstall安装后重启 DSH,在 设置 → 批量卸载 打开。
版本历史
| 版本 | 变更 |
|---|---|
| v1.3.0 | 工作区批量删除(软删除到回收站)与回收站管理(本版) |
| v1.2.3 | 用 slots.inject 等待 settings.section 就绪再注册 |
| v1.2.2 | 版本号对齐发布 |
| v1.2.1 | 修复文字在浅色主题下隐形 |
| v1.2.0 | 内置 DSH 设置页 |
| v1.0.0 | 规范 DSH 插件形态 |
v1.2.3 — 修复重启后设置页需手动开关插件才显示
修复
问题:每次重启 DSH,都需要手动关闭再开启插件,「批量卸载」设置页才会出现。
根因:冷启动时 settings.section 这个 slot 尚未被设置界面声明。旧代码直接调用 slots.register(),在 slot 不存在时注册被静默丢弃,所以设置页不显示。手动开关插件之所以能生效,是因为重跑 apply() 时 slot 已就绪。
修复:改用 DSH 官方 API,等待 slot 就绪后再注册:
ctx.slots.inject('settings.section', function () {
registerSection()
})这与 dshmarket 的做法一致(它也通过 slots.inject 等待自己的座位)。
安装
dsh plugin --profile <你的profile> add dsh-batch-uninstall安装后重启 DSH,在 设置 → 批量卸载 打开 —— 应该直接出现,无需手动开关插件。
完整功能
- 内置设置页 — 不需要浏览器地址、Python 或任何外部文件
- 多选批量卸载 — 逐个勾选、全选、全不选,一次卸载任意多个
- 二次确认 — 红色确认框列出全部目标,防误删
- 实时进度 — 进度条 + 逐条成功/失败日志
- 核心保护 —
@deepseek-ai/dsh-*等系统 bundle 锁定置灰,无法勾选 - 风险分级 — 高 / 中 / 低三档提示
- 主题自适应 — 跟随 DSH 浅色 / 深色主题
- 中英双语 — 跟随 DSH 语言设置
版本历史
| 版本 | 变更 |
|---|---|
| v1.2.3 | 修复重启后设置页需手动开关插件才显示(本版) |
| v1.2.2 | 版本号对齐发布 |
| v1.2.1 | 修复文字在浅色主题下隐形(改用 inherit,不再依赖主题变量名) |
| v1.2.0 | 内置 DSH 设置页;修正 inject 声明导致的 boot 失败 |
| v1.0.0 | 规范 DSH 插件形态(npm + Cordis bundle + HTTP API) |
相关
v1.2.1 — 内置设置页的批量卸载器
与 v1.2.1 功能完全相同 —— 这是一次版本号对齐发布。
为什么发这个版本
v1.2.1 打完 tag 之后,仓库又提交了 .gitignore 改动,但版本号没有 bump。
插件市场因此显示「有新提交(未发版)」——它检测到 commit 前进了、但
package.json 的 version 没变,无法确认这是不是正式发布。
本版把版本号推进到 1.2.2,市场即可正确识别为正式发布。
安装
dsh plugin --profile <你的profile> add github:MaYucong6/dsh-batch-uninstall安装后重启 DSH,在 设置 → 批量卸载 打开。
功能
- 内置设置页 — 不需要浏览器地址、Python 或任何外部文件
- 多选批量卸载 — 逐个勾选、全选、全不选,一次卸载任意多个
- 二次确认 — 红色确认框列出全部目标,防误删
- 实时进度 — 进度条 + 逐条成功/失败日志
- 核心保护 —
@deepseek-ai/dsh-*等系统 bundle 锁定置灰,无法勾选 - 风险分级 — 高 / 中 / 低三档提示
- 主题自适应 — 跟随 DSH 浅色 / 深色主题
- 中英双语 — 跟随 DSH 语言设置
版本历史
- v1.2.2 — 版本号对齐发布(本版)
- v1.2.1 — 弃用会被解析成白色的主题变量,改用
inherit,修复文字隐形 - v1.2.0 — 内置 DSH 设置页;修正
inject声明导致的 boot 失败 - v1.0.0 — 规范 DSH 插件形态
相关
v1.2.1 — 内置设置页的批量卸载器
dsh-batch-uninstall v1.2.1
Geek 风格的 DSH 批量插件卸载器 — 内置在设置页里,勾选多个插件一次性移除。
安装
dsh plugin --profile add github:MaYucong6/dsh-batch-uninstall
安装后重启 DSH,在 设置 → 批量卸载 打开。
功能
- 内置设置页,不需要浏览器地址、Python 或任何外部文件
- 多选批量卸载(逐个勾选 / 全选 / 全不选)
- 二次确认 + 实时进度条 + 逐条日志
- 核心保护:
@deepseek-ai/dsh-*系统 bundle 锁定置灰 - 风险分级、主题自适应、中英双语
修复记录
- v1.2.1 — 弃用会解析成白色的主题变量,改用 inherit,修复文字在浅色主题下隐形
- v1.2.0 — 内置 DSH 设置页;修正 inject 声明(此前误将 client builtin
styles当作服务注入,导致 boot 失败) - v1.0.0 — 规范 DSH 插件形态(npm + Cordis bundle + HTTP API)