my-image-drop
DSH plugin: drag-and-drop images to file paths for text-only models
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 20, 2026
- Updated
- Aug 20, 2026
Introduction
my-image-drop
A DeepSeek Harness plugin that turns drag-and-drop of images into file paths in the composer, so text-only models can read them with the read tool (or a vision skill) instead of failing image admission.
How it works
- Host half (
dsh/index.js): registers a loopback routePOST /my-image-drop. It accepts an image, magic-byte checks and size-caps it (25 MB), writes it as a private (0600) temp file under<tmpdir>/my-image-drop, and returns{ "path": "..." }. - Browser half (
dsh/client.js): a capture-phasedroplistener (plusdragenter/dragoverto enable dropping). On a drop that carries image files, it uploads each to/my-image-dropand inserts the returned path into the focused composer as plain text. It also dispatches a syntheticdragendso the composer's drop overlay dismisses.
The composer shows a file path in the input box. Send it and the model gets a path — the primary trigger for the read tool and vision skills.
Install
From the GitHub source (git install runs prepare; no build needed, the entry is committed):
dsh plugin add github:<owner>/my-image-drop
Or add the bundle to your profile:
{
"dsh": { "profile": { "bundles": ["my-image-drop"] } }
}
Scope
This plugin handles drag-and-drop only. Paste is intentionally left to whatever else is installed (e.g. @liustack/modlens) so the two never double-handle the same event. If you run modlens' own drop patch and this plugin at the same time, both would insert a path — pick one.
Files
package.json— manifest; declaresdsh.bundle.patchand the browser bundle (dsh.client).cordis.patch.yml— host mount layer.dsh/index.js— host half (route).dsh/client.js— browser half (drag/drop listeners).
Testing (author)
node --check dsh/index.js— syntax check the host half.node --check dsh/client.js— syntax check the browser half.- Install into a web profile, restart the desktop app, drag an image into the composer, and confirm a file path is inserted and the
readtool can open it.