The DSH ecosystem emphasizes plug-ins. In long-running or multi-session scenarios, state changes in background sessions or pending decisions can easily be missed. dsh-notify-ding aims to solve this by notifying developers at key moments through browser system notifications and alert sounds.
What Is This¶
This is a pure browser-side plugin maintained by better-er. It does not replace DSH’s native interface. It is a DSH client plugin licensed under the MIT license.
Core Features¶
- Trigger timing: Triggered when a session is awaiting a response (question, plan-review, approval), or when a conversation turn transitions from running to idle.
- Notification format: Pops up a browser system notification and plays the Windows built-in alert sound. It does not check whether the page is focused, nor does it distinguish whether the event belongs to the current session; any session with a relevant event will ring.
- Notification management: Notifications do not expire automatically and remain in the system notification center. Each session retains at most one notification, and a new notification replaces the old one.
- Duplicate prevention: The same response-awaiting request rings only once, and there is at least an 800-millisecond interval between two ring events.
Installation¶
dsh plugin --profile web add github:better-er/dsh-notify-ding
After installation, it is automatically enabled once DSH web is restarted. Manual configuration editing is not required.
Usage¶
- Notification permission: On first use, click anywhere after the page loads to authorize browser notifications.
- Alert sound: The alert sound is provided by the Windows notification system, and its volume and mute status follow the system settings.
- Full-screen limitation: Windows 11 Focus mode silences notifications in full-screen mode. This is system behavior that the plugin cannot bypass.
Notes¶
Clicking a notification focuses the window and switches to the corresponding session. Opening multiple tabs does not cause duplicate alerts, and the alert interval is shared across tabs.