dsh-composer-plus
Small composer helpers for DeepSeek Harness (web / desktop UI). Client-only plugin, no Host state, no network calls.
- Input history – in an empty composer,
↑/↓walk your previously sent messages, like a terminal. An open/menu or an edited draft keeps the normal keys. - One-click Continue – when a turn has stopped and the composer is empty, the Send button becomes ▶; one click sends
continue. Hidden on a blank chat, while running, in subagent views, or once you type or attach something. - Drag-and-drop queue reordering – queued messages get a grip (⠿) at the left. Drag a row to a new position (drop line shown,
Esccancels), or focus the grip and press↑/↓.
Tested on dsh 0.2.0-rc.2 (desktop and web).
Install
dsh plugin --profile web add github:furkancak1r/dsh-composer-plus
This adds the dependency and the profile bundle. Restart dsh. For the desktop app use --profile desktop.
How it works / limits
- dsh's
session.updateQueuehas nomoveaction, so a reorder rotates the affected rows' text witheditcalls (tail → head). If the agent claims a row mid-move, the applied edits are reverted and a notice is shown; nothing is lost or duplicated. - Rows with images/files can't be moved or crossed (queue
editis text-only). - The Send button and queue rows are not slots, so ▶ and the grips are portaled into the existing DOM. If a dsh update changes that markup, they simply stop appearing; nothing else breaks.
- A native
moveaction is requested in #773; a built-in Continue state in #9269.
Tests
npm test
Runs the real client.js against a fake React/DOM: Continue visibility and click, drag order, keyboard moves, Esc, revert on failure, image rows.
node test/browser-history.mjs '<dsh web URL with ?token=…>' checks ↑/↓ history in a real browser against a throwaway dsh web (it sends test messages, so use a separate DSH_HOME). Continue and drag-and-drop were also checked by hand-scripted browser runs against a slow fake model.
MIT License. Unofficial community plugin.
No comments yet. Be the first to write one.