Skip to content
dsh.fish
Bundle

dsh-conversation-process-collapse

Collapses each settled turn's process rows into one disclosure in the DeepSeek Harness Web conversation

Source
shimingming520
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-conversation-process-collapse

English | [中文](README.zh.md)

Settled-turn process folding for the Web conversation: once a turn closes, every process row — intermediate narration, Think rows, tool cards, retry status, workflow runs — collapses at the DOM layer into one expandable disclosure (`Processed in {duration} · {n} steps`, duration omitted when a boundary is out of the window) at the turn's first process position, while the closing content message and the turn-tail stay visible. Reasoning inside the final answer is also hidden with the group; its visible text remains. A turn folds only when it is closed AND has a content-bearing assistant step — tool-only turns and live streaming keep the plain flow, so an answer or the running progress is never hidden.

The DOM version currently focuses on process-row folding while keeping the
final answer visible. The earlier React-slot feature that promotes generated
images beside the final answer has not yet been ported to the DOM
implementation and can be added later as an enhancement.

The implementation is a pure frontend DOM plugin: it watches `[data-chat-flow]`, recognizes closed turns, and collapses process rows into an expandable disclosure while keeping the final answer visible. It does not require the unmerged `conversation.chat.processGroup` extension point, a profile override, or a fork of the official conversation package.

## Install / Update as a standalone plugin

The package ships an installable bundle declaration (`dsh.bundle.patch` +
[`cordis.patch.yml`](cordis.patch.yml)), so it installs from any
DeepSeek Harness installation exactly like any profile plugin:

```sh
dsh plugin --profile web add dsh-conversation-process-collapse
# update
dsh plugin --profile web update 'dsh-conversation-process-collapse@latest'
```

The npm package name is `dsh-conversation-process-collapse`; it is both the
profile bundle row and the browser client package.

The command is a pnpm forwarder over the profile directory; it then reconciles
the profile's bundle layer stack, so the plugin joins `dsh web` without a
build step.

**No override is needed.** After installing, restart `dsh web` and hard-refresh
the browser (`Cmd / Ctrl + Shift + R`) to load the new client bundle.

## After install

After adding the package and restarting `dsh web`, settled turns in the Web conversation collapse their process rows into one disclosure header while the final answer stays visible:

![Turn process collapse after install](https://raw.githubusercontent.com/shimingming520/dsh-conversation-process-collapse/main/docs/images/turn-process-collapse.png)

If the plugin manager marks an unrelated npm package as “installed, not active” (`inert`), that is normal: only packages declaring `dsh.bundle` metadata enter the profile bundle layer and become profile plugins. This package declares `dsh.bundle`; after installing it, restart the DSH process and hard-refresh the browser (`Cmd / Ctrl + Shift + R`) so the new bundle layer is loaded.

## Model Experience

None, as this package folds already-rendered conversation rows in the browser without altering model requests, Tool execution, or session events.

#### KV Cache effect

None; this package neither assembles nor sends a provider request.

## Known Limitations and Deferred Work

- **Expansion state is not persisted** — the open/closed state lives in memory, so switching conversation tabs or reloading the page returns each group to its collapsed default.
- **The DOM pass runs on the rendered flow only** — the plugin can only see messages already mounted in the page; unloaded history boundaries are not folded until paging brings them in.

Install

dsh plugin --profile web add github:shimingming520/dsh-conversation-process-collapse

Profile: web

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