The DSH philosophy is “everything is a plugin”. During agent development, when you switch tabs to handle other tasks, it is often hard to notice DSH state changes (such as waiting for approval, questions, or errors). This article introduces the @dsh-external/dsh-client-ui-notifications plugin, which uses browser system notifications, tab title flashing, favicon red dots, and native Windows Toast notifications to prevent background tasks from being overlooked.
What Is This¶
@dsh-external/dsh-client-ui-notifications is a DSH web plugin maintained by huangDouP. It listens to DSH native contracts (such as approval/request, agent/status, and agent/error) and triggers reminders when user intervention is required or the state changes.
Core Features¶
The plugin provides the following features and presentation methods:
- Trigger scenarios: waiting for approval, waiting for an answer, turn completed, error. These signals come from the session snapshot (
approval/questioninpending,runningstate changes, or thelastAgentErrorfield). - Browser system notifications: uses the
NotificationAPI and requires browser permissions. Note: depends on the tab remaining open (it cannot be closed). - Tab title flashing: the title of background tabs alternates between the original title and a “⚠ / ✅” prefix, with a cooldown of at most once every 30 seconds.
- favicon red dot: the favicon of background tabs shows a red dot.
- Native Windows Toast: fired directly by the DSH Host process. Advantage: can be received even if the browser is completely closed. Zero-dependency WinRT implementation; if the BurntToast module is installed, it is used automatically for a more polished style.
- Settings page: provides bilingual text (zh/en), supports individual toggles and configuration, and the settings are persisted as official module settings.
Installation and Enablement¶
- Edit
~/.dsh/profiles/<your-profile>/package.jsonand add the following:
{
"dependencies": {
"@dsh-external/dsh-client-ui-notifications": "github:huangDouP/dsh-client-ui-notifications"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@dsh-external/dsh-client-ui-notifications"
]
}
}
}
- Run
pnpm installin that profile directory. - Restart dsh. Newly added plugin bundles only take effect after a restart.
After restarting, go to Settings → Notifications to see all toggles and configure them individually (Enable notifications / Waiting for approval / Turn completed / Errors / Browser system notifications / Native system notifications / Tab title flashing / favicon red dot / Sound / Cooldown).
Notes¶
- Permission dependency: before using browser system notifications, you must grant website notification permissions in browser settings.
- Runtime environment: the native Toast feature is provided by the DSH Host process and depends on the DSH host environment.
- Error detection: error notifications depend on the
lastAgentErrorfield in the session snapshot. - Persistence: the settings page is backed by official module settings written to
~/.dsh/settings.yaml, so settings are not lost after restart.
Conclusion¶
This plugin reduces the cost of manual polling through a multi-channel reminder mechanism. For plugin details, see the community directory and GitHub.