dsh-dialogue-cleanup
English · 简体中文
Delete DeepSeek Harness sessions from the running Web GUI — without restarting, without leaving the window.
One row in the session ... menu for a single delete, plus a bulk management page inside Settings.
Install ·
Gallery ·
How it works ·
Releasing ·
Releases
## Why it exists
**One-line positioning: deleting a session should actually delete it.** DeepSeek Harness keeps a session
in four places at once — the live store, the workspace records, the registry leftovers
(pin / archive), and the files on disk. Removing one of them leaves a ghost row, a stale
workspace, or a directory that silently keeps occupying disk. Everything below is that
positioning made concrete:
- **One irreversible operation, implemented once.** `deleteSession` lives in the Host
(`lib/service.js`) and is reached through two thin adapters — the HTTP contract and the slot UI —
so the single-delete path and the bulk path **cannot drift apart**.
- **A running session is refused, not guessed at.** The Host decides `deletable` and the UI simply
does not offer what the Host would reject. The panel never decides by itself whether something is
safe to delete.
- **Archived sessions are still shown by default.** Archiving is *not* deleting: an archived session
still occupies disk, so hiding it by default would hide exactly the files you came to clean up.
(The official sidebar hides them; here it is a tri-state filter — `hide archived` / `all` /
`archived only` — and **archived are shown by default**.)
- **Subagent rows are labelled.** The official sidebar hides `origin: 'subagent'` rows entirely, so
whenever those rows do appear (kind = subagent / all) each one is explicitly badged — a subagent
session must never look like an ordinary conversation.
- **It says what it actually did.** The result line reports ok / failed / degraded / directories
removed, and each failure keeps its own reason verbatim. When the live store entry cannot be
detached, the plugin reports `detached: false` rather than claiming success.
- **Errors are semantically truthful.** Unlike the upstream package (which always answered `200`),
this one uses real status codes: 400 / 403 / 404 / 405 / 409 / 429 / 500.
## UI at a glance
**The confirmation overlay: irreversible, and it says so.** Two closing paths only — an explicit
Cancel button, or `Esc`. Clicking the scrim deliberately does **not** dismiss it, because a
mis-click on an irreversible delete should not cost you your chance to confirm:
The overlay is a **native `