# dsh-deep-whale

> DSH Web "Deep Sea Maid Workshop" theme skin: dual maid background, deep-sea blue lace UI, and chibi-style sidebar. Display layer only—takes effect upon activation, restores upon uninstall.

## Metadata

- Author: [@Small-tailqwq](https://github.com/Small-tailqwq)
- Repo: <https://github.com/Small-tailqwq/dsh-deep-whale.git>
- GitHub: [Small-tailqwq/dsh-deep-whale](https://github.com/Small-tailqwq/dsh-deep-whale)
- Stars: 1,240
- Language: TypeScript
- Topics: `dsh`, `dsh-plugin`
- Forks: 41
- Open Issues: 26
- Last push: 2026-08-17T11:10:30.000Z
- Added: 2026-08-16T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale
```

## Wiki

## One-Line Description
`dsh-deep-whale` is a whale girl theme skin series repository, currently including one "Deep Sea Maid Atelier" (maid-atelier) skin, used to transform the visual appearance of the DeepSeek Harness Web interface, unifying the chat background, sidebar, icons, and color scheme with deep sea blue + maid theme.

## Core Capabilities
- Replace chat area background with dual maid atelier scenes (light mode palace day scene / dark mode palace night scene auto-switch)
- Decorate collapsible sidebar: Q-version whale girl character, lace border, bottom decoration strip and navigation bar decoration
- Transform settings dialog, input box container, trace/inspection views, providing corresponding decoration frames and state hooks
- Replace browser favicon and window title bar (Web App header color set to deep sea blue)
- Embed 11 assets into client bundle (base64 data URI), activation does not rely on any remote URL/resource server/temp files
- Implement skin center mutual-exclusion switching and hot reload via dsh-skin, uninstall restores everything (DOM, CSS, title, theme-color all recovered)

## Technical Implementation
- **Language**: TypeScript (ESM + CJS dual output)
- **Key Dependencies**: `@deepseek-ai/cordis` ^4.0.1 (plugin host framework); `tsdown` 0.22.14 (build bundle); `lightningcss` ^1.32.0 (CSS Modules handling in tsdown plugin)
- **Architecture Pattern**: Client-only skin plugin. Only loaded in browser (`dsh.client.platform: web`), no host-side service, no Cordis events, no model requests; insert `ui-skin-maid-atelier` entry into web plugin whitelist via `cordis.patch.yml`, scheduled by skin center/dsh-skin mutual-exclusion
- **Entry Files**: `src/index.ts` (host-side stub, apply() is empty); `src/client/index.ts` (real apply(ctx), implements all DOM/CSS decorations and lifecycle management)

## Applicable Scenarios
Ordinary users who want DSH Web desktop to look less "tool-like" and enjoy 2D anime style. If you are using DSH 0.1.0-rc.6 or higher, want a network-independent static theme skin, and want to "add filters" to the original interface rather than modify functionality, this plugin is a suitable choice.

## Prerequisites and Compatibility
| Dependency | Min Version | Description |
|---|---|---|
| DSH | 0.1.0-rc.6+ | Source references rc.6 behavior (src/client/index.ts:562), skin center uses home-layer mutual-exclusion switching (cordis.patch.yml:4) |
| @deepseek-ai/cordis | ^4.0.1 | Injected by host at runtime, not directly installed in this repo (package.json:29, peerDependencies) |
| Platform | Cross-platform | Browser-side skin, depends on DOM and ResizeObserver/WCO API; not supported on Native shell side |
| Native Modules | None | All assets embedded as data URI into client.js, no native binaries needed |

## Installation
```bash
dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale
```

## Configuration
No additional configuration needed. Skin metadata is declared in `skin.json` within the repo (id/name/author/color scheme/preview/wiring), and after loading applies to body element via `data-dsh-maid-atelier` scope identifier (skin.json:17), with mutual-exclusion switching via skin center/dsh-skin (skin.json:19-22, wiring.id=`ui-skin-maid-atelier`). This plugin has no independent user-level config options.

## FAQ

**Q: Can this skin package be installed on DSH desktop client?**

A: No. `package.json` declares `dsh.client.platform: web` (package.json:21-22), skin only loads in browser; desktop shell goes through another host, this repo's skin cannot be mounted.

**Q: Can this skin coexist with official skin/other third-party skins?**

A: No. Skin center uses home-layer mutual-exclusion switching (cordis.patch.yml:4), its `wiring.id` is `ui-skin-maid-atelier`, only one skin can be active at a time.

**Q: After installation, interface has no changes and no errors, what to do?**

A: Skin needs to be enabled via Skin Center/dsh-skin check. Just packaging the plugin into DSH won't make apply() run; check maid-atelier in Skin Center as per README (maid-atelier/README.md:21).

**Q: Will the skin slow down DSH? Does it need network?**

A: No slowdown, no outbound connections. All 11 webp images (backgrounds, characters, decorations) are converted to data URI and embedded into `lib/client.js` by tsdown at build time (maid-atelier/README.md:8-11), no remote URL or resource server requested when activating skin.

**Q: What if browser doesn't have WebGL acceleration enabled?**

A: apply() will detect accelerated WebGL at startup (try webgl2 / webgl with `failIfMajorPerformanceCaveat`), if not available it adds `data-maid-low-power` identifier to body (src/client/index.ts:163-178, 402), CSS takes lighter CPU-safe path, visually slightly simplified but still usable.

**Q: Will uninstall leave garbage?**

A: No. apply() registers deactivator via `ctx.effect` (src/client/index.ts:349-391) which restores all body attributes, removes all `[data-skin-chrome]` nodes, restores body style, restores document.title, disconnects all MutationObserver / ResizeObserver / windowControlsOverlay listeners.

**Q: Can it be used commercially? Is attribution required?**

A: Not for commercial use, and full attribution chain must be preserved. Skin released under CC BY-NC-SA 4.0 (package.json:27), commercial use prohibited; attribution chain includes original work 上善, second creation ZipZipPipe, third creation Small-tailqwq (NOTICE:1-25).

## Difficulty Level
Beginner — Takes effect immediately after installation and enabling, no config or code changes needed; underlying icon/CSS/DOM decorations all automatically managed by apply().

## Known Issues and Limitations
- Occasional focus reset to previous folded state during "narrow search bar" expand/collapse instant in DSH 0.1.0-rc.6: This skin compatibility-handles this behavior via `requestAnimationFrame` re-delivering click and focus (src/client/index.ts:562-595); higher versions have built-in preservation, this path automatically becomes ineffective on newer versions.
- Browsers without WebGL acceleration or low-power devices: Decorative elements take simplified path, overall visual performance slightly weaker than full effect (src/client/index.ts:163-178, 402).
- Desktop packaged end (Native shell) cannot mount this skin: This repo only distributes Web end (package.json:21-22).
- Materials are secondary/tertiary derivative works, restricted by CC BY-NC-SA 4.0, not for commercial use, derivative works must share under same license (NOTICE:24-25).

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [dsh-deep-whale](https://deepseek-plugin.org/plugins/Small-tailqwq/dsh-deep-whale)
Wiki generated by AI (model: `MiniMax-M2.5`)
