Introduction¶
When managing multiple sessions, frequently toggling pinned states or marking reading progress often relies on native operations, which are not intuitive enough. The dsh-session-context-menu plugin extends the session row registry and accessory slots of DeepSeek Harness to provide lifecycle-safe session context operations similar to Codex. It does not patch installed packages, inspect React Fiber, or query private DOM.
Core Features¶
The plugin provides the following actions in the session row context menu:
- Pin and unpin: Keep pinned rows ahead within the existing relative order.
- Mark as read/unread: State marks with an accessible row indicator.
- Workspace directory: Display the workspace directory using the native DSH path opener.
- Copy information: Copy the workspace path, session ID, or browser deep link.
- Open link: Open the deep link in a new browser window.
- Integrated actions: Use DSH built-in “Rename”, “Fork”, and “Archive” actions in the same menu.
Usage¶
Open the shared action model through the following methods:
* The ellipsis button on a session row.
* Native right-click.
* Shift + F10.
* The menu key.
Deep links use ?session=<id> and are resolved only when the session list contains that ID.
Installation¶
After a compatible upstream version is released, install it with the following command:
dsh plugin --profile web add github:Harzva/dsh-session-context-menu
For isolated local development:
DSH_HOME=/path/to/throwaway-dsh-home dsh plugin --profile web add /absolute/path/to/dsh-session-context-menu
DSH_HOME=/path/to/throwaway-dsh-home dsh web
Remove the plugin to clean up Host routes, registry actions, accessory components, and deep link listeners:
dsh plugin --profile web remove dsh-session-context-menu
Persistence and Privacy¶
Pin/read state is stored in a booleans-only JSON file at $DSH_HOME/storages/dsh-session-context-menu/state.json (or the storeRoot provided in the configuration). The file creation permissions are 0600. Session records, prompts, workspace paths, credentials, and clipboard content are never persisted. The host exposes a same-origin, storeless JSON route at /dsh-session-context-menu/state.
Use Cases and Notes¶
- Compatibility requirements: Supports
ctx.sessionRowsandsidebar.workspaces.session.accessoryprovided by DSH are required. The plugin intentionally refuses to load when required services are missing, avoiding silent fallback to private UI attachments. - Permissions and security: The plugin runs with the current DSH process permissions and does not perform DOM inspection or private API calls. Pin/read state stores only booleans and does not store session records, prompts, paths, credentials, or clipboard content.
- License: The project uses the MIT license. It is recommended to review the source code before installation to ensure it meets current environment requirements.
Summary¶
By integrating standard session actions into the context menu, the plugin reduces the number of clicks needed to manage chat history while maintaining security and lifecycle safety. For more details or to submit issues, visit the GitHub repository.