Skip to content
dsh.fish
Bundle

@dsh-external/dsh-conversation-minimap

A Codex-style conversation minimap for DeepSeek Harness.

Source
bilbillm
License
MIT
Updated
Updated 20 days ago

Readme

[中文说明](./README.zh-CN.md)

# dsh-conversation-minimap

`@dsh-external/dsh-conversation-minimap` adds a Codex-style conversation
minimap to DeepSeek Harness. One marker represents one engine-owned turn. The
current reading turn is emphasized, hover or keyboard focus opens a compact
preview, and activating a marker scrolls directly to that turn.

The preview is derived from Harness's public conversation snapshot and can
show:

- the user request summary;
- the latest assistant result summary;
- running, completed, failed, or stopped status;
- files produced by the optional `ui-deliverables` feature.

The plugin is additive. It registers a layout-neutral entry in
`conversation.session.header.utilities`, locates that session's semantic
`[data-conversation-scroll]`, and renders the rail through its own portal. It
does not replace the conversation body, change the conversation width, scrape
rendered prose, or depend on CSS-module hashes.

## Install

Build the source checkout and add it to an isolated Harness Web profile:

```powershell
pnpm install
pnpm run build

cd C:\Users\lumoren\Documents\GitHub\deepseek-harness
pnpm dsh plugin --profile web add C:\Users\lumoren\Documents\GitHub\dsh-conversation-minimap
pnpm dsh web
```

For source rebuilds without restarting the host, run `pnpm run dev:web` from
the Harness checkout in a second terminal.

## Behavior

- Wide conversation columns receive a left-side rail with exactly one visual
  mark and one accessible button per turn. Short histories stay in a compact,
  fixed-spacing cluster around the rail center; long histories progressively
  expand through the available height. Only the active reading turn receives
  the long, high-contrast mark.
- Narrow columns receive a compact header utility that opens the same rail.
- Hover and focus show a wide, theme-token glass preview with crisp request and
  result text, status, and up to four produced paths. The preview keeps its
  pointer handoff when the cursor moves from a marker into the card.
- Click, Enter, or Space scrolls to the first mounted row for the turn.
- Earlier history is loaded only on request; the current reading anchor is
  preserved while the older page is inserted.
- Conversation opening, older-page loading, and a failed page request are
  surfaced in the rail without replacing the host conversation status.
- Every marker is a real button with an accessible label and `aria-current` on
  the active reading turn.
- `prefers-reduced-motion` is observed live. Smooth scrolling and transient
  movement are removed when reduction is requested.

An application or theme can disable the minimap for a subtree:

```html
<section data-dsh-conversation-minimap="off">...</section>
```

## Compatibility

The package targets the semantic conversation contracts in Harness
`0.1.0-rc.5` and the published `0.1.0-rc.6` client line. It is tested with the
default `light` and `dark` themes plus `angelina-light` and `angelina-dark`.
Theme colors come from `--dsw-alias-*` tokens with system-color fallbacks.

The plugin is independent of `dsh-motion`. Its own portal opts out with
`data-dsh-motion="off"` to prevent duplicate motion; the surrounding Harness
surface remains under normal host and theme ownership.

## Development

```powershell
pnpm run check
pnpm run pack:check
```

Optional Playwright acceptance tests use an already running isolated profile:

```powershell
$env:DSH_MINIMAP_E2E_URL = 'http://127.0.0.1:3000/'
pnpm run test:e2e
```

The runtime has no polling loop, interval, or permanent animation frame. Its
MutationObserver is scoped to the active conversation scrollport; all
observers, listeners, portal nodes, styles, timers, and requested frames are
released with the session entry.

## Distribution faces

- `.`: no-op Node half mounted by the Harness Loader.
- `./client`: browser Cordis plugin registered through `__ModuleLoader__`.
- `./cordis.patch.yml`: profile patch that adds the Loader row.

MIT licensed.

Install

dsh plugin --profile web add github:bilbillm/dsh-conversation-minimap

Profile: web

  • 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.
Source