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.

Plugin Busy Workspace — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
P

dsh-plugin-busy-workspace

Plugin Busy Workspace

Highlight busy workspaces and running sessions in the DeepSeek Harness (dsh) Web GUI sidebar — pin workspaces with active sessions to the top and mark running sessions with theme-adaptive color.

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

npx -y @deepseek-ai/dsh plugin --profile web add github:baifagg/dsh-plugin-busy-workspace#59f6a6e63741bb79ad55ba94bc0d4c225cef2f4a
READMECompatibilityVersions
Sidebar with a busy workspace pinned above the rest of the list

Compatibility and provenance

Plugin Busy Workspace is published as dsh-plugin-busy-workspace 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/24/2026

Versions

1.0.0stable
9/24/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/24/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.Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and r

README

dsh-plugin-busy-workspace

Know which workspace is working, at a glance.

A DeepSeek Harness (dsh) Web GUI plugin that highlights running sessions and pins busy workspaces to the top of the sidebar.


The problem

If you run more than one agent at a time, the dsh sidebar becomes a wall of look-alike rows. Every workspace header renders identically, every session row renders identically, and the only signal that something is running is a ten-pixel dot you have to hunt for.

The result is a set of real, recurring failures:

What happensWhat it costs you
You cannot tell which workspace has an agent mid-taskYou open workspaces one by one to check, or you interrupt a session that was already working
Busy workspaces drift down the list as you touch othersThe thing you actually care about is the thing you have to scroll to find
A session finishes and nothing tells youYou wait on a task that already ended, or you miss the moment to review its output
The status dot is the only cue, and it is tiny, grey, and low-contrastYou cannot read the sidebar from a step back or on a small display

Existing themes and skins restyle the whole interface but none of them answer the one question that matters during parallel work: which one is running right now?

What this plugin does

Three focused changes, all in the sidebar, all driven by the state the Harness already computes.

1. Busy workspaces rise to the top

A workspace containing a running session is lifted above the rest of the list. The move is presentational only — your manually dragged workspace order is never rewritten, so when the last session in a workspace finishes, the list quietly returns to the order you set.

2. Running sessions get a real visual identity

The running session row gets an accent frame, a tinted background, an accent-coloured bold title, and a slow breathing bar on its leading edge. You can identify it from across the room without reading a single word.

3. You see the moment a session finishes

When a session stops running, its row plays one short green settle pulse and then returns to normal. You learn that a task completed without watching it.

Theme-adaptive by design

Every colour is read from the active theme's own --dsw-alias-* tokens. Nothing is hardcoded, which means one stylesheet works across the built-in light and dark themes and across community theme packs (Catppuccin, Nord, Dracula, Tokyo Night, Gruvbox, and any other theme that defines the standard token set).

RoleToken
Running accent--dsw-alias-state-business-primary, falling back to --dsw-alias-brand-primary
Settle colour--dsw-alias-state-success-primary
Row title--dsw-alias-label-primary
Hover surface--dsw-alias-interactive-bg-hover

The plugin deliberately picks the semantic state tokens rather than brand tokens. A brand token turns orange when your theme's brand is orange, which would read as a warning rather than as activity. The state tokens keep their meaning across every theme.

Transparency is composed with color-mix() against the theme's own surface, so the tint always sits correctly on light and dark backgrounds alike.

Install

# From your dsh profile directory
cd ~/.dsh/profiles/web
pnpm add github:yangx/dsh-plugin-busy-workspace

Then register the bundle in that profile's package.json:

{
  "dsh": {
    "profile": {
      "bundles": [
        "...",
        "dsh-plugin-busy-workspace"
      ]
    }
  }
}

Restart the Web GUI and reload the page. The sidebar picks it up with no further configuration.

Configuration

Settings persist at $DSH_HOME/busy-workspace/settings.json and are served over GET /busy-workspace/api/settings.

{
  "pinBusyWorkspaces": true,
  "highlightRunningSessions": true,
  "highlightBusyWorkspaceHeaders": true,
  "notifyOnCompletion": true,
  "intensity": 0.6
}
FieldDefaultEffect
pinBusyWorkspacestrueLift workspaces with a running session to the top of the list
highlightRunningSessionstrueDraw the accent frame, tint, and breathing bar on a running row
highlightBusyWorkspaceHeaderstrueTint and accent-bar the header of a busy workspace
notifyOnCompletiontruePlay the settle pulse when a session stops running
intensity0.6Accent strength, 0–1. Scales alpha only; hue always comes from the theme

The Host half is optional. A composition carrying only the client bundle keeps these defaults, which is a fully working configuration.

How it works

The plugin reads data-state from the status dot the Harness already renders on every session row — ongoing, warning, or done. That single attribute is the official contract, and reading it has three consequences worth stating:

  • No second source of truth. The plugin never re-derives activity from the transport, so it cannot disagree with the dot you are looking at.
  • No race with the renderer. Marks are applied as attributes plus CSS. React re-renders overwrite attributes freely and the observer simply re-applies them; DOM order is never touched, so reconciliation is never fought.
  • No layout shift. The running frame is drawn with an inset box-shadow ring rather than a border, because a border would change the row's box size and shift every row below it the moment a session starts.

Workspace lifting uses CSS order on the flex list column. Reordering nodes directly would fight React; an order value is a purely presentational hint the renderer never reads back.

Motion respects prefers-reduced-motion: users who ask for less motion keep every state indication and lose only the movement.

Compatibility

HarnessDeepSeek Harness 0.1.5-rc and later
SurfaceWeb GUI sidebar (sidebar.workspaces)
ThemesAny theme defining the standard --dsw-alias-* tokens
ConflictsNone known. The plugin owns one style element and one settings file, and reads no other plugin's state

FAQ

Does it change my workspace order permanently? No. Lifting is purely visual. Your persisted order is never written, so the list returns to your arrangement as soon as the work stops.

What counts as "running"? Exactly what the status dot means by ongoing: the session's turn is in flight. A session waiting on your approval, plan review, or an answer shows the official warning dot and is left alone — that is your cue, not a busy cue.

Will it fight my theme? No. It defines no palette. It consumes your theme's tokens, so it inherits whatever you installed and stays correct when you switch themes.

Does it slow the sidebar down? Marks are recomputed once per animation frame from a batched mutation observer, and only written when a value actually changes. The observer cannot drive itself, because it writes attributes it does not itself observe into a loop.

Keywords

DeepSeek Harness · dsh plugin · dsh-plugin · cordis plugin · DeepSeek Web GUI · sidebar · workspace sidebar · session list · running session indicator · busy workspace · agent activity indicator · parallel agent monitoring · session status dot · pin active workspace · workspace sorting · theme adaptive · --dsw-alias tokens · Catppuccin · Nord · Dracula · Tokyo Night · Gruvbox · productivity · developer tooling

License

MIT © 2026 baifagg