Live session status on the browser tab favicon with sound notifications for pending input and completed tasks.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-task-feedback
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Pudge1996/dsh-task-feedback
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
中文 | English
A session status feedback plugin for DeepSeek Harness. Built from a real pain point:
When you switch to another tab or step away from your computer, you have no way of knowing whether the agent has finished its response or needs your input.
Install
# Browser-served Web profile
dsh plugin --profile web add dsh-task-feedback
# Desktop app profile
dsh plugin --profile desktop add dsh-task-feedback
Version matrix
The DSH client API is not forward-compatible across rc.x → alpha.x: a wrong pick does not degrade gracefully, it crashes at runtime (common symptom: TypeError: useConversation is not a function). Pick the plugin version that matches your DSH:
| Your DSH | Install |
|---|---|
0.2.x (verified on v0.2.1-alpha.2) |
dsh plugin --profile <profile> add dsh-task-feedback (latest, currently 0.2.1) |
0.1.2-alpha.1 – 0.1.x |
dsh plugin --profile <profile> add dsh-task-feedback@0.1.0 |
The main-view session and pending-interaction reads are dual-generation compatible, so
0.2.xusually runs on older DSH as well; only the0.2.x×v0.2.1-alpha.2pairing above has been verified for this release (0.2.1differs from0.2.0in metadata only — the runtime code is byte-identical).
Favicon indicator
When you switch away from the tab, the DSH favicon turns into a coloured dot that reflects the current session state in real time:
- Green — the current task has completed.
- Blue — the current task is in progress or a subagent is running.
- Amber — needs your input (approval, plan confirmation, answering a question, etc.).
Design decisions:
- The favicon only changes when the tab is hidden (powered by the native Page Visibility API).
- If the session was already idle or completed, the favicon stays as the default whale (minimum distraction).
- Configurable shapes:
Small dot|Circle|Rounded rectangle. - The shape setting is Web-only — a Desktop shell window has no browser tab strip, so the favicon is never visible there and the "Favicon shape" group is hidden in Settings.
Sound notifications
12 hand-picked synthesised sounds. Choose different sounds for "task done" and "needs your input", and control when they play:
Always— play sound notifications regardless of tab visibility, whenever the session completes or needs your input.Only when unfocused— only play while the page is away from you: the tab is hidden (switched away, minimised, display off — native Page Visibility API) or the window lost focus because you switched to another application (thewindowblurevent).
Tech highlight — all sounds are synthesised in real time via the Web Audio API with zero external dependencies. Hover over any sound option in the settings to preview it.
All settings (favicon shape, sound scope, sound selection) are configured in Settings → Feedback and persisted to localStorage.
Notes
- Tested from DSH v0.1.2-alpha.1, verified on DSH v0.2.1-alpha.2 (main-view session and pending-interaction reads stay generation-tolerant)
- Dual-mode — verified under both the browser (Web) profile and the Desktop client; everything favicon-related is only visible in Web mode.
- Frontend only — no custom protocols, no host commands, no LLM calls, no session-log entries.
- Stable hooks — reads session state, subagent activity, and pending interactions through DSH's standard
sessionsanduiSessionservices. - Roadmap — custom sound uploads, system-level notifications.
- Limitations —
/goalmode is not yet supported.
License
MIT
Links
More in this category
xmanrui/dsh-im★ 2032
Connect IM bots to DeepSeek Harness via QR codes or bot credentials (9 channels: Feishu, WeChat, DingTalk, WeCom, QQ, Slack, Telegram, Discord, and WhatsApp).
shaobeichen/dsh-pocket★ 1771
Remote phone access to the DSH Web UI: scan a QR code for LAN or public (cloudflared tunnel) access with real-time sync, a mobile-adaptive layout, and a settings tab.
inclusionAI/Avernet#deepseek-harness-channel-bcn★ 642
Connects DeepSeek Harness to Avernet's Bot Collaboration Network over WebSocket V2, with automatic onboarding, isolated agent sessions, tool-call events, and multi-bot routing tools.
Oscar-Williams/dsh-deepcanary★ 90
Evidence-first attention supervision for DeepSeek Harness with C0–C3 policy, deduplicated Inbox alerts, quiet hours, and redacted outcome records.
omdsh-dev/dsh-notification★ 89
Desktop notifications for turn completions, with per-outcome controls and keyword rules.
whyihaveyou/dsh-suite#plugin-notify★ 60
IM webhook and local notifications on turn completion, errors, or approval (Feishu/WeCom/DingTalk/Slack/Discord/custom).
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.