AI Agent Hub
Back to plugins
🖥️

dsh-think-ux

Client Updated 2026.09.15

Run the following command in DeepSeek Harness:

dsh plugin install el16z3c/dsh-think-ux

Paste the following prompt into your AI chat to install this plugin:

Run dsh plugin install el16z3c/dsh-think-ux in the DeepSeek Harness terminal to install this plugin (source: https://github.com/el16z3c/dsh-think-ux), then refresh the Web session to activate it.

About this plugin

Long sessions in the dsh Web UI tend to have two rough edges: a think row collapses by roughly 490 px in a single frame once the model settles, yanking a bottom-pinned reader upward, and streamed output arrives in visible token-chunk jumps rather than a smooth scroll. dsh-think-ux eliminates both, turning a staccato reading experience into a continuous glide.

It does three things. Think rows auto-expand into a 24-line capped preview while the model reasons; a requestAnimationFrame chaser with a 70 ms exponential time constant keeps the preview pinned to the latest text, pauses the moment the reader scrolls up, and resumes within 25 px of the bottom. When reasoning settles, a 180 ms height animation plays before the row unmounts, so the browser clamps frame by frame instead of dropping the whole box in one visible jump. A scrollTop defineProperty trap then distinguishes genuine reader input from the bundle's re-pin assignment at the structural level: real upward movement arms a 700 ms intent window during which the bundle's toBottom write is intercepted and the reader's position is restored in the same tick, eliminating the snap. The main conversation view runs on the same episode chaser—small gaps glide at a constant ~960 px/s, large gaps swoosh exponentially—covering streamed output, turn-rail navigation, and the back-to-bottom button, with browser scroll anchoring disabled while follow mode is active.

The plugin is a pure DOM client: no bundle modifications, no services, no network calls, one settle-animation timer. All tunable behavior lives in seven constants at the top of lib/client.js; flipping MAIN_SMOOTH_FOLLOW to false restores the stock snap behavior. It is verified against dsh 0.1.5-rc.2 and degrades quietly if upstream selectors shift. It is written for developers who run long dsh Web UI sessions, care about scroll continuity, and dislike being jerked around by framework re-pins.

Use Cases

  • Think rows auto-expand into a 24-line preview with fluid follow during reasoning, then collapse with a 180 ms animation instead of a single-frame jump
  • Main view glides up with streamed output while a scrollTop write trap prevents the bundle from yanking a scrolling reader back down
  • Long-session opens swoosh to the bottom and turn-rail navigation lands with a smooth chase rather than a snap

Best For

  • Developers running multi-turn long conversations in dsh Web UI who value reading continuity
  • Project maintainers who want to eliminate visual jank from framework re-pins without touching the bundle
  • Frontend engineers who care about scroll animation frame-rate and interaction polish