Bundle
dsh-particle-whale
DeepSeek official 3D Three.js particle whale animation for DeepSeek Harness / DSH Desktop
- Source
- zepeng-jin
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 14 days ago
Readme
# dsh-particle-whale 🐳
> [English](./README.md) | [简体中文](./README.zh-CN.md)
A native Three.js 3D particle whale background plugin for [DeepSeek Harness (DSH)](https://github.com/deepseek-ai) and DSH Desktop.
Recreated with authentic WebGL shaders, full-screen forward fluid locomotion, volumetric 3D particle distribution, and real-time reactive state hooks.
---
## Features
- **Volumetric 3D Particle Mesh**: Uses distance-transform mapping to turn DeepSeek's 2D vector silhouette into a full 3D spindle body with curved dorsal/belly thickness, surface normals, specular highlights, and Fresnel rim glow.
- **Head-First Forward Swimming**: True aquatic locomotion where the head guides the heading and traveling waves propagate down the spine to the flukes. Banks smoothly into turns across the full window.
- **Reactive Agent State**:
- **Idle**: Calm, full-screen widescreen cruise (`1.05x scale`, `1.1x speed`) with subtle tail undulation.
- **Active (Thinking / Streaming / Tool execution)**: Smoothly swims to the **top-right corner**, scales down into a mini companion indicator (`0.45x scale`), and orbits with high-energy bioluminescent pulse waves.
- **New Session Scatter Effect**: Triggers a clean nebula explosion and reassembly animation only when creating a new session (`Cmd+N` / `Ctrl+N` or clicking the "New Chat" button). Casual clicks are ignored to keep reading undisturbed.
- **Frosted Glass Composer**: Adds an 88% translucent frosted glass finish (`backdrop-filter: blur(20px)`) to the chat input card so the whale swims visibly underneath without affecting text contrast.
- **Dark / Light Theme Adaptive**: Silver-cyan glowing particles with additive blending in dark mode; high-contrast deep sapphire particles in light mode.
- **Settings Panel Integration**: Plugs directly into DSH Desktop's General Settings page with a native toggle switch and local state persistence.
- **High Performance (60–120 FPS)**: `pointer-events: none` overlay, precomputed jitter buffers, instanced mesh rendering, and decoupled async state polling.
---
## Directory Structure
```text
dsh-particle-whale/
├── package.json # Cordis client injection manifest
├── cordis.patch.yml # Cordis kernel plugin patch
├── build.mjs # esbuild bundler (inlines Three.js runtime)
├── src/
│ └── client.ts # WebGL rendering pipeline, physics & UI store
├── lib/
│ ├── index.js # Host entry (empty for client-only plugins)
│ └── client.js # Production bundle (zero runtime dependencies)
├── README.md
└── LICENSE
```
---
## Quick Start
### Option 1: Symlink (Recommended for local dev & testing)
1. Open the DSH Desktop web profile `node_modules` directory:
```bash
cd ~/Library/Application\ Support/dsh-desktop/harness/profiles/web/node_modules
```
2. Symlink this project:
```bash
ln -s /path/to/dsh-particle-whale dsh-particle-whale
```
3. Register the plugin in `~/Library/Application Support/dsh-desktop/harness/profiles/web/package.json`:
```json
{
"dependencies": {
"dsh-particle-whale": "*"
},
"dsh": {
"profile": {
"bundles": [
"dsh-particle-whale"
]
}
}
}
```
4. Launch or reload **DSH Desktop** (`Cmd+R`).
---
### Option 2: Install via npm
```bash
cd ~/Library/Application\ Support/dsh-desktop/harness/profiles/web
npm install dsh-particle-whale
```
---
## Development & Building
To modify the shaders, kinematics, or UI components:
```bash
# Install build dependencies
npm install
# Compile src/client.ts -> lib/client.js
npm run build
```
---
## License
[MIT](./LICENSE) © 2026
Install
dsh plugin --profile web add github:zepeng-jin/dsh-particle-whale
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-particle-whale from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.