Sakura theme, companion notifications (approval/job/answer), message read-aloud, and voice settings for the DSH web GUI.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:w4xxx/dsh-xia-plugins#path:/packages/client-game-assistant
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
Overview
The Web UI layer of the “Xia” game-dev assistant: a permanent sakura theme (token override), a time-aware composer charm, a pointer-transparent petal overlay, plus companion notifications and TTS — approval-request reminders, background-job completion reminders, answer-done reminders, message read-aloud buttons, and voice settings (per-character voice / default voice / custom TTS endpoint).
This package is pure UI/interaction (its Host
applyis empty) and provides no agent backend;/gameassist/voice-mapdata comes from the companion@w4xxx/dsh-gameassist-roster.
Install
This package is not published to npm yet; this repository distributes source under the project's own @w4xxx scope. Mount as a Web bundle:
- insert:
- id: ui-game-assistant
name: '@w4xxx/dsh-client-game-assistant'
Build: pnpm --filter @w4xxx/dsh-client-game-assistant run bundle (or pnpm run build:lib:client from the repo root); hard-refresh the browser (Ctrl+F5) after changes.
Configuration
No mount-time config; preferences live in browser localStorage:
| Key | Contents |
|---|---|
dsh.gameassist.voice.v1 |
Default voice preference (TTS endpoint/voice/rate/pitch) |
dsh.gameassist.role-voice.v1 |
Per-day character-voice override (auto-rolls back next day) |
Features
- Sakura theme: overrides
:roottheme tokens (game-assistant-permanent), permanent. - Composer charm: time-aware widget in the input bar.
- Petal layer:
shell.overlay, pointer-transparent decoration. - Approval reminders: chime while an approval is pending, repeats every 20 s; auto-cancels the turn after 120 s without an answer.
- Job-done reminders: notify once per background job reaching a terminal state (completed/failed/killed).
- Answer-done reminders: fire when
runninggoes true→false and the turn count grows (guards against historical replay). - Read-aloud: speaker buttons on assistant/user messages via the speakText pipeline: custom endpoint → today's character voice → default voice.
- Voice settings: two sections in
settings.section— character voice (today only) and default voice; supports a custom open-source TTS endpoint (e.g.http://127.0.0.1:9880/tts, POST{text}returns audio).
Data & security
- Voice preferences stay in browser localStorage only (per machine/browser); nothing server-side.
- TTS requests go to the endpoint you configure (same-origin or CORS-allowed); the text is sent to that endpoint.
- Reminders/roster copy depends on roster's
/gameassist/voice-map; without the roster plugin these features degrade.
Development
pnpm exec vitest run packages/client/game-assistant/tests/apply.client.spec.ts
(jsdom environment; asserts inject theme/slots/sessions and registration behavior.)
Known limitations
- TTS depends on the host browser and CORS; the custom endpoint's protocol must match.
- The “today's character” voice override is localStorage-scoped and does not sync across devices.
- The 120 s approval auto-cancel is per-turn semantics, not a global setting.
License
MIT (final terms per the standalone repo's LICENSE/NOTICE).
Links
More in this category
Small-tailqwq/dsh-deep-whale#maid-atelier★ 2623
Whale-girl skin series for the DSH Web UI (maid-atelier).
elysia395/dsh-wallpaper-engine★ 1354
Requires DeepSeek Harness 0.1.5-rc.1+ (DSH Desktop >= 2.0.7) and dsh-better-sidebar >= 0.19.0 - update both before installing or updating this plugin. Plays local Wallpaper Engine Video/Web wallpapers behind the chat, renders Scene wallpapers as extracted static frames, and adds content-rating/type filters, custom uploads and an iOS-style liquid-glass settings window.
d-dev0101/open-sea-skin★ 394
Realtime WebGPU ocean skin with quick controls for waves, daylight, glass opacity, and an automatic day cycle.
RevolutionLA/dsh-dream-skin★ 243
One-command skin plugin: 8 original themes, translucent wallpaper with opacity/blur, per-user accent, and shareable theme-pack import/export, favorites and surprise-me — purely native on DSH's token system.
kingOfSoySauce/dsh-liang-skin★ 242
Adaptive reasoning slider skin that maps each model's available reasoning efforts onto a 0–30 visual intensity scale, with synchronized portraits, background, and interface colors.
Nwflower/dsh-claude-style★ 165
Claude Code Desktop look-and-feel for the DSH Web GUI — ivory/warm-black dual canvas, clay accent, three-font typography, permission segmented control and brand switcher, via CSS overrides and client DOM overrides.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.