dsh-notifications
Manifest validDesktop notifications and a local chime for DSH main-thread completion and requests for attention
dsh-notifications
Desktop notifications and a two-note chime for DeepSeek Harness Web. Runs in your browser, including through an SSH forward such as http://127.0.0.1:3084/ → server port 3080. No external notification service, audio download, or model tool is needed.
On first load, click Enable notifications, then Allow in the browser. This also enables audio and sends a test notification. Open Settings → General → Notifications to test again, mute the chime, or disable alerts. Preferences belong to the current browser and origin; changing the forwarded port requires permission again.
If you only hear sound, the test control reports whether desktop delivery is requested, reported shown by the browser, or failed. The chime does not prove a desktop banner was displayed. Allow banners for your browser in the operating system notification settings and check Do Not Disturb. Each test creates a new notification and requests that it remain visible until dismissed; browser support varies.
Events
Notifications show the project directory name as the title and a short body: Finished, the first pending question, Approval needed, or Review plan. Question previews collapse whitespace and stop at 180 characters. Sessions without a project directory use their display title.
The browser tab icon also gets a red dot for these events. Returning to the tab, focusing its window, or interacting with the page clears it. This works in every DSH tab even when desktop notifications are disabled or blocked. The original favicon is restored when the dot clears or the plugin unloads.
- A main thread changes from running to stopped, including normal completion, cancellation, and failure. Each run alerts once. Initial idle history and reconnect snapshots do not alert.
- A main thread has a pending question, approval, or plan review. Each request alerts once; a simultaneous stop while that request is pending does not produce another alert.
- Subagent threads stay silent. A manually forked conversation remains an independent main thread.
- Clicking an alert focuses DSH and opens its thread. A single tab owns automatic notification delivery when several tabs share an origin; another tab takes over when it closes.
Keep a DSH tab open and connected. Desktop browser notifications are supported; closed-tab push and mobile service-worker notifications are outside this plugin. Sound requires a user interaction after a fresh page load: click the page or use the test button. Browser/OS notification settings, Do Not Disturb, suspended tabs, and SSH connectivity can affect delivery. No stale completions are replayed after an outage. The first tab owning notification delivery must have audio unlocked to chime.
Install
Option 1: Direct from GitHub
dsh plugin --profile web add github:dat-lequoc/dsh-notifications
dsh --profile web
Option 2: Build and pack locally
npm ci
npm run check
npm pack
dsh plugin --profile web add ./dsh-notifications-0.1.1.tgz
dsh --profile web
The package contains its built browser bundle. It uses DSH's sessions, uiSession.pendingInteractions, Remote session status events, locale dictionaries, shell.overlay, and settings.general.item extension points. Verified against local DSH 0.1.5-rc.1. The host entry only enrolls the browser module; it exposes no server routes or model capabilities. No separate invariant provider is necessary because the plugin owns no mirrored Host state.
For local development, link this directory as a profile dependency and insert the plugin in the profile's cordis.patch.yml:
- insert:
- id: dsh-notifications
name: dsh-notifications
Choose either the bundle installer or this explicit patch, so the plugin is mounted once. Live patch reload can activate the explicit entry without restarting DSH. Rebuild with npm run build after client changes; DSH client HMR serves the rebuilt bundle.
Verification
npm run check runs keyless behavior tests, builds the package, and syntax-checks the browser artifact. scripts/verify-live.mjs uses Playwright against an existing authenticated DSH server; pass DSH_LOG pointing to that server's startup log. It keeps the login token out of reports. It checks native Notification construction, real Web Audio oscillator scheduling, controls, persistence, thread navigation, attention kinds, and multi-tab ownership. It injects synthetic events only into its isolated browser; it never prompts a model or changes Host sessions. Screenshots, videos, and reports go into ignored verification/.
Browser requirements: MDN Notifications API and AudioContext.resume.
Comments
Loading…
From the same category
by awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
★ 17.6k
CC0-1.0
Python
Oct 1, 2026
by zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 8.3k
↓ 172/wk
Apache-2.0
TypeScript
Oct 2, 2026
dsh plugin --profile web add dsh-webby yjh051108
dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).
★ 7k
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby strukto-ai
The World's First Virtual Terminal for AI Agents
★ 3.7k
↓ 264/wk
Apache-2.0
TypeScript
Oct 2, 2026
dsh plugin --profile agent add @struktoai/mirage-dshby xmanrui
通过扫码或机器人凭据把IM机器人接入DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord和WhatsApp)。 Connect IM bots to DeepSeek Harness via QR code or credentials (9 channels).
★ 1.6k
↓ 17.5k/wk
MIT
JavaScript
Oct 1, 2026
dsh plugin --profile web add @xmanrui/dsh-imby hyhmrright
AI code reviews grounded in 12 classic engineering books — decay risk diagnostics with book citations, severity labels, and 6 analysis modes including full-sweep auto-fix
★ 1.5k
MIT
JavaScript
Sep 28, 2026