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.

Ui Attention — DSH Plugin for DeepSeek Harness
← Plugins

dsh-ui-attention

Ui Attention

DSH web attention alerts: browser notification, beep, and tab-title flash when the page is not on top (questions, approvals, finished turns)

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-ui-attention@0.1.2
READMECompatibilityVersions
Settings

Compatibility and provenance

Ui Attention is published as dsh-ui-attention and currently resolves to version 0.1.2. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility

README

dsh-ui-attention

Repository: https://github.com/LeeKai233/dsh-ui-attention — npm: https://www.npmjs.com/package/dsh-ui-attention

Browser attention alerts for the DeepSeek Harness (DSH) web UI. Whenever the DSH page is not on top — the tab is hidden, the window is minimized, or another application covers it (document.hidden or !document.hasFocus()) — and something happens, this plugin fires:

  1. a browser notification (click it to focus the window and open the session),
  2. a short WebAudio beep (no audio asset needed),
  3. a tab-title flash ((!) prefix alternating) while pending work awaits.

It alerts on two event kinds: pending interactions (an ask_user_question question, a plan waiting for approval, or a tool approval) and finished turns (any session's turn ending), each once per turn with the session title in the body. While the page is on top and focused, everything stays quiet.

It is a dual-face DSH plugin (dsh.client, platform web) shipped as a tiny bundle: installing it composes it automatically.

Install

dsh plugin --profile web add dsh-ui-attention
# restart dsh web once so the new bundle layer applies
dsh web

Or from a local checkout:

dsh plugin --profile web add file:/path/to/dsh-ui-attention

Then restart dsh web once: the bundle layer (and the plugin's Host half, which registers the ui-attention settings namespace) applies at boot.

Standalone install without dsh plugin

As an ALTERNATIVE (not in addition!) to the bundle route, you can copy the package into ~/.dsh/profiles/web/node_modules/ and insert the row into the profile patch layer (~/.dsh/profiles/web/cordis.patch.yml):

- insert:
    - id: ui-attention
      name: "dsh-ui-attention"

Do not do both. insert rows are not deduplicated by id across layers: the same id: ui-attention coming from the bundle patch AND the profile patch makes the loader refuse to boot with duplicate loader entry id: ui-attention. Pick exactly one composition route.

Usage

  • Open General settings in the web UI: the Notifications row holds five iOS-style switches (Notifications / Sound / Title flash / Background only / Turn finished) and a Send test notification button.
  • When do alerts fire? Two rules:
    1. While the DSH page is not on top — tab hidden, window minimized, or another application covers it — every event alerts (pending interactions and finished turns alike).
    2. While the page is on top and focused, the CURRENT session stays quiet (its question/approval card is right in front of you) — but events from ANY OTHER session still alert, so a background task that needs you is never missed while you chat elsewhere.
  • Two event kinds alert: pending interactions (a question, a plan approval, or a tool approval) and finished turns (any session's running flip), each once per turn, with the session title in the body; clicking a notification focuses the window and opens the session.
  • Browser notification permission is requested when you click the test button (browsers only ask from a user gesture). While permission is default, the row shows an enable hint and the plugin falls back to sound + title flash.
  • Refreshing or reconnecting does not re-alert; resolving the interaction closes its notification and stops the title flash.

Settings

The five switches (all default true) persist in the browser under the localStorage key dsh-ui-attention.settings:

FieldMeaning
enabledMaster switch: popup, sound, and title flash all stay quiet when false
soundPlay the WebAudio beep
titleFlashFlash the tab title while pending work is hidden
onlyWhenHiddenApplies to the CURRENT session: stay quiet while on top; other sessions always alert (false alerts even the current session on top)
notifyOnDonePop up and beep when a session's turn finishes

Why browser-local instead of the Host settings document: the rc.6 web API gateway only exposes a hardcoded allowlist of settings namespaces to the browser (WEB_SETTINGS_NAMESPACES in packages/host/apiproxy/src/api-proxy.ts) and answers settings-not-exposed for anything else — exposing third-party namespaces via settings.register() is documented as deferred work. The Host node half still registers the ui-attention namespace server-side so the section lights up automatically once that upstream limitation is lifted.

FAQ

  • No popup? Allow notifications for the site in your browser, then click the test button once. Denied permission degrades to sound + title.
  • Working in session B while session A needs me — why no popup before? Fixed: events from NON-current sessions always alert, even while the page is on top. Only the session you are currently viewing stays quiet on top.
  • Page covered by another app but no alert? The plugin treats "on top and focused" as "you are looking at it" for the current session. Turn off Background only to alert even the current session while on top.
  • No sound? Audio playback needs one prior user gesture (autoplay policy); the plugin unlocks on the first click/keypress and retries on later gestures.
  • Several tabs open? Each tab alerts on its own (cross-tab dedupe is not possible); keep one DSH tab pinned.
  • Which events alert? Questions (ask_user_question), plan approvals (plan-review intent), tool/command approvals (approval/requested), and finished turns (any session's running flip).

Requirements

  • DeepSeek Harness 0.1.0-rc.6 or newer (the plugin reads the session list's pendingInteraction statuses and the settings.general.item slot)
  • the web profile (dsh --profile web)
  • a browser with notifications allowed for the DSH origin (click the test button once to grant permission)

Publishing

Published on npm as dsh-ui-attention (MIT). Future versions:

npm version patch          # or minor / major
pnpm bundle && pnpm test
npm publish                # --otp=<code> when the account enforces 2FA

The tarball ships the prebuilt lib/ plus the bundle patch, so consumers never need a build step.

Development

pnpm install
pnpm test        # vitest, TDD suite (T1-T17) + built-artifact smoke
pnpm bundle      # tsdown -> lib/index.js (host) + lib/client.js (browser)

Architecture: attention-engine.ts is a pure state machine over the session list (pending-interaction statuses plus running-edge turn-finished detection, baseline seeding, per-turn dedupe, page-not-on-top gating); notifications.ts, beep.ts, and title-flash.ts are the injectable platform wires; client/index.ts assembles them over ctx.sessions.list and the settings.general.item slot, persisting the switches in localStorage via the runtime snapshot-store engine. The Host node half registers the ui-attention settings namespace for future compatibility.

Uninstall

dsh plugin --profile web remove dsh-ui-attention
# plus: remove any manual `ui-attention` insert row from ~/.dsh/profiles/web/cordis.patch.yml
# then restart dsh web

License

MIT

*
Runtime surfaces
web
Release source
npm
Registry updated
9/20/2026

Versions

0.1.2stable
8/15/2026
0.1.1stable
8/14/2026
0.1.0stable
8/14/2026

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
Latest
0.1.2
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
103.8 kB
Files
8
Surface
web
License
MIT
Source
npm
GitHub
★ 1
Weekly downloads
26
Last push
8/16/2026
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