Bundle
@zivye/dsh-img-save
Hover-to-download buttons for images in DeepSeek Harness conversations.
- Source
- Yezery
- License
- MIT
- Updated
- Updated 7 hours ago
Readme
# DSH Image Download Plugin Adds a download button when the pointer is over an image in a DeepSeek Harness conversation. <img src="./doc/example.png" alt="example" width="250" style="display: block; margin: auto;"> ## Install Install the plugin through the DeepSeek Harness client or 1024 Store by searching for the npm package name: ```text @zivye/dsh-img-save ``` Until the package is published to npm, the catalog lists this plugin browse-only; the install command appears automatically once the npm package is detected. The plugin itself ships under the name `dsh-img-save` in the Web profile roster (see `cordis.patch.yml`). ## Design - **Client-only behavior:** the plugin uses the exact image URL that DSH is already rendering. It does not read local files, upload image bytes, run shell commands, or call a remote service. - **No polling or DOM observers:** pointer, scroll, and resize events drive positioning. This avoids observer feedback loops and UI freezes. - **Preview-safe interaction:** pointer/click events on the download button are stopped so clicking it does not trigger the image's built-in preview/lightbox action. - **Local URLs:** uses the browser download mechanism for `file:`, `blob:`, `data:`, and browser-accessible HTTP(S) image URLs. Browser security policy ultimately decides whether a particular local URL may be downloaded. ## Project layout ```text src/ host/index.js # empty Host plugin; package is client-only client/index.js # Cordis Client plugin source lib/ client.js # esbuild ESM bundle of src/client/index.js cordis.patch.yml # DSH profile bundle registration snippet esbuild.config.mjs # bundles src/client -> lib/client (ESM, React external) package.json README.md LICENSE ``` ## Development The client entry is an ESM source file. The published package ships an esbuild bundle at `lib/client.js`, which the 1024 Store loads through `exports["./client"]`. Build the bundle locally: ```bash npm install npm run build ``` `npm run check` runs a syntax-only check on the source files. ## Intended DSH integration The client bundle is a Cordis plugin which registers with the queried `shell.overlay` slot. It requires the DSH client runtime to provide: - `slots.inject()` and `slots.register()`; - the `shell.overlay` slot; - React (provided as an npm dependency) and the dynamic client builtins (`document`, `window`, `requestAnimationFrame`). `cordis.patch.yml` mounts the plugin into the Web roster of any DSH profile that installs this package. ## License MIT. See [LICENSE](./LICENSE).
Install
dsh plugin --profile web add github:Yezery/dsh-image-download
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install zivye-dsh-img-save from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.