Skip to content
dsh.fish
Bundle

dsh-shots

Shots tab for DeepSeek Harness: a video-player view (live + YouTube-style scrubber) over a browser daemon's screenshot feed in <workspace>/shots/

Source
dat-lequoc
License
MIT
Updated
Updated 19 days ago

Readme

# dsh-shots — a Shots Tab for DeepSeek Harness

A **Shots** view tab for the dsh Web GUI: a video-player over a browser
daemon's screenshot feed. Any session whose workspace contains `shots/`
(`manifest.jsonl` + `NNNNNN_<action>.png`, appended by a browsing daemon) gets
a player that shows the newest frame **live** and lets you scrub history with a
YouTube-style seek bar, ‹ › stepping, and arrow keys / Home / End.

- **Live by default** — every new screenshot replaces the frame; drag the
  slider to pause, drag to the end or press **GO LIVE** to resume.
- **Smooth** — frames swap only after the next PNG has decoded (no blanking),
  neighbours are pre-warmed, and PNGs are served `immutable` (write-once
  files), so revisiting frames costs zero network.
- **Standalone** — no supervisor required; the tab lights up for any workspace
  with a shots directory.

## Install

```sh
dsh plugin --profile web add file:/path/to/dsh-shots
# restart dsh once (bundle layers compose at boot)
dsh web
```

## What it ships

| Piece | What |
|---|---|
| `lib/index.js` | Host half: `GET /shots/manifest?ws=…[&since=n]` (incremental JSON; torn trailing manifest lines skipped) and `GET /shots/png?ws=…&file=…` (traversal-guarded, immutable caching) |
| `lib/client.js` | Browser half: the `Shots` entry in the native `conversation.view` ring (order 20 — between Trajectory and the supervisor Feed) |
| `cordis.patch.yml` | One insert row mounting the host half |

## Feed contract

One JSONL line per shot in `<workspace>/shots/manifest.jsonl`:

```json
{"n":42,"ts":"2026-08-22T08:44:17Z","action":"click_1062_812","url":"https://x.com/","title":"X"}
```

The PNG for line `n` is `<workspace>/shots/NNNNNN_<action>.png` (zero-padded
to six digits). Lines are append-only; a torn trailing line is skipped until
its closing newline lands.

Install

dsh plugin --profile web add github:dat-lequoc/dsh-shots

Profile: web

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