Skip to content
dsh.fish
Bundle

dsh-artifact-preview

Codex-style artifact preview for DeepSeek Harness (DSH): produced-files row in chat with inline image thumbnails, and a resizable split-screen side preview panel rendering Markdown / source code / CSV / JSON / images / HTML, plus localhost port preview.

Source
nirvanaslash
stars
2 stars
License
MIT
Updated
Updated 10 days ago

Readme

# dsh-artifact-preview

[English](README.md) · [中文](README.zh-CN.md)

Codex-style artifact preview for **DeepSeek Harness (DSH)**.

`dsh-artifact-preview` is a client plugin (`dsh.client.platform: "web"`) that makes produced files visible and inspectable right in the chat:

- **Produced-files row in chat** — after the agent writes files, the closing message shows a "产物" row with file chips **and inline image thumbnails**; clicking any of them opens the side preview.
- **Split-screen side preview panel** — a resizable right-hand panel (real split, conversation stays visible and unobstructed) rendering:
  - **Markdown** → rich text (headings, tables, lists, code fences, links, images; relative local images resolve automatically)
  - **Source code** (`.py .js .ts .sh .css …`) → dark syntax highlighting
  - **CSV** → HTML table
  - **JSON** → collapsible tree
  - **Images** (`.png .jpg .gif .webp .svg …`) → checkerboard-backed centered view
  - **HTML / localhost ports** → iframe (with port chips for dev servers, URL bar, back/forward/reload, open-external)
- Global hooks (`window.__dshOpenFilePreview` / `__dshCanPreviewPath`) so other plugins can route "open file" intents into the preview panel.

## Install

From GitHub (the package declares `dsh.bundle` + `dsh.client`, so `dsh plugin add` installs the dependency **and** auto-registers the preview as an active client-plugin layer — no manual profile editing):

```sh
dsh plugin --profile web add github:nirvanaslash/dsh-artifact-preview
```

Restart the `dsh web` service (or DSH Desktop) and refresh the page.

Once the package is published to npm, `dsh plugin --profile web add dsh-artifact-preview` and the Marketplace search path work the same way.

## Prerequisites

- DSH Desktop (or a `dsh web` profile that has the `dsh-file-changes` companion installed) — the preview fetches file content through its `/dsh-files/static/<absolute-path>` route. On DSH Desktop this route is built in; on a bare `dsh web` install add the `dsh-file-changes` companion first.
- A model that produces files via `write`/`edit`-style tools (that is how a turn's "produced files" are tracked).

## Compatibility

- Built for DSH `0.1.0-rc.7` (bundled in DSH Desktop 2.0.1) client plugin ABI: `window.__ModuleLoader__` module format, `dsh.client` metadata, `dsh.bundle` patch registration, and the `conversation.chat.turnTail` chain slot. Chain-slot election relies on low `priority` (`-100`) to win the produced-files row over the official deliverables row; verify behavior after DSH upgrades.

## Known boundaries

- The chat row and preview panel are fully self-contained in this package.
- Two optional behaviors are **not** bundled because they require patching DSH core files (intentionally left out of a public package): multi-type preview buttons in the file view, and "open → preview" for file-name mentions inside message prose. Without them, file-view preview keeps DSH's original HTML-only behavior and prose mentions open with the system app.

## License

MIT

Install

dsh plugin --profile web add github:nirvanaslash/dsh-artifact-preview

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source