dsh-dream-skin 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +351 -0
- package/README.en.md +56 -19
- package/README.es.md +347 -0
- package/README.fr.md +347 -0
- package/README.ja.md +347 -0
- package/README.ko.md +347 -0
- package/README.md +53 -20
- package/README.ru.md +347 -0
- package/docs/examples/sample-theme-pack.json +22 -0
- package/docs/previews/abyss.svg +14 -0
- package/docs/previews/aurora.svg +14 -0
- package/docs/previews/ember.svg +14 -0
- package/docs/previews/ivory.svg +14 -0
- package/docs/previews/midnight.svg +14 -0
- package/docs/previews/mist.svg +14 -0
- package/docs/previews/nebula.svg +14 -0
- package/docs/previews/rose.svg +14 -0
- package/docs/screenshots/preview.png +0 -0
- package/docs/screenshots/settings.png +0 -0
- package/docs/themes-spec.md +82 -0
- package/lib/client.js +2805 -2437
- package/package.json +15 -4
package/README.de.md
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="./README.md">中文</a> · <a href="./README.en.md">English</a> · <a href="./README.ja.md">日本語</a> · <a href="./README.ko.md">한국어</a> · <a href="./README.es.md">Español</a> · <a href="./README.fr.md">Français</a> · <strong>Deutsch</strong> · <a href="./README.ru.md">Русский</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<div align="center">
|
|
6
|
+
|
|
7
|
+
# dsh-dream-skin 🔮
|
|
8
|
+
|
|
9
|
+
**Gib DeepSeek Harness ein Gesicht, das atmet, fühlt und dir gehört.**
|
|
10
|
+
|
|
11
|
+
Natives Skinning · Wallpaper · teilbare Theme-Pakete — ein mit Leidenschaft entwickeltes Projekt, das vollständig auf DSHs offiziellem `--dsw-*`-Token-System basiert.
|
|
12
|
+
|
|
13
|
+
> **TL;DR: coden mit Atmosphäre.** ✨
|
|
14
|
+
|
|
15
|
+
| 🎨 8 Original-Themes | 🖼️ Wallpaper + Deckkraft/Unschärfe | 🌈 Akzent mit einem Klick | 📦 teilbare Theme-Pakete |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
|
|
18
|
+
> 1-Zeilen-Installation · rein nativ (keine Injektion, keine Installer-Patches) · übersteht DSH-Updates
|
|
19
|
+
|
|
20
|
+
[中文](./README.md) · [Änderungshistorie](./CHANGELOG.md) · [Projektnotizen](./docs/PROJECT.md) · [Veröffentlichungsanleitung](./docs/publishing-to-npm.md)
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+

|
|
24
|
+
[](https://awesome-dsh-plugin.com)
|
|
25
|
+

|
|
26
|
+

|
|
27
|
+
-4f83f2)
|
|
28
|
+

|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
## ⚡ Installation mit einer Zeile
|
|
34
|
+
|
|
35
|
+
**Kopiere diesen Satz in dein DSH und es installiert alles für dich:**
|
|
36
|
+
|
|
37
|
+
> Bitte installiere das Skin-Plugin dsh-dream-skin (https://github.com/RevolutionLA/dsh-dream-skin, oder das npm-Paket `dsh-dream-skin`) und sage mir dann, wie ich DSH Web neu starten kann.
|
|
38
|
+
|
|
39
|
+
Lieber die CLI? Ein Befehl:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
dsh plugin --profile web add dsh-dream-skin && dsh web
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
> 🚀 **Jetzt auf npm!** Bei installiertem DSH fügst du es mit einem einzigen Befehl hinzu — kein Klonen nötig.
|
|
46
|
+
|
|
47
|
+
> **Eine Hommage an [Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin).** Aber der Ansatz ist anders:
|
|
48
|
+
> Codex injiziert CSS über CDP in den Renderer des Desktop-Clients, während DSH eine **token-gesteuerte Web-GUI** ist,
|
|
49
|
+
> die „Third-Party-Plugins, die Themes registrieren“ erstklassig unterstützt. Dieses Plugin ist daher **rein nativ** —
|
|
50
|
+
> keine Injektion, keine Binär-Patches, und es bricht nicht bei Client-Updates.
|
|
51
|
+
>
|
|
52
|
+
> **Kein offizielles Produkt.** Nur eine Möglichkeit, deinen DeepSeek-Harness-Arbeitsbereich aufzumöbeln.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 📸 Screenshots
|
|
57
|
+
|
|
58
|
+
> Echte Screenshots, keine Mockups. Links: DSH nach dem Anwenden eines Skins; rechts: der dedizierte Bereich **Theme / Appearance** in den Einstellungen.
|
|
59
|
+
|
|
60
|
+
<p align="center">
|
|
61
|
+
<img src="docs/screenshots/preview.png" alt="DSH skin preview" width="46%"/>
|
|
62
|
+
|
|
63
|
+
<img src="docs/screenshots/settings.png" alt="Theme section in settings" width="46%"/>
|
|
64
|
+
</p>
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 🏆 Warum es einen Stern verdient (im Vergleich zu Alternativen)
|
|
69
|
+
|
|
70
|
+
| Funktion | Unseres | Anderes DSH-Skinning | Codex-Dream-Skin (Desktop) |
|
|
71
|
+
|------|:---:|:---:|:---:|
|
|
72
|
+
| Native Token-Themes — keine Injektion, keine Installer-Patches | ✅ | ✅ | ❌ (CDP-Injektion) |
|
|
73
|
+
| Eigenes Wallpaper + Deckkraft/Unschärfe | ✅ | teilweise | ✅ |
|
|
74
|
+
| **Theme-Paket-Import/-Export + Share-Links** | ✅ | ❌ | ✅ (Zip-Pakete) |
|
|
75
|
+
| **Akzent-Override pro Benutzer** | ✅ | ❌ | teilweise |
|
|
76
|
+
| **Wallpaper 2.0 (URL / Verlauf / Vorschlag pro Skin / automatisches Abdunkeln)** | ✅ | ❌ | ✅ |
|
|
77
|
+
| Lokale Paketbibliothek + Favoriten + Überrasche-mich | ✅ | ❌ | teilweise |
|
|
78
|
+
| Validierung + Rollback | ✅ | teilweise | ✅ |
|
|
79
|
+
| **Browser-Web-GUI, nativ plattformübergreifend** | ✅ | ✅ | ❌ (braucht Desktop-App) |
|
|
80
|
+
|
|
81
|
+
## ✨ Funktionen
|
|
82
|
+
|
|
83
|
+
| Funktion | Beschreibung |
|
|
84
|
+
|------------|-------------|
|
|
85
|
+
| 🎨 **8 enthaltene Presets (Mirage)** | Sofort umschalten unter **Settings → Theme / Appearance**, hell & dunkel |
|
|
86
|
+
| 🖼️ **Eigenes Wallpaper** | Lokales Bild wählen (automatisch komprimiert ≤2 MB), **Deckkraft / Unschärfe** einstellen |
|
|
87
|
+
| 🔤 **Undurchsichtige Innenflächen** | Karten, Eingabefelder und Nachrichtenblasen bleiben lesbar — niemals ausgewaschen |
|
|
88
|
+
| ↩️ **Standard wiederherstellen** | Mit einem Klick zurück zur integrierten Darstellung von DSH (System folgen) |
|
|
89
|
+
| 💾 **Lokale Speicherung** | Skin & Wallpaper werden in `localStorage` gespeichert und überstehen ein Neuladen |
|
|
90
|
+
|
|
91
|
+
## 🚀 Erweiterte Funktionen (P0)
|
|
92
|
+
|
|
93
|
+
Die Abgrenzung ist inspiriert von bestehenden DSH-Skin-Projekten und der Skin-UX von Codex:
|
|
94
|
+
|
|
95
|
+
| Funktion | Beschreibung |
|
|
96
|
+
|------------|-------------|
|
|
97
|
+
| 📦 **Theme-Paket-Format + Import/Export** | Ein `*.dsh-theme.json`-Paket = Format-Marker + Version + Manifest (id/name/author/scheme/accent/tokens). Datei importieren, mit einem Klick anwenden und einen **Share-Link** kopieren (im URL-Hash kodiert) |
|
|
98
|
+
| 🌈 **Akzent pro Benutzer** | Ein eigenes Marken-Akzent über den aktiven Skin legen (`overrideTokens`-Ebene, der Skin bleibt unangetastet): **12 Preset-Farbfelder mit einem Klick**, ein Farbwähler, **Zufallsfunktion** und Zurücksetzen |
|
|
99
|
+
| 🖼️ **Wallpaper 2.0** | Lokales Bild / **Bild-URL** / **Verlaufs-Presets**, mit einem **pro Skin vorgeschlagenen Verlauf** und **automatischem Abdunkeln**; **Zuletzt verwendet** (bis zu 5), um mit einem Klick zurückzuschalten |
|
|
100
|
+
| 🧩 **Lokale Paketbibliothek** | Deine importierten Theme-Pakete an einem Ort; **anwenden / favorisieren / entfernen** mit einem Klick (die 8 integrierten Skins liegen in der Skin-Reihe) |
|
|
101
|
+
| ✅ **Klares Auswahl-Feedback** | Beim Wechseln der Skins wird die Markierung (Häkchen/Rahmen) **sofort** aktualisiert — keine veraltete weiße Markierungsbox |
|
|
102
|
+
| 🎲 **Überrasche mich** | Zufällig zu einem Theme wechseln, das sich vom aktuellen unterscheidet |
|
|
103
|
+
| ⭐ **Favoriten** | Markiere deine Lieblings-Skins mit einem Stern und wechsle schnell zwischen ihnen |
|
|
104
|
+
| ✅ **Validierung + Rollback** | Der Paket-Import validiert Format / erforderliche Tokens / Farbzulässigkeit; Fehler oder Entfernungen fallen sicher zurück |
|
|
105
|
+
|
|
106
|
+
## ⚡ Schnellstart (3 Schritte)
|
|
107
|
+
|
|
108
|
+
```sh
|
|
109
|
+
# 1. installieren
|
|
110
|
+
dsh plugin --profile web add dsh-dream-skin
|
|
111
|
+
# 2. neu starten
|
|
112
|
+
dsh web
|
|
113
|
+
# 3. Settings → Theme / Appearance öffnen → Skin wählen → fertig.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
> Installiert das veröffentlichte npm-Paket — kein Klonen nötig. Wenn `dsh plugin add` einen Workspace-Fehler meldet, hänge `-w` an.
|
|
117
|
+
|
|
118
|
+
## 🧩 Was für ein Plugin ist das
|
|
119
|
+
|
|
120
|
+
**Ein standardmäßiges Dual-Face-`dsh-plugin` nach dem Prinzip „Alles ist ein Plugin“ — geladen und verwendet genau wie das offizielle Paket `ui-theme`.**
|
|
121
|
+
|
|
122
|
+
Das Motto von DeepSeek Harness lautet *Alles ist ein Plugin*: Modelle, Tools, Sandboxes, Sessions, UI, sogar der Agent
|
|
123
|
+
Loop selbst sind Plugins. `dsh-dream-skin` liefert Skinning als npm-Paket, das **isomorph zu den offiziellen
|
|
124
|
+
UI-Paketen** ist:
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
┌──────────── dsh-dream-skin (standard dsh-plugin / dual-face) ─────────────┐
|
|
128
|
+
│ dsh.bundle → cordis.patch.yml inserts the dream-skin entry (host half)│
|
|
129
|
+
│ dsh.client → lib/client.js (browser bundle) (browser half)│
|
|
130
|
+
└───────────────────────────────────────────────────────────────────────────┘
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- **Installationsbefehl = der offizielle**: `dsh plugin --profile web add dsh-dream-skin`
|
|
134
|
+
- **Nutzt offizielle Erweiterungspunkte**: `ctx.theme` (Themes registrieren), `ctx.theme.overrideTokens` (Override-Ebenen),
|
|
135
|
+
`ctx.slots` (UI in einen dedizierten Bereich **Settings → Theme / Appearance** einhängen).
|
|
136
|
+
- **Manifest-Vertrag entspricht den offiziellen Paketen**: `dsh.bundle` + `dsh.client` + `exports["./client"]`.
|
|
137
|
+
|
|
138
|
+
Mit anderen Worten: Du installierst kein Randskript — das ist ein Standard-Skin-Plugin im offiziellen Plugin-System
|
|
139
|
+
von DSH.
|
|
140
|
+
|
|
141
|
+
## 🖼️ Vorschau — die Mirage-Serie
|
|
142
|
+
|
|
143
|
+
> Die Vorschauen unten werden aus den **echten Tokens** jedes Skins generiert — was du siehst, ist, was du bekommst.
|
|
144
|
+
|
|
145
|
+
<table>
|
|
146
|
+
<tr>
|
|
147
|
+
<td align="center"><img src="docs/previews/abyss.svg" width="220" alt="abyss"/><br/><b>abyss</b></td>
|
|
148
|
+
<td align="center"><img src="docs/previews/aurora.svg" width="220" alt="aurora"/><br/><b>aurora</b></td>
|
|
149
|
+
<td align="center"><img src="docs/previews/nebula.svg" width="220" alt="nebula"/><br/><b>nebula</b></td>
|
|
150
|
+
<td align="center"><img src="docs/previews/ember.svg" width="220" alt="ember"/><br/><b>ember</b></td>
|
|
151
|
+
</tr>
|
|
152
|
+
<tr>
|
|
153
|
+
<td align="center"><img src="docs/previews/midnight.svg" width="220" alt="midnight"/><br/><b>midnight</b></td>
|
|
154
|
+
<td align="center"><img src="docs/previews/ivory.svg" width="220" alt="ivory"/><br/><b>ivory</b></td>
|
|
155
|
+
<td align="center"><img src="docs/previews/mist.svg" width="220" alt="mist"/><br/><b>mist</b></td>
|
|
156
|
+
<td align="center"><img src="docs/previews/rose.svg" width="220" alt="rose"/><br/><b>rose</b></td>
|
|
157
|
+
</tr>
|
|
158
|
+
</table>
|
|
159
|
+
|
|
160
|
+
## 🎲 Die Presets
|
|
161
|
+
|
|
162
|
+
| id | scheme | vibe |
|
|
163
|
+
|------|--------|------|
|
|
164
|
+
| `abyss` | 🕶️ dunkel | DeepSeek tiefblauer Abgrund (Anker) |
|
|
165
|
+
| `aurora` | 🌌 dunkel | Aurora-Türkisgrün |
|
|
166
|
+
| `nebula` | 🪐 dunkel | kosmisches Lila |
|
|
167
|
+
| `ember` | 🔥 dunkel | warmes Glut-Orange |
|
|
168
|
+
| `midnight` | 🌚 dunkel | reines Schwarz (OLED) |
|
|
169
|
+
| `ivory` | 📜 hell | warmes Elfenbein / Papier |
|
|
170
|
+
| `mist` | 🌫️ hell | kühler Blauer Nebel |
|
|
171
|
+
| `rose` | 🌸 hell | Rosarot / Blush |
|
|
172
|
+
|
|
173
|
+
## 📦 Installation
|
|
174
|
+
|
|
175
|
+
Wähle eine der vier Optionen und starte dann **DSH Web neu** (die aktuelle Sitzung wird unterbrochen, aber DSH-Sitzungen
|
|
176
|
+
werden auf der Festplatte gespeichert und nach dem Neustart wiederhergestellt).
|
|
177
|
+
|
|
178
|
+
### Option A: Von npm (veröffentlicht, **empfohlen**)
|
|
179
|
+
|
|
180
|
+
```sh
|
|
181
|
+
dsh plugin --profile web add dsh-dream-skin
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Option B: Von GitHub (an einen verifizierten Commit gebunden)
|
|
185
|
+
|
|
186
|
+
```sh
|
|
187
|
+
dsh plugin --profile web add 'github:RevolutionLA/dsh-dream-skin#<40-char-commit>'
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
> Die Bindung an den Commit eines Releases bedeutet, dass neue Änderungen auf `main` deine installierte Kopie niemals stillschweigend verändern.
|
|
191
|
+
|
|
192
|
+
### Option C: Vom Release-Tarball (offline / ohne git)
|
|
193
|
+
|
|
194
|
+
Lade `dsh-dream-skin-<version>.tgz` von der Seite [Releases](https://github.com/RevolutionLA/dsh-dream-skin/releases)
|
|
195
|
+
herunter (das Paket enthält das gebaute `lib/client.js`, sodass beim Installieren kein Prepare-Skript ausgeführt wird), dann:
|
|
196
|
+
|
|
197
|
+
```sh
|
|
198
|
+
dsh plugin --profile web add ./dsh-dream-skin-<version>.tgz
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Option D: Klonen und aus dem lokalen Pfad installieren (Entwicklung)
|
|
202
|
+
|
|
203
|
+
```sh
|
|
204
|
+
git clone https://github.com/RevolutionLA/dsh-dream-skin.git
|
|
205
|
+
cd dsh-dream-skin
|
|
206
|
+
dsh plugin --profile web add .
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
> `dsh plugin` verankert relative Pfade im Verzeichnis, **in dem du den Befehl ausführst**, und installiert eine
|
|
210
|
+
> Link-Abhängigkeit, die auf deinen Klon zeigt: Quelle bearbeiten, speichern, DSH neu starten — keine Neuinstallation nötig.
|
|
211
|
+
|
|
212
|
+
**Neu starten und überprüfen:**
|
|
213
|
+
|
|
214
|
+
```sh
|
|
215
|
+
dsh web
|
|
216
|
+
dsh --profile web --dump-config | grep -A2 dream-skin # a dream-skin loader entry should appear
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Öffne **Settings → Theme / Appearance**, um die Reihen **Skins**, **Accent**, **Wallpaper** / **Advanced Wallpaper** und **Theme Packs** zu sehen.
|
|
220
|
+
|
|
221
|
+
> Das Flag `-w` (Workspace) wird bei einem einfachen `add` benötigt, weil jedes Profil eine `pnpm-workspace.yaml` mitbringt; pnpm behandelt
|
|
222
|
+
> das Profilverzeichnis als Workspace-Root, daher schlägt ein einfaches `add` mit `ERR_PNPM_ADDING_TO_ROOT` fehl. Wenn dein Profil bereits
|
|
223
|
+
> den Workspace nutzt, musst du es nicht wiederholen.
|
|
224
|
+
|
|
225
|
+
## 🔄 Aktualisieren / Deinstallieren
|
|
226
|
+
|
|
227
|
+
**Auf die neueste Version aktualisieren** (wenn aus dem npm-Release installiert):
|
|
228
|
+
|
|
229
|
+
```sh
|
|
230
|
+
dsh plugin --profile web update dsh-dream-skin
|
|
231
|
+
dsh web # restart to pick it up
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
> Hängst du nach einem Update an einer alten Version fest? Die Minimum-Release-Alter-Richtlinie (Supply-Chain) von pnpm kann ein
|
|
235
|
+
> frisch veröffentlichtes Release zurückhalten. Führe im Profilverzeichnis aus:
|
|
236
|
+
> `pnpm add dsh-dream-skin@latest --config.minimumReleaseAge=0`, um es zu erzwingen.
|
|
237
|
+
|
|
238
|
+
**Deinstallieren:**
|
|
239
|
+
|
|
240
|
+
```sh
|
|
241
|
+
dsh plugin --profile web remove dsh-dream-skin
|
|
242
|
+
dsh web # restores the official appearance
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## 🧩 Kompatibilität
|
|
246
|
+
|
|
247
|
+
| Punkt | Wert |
|
|
248
|
+
|------|-------|
|
|
249
|
+
| DeepSeek Harness (`dsh`) | `0.1.0-rc.6` (peerDependencies auf `^0.1.0-rc.6` festgelegt) |
|
|
250
|
+
| Node.js | `>=18` |
|
|
251
|
+
| Browser | modernes Chromium / WebKit (native CSS-Variablen & `matchMedia`) |
|
|
252
|
+
|
|
253
|
+
> Beim Upgraden von DSH die `peerDependencies` in `package.json` entsprechend anheben.
|
|
254
|
+
|
|
255
|
+
## ⚙️ So funktioniert es
|
|
256
|
+
|
|
257
|
+
Das Theme-System von DSH ist token-basiert: Die Web-Shell liefert `--dsw-*`-Design-Tokens, und `ThemeRuntime` erlaubt
|
|
258
|
+
Drittanbieter-Plugins, Themes zu registrieren, die die Alias-Ebene (`--dsw-alias-*`) überschreiben. Dieses Paket ist ein
|
|
259
|
+
standardmäßiges Dual-Face-Plugin:
|
|
260
|
+
|
|
261
|
+
```text
|
|
262
|
+
┌─────────────────────────────────────────────┐
|
|
263
|
+
│ dsh-dream-skin (dual-face plugin) │
|
|
264
|
+
├────────────────────────────┬────────────────┤
|
|
265
|
+
Host half │ lib/index.js │ Browser half │
|
|
266
|
+
│ cordis.patch.yml inserts │ lib/client.js │
|
|
267
|
+
│ dream-skin loader entry │ __ModuleLoader__│
|
|
268
|
+
└────────────────────────────┴────────────────┘
|
|
269
|
+
│ │
|
|
270
|
+
profile tree loaded /plugins/dsh-dream-skin/client.js
|
|
271
|
+
│
|
|
272
|
+
┌────────────────────────────────┬────────────────┐
|
|
273
|
+
│ │ │
|
|
274
|
+
ctx.theme.register(8 skins) ctx.theme.overrideTokens(wallpaper) ctx.slots.inject('settings.section' + 'settings.dreamSkin.item')
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
- **Host-Hälfte** (`lib/index.js`) — eine `dsh.bundle`-Patch-Ebene, die den `dream-skin`-Loader-Eintrag einfügt; `apply` ist
|
|
278
|
+
ein No-op, genau wie bei den mitgelieferten `ui-*`-Paketen.
|
|
279
|
+
- **Browser-Hälfte** (`lib/client.js`):
|
|
280
|
+
1. registriert die 8 Skins über `ctx.theme.register(...)`;
|
|
281
|
+
2. stellt den gespeicherten Skin wieder her und wendet ihn mit `ctx.theme.setTheme(...)` an;
|
|
282
|
+
3. rendert das Wallpaper als festen Hintergrund mit `z-index:-1` und stapelt `ctx.theme.overrideTokens(...)`, wodurch die
|
|
283
|
+
Hauptfläche (`--dsw-alias-bg-base`) und die Seitenleiste (`--dsw-specific-sidebar-fill`) durchscheinend werden;
|
|
284
|
+
4. lauscht auf `theme/change` und färbt den Wallpaper-Wash beim Wechsel von Skin / Schema neu ein;
|
|
285
|
+
5. registriert einen dedizierten Bereich **Settings → Theme / Appearance** (`settings.section`) und hängt die fünf
|
|
286
|
+
Funktionsreihen in den Slot `settings.dreamSkin.item` ein.
|
|
287
|
+
|
|
288
|
+
Jeder Skin trägt sein `colorScheme` (`light`/`dark`), das `body[data-ds-dark-theme]` steuert; die Alias-Token-Overrides
|
|
289
|
+
werden von ThemePresenter von ui-layout als Inline-Custom-Properties auf `<body>` angewendet.
|
|
290
|
+
|
|
291
|
+
## 💼 Hinweise zur Speicherung
|
|
292
|
+
|
|
293
|
+
- Skin & Wallpaper werden in `localStorage` gespeichert (Schlüssel mit Präfix `dsh-dream-skin:`), **pro Browser**.
|
|
294
|
+
- Warum nicht die Host-Einstellungen? Die Host-Einstellungs-Schnittstelle legt Browser-Clients nur eine auf die Whitelist
|
|
295
|
+
gesetzte Auswahl von Namespaces offen (`WEB_SETTINGS_NAMESPACES` in `dsh-host-apiproxy`), daher würde ein
|
|
296
|
+
Drittanbieter-Namespace mit `settings-not-exposed` antworten; das Produkt selbst hält Remote-Browser-Einstellungen
|
|
297
|
+
prozesslokal. `localStorage` entspricht dieser Grenze und übersteht Neuladen.
|
|
298
|
+
|
|
299
|
+
## 🛠️ Entwicklung / Themes erweitern
|
|
300
|
+
|
|
301
|
+
Das Client-Bundle ist direkt im `__ModuleLoader__`-Format geschrieben (dieselbe Form, die tsdown für die mitgelieferten
|
|
302
|
+
`ui-*`-Pakete erzeugt), daher ist **kein Build-Schritt** erforderlich. `lib/client.js` darf nur Module-Table-Entitäten
|
|
303
|
+
`require`n: Plattform-Seeds (`react`, `react/jsx-runtime`, …) und registrierte Client-Bundles
|
|
304
|
+
(`@deepseek-ai/dsh-client-runtime/client`, …).
|
|
305
|
+
|
|
306
|
+
- **Einen integrierten Skin hinzufügen**: Füge dem `SKINS`-Array in `lib/client.js` ein Objekt (`id` + `colorScheme` +
|
|
307
|
+
`tokens`) hinzu; es erscheint dann automatisch in den Einstellungen. Füge einen Schlüssel `skin.<id>` in **allen 8 Sprachwörterbüchern** (`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`) hinzu.
|
|
308
|
+
|
|
309
|
+
- **Ein Theme-Paket ausliefern (empfohlen)**: Folge [`docs/examples/sample-theme-pack.json`](./docs/examples/sample-theme-pack.json) —
|
|
310
|
+
eine `*.dsh-theme.json` ist in den Einstellungen importierbar und über einen Link teilbar, ohne Codeänderungen.
|
|
311
|
+
- **Eigene Wallpaper hinzufügen**: Lege Bilder in [`wallpapers/`](./wallpapers/) ab (verbreite nur, wofür du die Rechte
|
|
312
|
+
hast) und importiere sie dann über die „Wallpaper“-Reihe von DSH.
|
|
313
|
+
- **Validieren**: `npm test` (VM-Smoke-Tests, die Factory-Eval, `apply()` sowie Paket-Import/-Persistenz abdecken).
|
|
314
|
+
- **Neu einfärben**: Nutze die `--dsw-alias-*`-Tokens (vollständiger Vertrag in [`docs/themes-spec.md`](./docs/themes-spec.md)).
|
|
315
|
+
|
|
316
|
+
## 📌 Roadmap
|
|
317
|
+
|
|
318
|
+
- [x] v0.1: 8 Themes + eigenes Wallpaper (Deckkraft / Unschärfe) + lokale Speicherung
|
|
319
|
+
- [x] Theme-Paket-Format + Import / Export / Share-Link (JSON + Manifest + Validierung)
|
|
320
|
+
- [x] Akzent pro Benutzer + Zufallsfunktion
|
|
321
|
+
- [x] Wallpaper 2.0 (URL / Verlauf / Vorschlag pro Skin / automatisches Abdunkeln)
|
|
322
|
+
- [x] Lokale Paketbibliothek + Anwenden mit einem Klick / Favoriten / Überrasche-mich
|
|
323
|
+
- [x] Vollständige i18n-Texte & Doku (zh / en / ja / ko / es / fr / de / ru)
|
|
324
|
+
- [ ] Online-Farb-/Theme-Vorschau-Studio (reines Frontend, Kontrastprüfung)
|
|
325
|
+
- [ ] Community-Theme-Galerie (Pakete an das Repo / die Online-Galerie senden)
|
|
326
|
+
- [ ] Verbesserung des ersten Paintings (FOUC)
|
|
327
|
+
|
|
328
|
+
## 🤝 Mitwirken
|
|
329
|
+
|
|
330
|
+
Issues und PRs sind willkommen! Bitte lies den [Contributing Guide](./CONTRIBUTING.md) und beachte den
|
|
331
|
+
[Code of Conduct](./CODE_OF_CONDUCT.md).
|
|
332
|
+
|
|
333
|
+
## ⭐ Das Projekt unterstützen
|
|
334
|
+
|
|
335
|
+
Wenn es dir gefällt: Gib dem Repo einen Stern **⭐**, ein Daumen-hoch **👍** auf npm, oder teile es mit DSH-Freunden — das
|
|
336
|
+
hilft dem Projekt, entdeckt zu werden, und hält es gepflegt. Möchtest du Themes / ein Online-Studio / mehr Skins
|
|
337
|
+
beisteuern? Mach mit.
|
|
338
|
+
|
|
339
|
+
## 🔒 Sicherheit
|
|
340
|
+
|
|
341
|
+
Ein Sicherheitsproblem gefunden? Öffne kein öffentliches Issue — siehe die [Security Policy](./SECURITY.md).
|
|
342
|
+
|
|
343
|
+
## 📄 Lizenz
|
|
344
|
+
|
|
345
|
+
[MIT](./LICENSE)
|
|
346
|
+
|
|
347
|
+
## 🙏 Danksagungen
|
|
348
|
+
|
|
349
|
+
- Architektur- & API-Referenz: das offizielle [ui-theme](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/client/ui-theme)-Client-Paket
|
|
350
|
+
von DeepSeek Harness.
|
|
351
|
+
- Konzept-Hommage: [Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin).
|
package/README.en.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="./README.md">中文</a> · <strong>English</strong>
|
|
2
|
+
<a href="./README.md">中文</a> · <strong>English</strong> · <a href="./README.ja.md">日本語</a> · <a href="./README.ko.md">한국어</a> · <a href="./README.es.md">Español</a> · <a href="./README.fr.md">Français</a> · <a href="./README.de.md">Deutsch</a> · <a href="./README.ru.md">Русский</a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
@@ -15,12 +15,13 @@ Native skinning · wallpaper · shareable theme packs — a romance-engineered p
|
|
|
15
15
|
| 🎨 8 original themes | 🖼️ wallpaper + opacity/blur | 🌈 one-click accent | 📦 shareable theme packs |
|
|
16
16
|
|---|---|---|---|
|
|
17
17
|
|
|
18
|
-
>
|
|
18
|
+
> 1-line install · purely native (no injection, no installer patches) · survives DSH updates
|
|
19
19
|
|
|
20
20
|
[中文](./README.md) · [Changelog](./CHANGELOG.md) · [Project Notes](./docs/PROJECT.md) · [Publishing Guide](./docs/publishing-to-npm.md)
|
|
21
21
|
|
|
22
22
|

|
|
23
23
|

|
|
24
|
+
[](https://awesome-dsh-plugin.com)
|
|
24
25
|

|
|
25
26
|

|
|
26
27
|
-4f83f2)
|
|
@@ -29,10 +30,19 @@ Native skinning · wallpaper · shareable theme packs — a romance-engineered p
|
|
|
29
30
|
|
|
30
31
|
</div>
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
## ⚡ One-line install
|
|
34
|
+
|
|
35
|
+
**Copy this sentence to your DSH and it installs everything for you:**
|
|
36
|
+
|
|
37
|
+
> Please install the dsh-dream-skin skin plugin (https://github.com/RevolutionLA/dsh-dream-skin, or the npm package `dsh-dream-skin`), then tell me how to restart DSH Web.
|
|
38
|
+
|
|
39
|
+
Prefer the CLI? One command:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
dsh plugin --profile web add dsh-dream-skin && dsh web
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
> 🚀 **Now on npm!** With DSH installed, add it in one command — no cloning needed.
|
|
36
46
|
|
|
37
47
|
> **Homage to [Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin).** But the approach is different:
|
|
38
48
|
> Codex injects CSS into the desktop client's renderer via CDP, whereas DSH is a **token-driven Web GUI** that ships
|
|
@@ -87,7 +97,7 @@ Differentiation inspired by existing DSH skin projects plus Codex's skin UX:
|
|
|
87
97
|
| 📦 **Theme-pack format + import/export** | A `*.dsh-theme.json` pack = format marker + version + manifest (id/name/author/scheme/accent/tokens). Import a file, one-click apply, and copy a **share link** (encoded in the URL hash) |
|
|
88
98
|
| 🌈 **Per-user Accent** | Stack a custom brand-accent over the active skin (`overrideTokens` layer, the skin untouched): **12 one-click preset swatches**, a color picker, **randomize**, and clear |
|
|
89
99
|
| 🖼️ **Wallpaper 2.0** | Local image / **image URL** / **gradient presets**, with a **per-skin suggested gradient** and **auto-dim**; **Recent** (up to 5) to switch back in one click |
|
|
90
|
-
| 🧩 **Local pack library** |
|
|
100
|
+
| 🧩 **Local pack library** | Your imported theme packs in one place; **apply / favorite / remove** in a click (the 8 built-in skins live in the Skins row) |
|
|
91
101
|
| ✅ **Clear selection feedback** | Switching skins updates the checked/bordered highlight **instantly** — no stale white highlight box |
|
|
92
102
|
| 🎲 **Surprise me** | Randomly switch to a theme different from the current one |
|
|
93
103
|
| ⭐ **Favorites** | Star your favorite skins and switch between them fast |
|
|
@@ -162,17 +172,48 @@ system.
|
|
|
162
172
|
|
|
163
173
|
## 📦 Install
|
|
164
174
|
|
|
175
|
+
Pick any of the four options, then **restart DSH Web** (the current session will be interrupted, but DSH sessions are
|
|
176
|
+
persisted to disk and recover after restart).
|
|
177
|
+
|
|
165
178
|
### Option A: From npm (published, **recommended**)
|
|
166
179
|
|
|
167
180
|
```sh
|
|
168
181
|
dsh plugin --profile web add dsh-dream-skin
|
|
169
182
|
```
|
|
170
183
|
|
|
171
|
-
|
|
184
|
+
### Option B: From GitHub (pinned to a verified commit)
|
|
185
|
+
|
|
186
|
+
```sh
|
|
187
|
+
dsh plugin --profile web add 'github:RevolutionLA/dsh-dream-skin#<40-char-commit>'
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
> Pinning to the commit of a release means new `main` changes never silently alter your installed copy.
|
|
191
|
+
|
|
192
|
+
### Option C: From a Release tarball (offline / no git)
|
|
193
|
+
|
|
194
|
+
Download `dsh-dream-skin-<version>.tgz` from the [Releases](https://github.com/RevolutionLA/dsh-dream-skin/releases)
|
|
195
|
+
page (it ships the built `lib/client.js`, so no prepare script runs on install), then:
|
|
196
|
+
|
|
197
|
+
```sh
|
|
198
|
+
dsh plugin --profile web add ./dsh-dream-skin-<version>.tgz
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Option D: Clone and install from the local path (development)
|
|
202
|
+
|
|
203
|
+
```sh
|
|
204
|
+
git clone https://github.com/RevolutionLA/dsh-dream-skin.git
|
|
205
|
+
cd dsh-dream-skin
|
|
206
|
+
dsh plugin --profile web add .
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
> `dsh plugin` anchors relative paths to the directory **you run the command in**, installing a link dependency
|
|
210
|
+
> pointing at your clone: edit the source, save, restart DSH — no reinstall needed.
|
|
211
|
+
|
|
212
|
+
**Restart and verify:**
|
|
172
213
|
|
|
173
214
|
```sh
|
|
174
|
-
# stop the running instance, then:
|
|
175
215
|
dsh web
|
|
216
|
+
dsh --profile web --dump-config | grep -A2 dream-skin # a dream-skin loader entry should appear
|
|
176
217
|
```
|
|
177
218
|
|
|
178
219
|
Open **Settings → Theme / Appearance** to see the **Skins**, **Accent**, **Wallpaper** / **Advanced Wallpaper**, and **Theme Packs** rows.
|
|
@@ -181,12 +222,6 @@ Open **Settings → Theme / Appearance** to see the **Skins**, **Accent**, **Wal
|
|
|
181
222
|
> the profile directory as a workspace root, so a bare add fails with `ERR_PNPM_ADDING_TO_ROOT`. If your profile already
|
|
182
223
|
> uses the workspace, you won't need to repeat it.
|
|
183
224
|
|
|
184
|
-
### Option B: From source / a local directory (developers)
|
|
185
|
-
|
|
186
|
-
```sh
|
|
187
|
-
dsh plugin --profile web add -w /path/to/dsh-dream-skin
|
|
188
|
-
```
|
|
189
|
-
|
|
190
225
|
## 🔄 Update / Uninstall
|
|
191
226
|
|
|
192
227
|
**Update to the latest** (when installed from the npm release):
|
|
@@ -235,7 +270,7 @@ plugins register themes that override the alias layer (`--dsw-alias-*`). This pa
|
|
|
235
270
|
│
|
|
236
271
|
┌────────────────────────────────┬────────────────┐
|
|
237
272
|
│ │ │
|
|
238
|
-
ctx.theme.register(8 skins) ctx.theme.overrideTokens(wallpaper) ctx.slots.inject('settings.
|
|
273
|
+
ctx.theme.register(8 skins) ctx.theme.overrideTokens(wallpaper) ctx.slots.inject('settings.section' + 'settings.dreamSkin.item')
|
|
239
274
|
```
|
|
240
275
|
|
|
241
276
|
- **Host half** (`lib/index.js`) — a `dsh.bundle` patch layer inserting the `dream-skin` loader entry; `apply` is a
|
|
@@ -246,7 +281,8 @@ plugins register themes that override the alias layer (`--dsw-alias-*`). This pa
|
|
|
246
281
|
3. renders the wallpaper as a `z-index:-1` fixed backdrop and stacks `ctx.theme.overrideTokens(...)` making the
|
|
247
282
|
main canvas (`--dsw-alias-bg-base`) and sidebar (`--dsw-specific-sidebar-fill`) translucent;
|
|
248
283
|
4. listens for `theme/change` and re-shades the wallpaper wash on skin / scheme switch;
|
|
249
|
-
5.
|
|
284
|
+
5. registers a dedicated **Settings → Theme / Appearance** section (`settings.section`) and mounts the five
|
|
285
|
+
feature rows under the `settings.dreamSkin.item` slot.
|
|
250
286
|
|
|
251
287
|
Each skin carries its `colorScheme` (`light`/`dark`), driving `body[data-ds-dark-theme]`; the alias-token overrides
|
|
252
288
|
are applied as inline custom properties on `<body>` by ui-layout's ThemePresenter.
|
|
@@ -266,7 +302,8 @@ The client bundle is written directly in the `__ModuleLoader__` format (the same
|
|
|
266
302
|
seeds (`react`, `react/jsx-runtime`, …) and registered client bundles (`@deepseek-ai/dsh-client-runtime/client`, …).
|
|
267
303
|
|
|
268
304
|
- **Add a built-in skin**: append an object (`id` + `colorScheme` + `tokens`) to the `SKINS` array in `lib/client.js`;
|
|
269
|
-
it then appears in Settings automatically. Add a `skin.<id>` key to
|
|
305
|
+
it then appears in Settings automatically. Add a `skin.<id>` key to **all 8 locale dictionaries**
|
|
306
|
+
(`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`).
|
|
270
307
|
- **Ship a theme pack (recommended)**: follow [`docs/examples/sample-theme-pack.json`](./docs/examples/sample-theme-pack.json) —
|
|
271
308
|
one `*.dsh-theme.json` is importable in Settings and shareable via a link, no code changes needed.
|
|
272
309
|
- **Add your own wallpapers**: drop images into [`wallpapers/`](./wallpapers/) (distribute only what you have rights
|
|
@@ -281,9 +318,9 @@ seeds (`react`, `react/jsx-runtime`, …) and registered client bundles (`@deeps
|
|
|
281
318
|
- [x] Per-user Accent + randomize
|
|
282
319
|
- [x] Wallpaper 2.0 (URL / gradient / per-skin suggestion / auto-dim)
|
|
283
320
|
- [x] Local pack library + one-click apply / favorites / surprise-me
|
|
321
|
+
- [x] Full i18n copy & docs (zh / en / ja / ko / es / fr / de / ru)
|
|
284
322
|
- [ ] Online palette / theme-preview Studio (pure frontend, contrast checker)
|
|
285
323
|
- [ ] Community theme gallery (submit packs to the repo / online gallery)
|
|
286
|
-
- [ ] Full i18n copy & docs (zh / en / more)
|
|
287
324
|
- [ ] First-paint (FOUC) improvement
|
|
288
325
|
|
|
289
326
|
## 🤝 Contributing
|