Skip to content
dsh.fish
Bundle

@dsh-external/dsh-turn-collapse

Codex-style turn folding: collapse each group of reasoning + tool-call nodes (between visible outputs) into a single disclosure unit

Source
mctang985211-coder
stars
1 stars
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-turn-collapse

Codex-style **turn-level folding** for the DeepSeek Harness Web UI: collapse everything between two visible outputs — the reasoning chain and the tool calls — into a single disclosure unit with a triangle toggle.

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

## What it does

In the default DSH chat flow, each assistant turn renders its reasoning (`Think` row) and its tool calls as separate collapsible rows. `dsh-turn-collapse` groups them the Codex way:

```
[▶ 思考与工具 · 5 项]    ← 折叠条:两段实际输出之间的一切(思考 + 工具调用)
文字输出 1
[▶ 思考与工具 · 3 项]
文字输出 2
```

- **One fold bar per gap between visible outputs** (input → first output, output → output, …).
- Bars are **collapsed by default**; click to expand the whole group (native `Think` rows and `ToolRow`s remain individually usable inside).
- State is persisted per session in `localStorage`.
- Visual style reuses the DSH design tokens (`--dsw-alias-*`) and matches the native header rows.

## Install

```bash
git clone https://github.com/mctang985211-coder/dsh-turn-collapse
cd dsh-turn-collapse
dsh plugin --profile web add link:$(pwd)
# restart dsh web (hard refresh the browser)
```

## How it works

A pure client-side plugin. It watches the conversation scroll container (`[data-conversation-scroll]`) with a `MutationObserver` and reconciles fold groups from the flow items:

- Flow node kinds come from `data-chat-flow-kind` (`assistant-step`, `tool-call`, …).
- Reasoning rows are located by `data-variant="think"` inside each assistant-step.
- A node counts as a **visible output** when, after stripping think rows and tool chains, it still contains text.
- Consecutive non-output elements (thinking-only assistant steps + tool-call nodes) form one fold group; the disclosure bar is inserted before the group's first element.

React re-renders are handled by re-running the reconcile pass; group open/close state survives re-renders and page reloads via `localStorage`.

No host-side code, no servers, no API surface.

## License

MIT

Install

dsh plugin --profile web add github:mctang985211-coder/dsh-turn-collapse

Profile: web

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