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 | 中文
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
Thinkrows andToolRows 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
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
No comments yet. Be the first to write one.