Box-select Copy (box-select-copy): Draw a box to select words in the DSH dialogue area.

Preface

In the DSH (DeepSeek Harness) Web chat interface, extracting content is commonly done by dragging and selecting line by line. When encountering columns in code blocks or entire blocks of data in tables, a single drag-and-select only takes away one line, and repeated operations take a lot of time. mi-chuan/box-select-copy is a client-side plugin that solves this problem using a rectangular selection box: hold Alt and drag a box, and upon releasing the mouse, all text within the box is copied out at once. Below is an introduction to the plugin’s capabilities, installation methods, and actual usage.

What is it

box-select-copy is a DSH Web client plugin maintained by Mi-Chuan, currently with 0 stars. Its target scenario is extracting content in blocks from the chat body, code blocks, or tables, rather than selecting line by line. The plugin runs on the client side and does not modify the chat’s DOM.

Core Features

  • Alt + Left Drag: Draw a rectangular selection box in the chat body area, covering any range of characters.
  • Copy on Release: Upon releasing the left mouse button, extract the text covered by the selection box and write it to the system clipboard.
  • Lightweight Notifications: Show ✅ Copied on success; corresponding notifications for empty selection or failure.
  • Preserve Horizontal Spacing: Automatically fill \t between columns with large spans within the same line, facilitating pasting into tables.
  • Theme Adaptation: The selection box and notifications use DSH theme tokens, automatically adapting to light and dark themes.
  • Cancellable: Press Esc during dragging or lose focus on the window to cancel the current selection.

Installation and Enablement

The prerequisite is that the DSH Web client supports client bundle plugins (dsh.client). The plugin provides four installation methods; choose one based on the environment. The npm package name, plugin ID, and GitHub repository name are all box-select-copy.

Method 1, Install from GitHub: On the plugin management page, select “Install External Bundle” and fill in the installation target as:

github:Mi-Chuan/box-select-copy

You can also tell the Agent directly:

请用 plugin_manager 的 install_bundle 安装 github:Mi-Chuan/box-select-copy

This method uses pnpm to read the repository via Git. If local Git access to GitHub fails (e.g., CRYPT_E_NO_REVOCATION_CHECK appearing on Windows), switch to Method 2 or Method 3.

Method 2, Install from npm: The package name is:

box-select-copy

Refresh the DSH page after installation is complete.

Method 3, Download Release Archive: Fill in the download address directly:

https://github.com/Mi-Chuan/box-select-copy/releases/download/v1.1.1/box-select-copy-1.1.1.tgz

The current release package is box-select-copy-1.1.1.tgz. You can also download it locally first and then fill in the absolute path.

Method 4, Clone and Install Locally, for development scenarios:

git clone https://github.com/Mi-Chuan/box-select-copy.git

After cloning, point the installation target in DSH to the box-select-copy directory containing package.json, enable the plugin, and refresh the page.

When upgrading from the old version @local/column-select-copy or @local/box-select-copy, uninstall the old plugin before installing the new version.

Typical Usage

  1. Hold Alt in the chat body.
  2. Drag out a rectangular selection box with the left mouse button.
  3. Release the left mouse button.

After success, ✅ Copied appears at the bottom; you can paste directly with Ctrl+V. To cancel, press Esc during dragging or lose focus on the window.

Implementation and Limitations

The plugin only contains client-side code, registered to the shell.overlay floating layer, and does not modify the chat DOM. It listens for pointerdown/move/up in the window capture phase, starting only when altKey + left mouse button + chat scroll area are simultaneously satisfied. Text extraction determines intersection with the selection box character by character via Range.getBoundingClientRect(), then sorts by top for lines and left for columns, connecting lines with \n. The clipboard prioritizes navigator.clipboard.writeText, falling back to a hidden textarea with execCommand('copy') on failure.

Pay attention to the following points when using:

  • Only effective in the chat body area; input boxes and sidebars will not trigger it.
  • Text within pseudo-elements (like some list symbols) and Shadow DOM will not be extracted.
  • When the browser or Electron refuses clipboard permissions, the fallback method is tried first; if it still fails, a “Copy Failed” message is displayed.

The plugin runs with the permissions of the current DSH process. Before installation, read client.js and cordis.patch.yml first to ensure the source code and license (MIT) meet expectations before enabling.

Conclusion

For scenarios where code or table content is frequently extracted in blocks in DSH chats, box-select-copy replaces drag-select copy with a single box selection, saving line-by-line operations. The plugin directory page is at https://www.skillhub.cn/plugins/Mi-Chuan/box-select-copy, and source code and installation instructions are at https://github.com/Mi-Chuan/box-select-copy .

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye