dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
为 DSH Web 界面补上右键菜单:文字与输入框可复制/剪切/粘贴/全选,文件引用与链接可复制路径、在文件管理器中定位、用默认应用打开。
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 | 简体中文
The menu is built from the element under the cursor:
| Right-click target | Menu rows |
|---|---|
| Selected text | Copy |
| A paragraph (no selection) | Copy this paragraph |
| Input box / editable area | Cut · 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 link | Copy link address · Open in browser |
| Alt + right-click | Diagnostics: copy element info |
/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')./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.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.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.
dsh plugin --profile web remove dsh-file-menu
sessions service is unavailable, the file rows are
hidden instead of guessed.lib/client.js) is versioned with the package, while the host half
reports its own version from GET /file-menu/status.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.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.
MIT