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.

Review Float — DSH Plugin for DeepSeek Harness
← Plugins

@calltelemetry/dsh-review-float

Review Float

Floating PR/review status bar for DeepSeek Harness: a shell.overlay bar with a docked detail pane and an exploded review board.

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

npx -y @deepseek-ai/dsh plugin --profile web add @calltelemetry/dsh-review-float@0.16.0
READMECompatibilityVersions

Compatibility and provenance

Review Float is published as @calltelemetry/dsh-review-float and currently resolves to version 0.16.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
10/16/2026

Versions

0.16.0stable
9/28/2026
0.15.0stable
9/28/2026
0.14.0stable
9/28/2026
Show 20 more versionsCollapse versions
0.13.0stable
9/28/2026
0.12.0stable
9/28/2026
0.11.0stable
9/28/2026
0.10.0stable
9/28/2026
0.9.0stable
9/28/2026
0.8.0stable
9/28/2026
0.7.0stable
9/28/2026
0.5.0stable
9/28/2026
0.4.0stable
9/28/2026
0.3.2stable
9/25/2026
0.3.1stable
9/25/2026
0.3.0stable
9/25/2026
0.2.1stable
9/25/2026
0.2.0stable
9/24/2026
0.1.5stable
9/24/2026
0.1.4stable
9/24/2026
0.1.3stable
9/23/2026
0.1.2stable
9/23/2026
0.1.1stable
9/23/2026
0.1.0stable
9/23/2026

Related plugins

Loading related plugins…

Latest
0.16.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
344.9 kB
Files
15
Surface
web
License
MIT
Source
npm
Weekly downloads
55
View source ↗Project homepage ↗
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
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in developer-tools.

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)Sdk App@deepseek-ai/dsh-sdk-appThe dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-baseExperimental Inspector@deepseek-ai/dsh-experimental-inspectorExperimental cross-realm CDP hub for Host debugging and Client Runtime inspectionExperimental Inspector Profile@deepseek-ai/dsh-experimental-inspector-profileOptional Web bundle for raw Session logs and Chat node inspection

README

dsh-review-float

A frame-wide floating PR / review status bar for DeepSeek Harness (dsh).

dsh plugin --profile ctweb add @calltelemetry/dsh-review-float

Published to npm under the @calltelemetry scope, so it installs by version. No git credential is required to consume it.

Listing the package in dsh.profile.bundles is the entire mount, because it ships its own cordis.patch.yml (dsh.bundle.patch):

"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "@calltelemetry/dsh-review-float"]

No hand-edited profile patch is ever required — a - id: review-float row would duplicate the loader entry and crash boot. In the Call Telemetry workspace this mount is owned by DSH_THIRD_PARTY_PLUGIN_PINS in scripts/ct-meta/sync.py, which renders the pin and installs it in one change (ADR 0656). Restart the profile afterwards.

What it does

It registers one additive entry into the shell.overlay list slot — the seat the layout package documents as "a badge, a toast stack or a status pill … the layer itself is click-through — entries opt back into pointer events."

StateSurface
BarAlways-on pill above the composer: N running · M need you, then per-PR chips
Docked paneClick a chip → 460px panel with exact head SHA, verdict, CI, progress, findings
Exploded boardClick Board → four columns: Running / Ready to merge / Needs you / Queued

The live bar over a real session

Live, not mocked: 14 real open PRs with the Review Yeti verdict read from each head's check run. docs/shots/ also has the docked pane and the exploded board; docs/prototype.html is the standalone design prototype.

Development

npm install          # TypeScript only; no bundler required
npm run build        # tsc -> src/ transpile -> module-loader bundle in lib/
npm run check        # exits 1 if the committed lib/ has drifted from src/

src/ is the source of truth. lib/ is committed on purpose: a link: or git install consumes the built bundle directly, and dsh-client-modules requires lib/client.js to exist before launch. npm run check is what keeps that trustworthy.

Layout

src/client.ts          browser half — the bar, pane, and board
src/index.ts           host half — empty apply, so the package owns a Loader row
src/types/platform.d.ts  ambient `react` (a PLATFORM_MODULES baseline module)
src/types/harness.d.ts   ambient client context (slots + effect)
scripts/build.mjs      real build: tsc transpile + module-loader envelope
cordis.patch.yml       dsh.bundle.patch — the self-mounting loader row

No bundler. tsc transpiles src/ and scripts/build.mjs wraps the output in the window.__ModuleLoader__.load({id, factory}) envelope that every shipped @deepseek-ai/dsh-client-ui-* package uses (they use tsdown for the same job). The plugin requires only react, which the shell provides from its frozen PLATFORM_MODULES baseline — so there is no second React copy and no dsh.client.external entry.

Design constraints honoured

  • Additive, not a takeover. shell.overlay is a list slot; the entry carries a plugin-owned id (review-float), never a core row id.
  • Click-through. The root stays pointer-events: none; only the bar, the pane and the board opt back in, so the app underneath is never blocked.
  • Theme-native. Every colour is a --dsw-alias-* token with a literal fallback, so it follows light/dark automatically.
  • Read-only viewer. It renders review status and never dispatches review work, opens a second reviewer, or posts to GitHub. The detail pane carries a visible policy note saying so, and it deliberately does not compete with the official Review Yeti action.

Data sources

The bar is fed by the host half, which serves one read-only snapshot on the shared /api channel (/api/review-float.snapshot). The browser half polls it every 20s through connection.rpc. The browser never holds a credential and never talks to GitHub directly.

Two independent sources, deliberately:

SourceSuppliesRequired?
GitHub GraphQLPR identity, exact head, CI ratio, and the Review Yeti verdictyes
Review Yeti MCPThe live phase of in-flight reviews, and per-finding severity (P0/P1/P2) for the detail paneoptional

Where live progress actually comes from

get_review_status reads review_runs.stage from Postgres and returns a live phase — queued, evaluating_personas, arbitration, completed. In-flight rows are enriched from it, so the bar shows real state while a review is running (observed live: #5149queued, #3414queued).

This is deliberately not an event stream. The bot's LiveStreamBus is a process-local singleton fed only by the worker execution path, and review workers run as separate pods, so no SSE route can deliver their progress across a process boundary. The phase above is durable Postgres state, which is why it works without any event plane.

The query is bounded: running rows only (typically 1–6, not the full list), fanned out in parallel. If the MCP is unreachable the row keeps the phase parsed from the check-run summary rather than losing the field.

The Review Yeti verdict is a GitHub check run named Review Yeti on the exact head, so verdict and CI arrive in one call — no extra dependency. That is why the surface still renders fully when the MCP token is absent: rows simply carry no finding severities, and the snapshot says so.

EnvEffect
CT_AGENT_GH_TOKEN / GH_TOKEN / GITHUB_TOKENGitHub credential, most explicit first
(none set)falls back to gh auth token — the operator's existing login
REVIEW_YETI_MCP_AUTH_TOKENoverrides the Doppler-resolved finding-severity token; never required

An absent GitHub credential renders review feed unavailable with the reason, never fabricated rows. An org with zero open PRs renders no open PRs — a distinct state from an unreachable feed.

No token setup required

REVIEW_YETI_MCP_AUTH_TOKEN is a first-class entry in ct-meta's MCP catalog (ct-meta/mcp-servers.json), whose canonical source is the Doppler project review-yeti / config prd. Agents get it through that catalog; this plugin resolves it directly from the same source, so nothing has to be exported.

Order: an explicit REVIEW_YETI_MCP_AUTH_TOKEN in the environment (a caller override), then doppler secrets get … --project review-yeti --config prd. Memoised on success only, so a doppler login performed after the page opened starts working without a restart.

If neither resolves, the bar still renders every verdict and CI ratio (those come from the GitHub check run); only finding severities go away, and the detail pane names both sources it tried rather than showing an empty list.

Verified

Built and checked against dsh@0.1.5-rc.2 / cordis@4.0.2 / Node 24.21.0 / tsc 5.

  • Live phase verified end-to-end: with no credential in the environment, the bar rendered #5149queued, #706queued, #3416queued, #3414queued and #786queued while those reviews were running, matching get_review_status.

  • Published artifact verified: 0.1.2 was extracted from the registry and a clean unauthenticated consumer install was confirmed to carry the live-phase code — the check is a symbol grep, not a version string.

  • dsh-plugin-check (strict): 19/20 pass, 0 checks failed. The single non-pass is not-in-hub, an external catalog-intake check that a private repository cannot satisfy.

  • Live data verified against GitHub truth: cisco-cdr#5144 reads BLOCKED where its Review Yeti check is fail; ct-meta#3384 reads SHIP where it is pass. 14 open PRs across the org render with real head SHAs and CI ratios.

  • Booted a full ctweb clone: bundle served HTTP 200, plugin self-mounted from dsh.profile.bundles with no manual patch row.

  • Rendered in a real browser (headless Chrome over CDP, DOM assertions not screenshots): bar mounted, 14 chips, lead 3 running · 2 need you; clicking a chip opened the pane with the real head SHA (cisco-cdr#5144 → b9e6cc6); Board opened all four columns. Zero console errors.

  • Load: snapshot steady at ~2.5-3s over 5 sequential calls; 5 concurrent calls did not serialize destructively (3.4-3.9s each). A 30-poll soak run back-to-back returned 200 on every call with zero RSS growth, and GitHub's GraphQL limit was still 5000/5000 afterwards — one call per poll is ~180/hour against a 5000/hour ceiling, so a single tab has ~28x headroom.

  • Degradation is honest: with the MCP token absent, sources.yeti reads false and the findings endpoint returns finding detail off — set REVIEW_YETI_MCP_AUTH_TOKEN rather than an empty list. With it present, ct-release#1718 and ct-infrastructure#657 both returned real ["P2"] severities.

Headless-browser verified: bar mounts (pointer-events: auto over a none layer), chip click opens the pane at 462px with the head SHA shown, Board explodes to 4 columns, zero console errors.