← Back to home@ShoWin2333

dsh-share-image

DeepSeek Harness plugin: share selected conversation messages as a PNG card.

Stars
0
Language
JavaScript
Created
Oct 22, 2026
Updated
Oct 23, 2026

Introduction

Share Conversation as Image

A DeepSeek Harness plugin that turns selected conversation messages into a PNG card you can download or copy.

  • Pick exactly which messages go into the image.
  • One click on any assistant reply starts from that reply plus the question before it.
  • Rendered locally with Canvas: the card has the session title, the date, user/assistant labels, code blocks, lists, and quotes.
  • Download as PNG or copy straight to the clipboard. Nothing leaves the browser.

Install

This package replaces dsh-plugin-share-image. The existing conversation-share-image bundle row and action/overlay IDs stay unchanged. Unload the former bundle before replacing dependency/module references; do not load both names together. The former npm package is retained for migration.

Package name: @showin2333/dsh-plugin-share-image. There is no build step; the package ships client.js as-is.

Ask your DSH agent to install the bundle from @showin2333/dsh-plugin-share-image (npm) or github:ShoWin2333/dsh-share-image; the plugin manager adds the dependency and the profile's bundle list for you.

Or install it manually into a profile (profile name substituted):

dsh plugin --profile <profile> add @showin2333/dsh-plugin-share-image          # npm
dsh plugin --profile <profile> add github:ShoWin2333/dsh-share-image  # from source

Then add the package to dsh.profile.bundles in that profile's package.json:

{
  "dsh": {
    "profile": {
      "bundles": [
        "@showin2333/dsh-plugin-share-image"
      ]
    }
  }
}

Restart the profile. The plugin needs DSH 0.1.5 or newer and the web UI (@deepseek-ai/dsh-client-ui-chat).

Usage

Every finalized assistant reply has a picture action beside Copy and Branch. Clicking it opens the message picker with that answer and the question before it already checked.

In the picker, tick the messages to include — Select all picks the whole conversation — then choose Create image. The preview offers Download PNG and Copy image, plus Back to selection to change the set.

The card contains the conversation title, the date, and the selected messages. Reasoning, tool calls, command rows, and system context are left out so the image reads like a transcript rather than a log.

Notes and limits

  • Only content already loaded in the current view can be selected. If older turns have not been paged in yet, the picker says so.
  • Consecutive assistant steps are shown as one row in the picker and merged into one answer in the image; unselected messages in between are skipped.
  • A very long conversation is truncated to fit one image; the card then ends with a note saying the most recent messages were kept.
  • The image is drawn at 2x resolution on a fixed light card, independent of the active UI theme, so it looks the same wherever it is shared.
  • The PNG is generated locally in the browser. Nothing is uploaded.

How it is put together

  • index.js — Host half, intentionally empty; the bundle only mounts.
  • client.js — the whole client plugin: Canvas renderer, picker, preview overlay, locale dictionaries, and slot registrations.
  • cordis.patch.yml — the bundle patch that inserts the plugin row.
  • locale/en.json, locale/zh.json — message catalogs for the plugin store.

The plugin registers two slots:

  • conversation.chat.assistant-actions — the picture action on each finalized assistant message.
  • shell.overlay — the message picker and image preview modal.

No options. The bundle is entirely browser-side; the Host half exists only to mount the bundle in the profile.

Development

Clone the repository and point a profile at the checkout:

dsh plugin --profile <profile> add link:/absolute/path/to/dsh-share-image

Add the bundle to dsh.profile.bundles, then edit client.js. DSH hot-reloads client plugins, so slot changes appear without restarting the profile; a node --check client.js catches syntax errors.

License

MIT