Semidia
dsh-session-manager
No description
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
DSH Session Manager
A client plugin for DeepSeek Harness web that adds a right-click context menu on sidebar conversation rows and a Session manager entry at the sidebar footer.
It answers the frequent request "the three-dot menu has too few options compared
to Codex". The stock three-dot menu is hard-coded (no public session-row action
slot in 0.1.0-rc.6), so this plugin works around it instead: right-click any
session row for a full action menu, and use the footer button for the current
session.
Features
Right-click a conversation in the sidebar:
| Action | Backing |
|---|---|
| Pin / Unpin chat | localStorage (dsh.session-pins.v1) — shared with dsh-session-pins |
| Mark as unread / read | Local state (dsh.session-unread.v1) with a dot on the row; opening a session marks it read |
| Rename chat | Official sessions.binding(id).session.rename() + a rename dialog |
| Archive chat | Official workspaces.archiveSession() |
| Continue in new chat | Official sessions.fork() then open the child |
| Open in file explorer | Official workspaces.openPath() on the session's workspace |
| Copy working directory | Workspace path from the workspaces store |
| Copy session title / ID | Clipboard (writeClipboard) |
| Copy deep link | Copies <origin>/?session=<id> — opens the session when dsh-deeplink is installed |
| Open in new window | window.open(.../?session=<id>) — needs dsh-deeplink to land on the session |
Sidebar footer "Session manager" (current session): export session ZIP, archive, fork, copy title / ID.
Not implemented (no backend in rc.6): continue in a new working tree, delete-session.
Install
dsh plugin --profile web add github:Semidia/dsh-session-manager#v0.1.1
# recommended companion for deep links:
dsh plugin --profile web add github:qyw233/dsh-deeplink#main
dsh web
Restart dsh web once after adding, then hard-refresh the page. No official
package is patched except one additive data-session-id attribute on the
session row (see below).
How it works
- A one-line additive patch adds
data-session-idto the sidebar session row (@deepseek-ai/dsh-client-ui-workspace→SessionNodeItem). Without it, no public API exposes which session a row represents. - The plugin registers a capture-phase
contextmenulistener and a menu in the publicshell.overlayslot, positioned at the cursor via the primitivesMenu(portal +getAnchorRect). - The footer entry registers in the public
sidebar.footer.actionslot (additive cell, idsession-manager, same slot as Session Pins). - All session/workspace actions use public client services
(
sessions,workspaces,locale,slots); no private host APIs.
The
data-session-idrow patch lives in the installed@deepseek-ai/dsh-client-ui-workspacepackage and is overwritten on a dsh upgrade — re-apply it (one line) after upgrading.
Compatibility
Targets @deepseek-ai/dsh@0.1.0-rc.6. DeepSeek Harness is in developer
preview; a new release candidate may change the slot contracts this plugin
relies on until compatibility is reviewed.
License
MIT