メインコンテンツへスキップ
M

dsh-done

mba1398/dsh-done

Task completion celebration popup with sound for DeepSeek Harness · 任务完成后弹出庆祝弹窗并播放音效

インストール

dsh plugin --profile web add github:mba1398/dsh-done

README

dsh-done

Task completion celebration popup with sound for DeepSeek Harness. When an agent finishes a task (status goes runningidle), a celebratory popup appears in the page (confetti + fanfare), then auto-dismisses.

Features

  • 🎉 Popup overlay in the shell.overlay slot when a task completes
  • 🎊 Confetti animation + bounce-in
  • 🔊 Web Audio fanfare (ascending C5-E5-G5-C6), no external audio file
  • ⏳ Auto-closes after ~3.2 s
  • 🎲 Random encouraging message on each completion

Install

dsh plugin --profile web add dsh-done

or from a local checkout:

dsh plugin --profile web add /path/to/dsh-done

Then restart the profile.

Build (for contributors)

pnpm install
pnpm run build          # tsc (host) + tsdown (client bundle)
pnpm publish
  • Host entry: src/index.tslib/index.js
  • Client bundle: src/client/index.tsxlib/client.js

Publish / distribute

  • Publish to npm, then tag the GitHub repo with the dsh-plugin topic so DSH users can discover it.
  • To appear in the marketplace lists, open a PR in the relevant community curated list (e.g. awesome-dsh-plugin-series repositories).

How it works

  • Host (src/index.ts): listens to agent/status; when status is idle, records the completion timestamp. Exposes celebration/check RPC.
  • Client (src/client/index.tsx): polls celebration/check every 500 ms; on a fresh completion, shows the popup in shell.overlay.

Runtime adaptation (important)

This plugin installs as a static bundle (loaded by the Loader via {id, name}), so it uses the webServer route scheme for Host↔Client communication — the harness/host bridge only exists inside the dynamic Cordis plugin sandbox and is not present on a static bundle's ctx:

  • Host (src/index.ts): inject: ['webServer'], registers the GET /dsh-done/check route via ctx.effect(() => ctx.webServer.register({ kind: 'exact', path: '/dsh-done/check', handler })).
  • Client (src/client/index.tsx): polls fetch('/dsh-done/check?since=…') every 500 ms; on a fresh completion, shows the popup in shell.overlay, and also registers a sidebar.footer.action entry (🎉 manual trigger button).

Restart the profile after installing so the host route registers; the client bundle is served dynamically by dsh-client-modules, so a page refresh picks it up.

License

MIT

関連プラグイン