dsh-quote-selection
❝ Quote selected chat text into the composer · A DeepSeek Harness Web UI plugin
Install
dsh plugin --profile web add github:lianginx/dsh-quote-selection
Features · Install · Usage · How it works
English · 简体中文
Inspired by ChatGPT's "Ask ChatGPT" selection popover: select any text in a conversation reply — one line or many — and a floating ❝ 引用 (Quote) button appears above the selection's first line. Click it and the selection lands in the composer as a Markdown blockquote, with the caret ready on the line right below. Type your follow-up question immediately.
Features
- Floating quote button — appears on selection over conversation text; hides on scroll, resize, or clicking elsewhere
- Clean Markdown output — one
>per line; multi-line selections carry proper>continuation lines and render as a standard blockquote after sending - Chained quotes — quoting again appends a new block separated by exactly one blank line, handy for asking about several passages at once
- Writes through the front door — inserts via
inputActions.setDraft, the input machine's single public write path, so undo history, reference chips, and draft stats all keep working - Follows the app language — the button label renders through DSH's locale service: 「引用」 on a Chinese UI, "Quote" on an English one
- Zero dependencies, zero build — plain JavaScript shipped as-is; installing from GitHub runs no code and needs no pnpm
allowBuildspermission
Install
# From GitHub (pinning to a tag or commit is recommended)
dsh plugin --profile web add github:lianginx/dsh-quote-selection
# Or locked:
dsh plugin --profile web add github:lianginx/dsh-quote-selection#v0.1.0
dsh --profile web # or: dsh web
Local development install (with this checkout kept next to deepseek-harness):
dsh plugin --profile web add ../dsh-quote-selection
addlinks the checkout (link:semantics), so editingclient.jstakes effect after restartingdsh web— no reinstall needed.
Requires node ^22.19 || >=24 and a profile containing the official @deepseek-ai/dsh-web-app layer (the shipped web template has it).
Usage
Select some text in any assistant reply;
Click the floating ❝ 引用 button;
The composer now holds:
> The quoted first line > > The second linewith the caret on the line below — start typing your question;
Select other text and quote again: the new block joins with exactly one blank line between quotes.
Uninstall / upgrade
dsh plugin --profile web remove dsh-quote-selection
dsh plugin --profile web update dsh-quote-selection
How it works
| Piece | Slot / mechanism |
|---|---|
| Floating button | shell.overlay (additive list slot, click-through by default); selection validated against the product anchors [data-conversation-scroll] / [data-composer-seat] |
| Draft write | An invisible bridge component on conversation.composer.dock holding inputActions.setDraft — the input machine's only public write path |
| Styling | A data-plugin-tagged stylesheet injected inside the factory closure, built on theme tokens (--dsw-alias-*) so light and dark both adapt |
| Timers | The Cordis timer service (inject: ['timer']); no native timer globals |
| Copy | A plugin-private locale namespace registered through the Cordis locale service (zh/en, English fallback) |
The browser half depends only on baseline module-table entries (react) and Cordis services (slots, timer) — no other @deepseek-ai/* value imports. The package follows the DSH publishing conventions (publish tutorial): manifest dual declaration dsh.bundle.patch + dsh.client { platform: 'web' }, and a patch that only inserts rows.
No comments yet. Be the first to write one.