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.

Tab Status — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
T

@climber47/dsh-tab-status

Tab Status

Keeps the browser tab in step with the DeepSeek Harness workspace: a status prefix on the page title and a count badge on the favicon, for sessions that are running, that finished while you were elsewhere, or that are waiting on your answer.

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

npx -y @deepseek-ai/dsh plugin --profile web add github:WsTe47/dsh-tab-status#8e3cd8fec479ab5ba72e5d446f1ecc2b92197b34
READMECompatibilityVersions

Compatibility and provenance

Tab Status is published as @climber47/dsh-tab-status and currently resolves to version 0.1.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/13/2026

Versions

0.1.0stable
9/13/2026

Related plugins

Loading related plugins…

Latest
0.1.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/13/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

dsh-tab-status

中文 | English

Puts the DeepSeek Harness workspace's session progress on the browser tab: a state prefix on the page title, and a count badge on the tab icon for the two states that want your attention.

⚠ 2 待处理 · 浏览器标签同步对话进度 — DeepSeek Harness
● 进行中 · 浏览器标签同步对话进度 — DeepSeek Harness
✓ 2 已完成 · 浏览器标签同步对话进度 — DeepSeek Harness
浏览器标签同步对话进度 — DeepSeek Harness        ← idle: byte-for-byte the factory behaviour

Why it exists

The sidebar already tells you which session is running and which one finished — but the sidebar is page content, and it only helps while you are looking at it.

The browser tab is the one strip that is always on screen, and the only thing still visible from a background tab. This plugin moves the three things worth knowing onto it: a session is waiting on you, a session is working, a session finished while you were looking elsewhere.

What it says

StateWhenTitle prefixTab icon
⚠ 待处理 (waiting)a session is waiting on you (approval / question / plan review)⚠ 2 待处理 · full-bleed amber disc with a white count
● 进行中 (running)a session is working (its subagents included)● 进行中 · , or ● 3 进行中 · for severalthe original mark with an enlarged status dot
✓ 已完成 (finished)a session finished and you have not opened it✓ 2 已完成 · full-bleed green disc with a white count
idlenone of the abovenonethe original icon, restored

Priority matches the workspace sidebar: waiting > running > finished > idle.

Badge counts cap at 9+. A running state is deliberately not a whole-image badge: it is the high-frequency normal case, so replacing the brand mark with a disc would hide it almost permanently, while the two "come look at me" states are exactly the ones worth spending the whole icon position on.

Where the states come from

Everything arrives as standard slot props; the plugin fetches nothing, polls nothing, and makes no RPC calls:

  • useSessions — the session list snapshot, the very same one the sidebar reads (running, completed, title).
  • useSessionPendingInteraction — each session's pending interaction.
  • usePanelInfo — the active main panel; a session title is shown only while the conversation panel is in front, matching the built-in title rule.

The "finished" bit deserves a note of its own: the host sets it only for a session that is not the selected one, so it means exactly "it finished while you were elsewhere" — which is precisely what a tab should tell you.

Install

dsh plugin --profile web add @climber47/dsh-tab-status

then restart dsh web.

How it works

This is a dsh bundle, mounted by a single insert row:

  • package.json declares dsh.bundle.patch (what makes it installable) and dsh.client (platform: web, what makes the browser half load).
  • cordis.patch.yml inserts the tab-status row.
  • lib/index.js is the (deliberately empty) host half: this plugin has no host behaviour, but the bundle's insert row resolves the package root, so the package has to be importable.
  • lib/client.js is the browser half, in the window.__ModuleLoader__.load({ id, factory }) registration shape a client bundle must have. It is generated from src/client/ by npm run build, so the readable source and the shipped artifact cannot drift.
  • It registers one purely additive entry in shell.overlay (the frame-wide layer with replaceRisk: none) and returns null: its only effects are document.title and the favicon <link>.
  • The title is layered, not taken over. The built-in DocumentTitle in @deepseek-ai/dsh-client-ui-layout keeps writing the title exactly as before, and we add a prefix on top. Two independent guarantees: effect order (shell.overlay is a later sibling in AppFrame, so within one commit our effect runs second), and a MutationObserver on <title> that re-layers the prefix after any write. Layering strips our own previous prefix first, so it never accumulates and we never need to know what the factory title is — if the product renames itself, we follow.
  • The favicon is composed on a canvas, coloured from theme tokens (--dsw-alias-state-warn-primary / --dsw-alias-brand-primary / --dsw-alias-state-success-primary), and repainted when the theme changes.
  • It declares only real services (slots). A client plugin has no styles service — styles exists only inside the dynamic-plugin sandbox; declaring a service nobody provides makes Cordis wait forever, so the plugin reports itself loaded, logs no error, and never renders. The build script carries a service allowlist that exists specifically to catch that class of mistake.

Known limits

  • This page only: several tabs are independent; this is not a cross-page dashboard.
  • No polling: it writes once per snapshot change, so there is no per-second information such as "running for 3 minutes".
  • Badge counts cap at 9+.
  • Do not run it alongside a dynamic Cordis plugin that does the same thing — the two would fight over the title. Stop the dynamic one before installing this.
  • The plugin makes no network request and stores no data.

Requirements

  • dsh >=0.1.5-rc.1
  • React 18 (a peer dependency, supplied by the harness shell)

License

MIT