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 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
+ ![npm version](https://img.shields.io/npm/v/dsh-dream-skin?color=4f83f2&label=npm)
23
+ ![license](https://img.shields.io/github/license/RevolutionLA/dsh-dream-skin?color=34d399)
24
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
25
+ ![node](https://img.shields.io/badge/node-%3E%3D18-6d9af6)
26
+ ![dsh](https://img.shields.io/badge/dsh-0.1.0--rc.6-blueviolet)
27
+ ![plugin type](https://img.shields.io/badge/plugin-dual--face%20(dsh.bundle%2Bdsh.client)-4f83f2)
28
+ ![ci](https://img.shields.io/github/actions/workflow/status/RevolutionLA/dsh-dream-skin/ci.yml?branch=main&label=CI&color=34d399)
29
+ ![code size](https://img.shields.io/github/languages/code-size/RevolutionLA/dsh-dream-skin?color=orange)
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
+ &nbsp;&nbsp;
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
- > 3-line install · purely native (no injection, no installer patches) · survives DSH updates
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
  ![npm version](https://img.shields.io/npm/v/dsh-dream-skin?color=4f83f2&label=npm)
23
23
  ![license](https://img.shields.io/github/license/RevolutionLA/dsh-dream-skin?color=34d399)
24
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
24
25
  ![node](https://img.shields.io/badge/node-%3E%3D18-6d9af6)
25
26
  ![dsh](https://img.shields.io/badge/dsh-0.1.0--rc.6-blueviolet)
26
27
  ![plugin type](https://img.shields.io/badge/plugin-dual--face%20(dsh.bundle%2Bdsh.client)-4f83f2)
@@ -29,10 +30,19 @@ Native skinning · wallpaper · shareable theme packs — a romance-engineered p
29
30
 
30
31
  </div>
31
32
 
32
- > 🚀 **Now on npm!** With DSH installed, add it in one command — no cloning needed:
33
- > ```sh
34
- > dsh plugin --profile web add dsh-dream-skin
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** | All built-in skins + imported packs in one place; **apply / favorite** in a click |
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
- Then **restart** the web server:
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.general.item')
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. mounts both rows into the `settings.general.item` slot.
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 both the `zh` and `en` dictionaries.
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