Passer au contenu principal
B

dsh-image-zoom

bingomu/dsh-image-zoom

In-chat image viewer for DeepSeek Harness: wheel and trackpad pinch zoom at the pointer, two-finger and drag panning, gallery navigation, downloads named from the image description and timestamp, and opening workspace originals in the system default app.

Installer

dsh plugin --profile web add github:bingomu/dsh-image-zoom

README

dsh-image-zoom — image viewer for DeepSeek Harness

dsh-image-zoom

A real image viewer for DeepSeek Harness. Click any content image in chat — a Markdown image, a tool screenshot, a workspace artifact — and get wheel/pinch zoom, two-finger and drag panning, gallery browsing, and downloads that arrive with a sensible filename.

release DSH license issues X

English | 中文

Opening a diagram in the viewer

Why this plugin

The built-in image preview is a step up from a raw <img>, but it is not a viewer: you cannot really zoom, pan on both axes, or keep a good filename when you save. dsh-image-zoom takes over content-image clicks and draws its own dialog:

You want to…How it works
Zoom with a mouseWheel zooms at the pointer. A normal notch (Windows 100 / Chrome 120) zooms immediately; a smooth-scroll or precise mouse with tiny deltas is confirmed as an isolated event after 75 ms and zooms too.
Zoom with a trackpadPinch (ctrl+wheel) zooms continuously.
Pan left/right and up/downA two-finger scroll stream pans both axes; drag also pans; Shift+wheel pans sideways.
Read something smallFit / 1:1 / double-click, +/-, typed percentage, 5%–4000%, rotate 90°.
Flip through screenshots←/→ or the side chevrons; 3 / 7 in the footer.
Keep the fileDownload with a generated name, copy the image, copy an external image link, or open a workspace original in the system default app.

Detail at 260% Download with a generated filename Gallery browsing

Install

GitHub release tarball (current)

dsh plugin --profile <your-profile> add https://github.com/bingomu/dsh-image-zoom/releases/latest/download/dsh-image-zoom-1.0.1.tgz

Plugin market

It is listed in the DSH plugin market (registry entry awesome-dsh-plugin) and installs with:

dsh plugin --profile <your-profile> add https://github.com/bingomu/dsh-image-zoom/releases/latest/download/dsh-image-zoom-1.0.1.tgz

From a checkout (development)

dsh plugin --profile <your-profile> add /path/to/dsh-image-zoom

Then restart DSH (or reload the page when only client.js changed). The plugin is client-only: it declares dsh.bundle.patch and a dsh.client web entry, and writes nothing to your sessions or files.

Requirements

ItemValue
DSH>=0.2.1-rc.2 <0.3.0-0 (declared in engines.dsh); developed and tested on DSH Desktop 0.2.1-rc.5
RuntimeWeb client / DSH Desktop. Node is only needed for tests.
PlatformmacOS tested on the desktop app; Windows uses the same web client (the wheel notch path is covered by tests via synthetic 100/120 deltas).

Gestures and shortcuts

InputAction
Mouse wheel (one notch)Zoom at the pointer
Pinch / Ctrl+wheel / ⌘+wheel / Alt+wheelZoom
Two-finger scroll streamPan both axes
Shift+wheelPan sideways
DragPan
+ / -Zoom 25%
0 / 1Fit / actual size
Double-clickFit ↔ 1:1
← / →Previous / next image
Shift+arrow keysPan 72 px
R / Shift+RRotate 90° clockwise / counter-clockwise
EscClose (first exits the zoom input)

The footer has three explicit wheel modes — Auto / Zoom / Pan — stored in localStorage. Auto is explained above; choose Zoom if your mouse's smooth-scroll driver breaks the auto heuristic, or Pan if you want scroll to always move the picture.

Download naming

Every download is saved as:

<description>-<YYYYMMDD-HHmmss>.<ext>
  • description = the image alt text, else a meaningful source filename, else the localized “image”.
  • The local timestamp keeps names unique and sortable; the extension follows the detected format, so blob-backed screenshots never land as .bin.
  • Characters Windows forbids are replaced, reserved device names get a trailing _, and long descriptions are capped at 48 characters.

The download button's tooltip previews the exact name; the macOS save dialog opens with it already filled in.

Header actions

ButtonWhat it does
↓ DownloadSave the original with the name above
⧉ Copy imageCopy to the clipboard as PNG/JPEG
🔗 Copy linkOnly for off-origin http(s) images: copy the absolute URL
↗ Open originalWorkspace images (served via /api/file?path=…) open in the system default app through the Host's openWorkspacePath; external images open in a new window; blob:/data: attachments explain that they have no local path
✕ CloseSame as Esc

Feedback and support

  • Bugs and feature requests: GitHub Issues — the primary channel; please use the templates and include DSH version, OS, and reproduction steps.
  • X / Twitter: @robinham — short questions and release notes.
  • Questions and usage help: GitHub Discussions when enabled; otherwise open an issue.
  • Security reports: do not open a public issue. See SECURITY.md.
  • Response expectation: this is a personally maintained project; issues are answered on a best-effort basis, usually within a week.

See SUPPORT.md for the full support policy and docs/identity-and-release.md for the versioning and release policy.

Versioning

  • Semantic Versioning: patch for fixes, minor for backward-compatible features, major for breaking changes.
  • Every release updates CHANGELOG.md and states its DSH compatibility in engines.dsh.
  • A DSH release that drops compatibility is treated as a breaking change for this plugin.

Development

npm run check          # node --check
./tests/chrome.sh      # headless Chrome with CDP on 127.0.0.1:9333
node tests/run-e2e.mjs # 88 assertions, real input events and real downloads
./tests/chrome.sh stop

The plugin is a single client entry (client.js) with no build step. Tests drive a minimal DSH-like harness over HTTP with wheel, pointer, keyboard, double-click and download behavior. See tests/README.md for the isolation rules.

License

MIT — see LICENSE. Copyright © 2026 Genzo (bingomu).


Maintained by Genzo (@bingomu · @robinham). Not affiliated with DeepSeek. “DeepSeek Harness” is an open-source project by DeepSeek; this is a third-party plugin.

Plugins associés