๐Ÿง  dsh-thinkbar

September 4, 2026 ยท View on GitHub

๐Ÿง  dsh-thinkbar

Dynamic reasoning-wait visual indicator for DeepSeek Harness Web Composer

npm version License: MIT DSH Compatibility TypeScript Node.js

English | ็ฎ€ไฝ“ไธญๆ–‡


dsh-thinkbar Demo

dsh-thinkbar is a lightweight, non-intrusive Web UI plugin for DeepSeek Harness. It fills the existing model selector with a dynamic thermal gradient during each assistant Step's model-thinking window, and overlays a separate Tool activity treatment while that Step's tools execute.

โœจ Key Features

  • ๐ŸŒก๏ธ Thermal Iron Scale Palette: Smooth transition from initial Harness info blue (0s) through red (~6.7s), orange (~13.3s), and glowing gold (20s) with an ease-out progression curve.
  • โšก Zero-Intrusion Portal Adapter: Injects through the public conversation.input.right Slot lifecycle without hacking DSH internals, generated CSS classes, or model label strings.
  • ๐ŸŽฏ Model-Compatible Per-Step State Machine: Starts with each model request, follows explicit reasoning chunks when available, and switches exclusively to Tool activity when a call begins.
  • ๐Ÿ› ๏ธ Visible Tool Activity: Uses a distinct violet/cyan sweep and temporarily overlays the names of every currently executing Tool.
  • ๐Ÿ’จ Fluid Drain Animation: Drains smoothly in 240ms when reasoning yields to text, tool calls, or message completion.
  • โ™ฟ Accessibility Ready: Fully respects prefers-reduced-motion settings.
  • ๐Ÿ”’ 100% Client-Side & Private: Zero backend modifications, zero telemetry, zero external network traffic.

๐Ÿ“‹ Requirements

DependencyRequired VersionNote
DeepSeek Harness0.1.2-alpha.4Supports the current lazy-target Conversation lifecycle
ProfileStandard DSH web ProfileOfficial model-selection plugin enabled
Node.js^22.19.0 || >=24.0.0Recommended LTS
Package Managerpnpm (>= 9.0)Standard DSH workflow

Important

This release supports exactly 0.1.2-alpha.4. Earlier builds used different Conversation target lifecycles and are not supported.


๐Ÿš€ Quick Start

Installation

Install via npm registry:

pnpm dsh plugin --profile web add dsh-thinkbar

Or test a local release tarball:

pnpm dsh plugin --profile web add ./dsh-thinkbar-<version>.tgz

Restart your DSH Web Profile after installation:

pnpm dsh web

Verify that dsh-thinkbar is loaded:

pnpm dsh --profile web --dump-config

(The output must contain exactly one dsh-thinkbar row)

Upgrade & Uninstall

# Upgrade to a specific version
pnpm dsh plugin --profile web add dsh-thinkbar@<version>

# Uninstall plugin
pnpm dsh plugin --profile web remove dsh-thinkbar

๐Ÿ” How It Works

[ step/start ] โ”€โ”€> Start Thinking Fill (8% -> 100%, 0s -> 20s)
       โ”‚
[ assistant/chunk: reasoning ] โ”€โ”€> Continue Thinking Fill
       โ”‚                              โ”‚
       โ”‚                              โ””โ”€โ”€> Palette: Blue -> Red -> Orange -> Yellow
       โ”‚
[ text / step/end ] โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€> Fast Drain (240ms) -> Return to Idle

[ assistant tool-call / tool/call ] โ”€โ”€> Stop Thinking Clock + Fast Drain (240ms)
                   โ”‚
                   โ””โ”€โ”€> After 200ms, show violet/cyan Tool sweep + name overlay
                                      โ”‚
[ final matching tool/result ] โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€> Return to Idle until next step/start
  1. State Projection: Derives mutually exclusive Thinking and Tool phases for each { turn, step } from the public ctx.uiConversation.events and ctx.uiConversation.views registries. Parallel Tools remain paired independently by call ID, while the Thinking clock stays stopped for the rest of that Step.
  2. Anchor & Portal: Anchors in conversation.input.right, identifies the trailing button[aria-haspopup="menu"] within [data-composer-card], and portals an isolated plugin layer.
  3. Safety Fallback: If the model trigger cannot be identified uniquely, the DOM remains untouched with a single console notice:
    [dsh-thinkbar] Could not uniquely identify the DeepSeek Harness model selector; the indicator is disabled.
    

๐Ÿ› ๏ธ Troubleshooting

IssueRoot CauseSolution
No visual changes after installProfile not restarted or bundle unlinkedRestart Web Profile and verify with pnpm dsh --profile web --dump-config.
Client bundle load failureDSH version mismatchEnsure DSH is 0.1.2-alpha.4. Inspect browser console and host stderr.
Compatibility warning in consoleMissing or conflicting model triggerEnsure official model-selection plugin is enabled without conflicting custom buttons.
Thinking fill does not light upNo active model Step reached the client projectionInspect the browser console and verify the Conversation target subscription. Tool execution uses its separate activity treatment.
Changes persist after removalCached Profile processRestart the Profile after pnpm dsh plugin --profile web remove dsh-thinkbar.

๐Ÿง‘โ€๐Ÿ’ป Development

# Install dependencies
pnpm install --frozen-lockfile

# Run typecheck, unit tests, build validation & publint
pnpm verify

# Pack local tarball
pnpm pack

Release Pipeline

# One-command automated publish suite
npm run publish

# Dry-run validation without publishing
npm run publish -- --dry-run

The browser artifact is a DSH lazy-CJS factory. Always preserve its window.__ModuleLoader__.load(...) envelope.

Contributor References


๐Ÿ“„ License and Attribution

MIT License

The original reasoning indicator design was extracted from DeepSeek Harness commit 6d7ae5aa57b4dedfc03b09de7cafb65c01338800. DeepSeek Harness is Copyright (c) 2026 DeepSeek and distributed under the MIT License. Independent packaging and subsequent modifications are maintained by the dsh-thinkbar contributors.