DeepSeek Harness (DSH) supports extending functionality through plugins. The browser-native contextmenu gesture is general-purpose but limited, making it difficult to meet the need for quickly performing specific operations in a tree view. @nacocx/dsh-ui-context-menu is a client-side plugin that replaces the browser-default right-click menu with DSH’s own functional policies, providing customized interaction entry points for workspaces, sessions, and text areas.

Core Features

The plugin listens to right-click events and dispatches different action menus based on the pointer position and contextual content:

  1. Workspace Row
    For actual Workspace rows, it provides actions such as open in file manager, rename, and delete. Rename and delete are confirmed through plugin dialogs and submitted to the host API.

  2. Session Row
    For non-empty Session rows, it provides rename, fork, and archive actions. Forking replicates the title-increment logic and opens a child session.

  3. Blank Area
    Right-clicking in a blank area with no selection and no controls opens the application menu: create a new session, create a new workspace, or open settings.

  4. Selected Text
    For selected text, it provides copy, cut, search (populate the search box), and search in browser.

  5. Text Box
    Right-clicking inside an input box provides a paste-first editing menu: copy, cut, paste, and select all.

Installation

Install it through the official plugin registry:

dsh plugin --profile web add @nacocx/dsh-ui-context-menu

After installation, restart the DSH process (dsh --profile web) to load the plugin. The plugin declares dsh.bundle and automatically adds the cordis.patch.yml layer to the profile.

Configuration and Usage

All plugin features can be enabled or disabled independently. Go to Settings → Plugins, find the Right-click Menu card, and configure toggles for each area: workspace rows, session rows, blank areas, text boxes, and selected text.

When an area’s toggle is disabled, that area falls back to the browser-native right-click menu, with an effect equivalent to the plugin not being installed. Configuration choices are stored in the browser’s local storage.

Notes

  1. Menu Anchor Position: The menus for workspace rows and session rows are anchored to the row’s built-in ellipsis button, not the exact pointer coordinates. Only overlay menus (such as the blank-area menu and text-search menu) are anchored at the pointer position.
  2. Permission Dependency: The paste action and browser-search features depend on clipboard permissions in the browser or WebView. If permissions are denied, the actions may not work.
  3. Fallback Mechanism: Browser search and opening in file manager are only effective when the host provides a native opener. For non-loopback clients, these features may fall back to default behavior (such as anchor click).
  4. Configuration Synchronization: Configuration is stored in browser local storage and is not synchronized across browsers. Clearing browser data will reset the configuration.
  5. Dependency Scope: The plugin depends on the @deepseek-ai/dsh-client-ui-workspace scope (see the documentation for version requirements) to ensure UI structure compatibility.

Summary

This plugin intercepts right-click events and centralizes scattered actions into a unified context menu, reducing the need to switch tools and hunt for menu items. As a client-side plugin, it interacts with the host only through the same-origin /api gateway and does not read or write keys or sensitive data. It is suitable for users who want to improve the day-to-day interaction efficiency of DeepSeek Harness.