Skip to main content

dsh-notification

69Stars8Forks0Issues0Watchers

DSH Web desktop notification plugin that sends browser system notifications when tasks complete, encounter errors, or wait for user interaction. Supports status-based toggling and keyword filtering.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
JavaScript
License
MIT
Branch
main
dshdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add dsh-notification

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin omdsh-dev/dsh-notification for me: review the repository at https://github.com/omdsh-dev/dsh-notification first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Description

Adds desktop notification capability to DeepSeek Harness web client. When a session completes a turn, encounters an error, or needs your approval, answer, or plan review, the browser will pop up a system notification so you can stay informed even when switching to other tabs.

Core Features

  • Pop desktop notifications when tasks complete or error, with individual toggles for five end states (completed, errored, aborted, blocked, token limit reached)
  • Separate notifications for user interactions, covering approval, question, and plan review waiting scenarios
  • Filter notifications using include/exclude keyword rules, supporting literal matching or regex with optional case sensitivity
  • Provides a "Settings > Notifications" panel for one-click browser permission request and test notification
  • Preferences stored in browser localStorage, persisting across refreshes; smooth migration from v2 → v4
  • Only notify when task is not in view (still alerts when page is backgrounded or viewing other sessions); new notifications replace old ones for the same session

Technical Implementation

  • Language: TypeScript (strict ESM host package, CJS single file client bundle, React 18 JSX)
  • Key Dependencies: @deepseek-ai/cordis, @deepseek-ai/dsh-session-projection, @deepseek-ai/dsh-session, zod
  • Architecture Pattern: Host registers a notification session projection (pure fold over logs), client listens to session list completion edges, browser Notification API pops notifications; no harness modification, relies on existing client composition in profile
  • Entry Files: src/index.ts (host), src/client/index.ts (browser), src/invariant.ts (diagnostic companion)

Use Cases

After starting a long-running task, you switch to other tabs or workspaces; when DSH completes, errors, or waits for your confirmation, you want to be pulled back by a system notification; and you only care about some tasks (e.g., only care about completions with "deploy" keyword, or only want to mute certain tool calls), with other tasks completing quietly.

Prerequisites & Compatibility

DependencyMin VersionNotes
DSHNot declaredResolved via link:../dsh; host uses Cordis + session projection channel, no additional feature flag needed
Node.js>= 22Build target node22 (see build.mjs)
PlatformCross-platformWeb GUI client plugin only, depends on browser Notification API
Native modulesNoneNo native dependencies introduced
React^18.2.0React used in client settings section, peerDependency

Installation

dsh plugin --profile web add github:omdsh-dev/dsh-notification

Configuration

Host side (written under config in cordis.yml plugin line):

ConfigTypeDescriptionDefault
maxBodyCharsNumber (≥1)Character budget for reply body in projection; excess truncated on host side with ellipsis400

Client side (modified in Settings > Notifications panel, stored in localStorage):

ConfigTypeDescriptionDefault
Master toggle (enable notifications)BooleanStop all notifications when off, preferences preservedOn
Notify on completionBooleanNotify when task completes normallyOn
Notify on errorBooleanNotify when task errorsOn
Notify on abortBooleanNotify when task is abortedOff
Notify on blockBooleanNotify when task is blockedOff
Notify on token limitBooleanNotify when token limit reachedOff
Notify on pending approvalBooleanNotify when DSH awaits your approvalOn
Notify on pending answerBooleanNotify when DSH asks a questionOn
Notify on pending plan reviewBooleanNotify when DSH awaits your plan reviewOff
Keyword rulesListInclude/exclude rules, supporting literal or regex; include rules require at least one match to notify, exclude rules suppress on matchNone
Require manual dismissBooleanNotification stays visible until manually dismissedOff
Notify only when task not in viewBooleanDon't pop notification when current session is being viewed; still pops when switching to other sessions, workspaces, or page hiddenOn

FAQ

Q: Does installation require harness modifications?

A: No. Host auto-mounts via session projection, client relies on session list, settings shell, and locale already included in default web profile, no harness config changes needed.

Q: Can notification permissions be restored after denial?

A: Not from within the page. After denial, you must manually re-enable Notification permissions in browser site settings, then return to settings panel and click "Request Notification Permission".

Q: Will turns completed offline send notification after reconnection?

A: No. On reconnection, baseline is refetched; completion edges during offline period won't trigger notifications.

Q: Does clicking notification open to specific turn?

A: No. Click only focuses window, no deep link to specific turn.

Q: Do background sub-sessions notify?

A: No. Plugin skips sessions with origin subagent.

Q: What content do keyword rules match?

A: Matches session title, current turn reply text, and tool names called in current turn (deduplicated by appearance order), not earlier turns.

Q: Does it affect model calls?

A: No impact. No new tools added, no prompt modifications; reply body only truncated on host side per maxBodyChars.

Getting Started Difficulty

Beginner — after installation, authorize in "Settings > Notifications"; for fine-grained control, add keyword rules; no internal concepts required.

Known Issues & Limitations

  • Notifications require page to be open (no pop after tab closed); site permission denied cannot be restored from within page
  • Completions during offline won't send notification after reconnection
  • Keyword rules only match session title, latest turn reply text, and tool names, not earlier turns
  • Notification body is plain text summary; click only focuses window, no deep link to specific turn
  • Host side reply body truncated to maxBodyChars (default 400 characters), excess shown as ellipsis
  • Notification tag for same session includes turn number; new notification replaces previous one for that session

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/omdsh-dev/dsh-notification)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory