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:

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
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-conversation-process-collapse from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.