dsh-approval-reminder
Persistent approval / question reminder for the DeepSeek Harness Web GUI.
Whenever any session lands a permission request (approval) or a question that needs you to click, a persistent bottom-right system bubble appears (click it to jump to that conversation), plus an in-page reminder card. The bubble does not steal focus and stays until resolved — you will never silently wait on a stalled waterfall again.
中文版见 README.zh.md。
How it works
Dual-face plugin mounted on every dsh web start via a profile bundle layer:
- Host half (
lib/index.js) — two loopback-only routes under /api/dsh-approval-reminder/*; renders the toast with a hidden PowerShell/WinForms process (borderless, rounded, topmost, click-to-close, never activates).
- Browser half (
lib/client.js) — subscribes to the authoritative per-session useSessionPendingInteraction hook (uiSession.pendingInteractions registry); on a NEW pending key it POSTs /notify, when everything is resolved it POSTs /notify { clear: true }; bubble clicks are drained through /poll-open and the page navigates to the conversation that needs attention. A small self-test badge (bottom-left) mirrors the pending registry for liveness.
CJK is lossless: bubble text travels through environment variables, no base64/EncodedCommand.
Install
DSH loads this plugin as a profile bundle (see cordis.patch.yml). Easiest:
- Put this repo under your DSH
plugin-src/local/ (or any path your host loads plugins from).
- Ensure the profile bundle row is applied:
- insert:
- id: dsh-approval-reminder
name: '@dsh-external/dsh-approval-reminder'
- Restart
dsh web. The reminder is persistent across sessions — no per-session cordis_define needed.
Requirements
- Windows (bubble uses PowerShell + WinForms)
- DeepSeek Harness host + Web GUI
Support
If this plugin saves you from silently waiting on approvals again, you can say thanks:
License
MIT