DSH Hub
dsh-widgets cover

Physicolor/dsh-widgets

dsh-widgets

UIWeb UI3 GitHub stars· updated 2026-08-23

Right-hand widget rail for DeepSeek Harness Web UI: live session stats (turns, LLM/tool time, TTFT, speed, cache, tokens) plus OpenCode Go quota via a same-origin host proxy; extensible widget registry.

Install

npx @deepseek-ai/dsh plugin --profile web add dsh-widgets

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-widgets DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-widgets.svg)](https://dshhub.dev/plugins/dsh-widgets)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from Physicolor/dsh-widgets, cleaned of badges and images.

<p align="right"><b>English</b> · <a href="README.zh-CN.md">简体中文</a></p> <h1 align="center">DeepSeek-Harness Widgets</h1>

<strong>A beautiful, extensible right-side widget system for DeepSeek Harness.</strong><br> Multi-column grids · 2×4 tiles · continuous magnification · built-in component marketplace

DeepSeek-Harness Widgets is a persistent DSH bundle plugin built on the Cordis composition model. It provides a customizable multi-column widget rail on the right side of the conversation page — real-time session insights, usage monitoring, and quick actions — with an extensible declarative registry.


Features

Multi-Column Grid

ItemDetail
Columns1 / 2 / 4 (dropdown in settings, 2 by default)
2×4 tilesTwice the width of a 2×2 plus a gap, same height; the same widget can be installed in both sizes at once
Gap-free packingWidgets pack by best-fit; gaps left by 2×4 tiles are backfilled by later 2×2s, so drag-reorder never leaves holes
MagnificationWorks in multi-column grids too; magnified rows/columns yield by planar distance with constant spacing

Continuous Magnification

macOS-Dock-style hover magnification with two modes (toggle in Settings → 组件 → 无极变化):

  • Stepless (continuous follow): truly stepless — every card's scale is driven by its own continuous Euclidean distance to the pointer, so the peak glides smoothly between cards on any pointer movement. It snaps to its steady right-anchored geometry every frame (transition: none), so a card's right edge stays flush with the rail even mid-motion — no width/right desync while the pointer moves.
  • Discrete (default): reuses the same continuous geometry but snaps the pointer onto a quantized grid (row/column centres + the midpoints between adjacent ones: 2·rows−1 Y points, 2·cols−1 X points), with a 0.2s tween gliding the peak between grid points.

In both modes the magnified deck is painted by a fixed overlay outside the rail's scroll-clip box, so leftward growth escapes clipping while the resting rail width (and the conversation column distance) never changes. Scaling preserves the square card shape and constant spacing; magnification is adjustable in settings (1.0–1.4).

Built-in Widgets

WidgetDetail
Turns · Stepssession turn & step counts
LLM / Tool timecumulative reasoning & call time
First-token latencyaverage TTFT
Ratedecode throughput (tok/s)
Cache hitsinput cache-hit ratio
Tokensinput / output token counts
Context waterlinesystem/tool/message segment bars + breakdown; 2×2 and 2×4 supported
One-click compactcontext usage % + round corner button (double-click to compact)
Tasksin-progress / done / todo counts
Usage heatmapGitHub-style calendar heatmap, self-tracked daily usage; 2×2 = ~3-month calendar, 2×4 = half-year all-points view
Last-7-days barsvertical bars for the last 7 days; bar area height matches the calendar grid
Quote of the dayrandom motivational quote; text/alignment/wrapping customizable

Component Marketplace

  • Browse all widgets (system + external), search, size-switch preview, install per widget@size;
  • The installed list supports drag-reorder, config editing, and one-click 2×2 ↔ 2×4 (auto-dedup — one instance per widget/size);
  • The widget-config tab supports per-card customization (quote of the day, heatmap window alignment, etc.).

Related plugins