Shelter
Immersive weather for DeepSeek Harness — rain, snow and hearth, with real recordings and a night mode.
Contents: Install · Usage · Audio · How it works · Development · Credits
What it is
Shelter is a thin layer of weather over the DeepSeek Harness web GUI. Rain leaves beads on the glass; snow drifts slowly outside; a fire glows under the composer.
It changes nothing about how DSH works — only the air you sit in while working. The entry point is a 28 px button in the bottom-right corner; the rest of the time it just rains, quietly.
Scenes
| Scene | What you see | Palette |
|---|---|---|
| Rain | Tapered streaks (no head blobs, no long tails), a field of droplets, small ripples where drops land | Cool blue-grey, deep navy shadows |
| Snow | Slow flakes, six-armed crystals up close, occasional glints, a soft bank at the bottom | Colder and whiter, icy-blue accents |
| Fire | A warm pulse from below, rising embers, sparks, slow smoke | Warm neutrals, amber accents |
Semantic colors (error red, success green, warning amber) are untouched in every scene.
Install
Requires DeepSeek Harness (desktop or web).
cd "$env:USERPROFILE\.dsh\profiles\desktop"
pnpm add "C:\path\to\dsh-theme-shelter"
Then append dsh-theme-shelter to dsh.profile.bundles in the profile package.json, and reload the window (Ctrl+R) or restart DSH.
Manual alternative — add to ~/.dsh/profiles/desktop/cordis.patch.yml:
- insert:
- id: theme-shelter
name: dsh-theme-shelter
Usage
Click the small button in the bottom-right corner:
| Control | Effect |
|---|---|
| Scene | rain / snow / fire / off |
| Intensity | light / medium / heavy |
| Palette | master switch for the theme colors; the animation keeps running |
| Lightning | rain only, every 7–22 s, with thunder |
| Sound | real recordings; browsers require one gesture first |
| Night | forces the dark palette plus a moonlight wash |
Settings live in localStorage["dsh-theme-shelter/v2"] and survive reloads.
Console API:
__dshWeather.setScene("fire") // rain · snow · fire · none
__dshWeather.setIntensity(2) // 1 light / 2 medium / 3 heavy
__dshWeather.setPalette(false) // animation only, default colors
__dshWeather.setSound(true)
__dshWeather.setNight(false)
__dshWeather.reset()
Audio
Three recordings (about 7.7 MB). The host half serves them read-only at /dsh-theme-shelter/audio/* with Range (206), HEAD, a one-year immutable cache, and a 403 for cross-origin Origin. Snow reuses the rain loop at a lower volume.
How it works
- Colors —
ctx.theme.overrideTokens()overrides 47--dsw-alias-*tokens: surfaces, text, borders, code blocks, scrollbars. Button fills, brand colors, links and focus rings are deliberately left alone. - Picture — one fixed full-screen canvas with a particle system per scene, drawn from pre-rendered sprites.
- Audio — a host-only read route plus
<audio>on the client, fading out and releasing between scenes. - Cost — particle counts scale with viewport area and are capped; DPR is capped at 2; rendering pauses in a hidden window;
prefers-reduced-motiondraws a single static frame.
Development
preview/preview.html is a standalone harness: it fakes the module loader and ctx.theme, so you can open it directly to see all three scenes, night mode and the panel.
The profile links this package with link:, so editing client/client.js only needs a DSH restart.
Known limitations
- Night mode does not write your appearance preference, so Settings still shows the light/dark you picked;
- The overlay sits above the whole window, so dialogs and menus collect rain too (at very low opacity);
- Product icons are not replaceable — that needs a registered theme;
- Audio comes from Pixabay (see Credits); keep the source note when you reuse it.
Credits
The ambience recordings come from Pixabay and are used under the Pixabay Content License: free for commercial and non-commercial use, no attribution required, but the files may not be redistributed as standalone assets. They are bundled here as part of a larger work.
| File | Use |
|---|---|
audio/rain.mp3 |
rain loop (reused for snow at a lower volume) |
audio/fire.mp3 |
hearth loop |
audio/thunder.mp3 |
one-shot thunder after a flash |
Drop a replacement with the same filename into audio/ to swap a sound.
License
MIT © ifer47
No comments yet. Be the first to write one.