Semantic UI sound effects powered by uisfx: task start/success/failure and per-button cues, settings UI with instant preview, 12 sound packs, Host-persisted preferences, and `ctx.uisfx` service for other plugins.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-plugin-uisfx
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:XanthanL/dsh-plugin-uisfx
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
🌐 English | 中文
A dsh plugin that brings uisfx semantic UI sound effects to DeepSeek Harness. Task start / success / failure and button clicks can each be assigned a sound cue from the settings page, with instant preview.
What it solves
dsh has almost no audio feedback by default. Did the task finish? Did it fail? Did the button register? You can only tell by watching the screen.
dsh-plugin-uisfx adds a semantic sound system:
- Task sounds — start, success, failure, pending attention
- Button sounds — different sounds for different button kinds
- Global sound packs — 12 uisfx packs, switch the whole personality in one click
- Per-scenario cues — every scenario maps to an independent cue, with preview buttons
- Persistent settings — stored in
settings.yaml, survives restarts
Preview

Quick start
Published on npm: dsh-plugin-uisfx
dsh plugin --profile web add dsh-plugin-uisfx
# restart dsh web
Pin a version:
dsh plugin --profile web add dsh-plugin-uisfx@0.1.0
Then open Settings → Sound Effects.
Requires dsh
0.1.0-rc.6. Verified alongsidedsh-better-sidebarand@dsh-external/dsh-navbar.
Features
| Feature | Description |
|---|---|
| 🎚 Global sound pack | 12 uisfx packs (zen / studio / scifi / soft ...) |
| 🎯 Scenario mapping | 11 scenarios, each mapped to a cue with sensible defaults |
| ▶ Instant preview | Preview buttons next to every scenario in settings |
| 🔔 Task feedback | Start / success / failure / pending for the current session |
| 🖱 Button feedback | Auto-detects send / delete / toggle / link / primary / normal |
| 💾 Persistence | Host settings.yaml namespace dsh-plugin-uisfx |
| 🔌 Service API | ctx.uisfx for third-party plugins |
Default scenario mapping
| Scenario | Cue | When |
|---|---|---|
task.start |
start |
agent starts running |
task.success |
success |
task finishes successfully |
task.failure |
error |
task fails |
task.pending |
notification |
pending interaction appears |
click.normal |
press |
normal button |
click.primary |
select |
primary / accent button |
click.toggle |
toggle-on |
toggle / checkbox |
click.send |
send |
send / submit |
click.close |
close |
close / cancel |
click.danger |
delete |
delete / destructive action |
click.link |
open |
link |
Default sound pack: zen — paper, wood and quiet chimes for long working sessions.
Sound packs
| Pack | Character | Good fit |
|---|---|---|
minimal |
Dry, precise | Productivity |
soft |
Rounded, warm | Mobile, friendly SaaS |
glass |
Bright, crystalline | Media, finance |
arcade |
Chunky pixels | Games |
mechanical |
Switches, relays | Devtools |
organic |
Wood, water | Education, kids |
dreamy |
Airy, slow | Creative tools |
scifi |
Holographic | AI tools |
rubber |
Elastic, playful | Casual apps |
cinematic |
Deep impacts | Media, games |
studio |
Tactile, restrained | AI creative tools |
zen |
Paper, wood, chime | Focus, reading (default) |
Preview every pack: https://uisfx.com
Settings
| Setting | Default | Description |
|---|---|---|
enabled |
true |
Master switch |
volume |
0.55 |
Volume 0-1 |
pack |
zen |
Global sound pack |
taskSounds |
true |
Task sounds |
clickSounds |
true |
Button sounds |
attentionSounds |
true |
Pending attention sounds |
mapping.* |
table above | Per-scenario cue |
All settings are written to Host settings.yaml:
dsh-plugin-uisfx:
enabled: true
volume: 0.55
pack: zen
Service API
Other dsh plugins can trigger sounds:
// play by scenario
ctx.uisfx.play('task.success')
ctx.uisfx.play('click.send')
ctx.uisfx.play('task.start')
// play a raw cue
ctx.uisfx.playCue('achievement')
ctx.uisfx.playCue('reward')
// preview from settings
ctx.uisfx.preview('success')
// read / update settings
ctx.uisfx.getPrefs()
ctx.uisfx.setPack('studio')
ctx.uisfx.setVolume(0.5)
There are 78 cues from uisfx:
hover / press / select / toggle-on / send / success / error / complete / achievement / ...
Architecture
- No audio files — embeds the uisfx 0.4.0 Web Audio synthesis runtime
- Lazy player — created on the first user gesture, respecting autoplay policies
- Task watcher — subscribes to
ctx.sessions.binding(current).session(running/pending/lastAgentError) - Click classifier — global pointerdown classifier maps semantics to scenarios
- Persistence — dedicated
/uisfx/api/settingsAPI backed by Host settings
FAQ
No sound?
- Settings → Sound Effects → enable sounds
- The browser may block autoplay: click anywhere on the page once
- Check the system volume and the dsh volume slider
No success / failure sound after a task?
- Only the current session plays task sounds
- Make sure
taskSoundsis enabled - Failure detection uses
lastAgentErrororturn-errornodes
Development
git clone https://github.com/<your-name>/dsh-plugin-uisfx.git
cd dsh-plugin-uisfx
pnpm install
pnpm build # generates lib/client.js / lib/index.js
pnpm check # syntax checks
Use a separate dev profile so restarts never interrupt your daily web:
dsh plugin --profile dev add ./dsh-plugin-uisfx
dsh --profile dev web --port 3090
Browser debug helpers:
window.__dshUISFX() // uisfx player
window.__dshUISFXDebug() // current prefs
Roadmap
- Task sounds + button sounds + settings UI + persistence
- All 12 packs and 78 cues selectable
- Background-session completion notifications
- Hover / drag / split sounds
- Per-scenario sound pack
- Custom audio uploads
License
- This plugin: MIT
- Embedded uisfx runtime: MIT, copyright Yuki Capital — see
NOTICEandvendor/uisfx-0.4.0.js
Related projects
- uisfx — the open-source sound system this plugin uses
- DSH-better-sidebar — a powerful dsh sidebar plugin
- dsh-navbar — conversation message navigation dots
If you find this plugin useful, give it a ⭐ and add the dsh-plugin topic to the repo.
Links
More in this category
PolinniZhong/dsh-omi-voice★ 74
In-chat read-aloud for DeepSeek Harness: tap to read, pause and resume AI replies with natural Doubao TTS voices (BYOK), reading only the final answer with code, tables and diagrams filtered; local engine, plugin keeps no API key.
PensiveFei/dsh-voice-scribe★ 34
Voice input for the web UI: tap Alt (or Alt+Space) to start/stop dictation, browser Web Speech (zero-config) or OpenAI-compatible cloud ASR, optional polish through DSH-configured LLM, settings UI.
1624318455/dsh-plugin-tts★ 21
Reads assistant replies aloud via free Edge TTS or your own RVC voice models: read-aloud buttons + auto-read, adaptive chunked progressive playback (gapless long reads), one-click voice-pack installs from a registry, and a portable RVC runtime.
WizisCool/dsh-ears★ 21
Voice input plugin for DeepSeek Harness (dsh): a microphone button in the composer turns speech into a draft transcript, with a choice of speech-recognition backends, optional polish through dsh own LLM routes, and a native settings page.
qishuilalala/dsh-voice-mode#dsh-voice-mode★ 15
Full-duplex voice mode for the DeepSeek Harness Web UI: toggle (2s-pause auto-send) or hold-to-talk dictation into an editable draft with zipformer2 streaming ASR, optional wake word; sentence-by-sentence Edge TTS read-aloud with live captions, and speaking interrupts playback and the running turn (true barge-in). On-device ASR, no API key.
PerryLink/dsh-talk★ 14
Voice I/O for DeepSeek Harness — speech-to-text and text-to-speech over the microphone and audio output.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.