dsh-queue-reorder
Manifest validReorder queued messages inside the DeepSeek Harness Web GUI queue dock: grip-and-drag plus move buttons, without taking over the official dock.
dsh-queue-reorder
Reorder the messages you queued while a DSH agent was busy — inside the official queue dock, not in a panel beside it.

What you get
- A grip handle on every queued row: drag a message where you want it.
- ↑ / ↓ per row, wearing the dock's own action-button class, for precision instead of a drag. The last row's ↓ is disabled, because there is nothing after it.
- The dock is decorated, never replaced. Previews, inline editing, steering, removal, attachments and collapse stay exactly as the conversation plugin ships them; uninstall and the dock is untouched.
Install
dsh plugin --profile web add -w dsh-queue-reorder
# restart dsh web, then reload the page
Requires DSH >=0.1.2-alpha.1 <0.2.0-0 (earlier client-plugin contracts have no
conversation.input.dock slot). From a checkout instead:
dsh plugin --profile web add -w link:/absolute/path/to/dsh-queue-reorder
Uninstall:
dsh plugin --profile web remove dsh-queue-reorder
Design
Two small halves, no build step, no runtime dependencies:
- Host (
lib/index.js) registers one same-origin route,POST /queue-reorder, and performs a single concurrency-checkedagent/inbox.splice('next-turn', …)over the smallest span containing both ends of the move. - Browser (
lib/client.js) is a hand-authored module-loader bundle. A hiddenconversation.input.dockentry (which rendersnull) reads the session snapshot for the queued ids and their order — the dock's DOM carries no ids — and aMutationObserverdecorates the official rows. It re-reads each row's position at click and drag time, because the dock reorders those very elements in place.
What it refuses, and why
| Refusal | Reason |
|---|---|
QUEUE_CHANGED | Your view of the queue no longer matches the live queue; retry rather than scramble it. |
NON_USER_MESSAGE | The move would discard and reinsert a row whose source the harness still tracks (a goal round prompt, for example), cancelling that work. |
SUBAGENT_UNSUPPORTED | A subagent session's queue is owned by its parent session. |
| Steering rows | Only next-turn (placement: "queued") rows move; next-step stays put. |
A refused move changes nothing: every guard runs before the splice.
Caveats
- The decorator attaches to the official dock's markup (
[data-queue-dock], its row list, the trailing action container). Those are implementation details of@deepseek-ai/dsh-client-ui-conversation, not a published contract: if the dock is restructured, the controls may stop appearing. It fails soft — the dock keeps working, you just lose the grip until this plugin catches up. - Verified on DSH 0.1.5-rc.1, in a browser and through
selftest.mjs. - The route answers on the loopback interface without the GUI's session cookie, like other plugin HTTP routes. A cross-site browser request is still blocked: the JSON content type forces a CORS preflight that the route answers with 405.
Tests
node selftest.mjs
No network, no browser, no build. 32 assertions covering the move transaction, every refusal, the request decoder, the HTTP surface, and the dock decoration (injection idempotence, live index reads, drop marking, notice reporting).
License
MIT
Comments
Loading…
Similar plugins
by loklamlok
DSH web plugin: reorder queued messages (up / down / top / bottom) before the agent processes them.
★ 0
MIT
JavaScript
Aug 17, 2026
dsh plugin --profile web add dsh-queue-directorby keyiadiannao
Queue Consolidation for DeepSeek Harness: merge queued follow-up messages into one consolidated formal prompt for the next turn instead of piecemeal one-message-per-turn rework.
★ 0
MIT
TypeScript
Sep 30, 2026
dsh plugin --profile web add dsh-queue-mergeby adithyanraj03
Schedule a message into a dsh chat for later: a Schedule button in the message box with a date and time picker, a sidebar panel of pending messages across chats, delivery as a normal user message even
★ 1
MIT
JavaScript
Sep 24, 2026
dsh plugin --profile web add dsh-schedule-laterby wanjiaju3108
Ops request channel for a team over Feishu DMs — a colleague's message waits in a serial queue behind an approval card that the paired admin must accept, then runs in one shared DSH session with a per
★ 0
MIT
JavaScript
Sep 28, 2026
dsh plugin --profile web add dsh-feishu-assistantby drscrewdriver
Busy-time input queue for the DeepSeek Harness web GUI: three-tier (now/next/later) planning, queue editing with drag-to-reorder and concurrency protection, interject (steer) and interrupt, batch clea
★ 4
↓ 1.3k/wk
MIT
TypeScript
Oct 7, 2026
dsh plugin --profile web add dsh-input-trafficby WuJiaoJue
In-session scheduled messages on top of the dsh-schedule engine: an input-bar timer panel with smart time slots, a pending-send dock with per-item cancel and inline edit, a /later command that sends w
★ 1
↓ 44/wk
MIT
JavaScript
Sep 23, 2026
dsh plugin --profile web add dsh-later