# dsh-session-recycle-bin

**DSH 会话回收站与彻底删除插件（DeepSeek Harness）。**

侧边栏一键移入回收站，设置页多选还原/彻底删除，活跃会话安全拦截。

界面会自动跟随浏览器语言：中文区域显示中文，其他区域显示英文。

[English](README.md) | [中文](README.zh.md)

---

## ✨ 功能特性

- **侧边栏会话行删除图标** — 悬停会话行出现小垃圾桶图标，点击即移入回收站（免确认，随时可找回）。
- **会话头部删除按钮** — 从会话页顶部删除当前会话。
- **回收站管理器**（设置 → 🗑 会话回收站）— 已归档会话多选：批量还原、批量彻底删除；条目显示 ID 与路径。
- **真正的彻底删除** — 物理清除磁盘日志与投影缓存；无日志的幽灵会话被彻底清理，不会残留。
- **活跃会话保护** — 正在运行（有活跃 agent）的会话拒绝删除。
- **批量容错** — 批量操作逐条执行，收集并汇报失败项。
- **浅色/深色自适应界面** — 所有颜色以 CSS 变量（设计令牌）收敛在 `client.css`，组件优先跟随 DSH 应用外观（`data-ds-dark-theme`），并以 `prefers-color-scheme` 作为系统级兜底，无硬编码色板。界面与代码文字同样跟随 DSH 全局字体（`--dsw-font-family` / `--ds-font-family-code`），「设置 → 字体」对本插件同样生效。

---

## 📦 安装

### 从插件市场一键安装（dsh-market）

收录进 [awesome-dsh-plugin](https://awesome-dsh-plugin.com) 注册表后：打开 **设置 → 插件市场** → 搜索 **dsh-session-recycle-bin** → 安装。

### 手动安装

```bash
dsh plugin --profile web add dsh-session-recycle-bin
```

安装完成后重启 Web 服务（停止 `dsh web` 进程后重新启动）。

### 本地开发安装

```bash
dsh plugin --profile web add link:/绝对路径/harness-session-delete
```

### 卸载

```bash
dsh plugin --profile web remove dsh-session-recycle-bin
```

---

## 🚀 使用说明

1. **侧边栏删除** — 悬停左侧会话列表中的会话，点击垃圾桶图标：会话移入回收站，行即时消失。
2. **设置页回收站** — 打开「设置 ⚙️ → 🗑 会话回收站」：
   - 复选框多选 → **还原**（批量解除归档）或 **彻底删除**（批量清除）。
   - 每个条目显示会话名、ID 与工作路径（悬浮查看完整信息）。
3. **彻底删除** 物理清除日志与投影缓存；活跃会话受保护。
4. **撤销** — 还原操作带撤销提示，可重新归档。

---

## 🛠 开发

```bash
pnpm test          # 运行测试套件（host 逻辑 + HTTP 路由层）
```

仓库结构：

```
harness-session-delete/
├── package.json            # 单包 bundle 声明（dsh.bundle.patch + dsh.client）
├── cordis.patch.yml        # bundle patch：一行 insert 挂载 host 行
├── index.js                # node 半边：host 入口（inject + apply）
├── client.js               # browser 半边：侧边栏图标 + 设置页回收站
├── client.css              # 插件样式表：设计令牌 + 浅色/深色自适应组件
└── packages/
    └── session-trash-host/ # host 实现（persistence/workspace/cache 补丁、HTTP 路由）
```

---

## 🔌 工作原理

- **单包 bundle** 同时覆盖两端，与其它已发布插件一致：host 半边由 `cordis.patch.yml` 挂载；浏览器半边经 `dsh.client` + `exports["./client"]` 自动进入模块图。
- 浏览器通过插件自身的 `/api/session-trash/*` HTTP 路由与宿主通信（webserver 注册；非 GET 请求携带 `x-dsh-plugin` CSRF 头）。

---

## 📄 许可证

[MIT](LICENSE)
