Foreword¶
When running dsh web in application wrappers like Tauri, EAC, or Electron, the WebView’s built-in right-click menu is often incomplete: the session sidebar lacks common operations, and the editing options for the conversation body and input box are not comprehensive, creating a gap compared to the native desktop client experience. The DeepSeek Harness official component covers some session operations, but there is no publicly available permanent deletion interface beyond archiving, leaving wrapper users needing a predictable and extensible context menu.
The community plugin baihejiangnan/dsh-session-context-menu (better right-click) is introduced below. It targets desktop wrappers hosting the DSH Web UI, providing a right-click experience close to the native client in scenarios such as sessions, workspaces, settings pages, conversation body, links, and input boxes. The menu and prompt text support Chinese and English, automatically following the host UI language.
What Is This¶
dsh-session-context-menu is published by maintainer baihejiangnan and classified as a client plugin. It can be found in the SkillHub directory and on GitHub. The plugin injects into the DSH Web client through Cordis patches without modifying the @deepseek-ai/* core packages or other community plugins; it leaves no patches after uninstallation.
It is important to note: The current version is not compatible with the native Web version. Directly opening dsh web in ordinary browsers like Chrome, Edge, or Firefox is not supported, and the browser’s native right-click behavior is not a compatibility target. The plugin is only intended for application wrappers like Tauri, EAC, Electron, WebView2, CEF, and Qt WebEngine that host web UIs.
Core Features¶
Sessions and Workspaces¶
The right-click menu for session rows reuses the official rename, fork, and archive capabilities, and additionally provides permanent deletion with confirmation dialogs and path protection. Workspaces and their “New Session” entry support creating new sessions, opening directories, renaming, copying paths, archiving sessions, and safely removing workspaces. You can also open directories, copy directory paths, and session IDs.
Official session operations are delegated to official components; permanent deletion is handled through the plugin’s host routing because Harness currently only exposes archiving and lacks a session deletion RPC.
Text, Links, and Input Boxes¶
Regular text supports copying selected content; “Select All” is strictly limited to the current conversation content slot or settings popup, excluding the application sidebar. Links or selected URLs can be opened in the system default browser or have their links copied. Input boxes provide undo, redo, cut, copy, paste, and select all. All plugin menus offer “Refresh Current Harness Page.”
Permanent Session Deletion¶
Permanent deletion is irreversible. Clicking “Delete Session” displays the plugin’s built-in confirmation dialog; only clicking “Confirm Delete” will proceed. Clicking cancel, the overlay blank area, or pressing Esc will cancel the operation.
When deleting a running session, the plugin first cancels tasks, waits for the Agent to stop and detach from the live session, to prevent logs from being rewritten in the background. After deleting the currently viewed session, the content area enters the default state consistent with the “New Session” at the top; deleting other sessions does not change the current content area. Recursive deletion is only allowed for JSONL session directories under the current DSH_HOME/sessions where the directory name matches the session ID exactly.
Extension Protocol¶
Other web plugins can register extension menu items through the global registry. run executes on click, and visible can determine display based on the session:
const menu = globalThis[Symbol.for('dsh.session-context-menu.extensions')]
const dispose = menu.register({
id: 'example.session-details',
order: 100,
label: 'Session Details',
visible: ({ session }) => Boolean(session),
run: ({ session }) => console.log(session),
})
Each time the right-click menu opens, it also dispatches a dsh:session-context-menu event, with detail containing row, official menu action, session, original target, mouse coordinates x/y, and current extensions. Extension plugins should call the disposer returned by registration upon uninstallation.
Compatibility Strategy¶
The plugin positions the target through the session row’s accessibility semantics and performs business operations through the public services sessions and workspaces; if the target cannot be confirmed, the browser’s default menu is retained. When coexisting with dsh-better-sidebar (v0.2.14+), “Open in File Explorer” directly calls the host RPC host.openPath (POST /api/host.openPath), always delegating directories to the system file manager to avoid better-sidebar wrapping workspaces.openPath and opening directories as files.
Installation and Activation¶
Requires DeepSeek Harness to be installed and the use of a profile that hosts the web UI (e.g., web or tauri). It is recommended to install from the GitHub main branch to get the latest features and be able to execute update commands directly:
dsh plugin --profile web add github:baihejiangnan/dsh-session-context-menu
If you wish to lock to the current stable version and not automatically follow subsequent updates, you can install a Git tag. The current latest stable tag is v0.2.14:
dsh plugin --profile web add github:baihejiangnan/dsh-session-context-menu#v0.2.14
After installation, restart dsh web or the application wrapper like Tauri or EAC that hosts it. Developers can also clone the repository and link using a local path:
git clone https://github.com/baihejiangnan/dsh-session-context-menu.git
dsh plugin --profile web add ./dsh-session-context-menu
Updating¶
After installing via an unlocked GitHub address, execute the following command to get the latest stable version on main:
dsh plugin --profile web up @baihejiangnan/dsh-session-context-menu
After updating, restart dsh web or the application wrapper. Users who installed with a locked tag like #v0.2.14 need to change the dependency target to a new stable tag or reinstall using the command for the new tag.
Uninstalling¶
dsh plugin --profile web remove @baihejiangnan/dsh-session-context-menu
Use Cases and Considerations¶
Suitable for developers who daily use DSH in wrappers like Tauri, EAC, or Electron: if you need a complete right-click menu, permanent session deletion, or to open directories and external links within the wrapper, you can install this plugin.
Before installation, note:
- The plugin runs with the current
dshprocess permissions; check the source code and license (MIT) before installation. - Does not support direct use in ordinary browsers; if your environment is
dsh webrunning bare in Chrome, this plugin will not improve the right-click experience. - When sessions with the same name cannot be uniquely identified from public DOM semantics, the plugin does not take over the default menu of that session row to avoid operating on the wrong session.
- When the Clipboard API is not writable, it falls back to the browser’s copy command; if the host prohibits reading the clipboard, it prompts to use
Ctrl+V. - This plugin does not provide “Pin Session”: Harness currently lacks a standalone pin state and public operation interface; forced simulation would interfere with global sorting preferences.
The main branch already includes the Chinese-English adaptation and permanent session deletion features to be released in the next version; stable version v0.2.14 (2026-08-18) primarily fixes the issue of errors when opening directories while coexisting with dsh-better-sidebar.
Conclusion¶
dsh-session-context-menu adds native-style right-click menus for sessions, workspaces, conversations, and inputs to DeepSeek Harness application wrappers, and provides controllable permanent deletion capabilities beyond official archiving. If you use wrappers like Tauri or EAC to run DSH, you can install and try it according to the commands above.
- Directory Page: SkillHub - dsh-session-context-menu
- Source Code and Documentation: GitHub - baihejiangnan/dsh-session-context-menu