Skip to content

Releases: fountunt/dsh-session-cleaner

dsh-session-cleaner v1.0.0 — stable

Choose a tag to compare

@fountunt fountunt released this 14 Aug 13:18

🎉 v1.0.0 — stable release

The delete-session feature is officially stable:

  • ⋮ menu delete item only — the sidebar session row menu now has a single 🗑 "Delete session" item at the bottom (the v0.2.0 header button was removed per user request)
  • idle agents are stopped first (via fiber._unload) so sessions opened in the UI can be deleted
  • running sessions are refused; ambiguous titles skip the item for safety
  • unit tests 4/4; verified end-to-end on a running web profile

History: 0.1.0 (API endpoint) → 0.2.x (Web UI) → 1.0.0 (stable)

dsh-session-cleaner v0.2.4 — fix idle-agent disposal

Choose a tag to compare

@fountunt fountunt released this 14 Aug 13:15

v0.2.4 — fix idle-agent disposal

The previous release used ctx.dispose to stop idle agents, but cordis contexts are proxies and dispose is not a valid property there (cannot get property "dispose" without inject).

Now the plugin unloads the agent through its fiber: agent.ctx.fiber._unload() — the same teardown path the runtime itself uses, running the agent-loop effect cleanup (and the ordered session teardown) correctly.

  • idle agents are stopped before their session is deleted
  • running sessions are still refused
  • unit tests updated for the fiber API (4/4 passing)

dsh-session-cleaner v0.2.3 — delete open sessions

Choose a tag to compare

@fountunt fountunt released this 14 Aug 04:29

v0.2.3 — delete sessions that are open in the web UI

Sessions opened in the web UI carry an attached (idle) agent, which the old guard refused to delete. Now:

  • idle agents are disposed first (via their own fiber, tearing down agent + session lifecycle in order), then the session is deleted
  • running sessions are still refused — a turn in flight is never interrupted
  • unit tests for the new disposal path (4/4 passing)

This makes the sidebar ⋮ menu delete item and the header 🗑 button work for every non-running session, including ones you have opened.

dsh-session-cleaner v0.2.2 — fixes

Choose a tag to compare

@fountunt fountunt released this 14 Aug 04:19

v0.2.2 — fix + polish

  • console diagnostics (logs every step: apply / observer / catalog / augment)
  • robust menu-to-row pairing (click-capture fallback for portaled menus)
  • delete item is now disabled (greyed) for running sessions instead of clickable-but-refused
  • fixed package.json BOM that broke pnpm installs

The sidebar ⋮ menu item and the header 🗑 button are both confirmed working via browser console logs.

dsh-session-cleaner v0.2.1 — sidebar menu delete item

Choose a tag to compare

@fountunt fountunt released this 14 Aug 04:01

v0.2.1 — delete item in the sidebar ⋮ menu

The client half now also appends a 🗑 "Delete session" item to the bottom of the session row menu (the three-dot menu in the sidebar):

  • resolves the row's session id from its title (skips ambiguous duplicate titles for safety)
  • danger-styled separator + item, confirm dialog, sidebar refresh after deletion

Existing v0.2.0 header button unchanged.

Install / upgrade:
dsh plugin --profile web add dsh-session-cleaner # or update + restart dsh web

dsh-session-cleaner v0.2.0 — Web UI delete button

Choose a tag to compare

@fountunt fountunt released this 14 Aug 03:54

v0.2.0 — Web UI delete button

The client half now adds a delete button (🗑) to the conversation header actions area:

  • One click + confirm deletes the session and refreshes the sidebar
  • Disabled while the session is running
  • Sessions with an attached agent are refused by the server — the current conversation can never be deleted

Install / upgrade

\\sh
dsh plugin --profile web add dsh-session-cleaner # or update + restart dsh web
\\

Full changelog: v0.1.0 (API endpoint) → v0.2.0 (Web UI button).

dsh-session-cleaner v0.1.0

Choose a tag to compare

@fountunt fountunt released this 14 Aug 03:37

What's inside

Delete DeepSeek Harness sessions from a running web runtime — no restart needed:

  • Live store detach — removes the session from the in-memory SessionStore (fixes ghost sessions that linger in the sidebar after their files are gone)
  • Workspace records — detaches the session from every workspace
  • On-disk artifacts — deletes the session directory under $DSH_HOME/sessions

Safety: sessions with an attached agent (running or idle) are refused — the current conversation can never be deleted.

Install

\\sh

from npm

dsh plugin --profile web add dsh-session-cleaner

from git

dsh plugin --profile web add github:fountunt/dsh-session-cleaner
\\

Then restart \dsh web.

Usage

\\js
await fetch(/api-ext/session.delete, {
method: POST,
headers: { content-type: application/json },
body: JSON.stringify({ sessionId: session-xxxx }),
}).then(r => r.json());
// -> { ok: true, value: { detached: true, workspaces: 1, files: 1 } }
\\

Changelog

  • 0.1.0 — initial release (verified end-to-end against a running web profile; 3/3 unit tests)