UI Enhancements

dsh-smooth-stream

SpookySandwich/dsh-smooth-stream · ★ 11

SpookySandwich

Better streaming text animation for DeepSeek Harness.

License
MIT
Added
2026-08-16
Maintenance
active
Install kind
github
npm
dsh-plugin-smooth-stream
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:SpookySandwich/dsh-smooth-stream

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Install
  2. What it changes
  3. Settings
  4. Reveal styles
  5. Compatibility
  6. License

简体中文 | English

npm CI license dsh deepseek1024 stars

Replaces token-by-token streaming twitch with paragraph-batched, fading reveals. Scroll follows smoothly while streaming, and reasoning blocks show a live one-line summary.

Left: native DSH rendering · Right: Smooth Stream — same question, started together:

comparison demo

Install

dsh plugin --profile web add dsh-plugin-smooth-stream

Takes effect in any open session. Settings live under Settings → Smooth Stream.

What it changes

  • Paragraph-batched reveal — body text no longer jitters in token by token; it accumulates and enters a paragraph at a time with a fade. Batch boundaries avoid unclosed code fences and tables, so half-rendered Markdown never appears.
  • Smooth scroll-follow — while streaming, the conversation glides toward the bottom covering a fraction of the remaining distance each frame: large appends catch up without teleporting. Scrolling up hands control back to you; returning to the bottom re-engages the follow.
  • Reasoning summary — while thinking runs, the collapsed row live-scrolls its latest line, with soft fades instead of hard clipping at both edges. When a turn completes, a closing underline retracts — finished, not merely stopped.
  • Markdown & math — body text renders through the host's own renderer: code highlighting, copy buttons, tables and KaTeX math look exactly like native output.

Settings

The Smooth Stream section in the settings panel; changes apply live and persist:

Setting Default Notes
Enable Smooth Stream On Off hands rendering back to the built-in view instantly — handy for comparing
Reveal animation Fade Fade / Rise / Dissolve / Wipe / Focus / Glow / Iris / Soak
Animation duration 520 ms Entrance duration (120–1200 ms)
Batch size 500 chars Text accumulated before a batch reveals; smaller feels more live, larger reads calmer
Smooth scroll-follow On The streaming-time scroll glide

Includes a live preview and one-click reset. The settings UI follows DSH's display language.

Reveal styles

Eight entrances, each tuned to its own rhythm; all recorded over the same reply for a direct comparison.

Fade Rise
fade rise
Dissolve Wipe
dissolve wipe
Focus Glow
focus glow
Iris Soak
iris soak

Compatibility

Version 1.5.0: Support official dsh 0.2.1-rc.5 (while retaining 0.2.0-rc.2 and 0.2.1-rc.2 compatibility). Adapt reasoning display preparation for official rc.5 reasoning signatures: strip leading signature envelopes and trailing LF/CRLF from streaming summaries and history views, hide partial envelopes during streaming, and omit signature-only rows from display while leaving raw host block data intact. Fix CSS specificity overrides for prefers-reduced-motion so animation suppression and instant scroll behavior reliably apply across all reveal styles, wipe overlays, and container scroll.

Version 1.4.0: Support official dsh 0.2.1-rc.2 (while retaining 0.2.0-rc.2 compatibility). Filter assistant blocks, interruption markers, and plain-text fallback by host groupPart (reasoning / response) seats so thinking and answer blocks do not duplicate across split seats; assistant images on 0.2.1-rc.2 fall back to plain <img> rendering without the native gallery/lightbox.

Version 1.3.0: Load on official dsh 0.2.0-rc.2. Rendering still registers on conversation.chat.node and settings.section.

Version 1.2.0: Declare the current UI renderer service provider and the verified DSH release range. Existing rendering behavior passes the current host checks.

The declared host range is >=0.2.0-rc.2 <0.3.0-0 || 0.2.1-rc.2 || 0.2.1-rc.5; official dsh 0.2.0-rc.2, 0.2.1-rc.2, and 0.2.1-rc.5 satisfy it. Keep the previous plugin release on older DSH. Validation record.

Download the archive from the GitHub Release, then run dsh plugin --profile desktop add ./dsh-plugin-smooth-stream-1.5.0.tgz.

This release targets DSH 0.2.1-rc.5. Run npm ci, npm test, and npm run check:package to verify the build and package. Restart DSH after updating.

  • Uses the host client services, Markdown and image APIs; automated tests cover loading and component rendering.
  • This plugin owns the conversation view's assistant rendering (the assistant-step cell of conversation.chat.node) and is mutually exclusive with other plugins that take over the same rendering — with both installed, only one wins.
  • Respects prefers-reduced-motion: with reduced motion enabled, all animation and smooth scrolling switch off.
  • A rendering failure degrades to plain text for that message instead of breaking the conversation.

License

MIT