DeepSHPlugins
dsh-notification 项目预览
GITHUB / COMMUNITY PROJECT

dsh-notification

Tools & IntegrationsJavaScriptMIT

Desktop notifications for turn completions, with per-outcome controls and keyword rules.

82 Starsomdsh-dev Updated 2026-09-01
Open GitHub repository
dsh-notification 项目预览

About this project

Chinese

Desktop notifications for turn completions, with per-outcome controls and keyword rules.

English

Desktop notifications for turn completions, with per-outcome controls and keyword rules.

Project details & listing signals

Snapshot 2026-09-11
Creator / organization
omdsh-dev
Repository
omdsh-dev/dsh-notification
GitHub Stars
82
Forks
10
Programming language
JavaScript
License
MIT
Last push
2026-09-01
Manifest
Declaration found in the catalog

A public repository does not automatically permit commercial use. Check the project's license and compatibility. Manifests and catalog scores are not security certifications.

Catalog score

86/ 100
Maintenance activity
94
Documentation & practical information
85
Community interest
65
Installation signals
100
Project declarations
100

近 10 天仍在更新;README 含完整安装与使用说明;标准命令一键安装。

Scores use five dimensions of the catalog snapshot. They are browsing aids, not hands-on reviews or security assessments.

Install & use

The respective GitHub repositories define project information and licensing.

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

Copying a command does not execute it. Read the repository documentation and check requirements and licensing first.

Project screenshots

Repository README

GitHub 原文

Saved repository documentation. Its capture date was not recorded and it may differ from the catalog description. Check the current repository before installing.

Repository documentation is preserved in its original language.

dsh-notification

Desktop notifications for the DeepSeek Harness web GUI. When a session finishes a turn, the browser shows a system notification (via the Notification API), so you can switch tabs and still know when DSH is done. Per-outcome toggles and include/exclude keyword rules control exactly which completions notify.

No harness change is needed: the host contributes a session projection (a bounded summary of each session's last completed turn), and the client watches the session list's completion reminder and applies its own persisted preferences.

host:  notification projection (last turn's reason/text/tools) --session/projection--> browser
client: session list completion reminder (live, dedup) + persisted settings
        -> permission + current-session visibility gate
        -> new Notification("DSH finished", { body: "deploy done" })

Install

dsh plugin --profile web add https://github.com/omdsh-dev/dsh-notification/archive/refs/tags/v0.1.4.tar.gz

Restart the web server so the host half and the served client bundle pick up the plugin. The default dsh web profile has the required client composition (the session list, the settings shell, and locale).

Version 0.1.4 supports both the 0.1.1 and 0.1.2 Harness client package layouts and projection contracts.

The settings section lives under Settings > Notifications.

Settings

SettingDefaultEffect
Enable notificationsonMaster switch; off stops every notification while keeping rules.
Notify on completed / error / aborted / blocked / token limitcompleted + error on, rest offWhich turn-end reasons notify (the host projection reports the reason).
Keyword rulesnoneInclude/exclude filters matched against the session title, the turn's reply text, and its tool names. Include rules: at least one must match. Exclude rules: a match suppresses. Rules support literal or regex matching with an optional case-sensitive flag.
Require manual dismissoffThe notification stays until dismissed.
Only notify when the task is out of viewonSuppress a notification only when its session is currently in view. A completion still notifies while the page is hidden or while another session/workspace is open. Turn it off to notify even for the session being watched. Notifications for the same session replace each other.

Preferences persist in the browser (localStorage). The section also grants browser permission and sends a test notification.

Configuration

Host-side tunables live on the plugin row in cordis.yml:

- id: dsh-notification
  name: dsh-notification
  config:
    maxBodyChars: 400      # projection body budget; longer replies are ellipsized host-side

Model experience

AspectEffect
Token costNone — notifications are UI-only and never enter a request.
Tool callsNone — the model gets no new tool.
Session logUnchanged — the projection reads the existing log and adds no events.
PromptUnchanged — no system-prompt section is registered.

Permission boundary

  • The host folds a pure projection over the session log (turn reason, bounded reply text, tool names) and the projection seam delivers it to the browser; the plugin writes nothing to the log and registers no model-facing tools.
  • The client watches the session list's completion reminder (a live "finished while not selected" edge the runtime already computes) and shows a notification only when the user has granted Notification permission.
  • Rule matching runs client-side against the projected content; the reply body never exceeds maxBodyChars.

Development

pnpm install            # links the sibling dsh checkout for build and tests
pnpm run check          # typecheck + tests + build
pnpm run test           # vitest (host projection + composition, client decision/runner/helpers/section)
pnpm run build          # esbuild host/client/invariant bundles + tsc declarations

The repo expects the harness checkout at ../dsh for the dev-time link: resolutions. The composition spec boots the real SessionStore and SessionProjectionRegistry and proves the fold.

Known limitations

  • Notifications require the page to be open (the browser shows them while it is hidden, but not after the tab is closed) and Notification permission granted; a denied site permission cannot be overridden from inside the page.
  • Notifications fire once per finished turn (a running→idle edge on any session); a completion that happened while the page was disconnected is not re-notified on reconnect.
  • The rule subject is the session title plus the last turn's reply text and tool names — earlier turns are not matched.
  • Notification body is a flat text snippet; the click action only focuses the window (no deep link to the turn).

License

MIT

Before you begin

Check the current repository for installation, compatible versions and licensing. Stars and catalog scores are snapshot-based browsing signals.

Installation & troubleshooting · 项目问题反馈

Related projects