DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Chat Pace — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
C

chat-pace

Chat Pace

Configurable chat auto-scroll for the DSH web UI: follow, smooth glide, paced section-by-section reading, stepping, and hold modes, with on-screen controls, hotkeys, and a settings page (conversation.input.left / conversation.composer.dock / conversation.session.header.actions / settings.section ent

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:TheGoodMorty/chat-pace#7b0db6a53db29c0facf60c74d8e509c6d3ded97d
READMECompatibilityVersions

Description

Configurable chat auto-scroll for the DSH web UI: follow, smooth glide, paced section-by-section reading, stepping, and hold modes, with on-screen controls, hotkeys, and a settings page (conversation.input.left / conversation.composer.dock / conversation.session.header.actions / settings.section entries).

Compatibility and provenance

Chat Pace is published as chat-pace and currently resolves to version 1.0.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/5/2026

Versions

1.0.0stable
9/5/2026

Related plugins

Loading related plugins…

Latest
1.0.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/19/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.Pet@linxin666/dsh-petMulti-pet companion plugin for the dsh web GUI: a registry-driven floating pet that reacts to model activity, with per-pet naming, petting/feeding interactions and an affinity score

README

chat-pace

Configurable chat auto-scroll for the DeepSeek Harness web UI — agent output never flies by faster than you can read.

Adds five scroll modes, on-screen controls, global hotkeys, a full settings page, and per-session reading-position memory. Works alongside the shipped follow logic instead of replacing it, so any mode can be left on safely.

Install

dsh plugin add TheGoodMorty/chat-pace

Then restart the DSH server (compositions are read at boot) and refresh the page. The controls appear in the composer tool row, the composer dock, the session header, and under Settings → Chat Pace.

Modes

ModeBehavior
FollowShipped default: jump to the newest output instantly.
SmoothKeep the newest output in view, gliding at a configurable px/s.
PacedSection-by-section reading: glide to each settled text section, pause for sectionHeight / screenHeight × seconds-per-screen, then continue. Tall sections spend the pause drifting through themselves. Between text sections the view keeps following tool output live, and while a text section is being written the view holds still so the text arrives unread below the fold. Sections already fully visible when they settle are skipped — they streamed in front of you.
StepNo auto-scroll; one section per press (button or hotkey), optionally animated.
HoldThe view is pinned; new output never moves it.

An "output section" is each settled assistant message (assistant-step with status settled/interrupted); tool results and command rows can be opted in.

The Paced reading pause is clamped between a configurable minimum and maximum (up to 80 s), so a single huge section never freezes the view for minutes, and tall sections drift through their text at reading speed instead of sitting still.

Controls

  • Composer tool row — pause/resume, next-section, and the mode menu (always visible)
  • Composer dock — live status line and reading-pause progress bar
  • Session header — mode menu button
  • Settings → Chat Pace — every option: mode, glide speed, seconds-per-screen reading pace, pause clamps, section kinds, behavior toggles, session open position, and a hotkey recorder with conflict detection
  • Global hotkeys (defaults): F9 pause/resume, Ctrl+ArrowDown next section, Ctrl+ArrowUp previous, Ctrl+End jump to latest

User wheel/touch input instantly takes control back from any auto-scroll mode; an optional toggle resumes automatically when you scroll back to the bottom.

Settings persist in localStorage (dsh-chat-pace-settings-v1).

Session open position

"When a session opens" (Settings → Chat Pace) decides where a conversation lands when you open or switch to it: Top, Bottom, or Where I left it. The last reading position of every session is remembered per-session in localStorage (dsh-chat-pace-scrollpos-v1) regardless of this setting — as a row anchor plus offset, so it survives content growth and window resizing — so enabling "Where I left it" later still restores sessions you left before turning it on. Restores run on timers (not requestAnimationFrame), yield instantly if you touch the view mid-restore, and hold their position against the UI's own layout restores for up to 12 seconds.

How it coexists with the shipped follow logic

The shipped ChatView snaps to the bottom on content growth while the reader is at the bottom, and disengages when a scroll event shows reader movement. chat-pace recognizes those snaps (floor-adjacent jumps arriving with scrollHeight growth and no recent user input) and restores the reader's anchor row; the restore reads as reader movement to the shipped handler, so it disengages by itself. Smooth/paced motion is written frame-by-frame as engine-authored scrollTop values — ordinary reader scrolls to the shipped code — so the two never fight over a frame. Reader intent is tracked via wheel/touch/pointer/scroll-key listeners on the scrollport.

Support

A minimal read-only diagnostic handle is exposed as window.__chatPaceDebug in the page console: the engine state, the live settings (via getSettings()), and a bounded ring of recent engine decisions (scrollLog). If something misbehaves, that log is the fastest way to pinpoint it.

License

MIT