DSH Hub

AKIRACOD/dsh-drag-and-drop

dsh-drag-and-drop

UIWeb UI6 GitHub stars· updated 2026-08-14

DeepSeek Harness Web UI plugin: drop local files and attach them as chips above the composer — send without typing, no 'images only' toast. Fork of omdsh-dev/dsh-drag-and-drop.

Install

npx @deepseek-ai/dsh plugin --profile web add github:AKIRACOD/dsh-drag-and-drop`

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-drag-and-drop DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/akiracod-dsh-drag-and-drop.svg)](https://dshhub.dev/plugins/akiracod-dsh-drag-and-drop)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from AKIRACOD/dsh-drag-and-drop, cleaned of badges and images.

dsh-drag-and-drop — Drag local files in and insert their real paths

Install: dsh plugin --profile web add github:AKIRACOD/dsh-drag-and-drop

A DeepSeek Harness Web UI plugin: drag local files or folders onto any part of the page and their original absolute filesystem paths are inserted into the current conversation input — without uploading, moving, or copying anything.

English | 中文

What's new in this fork (v0.2.0)

This is a maintained fork of omdsh-dev/dsh-drag-and-drop (formerly bill9109/dsh-drag-and-drop) with a different drop experience:

  • File chips, not path text. Dropped documents and folders now appear as removable chips in a bar right above the composer — the input box stays empty and free for typing (no more C:\...\file.docx pasted into your message).
  • Send without typing. The chip bar has its own Send button: drop a file, click it, and the resolved paths are prepended to the outgoing message automatically. Enter and the normal send button still work when you type alongside files.
  • No more "images only" toast. Dropping a document no longer triggers the composer's misleading "仅支持 PNG、JPG、WebP、GIF" error.
  • Images stay native. Image-only drops keep the original behavior (thumbnail attachments through the composer).

Why this exists

A browser never hands a web page the real filesystem path of a dropped file — it exposes only a local file URI when it feels like it, and often nothing at all, for security. DSH, though, operates on real files: its tools read, run, and patch actual paths on the machine. Drop a file into an ordinary web input and you get either an upload (a copy that silently breaks the file's relationship with its neighboring dependencies) or a hand-typed path that is easy to get wrong.

This plugin closes that gap on the machine running DSH. It converts the browser's local file URI into the native absolute path, and when the browser hides the path entirely it resolves the file back to its real location — through the current Workspace, registered Workspaces, the OS file index, and a bounded directory search — then writes that path into the current conversation input. The file never leaves its directory.

Features

  • Drag files onto any part of the Web UI to attach their original absolute paths as chips above the composer
  • Full-page dim + blur hint while dragging
  • Supports files and folders; drag multiple items at once — one chip per item
  • Dropped documents render as removable chips; the input box stays clean for typing
  • Send just the dropped files with the chip bar's Send button — no typing required
  • Document drops never trigger the composer's "images only" toast; image-only drops keep native thumbnails
  • Native paths on macOS, Linux, and Windows
  • POSIX paths, Windows drive-letter paths, and UNC network paths
  • No uploading, moving, or copying of files
  • Locates files in the current Workspace and registered Workspaces first
  • When the browser hides the original path, uses the local file index and bounded directory search
  • Computes content fingerprints only when multiple candidates exist
  • When several byte-identical copies cannot be told apart automatically, lets the user pick the path
  • Failed lookups surface as a dismissible plugin toast (auto-dismisses after 8s; hovering pauses the timer)
  • Writes the draft via DSH's input-state service instead of touching the input DOM

Related plugins