Preface¶
The most unsettling thing about DSH Web isn’t that the tools run slowly, but that it is too quiet. Approvals are waiting for your confirmation, questions are waiting for your answers, plan reviews are waiting for a glance—the page just sits there, with no sound or overlay. You need to stare at the window, click into the corresponding session; once you switch to another app or minimize, it’s easy to miss it. Existing solutions often rely on third-party clients or external monitoring scripts, with configuration costs higher than the problems they solve.
Below introduces dsh-notify, maintained by HansyLin-xCoFe. It does the same thing: within the DSH Web page itself, it adds sound effects, top-right overlay cards, and background system notifications for states where “you are waiting to handle.”
The plugin is categorized under “Clients” in the SkillHub directory and uses the MIT license. The directory page is an independent community site with no official affiliation with DeepSeek / Hypersphere.
What Problem Does It Solve¶
DSH Web itself comes with no reminder means. When you leave the page window, the waiting state is only reflected in the change of the session status value (approval / question / plan-review), and the UI itself has no visual or auditory signals. dsh-notify monitors these pending states and adds three layers of reminders when they appear: sound, overlay, and system notification.
One-sentence positioning: turns the act of “waiting for you to handle” from passive waiting to active reminders, without needing to leave the DSH Web environment.
Capabilities¶
Only capabilities that explicitly appear in the README are listed below.
- Trigger Conditions: Reminders are triggered when
approval(approval),question(question), orplan-review(plan review) start waiting for user handling. - Sound Effects: 6 built-in soft tones: Glass / Bell / Xylophone / Water Drop / Blooming / Pulse, volume adjustable; approval sound and question sound can be selected separately. The default tone is “Bell / Blooming”. Sound effects are synthesized from pure mathematical PCM, without relying on audio files.
- Top-right Reminder Card: A semi-transparent overlay with spring easing, background blur, and hover micro-interactions. The card displays the session name and tool/question summary; clicking “Go to Handle” jumps directly to the waiting session, and after closing, it shrinks into a small bell with a badge.
- Background Notifications: System desktop notifications can be sent when the window is not in the foreground (authorize once in the browser), and the tab title can be made to flash.
- Custom Audio: Supports uploading MP3 / WAV / OGG / M4A, single file not exceeding 1.5 MB. Audio is written to the current browser’s
localStorageand is not uploaded to a remote server. - Interface Language: Chinese / English, follows DSH’s language settings.
Settings are concentrated under Settings → General → Notifications, including the master switch, volume, approval sound / question sound, custom audio, preview, desktop notification switch, banner switch, title flash switch, and effect preview.
Installation and Enablement¶
Requirements: DSH version not lower than 0.2.1-rc.2, and running in Web mode.
Add the following spec in DSH Web’s Settings → Plugins:
github:HansyLin-xCoFe/dsh-notify
Another equivalent way is to use the install_bundle of the plugin_manager tool, filling the same spec in target.
After installation, refresh the page once, and you can see the entry in Settings → General → Notifications. Then enable it with the switch on the right.
The above are the two ways explicitly written in the official README, not a command assembled from the plugin name.
Configuration and Customization¶
After enabling, enter the settings page and click “Settings” to expand detailed options. Three items are worth clarifying first.
- “Preview Approval Notification” and “Preview Question Notification” will directly pop up the card and play the corresponding sound, used to confirm if the current tone meets expectations.
- “Test Windows Notification” will immediately send a system notification, used to verify browser notification permissions and Windows notification settings. This test is not restricted by foreground status and is available anytime.
- “Allow Desktop Notifications” requires you to allow it once in a browser popup. Afterwards, system notifications will only be sent when the window is not in the foreground (switched to another app or minimized), avoiding interruption while staring at the page.
After uploading custom audio, you need to click “Preview” to confirm decoding is normal. If the browser’s autoplay policy restricts audio unlocking, there will be one interaction in the foreground during normal DSH use, so you usually won’t perceive this restriction.
How It Works¶
The plugin listens to the Client’s ctx.uiSession.sessionStatus source on the browser side. This source is the unified publish point for three types of suspended interactions. When a new pending key appears, the plugin does three things in order: play the corresponding sound, render the top-right card in the shell.overlay slot, and send a system notification and flash the title when the window is in the background.
The card automatically fades out when the pending disappears (handled or withdrawn). When the first frame loads, existing pending only shows the card without ringing, to avoid ringing repeatedly after page refresh; if the pending is synced after the first frame, it will still ring once normally. The Host side (index.js) has no routing and no state; all logic is done on the browser side and loads with page startup.
Testing and Build¶
The repository contains both installable artifacts and source code. Build and test commands are as follows, requiring Node 22 or higher:
node scripts/build-client.mjs # Build client.js
node scripts/build-client.mjs --check # Only verify if artifacts are up to date
node scripts/test-client.mjs # No browser behavior tests
node scripts/test-sound-engine.mjs # Audio rendering and scheduling assertions
client.js is generated by src/main.js injecting src/sound-engine.js; the README explicitly requests not to manually edit this file. The latest version number can be found in the repository’s package.json.
Use Cases and Notes¶
Suitable for users who use DSH Web daily and need to frequently handle approvals, questions, and plan reviews, especially in scenarios involving frequent window switching and multitasking.
The boundaries worth noting all come from the README:
- Notifications only take effect when the DSH Web page is open; there is no Service Worker push. After closing the page, system notifications will not arrive.
- Preferences and custom audio are saved in the current browser’s
localStorageand do not sync across browsers or devices. - Desktop notifications require one-time authorization; if rejected by the browser, it needs to be restored in site settings.
- It can coexist with other “waiting interaction reminder” type plugins (the waiting bubble mentioned in the README for
dsh-whale-widget). If both are enabled, they will each remind once. If you only want to keep one set, turn off the other.
In addition, the plugin runs within the permission scope of the current dsh process. Before installing any third-party plugin, it is recommended to open the repository directory to review the source code and license. This plugin is under the MIT license; you can confirm the artifact scope from the files listed in the package’s files field.
Conclusion¶
What dsh-notify does is narrow: within DSH Web, when approvals, questions, or plan reviews are waiting for user handling, it provides sound, overlays, and background notifications. It does not extend new approval logic nor change session status; it simply makes the existing but imperceptible waiting state perceptible, suitable as a supplement to daily experience.
Directory Page: https://www.skillhub.cn/plugins/HansyLin-xCoFe/dsh-notify
GitHub: https://github.com/HansyLin-xCoFe/dsh-notify