Skip to content
dsh.fish
Bundle

dsh-session-recycle-bin

DSH 会话回收站:侧边栏删除图标、回收站多选还原/彻底删除、活跃会话保护。 · Session trash & permanent delete for DeepSeek Harness.

Source
Seetraum
stars
3 stars
License
MIT
Updated
Updated 4 days ago

Readme

# dsh-session-recycle-bin

**Session recycle bin & permanent delete for DeepSeek Harness.**

Move sessions into a recycle bin from the sidebar, restore or permanently delete them (single or batch), with live-session protection.

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

---

## ✨ Features

- **Sidebar per-session delete icon** — hover a session row, a small trash icon appears; click to move it into the recycle bin instantly (no confirmation; always recoverable).
- **Session-header delete button** — delete the current session from the conversation header.
- **Recycle-bin manager** (Settings → 🗑 会话回收站) — archived sessions with multi-select: batch restore, batch permanent delete; each item shows its ID and path.
- **True permanent delete** — physically removes the session log from disk and the projection-cache record; ghost sessions (records without a log) are cleaned up so they vanish instead of lingering.
- **Live-session protection** — sessions with an active agent are refused deletion.
- **Batch fault tolerance** — batch operations delete per-session with error collection and reporting.
- **Light/dark adaptive UI** — all colors are CSS custom properties in `client.css`; components follow the resolved DSH appearance (`data-ds-dark-theme`) with `prefers-color-scheme` as the OS-level fallback (no hardcoded palette).

---

## 📦 Install

### One-click from the plugin market (dsh-market)

Once listed in the [awesome-dsh-plugin](https://awesome-dsh-plugin.com) registry: open **Settings → Plugin Market** → search **dsh-session-recycle-bin** → install.

### Manual

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

Then restart the web app (stop the `dsh web` process and run `dsh web` again).

### Local development install

```bash
dsh plugin --profile web add link:/absolute/path/to/harness-session-delete
```

### Uninstall

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

---

## 🚀 Usage

1. **Sidebar delete** — hover a session in the left sidebar, click the trash icon: the session moves into the recycle bin and the row disappears immediately.
2. **Settings recycle bin** — open **Settings ⚙️ → 🗑 会话回收站**:
   - Checkbox multi-select → **Restore** (batch unarchive) or **Permanent delete** (batch purge).
   - Each entry shows the session name, ID and working path (hover for full details).
3. **Permanent delete** physically removes the log and projection cache; live sessions are protected.
4. **Undo** — restoring shows an undo toast that re-archives the session.

---

## 🛠 Development

```bash
pnpm test          # run the test suite (host logic + HTTP routes)
```

Repo layout:

```
harness-session-delete/
├── package.json            # single bundle manifest (dsh.bundle.patch + dsh.client)
├── cordis.patch.yml        # bundle patch: one insert mounting the host row
├── index.js                # node half: host entry (inject + apply)
├── client.js               # browser half: sidebar icons + settings recycle bin
├── client.css              # plugin stylesheet: design tokens + light/dark adaptive components
└── packages/
    └── session-trash-host/ # host implementation (persistence/workspace/cache patches, HTTP routes)
```

---

## 🔌 How it works

- A **single npm bundle** covers both halves, same as other published plugins: the host row mounts via `cordis.patch.yml`; the browser half joins automatically through `dsh.client` + `exports["./client"]`.
- The browser talks to the host over the plugin's own `/api/session-trash/*` HTTP routes (registered on the webserver; non-GET requests carry an `x-dsh-plugin` CSRF header).

---

## 📄 License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:Seetraum/harness-session-delete

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source