DSH Plugins Marketplace

DSH Plugins

Plugins

/

Tools & Capabilities

/

dsh-file-menu

d

dsh-file-menu

Manifest valid★ 1

No project description is available for this repository yet.

UI (client)hasBundlePatch

dsh-file-menu

Right-click menus for the DeepSeek Harness (DSH) Web UI.

The DSH Web client ships no contextmenu handler, so right-clicking inside the app does nothing useful — no copy, no paste, no "open file location". This plugin adds a Codex-style menu that fits whatever you clicked.

English | 简体中文

Features

The menu is built from the element under the cursor:

Right-click targetMenu rows
Selected textCopy
A paragraph (no selection)Copy this paragraph
Input box / editable areaCut · Copy · Paste · Select all
A file reference (delivered-file card, produced-file chip, inline file mention)Copy path · Reveal in file manager · Open with default app
A linkCopy link address · Open in browser
Alt + right-clickDiagnostics: copy element info
  • Copy goes through the host route /file-menu/clipboard (Electron main-process clipboard, falling back to PowerShell Set-Clipboard) instead of relying on the renderer's clipboard permission. If the host route is unavailable, the client falls back to document.execCommand('copy').
  • Reveal in file manager selects the file where the OS supports it — Windows Explorer /select, macOS Finder open -R. On Linux xdg-open has no "select" concept, so the containing directory is opened instead. If the host route is missing entirely, the client falls back to DSH's own /open-in-app/open.
  • File paths are read from the element's title, data-path, data-file-path, dataset.*path, the element's own text (DSH's tool-row file links carry no attribute at all — the path is only in the text), or a selected absolute path. DSH renders in-workspace references relative to the session workspace (dsh-plugins/x/README.md, @docs/plan.md), so relative candidates are resolved against the current session's workspace root, which the client half reads from DSH's sessions service (list.getSnapshot() → byId[current].cwd). ~/... is expanded by the host half. When no root is available the file rows are simply not shown rather than guessed.

Install

From npm:

dsh plugin --profile web add @z1995418/dsh-file-menu

From source:

dsh plugin --profile web add github:dreammaker2016/dsh-file-menu

Every release also carries a prebuilt tarball (dsh-file-menu.tgz), installable with dsh plugin --profile web add <tarball-url>.

Use the profile you actually run (web for the Web client, your own profile name for DSH Desktop). Restart DSH after installing.

Uninstall

dsh plugin --profile web remove dsh-file-menu

Limits

  • A relative path that appears inside running prose is recognized only when it is a single token (no whitespace), contains a path separator, and its last segment carries a file extension. Paths with spaces, bare basenames, and extension-less directories are skipped — that is what keeps ordinary sentences ("copy/paste this") from growing file actions.
  • Relative candidates need the session workspace root. If DSH's sessions service is unavailable, the file rows are hidden instead of guessed.
  • The two halves version independently: the client (lib/client.js) is versioned with the package, while the host half reports its own version from GET /file-menu/status.

How it works

  • Host half lib/index.js — a webServer prefix route /file-menu serving ping, status, hello, menu, diag, clipboard, reveal and open. reveal/open take { path, base }, resolve absolute paths directly, ~/... against the home directory and relative paths against base (the session workspace root), then act only on paths that exist.
  • Client half lib/client.js — a capture-phase contextmenu handler plus a plain-DOM menu (no React dependency), with pointerdown + elementFromPoint activation so an upstream stopPropagation cannot swallow the click.
  • cordis.patch.yml — the single bundle row that registers the host half. The client bundle is served automatically because the host entry declares dsh.client.

Maintainer notes — HMR pitfalls, event-swallowing, debugging without a browser console — are in docs/DEVELOPMENT.md.

License

MIT

Comments

Loading…

Similar plugins

dsh-clipboard-menu

by wuwaka

Adds a right-click menu to DeepSeek Harness inside desktop shells that ship no context menu: cut, copy, paste and select all in the composer, copy and copy-as-plain-text on selected text elsewhere, an

UI & ExperienceDevelopment & InfrastructureManifest valid

★ 0

MIT

JavaScript

Sep 12, 2026

dsh plugin --profile web add dsh-clipboard-menu

by zurrll

DSH Web GUI 文件资源管理器:右侧文件树抽屉,拖拽粘贴路径,双击打开,右侧取消区

Manifest valid

★ 0

MIT

TypeScript

Aug 18, 2026

dsh plugin --profile web add @zurrll/dsh-file-explorer

by a903067276-rgb

Clickable file paths in DSH replies: Codex-style inline open, 📂 reveal in file manager, mentioned-files chip list. DSH web plugin (zero-dependency).

UI & ExperienceManifest valid

★ 15

MIT

JavaScript

Oct 1, 2026

dsh plugin --profile web add dsh-file-mentions

by miao-ge

DSH plugin: right-click menu on the left sidebar workspace rows - rename, delete workspace, open in VS Code, reveal in File Explorer, plus open in a new tab when dsh-project-tabs is installed.

Manifest valid

★ 0

MIT

JavaScript

Oct 5, 2026

dsh plugin --profile web add dsh-sidebar-context-menu

Open DSH workspace directories in installed file managers, terminals, and supported editors from the Web UI.

UI & ExperienceManifest valid

★ 0

dsh plugin --profile web add dsh-open-in-x

by zmm863-commits

DSH Web GUI paperclip button: a 📎 button in the composer opens a file picker (drag & drop supported) and inserts file contents into the textarea.

UI & ExperienceManifest valid

★ 4

↓ 462/wk

MIT

TypeScript

Oct 4, 2026

dsh plugin --profile web add dsh-paperclip