dsh-dream-skin 0.2.5 → 0.4.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,353 @@
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 zurückhaltend, klar und von feiner Textur ist.**
10
+
11
+ Natives Skinning · Wallpaper · teilbare Theme-Pakete — eine elegante Umsetzung, vollständig auf DSHs offiziellem `--dsw-*`-Token-System basierend.
12
+
13
+ > **TL;DR: Dein Code-Bereich darf leise sein.**
14
+
15
+ | 🎨 8 Original-Themes | 🖼️ Wallpaper + diffuses Licht | 🎯 zurückhaltender Akzent | 📦 teilbare Theme-Pakete |
16
+ |---|---|---|---|
17
+
18
+ > 1-Zeilen-Installation · rein nativ (keine Injektion, keine Installer-Patches) · übersteht DSH-Updates
19
+
20
+ ✨ **Design Philosophy — [eine Aussage darüber, was „premium" bedeutet](./docs/design-philosophy.md)** · mit der iOS-/Linear-Ästhetik als Basis entsteht Premium aus der Präzision des Materials und der Zurückhaltung der Farben.
21
+
22
+ [中文](./README.md) · [Änderungshistorie](./CHANGELOG.md) · [Projektnotizen](./docs/PROJECT.md) · [Design Philosophy](./docs/design-philosophy.md) · [Veröffentlichungsanleitung](./docs/publishing-to-npm.md)
23
+
24
+ ![npm version](https://img.shields.io/npm/v/dsh-dream-skin?color=4f83f2&label=npm)
25
+ ![license](https://img.shields.io/github/license/RevolutionLA/dsh-dream-skin?color=34d399)
26
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
27
+ ![node](https://img.shields.io/badge/node-%3E%3D18-6d9af6)
28
+ ![dsh](https://img.shields.io/badge/dsh-0.1.0--rc.6-blueviolet)
29
+ ![plugin type](https://img.shields.io/badge/plugin-dual--face%20(dsh.bundle%2Bdsh.client)-4f83f2)
30
+ ![ci](https://img.shields.io/github/actions/workflow/status/RevolutionLA/dsh-dream-skin/ci.yml?branch=main&label=CI&color=34d399)
31
+ ![code size](https://img.shields.io/github/languages/code-size/RevolutionLA/dsh-dream-skin?color=orange)
32
+
33
+ </div>
34
+
35
+ ## ⚡ Installation mit einer Zeile
36
+
37
+ **Kopiere diesen Satz in dein DSH und es installiert alles für dich:**
38
+
39
+ > 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.
40
+
41
+ Lieber die CLI? Ein Befehl:
42
+
43
+ ```sh
44
+ dsh plugin --profile web add dsh-dream-skin && dsh web
45
+ ```
46
+
47
+ > 🚀 **Jetzt auf npm!** Bei installiertem DSH fügst du es mit einem einzigen Befehl hinzu — kein Klonen nötig.
48
+
49
+ > **Eine Hommage an [Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin).** Aber der Ansatz ist anders:
50
+ > Codex injiziert CSS über CDP in den Renderer des Desktop-Clients, während DSH eine **token-gesteuerte Web-GUI** ist,
51
+ > die „Third-Party-Plugins, die Themes registrieren“ erstklassig unterstützt. Dieses Plugin ist daher **rein nativ** —
52
+ > keine Injektion, keine Binär-Patches, und es bricht nicht bei Client-Updates.
53
+ >
54
+ > **Kein offizielles Produkt.** Nur eine Möglichkeit, deinen DeepSeek-Harness-Arbeitsbereich aufzumöbeln.
55
+
56
+ ---
57
+
58
+ ## 📸 Screenshots
59
+
60
+ > Echte Screenshots, keine Mockups. Links: DSH nach dem Anwenden eines Skins; rechts: der dedizierte Bereich **Theme / Appearance** in den Einstellungen.
61
+
62
+ <p align="center">
63
+ <img src="docs/screenshots/preview.png" alt="DSH skin preview" width="46%"/>
64
+ &nbsp;&nbsp;
65
+ <img src="docs/screenshots/settings.png" alt="Theme section in settings" width="46%"/>
66
+ </p>
67
+
68
+ ---
69
+
70
+ ## 🏆 Warum es einen Stern verdient (im Vergleich zu Alternativen)
71
+
72
+ | Funktion | Unseres | Anderes DSH-Skinning | Codex-Dream-Skin (Desktop) |
73
+ |------|:---:|:---:|:---:|
74
+ | Native Token-Themes — keine Injektion, keine Installer-Patches | ✅ | ✅ | ❌ (CDP-Injektion) |
75
+ | Eigenes Wallpaper + Deckkraft/Unschärfe | ✅ | teilweise | ✅ |
76
+ | **Theme-Paket-Import/-Export + Share-Links** | ✅ | ❌ | ✅ (Zip-Pakete) |
77
+ | **Akzent-Override pro Benutzer** | ✅ | ❌ | teilweise |
78
+ | **Wallpaper 2.0 (URL / Verlauf / Vorschlag pro Skin / automatisches Abdunkeln)** | ✅ | ❌ | ✅ |
79
+ | Lokale Paketbibliothek + Favoriten + Überrasche-mich | ✅ | ❌ | teilweise |
80
+ | Validierung + Rollback | ✅ | teilweise | ✅ |
81
+ | **Browser-Web-GUI, nativ plattformübergreifend** | ✅ | ✅ | ❌ (braucht Desktop-App) |
82
+
83
+ ## ✨ Funktionen
84
+
85
+ | Funktion | Beschreibung |
86
+ |------------|-------------|
87
+ | 🎨 **8 enthaltene Presets (Mirage)** | Sofort umschalten unter **Settings → Theme / Appearance**, hell & dunkel |
88
+ | 🖼️ **Eigenes Wallpaper** | Lokales Bild wählen (automatisch komprimiert ≤2 MB), **Deckkraft / Unschärfe** einstellen |
89
+ | 🔤 **Undurchsichtige Innenflächen** | Karten, Eingabefelder und Nachrichtenblasen bleiben lesbar — niemals ausgewaschen |
90
+ | ↩️ **Standard wiederherstellen** | Mit einem Klick zurück zur integrierten Darstellung von DSH (System folgen) |
91
+ | 💾 **Lokale Speicherung** | Skin & Wallpaper werden in `localStorage` gespeichert und überstehen ein Neuladen |
92
+
93
+ ## 🚀 Erweiterte Funktionen (P0)
94
+
95
+ Die Abgrenzung ist inspiriert von bestehenden DSH-Skin-Projekten und der Skin-UX von Codex:
96
+
97
+ | Funktion | Beschreibung |
98
+ |------------|-------------|
99
+ | 📦 **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) |
100
+ | 🌈 **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 |
101
+ | 🖼️ **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 |
102
+ | 🧩 **Lokale Paketbibliothek** | Deine importierten Theme-Pakete an einem Ort; **anwenden / favorisieren / entfernen** mit einem Klick (die 8 integrierten Skins liegen in der Skin-Reihe) |
103
+ | ✅ **Klares Auswahl-Feedback** | Beim Wechseln der Skins wird die Markierung (Häkchen/Rahmen) **sofort** aktualisiert — keine veraltete weiße Markierungsbox |
104
+ | 🎲 **Überrasche mich** | Zufällig zu einem Theme wechseln, das sich vom aktuellen unterscheidet |
105
+ | ⭐ **Favoriten** | Markiere deine Lieblings-Skins mit einem Stern und wechsle schnell zwischen ihnen |
106
+ | ✅ **Validierung + Rollback** | Der Paket-Import validiert Format / erforderliche Tokens / Farbzulässigkeit; Fehler oder Entfernungen fallen sicher zurück |
107
+
108
+ ## ⚡ Schnellstart (3 Schritte)
109
+
110
+ ```sh
111
+ # 1. installieren
112
+ dsh plugin --profile web add dsh-dream-skin
113
+ # 2. neu starten
114
+ dsh web
115
+ # 3. Settings → Theme / Appearance öffnen → Skin wählen → fertig.
116
+ ```
117
+
118
+ > Installiert das veröffentlichte npm-Paket — kein Klonen nötig. Wenn `dsh plugin add` einen Workspace-Fehler meldet, hänge `-w` an.
119
+
120
+ ## 🧩 Was für ein Plugin ist das
121
+
122
+ **Ein standardmäßiges Dual-Face-`dsh-plugin` nach dem Prinzip „Alles ist ein Plugin“ — geladen und verwendet genau wie das offizielle Paket `ui-theme`.**
123
+
124
+ Das Motto von DeepSeek Harness lautet *Alles ist ein Plugin*: Modelle, Tools, Sandboxes, Sessions, UI, sogar der Agent
125
+ Loop selbst sind Plugins. `dsh-dream-skin` liefert Skinning als npm-Paket, das **isomorph zu den offiziellen
126
+ UI-Paketen** ist:
127
+
128
+ ```text
129
+ ┌──────────── dsh-dream-skin (standard dsh-plugin / dual-face) ─────────────┐
130
+ │ dsh.bundle → cordis.patch.yml inserts the dream-skin entry (host half)│
131
+ │ dsh.client → lib/client.js (browser bundle) (browser half)│
132
+ └───────────────────────────────────────────────────────────────────────────┘
133
+ ```
134
+
135
+ - **Installationsbefehl = der offizielle**: `dsh plugin --profile web add dsh-dream-skin`
136
+ - **Nutzt offizielle Erweiterungspunkte**: `ctx.theme` (Themes registrieren), `ctx.theme.overrideTokens` (Override-Ebenen),
137
+ `ctx.slots` (UI in einen dedizierten Bereich **Settings → Theme / Appearance** einhängen).
138
+ - **Manifest-Vertrag entspricht den offiziellen Paketen**: `dsh.bundle` + `dsh.client` + `exports["./client"]`.
139
+
140
+ Mit anderen Worten: Du installierst kein Randskript — das ist ein Standard-Skin-Plugin im offiziellen Plugin-System
141
+ von DSH.
142
+
143
+ ## 🖼️ Vorschau — die Mirage-Serie
144
+
145
+ > Die Vorschauen unten werden aus den **echten Tokens** jedes Skins generiert — was du siehst, ist, was du bekommst.
146
+
147
+ <table>
148
+ <tr>
149
+ <td align="center"><img src="docs/previews/abyss.svg" width="220" alt="abyss"/><br/><b>abyss</b></td>
150
+ <td align="center"><img src="docs/previews/aurora.svg" width="220" alt="aurora"/><br/><b>aurora</b></td>
151
+ <td align="center"><img src="docs/previews/nebula.svg" width="220" alt="nebula"/><br/><b>nebula</b></td>
152
+ <td align="center"><img src="docs/previews/ember.svg" width="220" alt="ember"/><br/><b>ember</b></td>
153
+ </tr>
154
+ <tr>
155
+ <td align="center"><img src="docs/previews/midnight.svg" width="220" alt="midnight"/><br/><b>midnight</b></td>
156
+ <td align="center"><img src="docs/previews/ivory.svg" width="220" alt="ivory"/><br/><b>ivory</b></td>
157
+ <td align="center"><img src="docs/previews/mist.svg" width="220" alt="mist"/><br/><b>mist</b></td>
158
+ <td align="center"><img src="docs/previews/rose.svg" width="220" alt="rose"/><br/><b>rose</b></td>
159
+ </tr>
160
+ </table>
161
+
162
+ ## 🎲 Die Presets
163
+
164
+ | id | scheme | vibe |
165
+ |------|--------|------|
166
+ | `abyss` | 🕶️ dunkel | DeepSeek tiefblauer Abgrund (Anker) |
167
+ | `aurora` | 🌌 dunkel | Aurora-Türkisgrün |
168
+ | `nebula` | 🪐 dunkel | kosmisches Lila |
169
+ | `ember` | 🔥 dunkel | warmes Glut-Orange |
170
+ | `midnight` | 🌚 dunkel | reines Schwarz (OLED) |
171
+ | `ivory` | 📜 hell | warmes Elfenbein / Papier |
172
+ | `mist` | 🌫️ hell | kühler Blauer Nebel |
173
+ | `rose` | 🌸 hell | Rosarot / Blush |
174
+
175
+ ## 📦 Installation
176
+
177
+ Wähle eine der vier Optionen und starte dann **DSH Web neu** (die aktuelle Sitzung wird unterbrochen, aber DSH-Sitzungen
178
+ werden auf der Festplatte gespeichert und nach dem Neustart wiederhergestellt).
179
+
180
+ ### Option A: Von npm (veröffentlicht, **empfohlen**)
181
+
182
+ ```sh
183
+ dsh plugin --profile web add dsh-dream-skin
184
+ ```
185
+
186
+ ### Option B: Von GitHub (an einen verifizierten Commit gebunden)
187
+
188
+ ```sh
189
+ dsh plugin --profile web add 'github:RevolutionLA/dsh-dream-skin#<40-char-commit>'
190
+ ```
191
+
192
+ > Die Bindung an den Commit eines Releases bedeutet, dass neue Änderungen auf `main` deine installierte Kopie niemals stillschweigend verändern.
193
+
194
+ ### Option C: Vom Release-Tarball (offline / ohne git)
195
+
196
+ Lade `dsh-dream-skin-<version>.tgz` von der Seite [Releases](https://github.com/RevolutionLA/dsh-dream-skin/releases)
197
+ herunter (das Paket enthält das gebaute `lib/client.js`, sodass beim Installieren kein Prepare-Skript ausgeführt wird), dann:
198
+
199
+ ```sh
200
+ dsh plugin --profile web add ./dsh-dream-skin-<version>.tgz
201
+ ```
202
+
203
+ ### Option D: Klonen und aus dem lokalen Pfad installieren (Entwicklung)
204
+
205
+ ```sh
206
+ git clone https://github.com/RevolutionLA/dsh-dream-skin.git
207
+ cd dsh-dream-skin
208
+ dsh plugin --profile web add .
209
+ ```
210
+
211
+ > `dsh plugin` verankert relative Pfade im Verzeichnis, **in dem du den Befehl ausführst**, und installiert eine
212
+ > Link-Abhängigkeit, die auf deinen Klon zeigt: Quelle bearbeiten, speichern, DSH neu starten — keine Neuinstallation nötig.
213
+
214
+ **Neu starten und überprüfen:**
215
+
216
+ ```sh
217
+ dsh web
218
+ dsh --profile web --dump-config | grep -A2 dream-skin # a dream-skin loader entry should appear
219
+ ```
220
+
221
+ Öffne **Settings → Theme / Appearance**, um die Reihen **Skins**, **Accent**, **Wallpaper** / **Advanced Wallpaper** und **Theme Packs** zu sehen.
222
+
223
+ > Das Flag `-w` (Workspace) wird bei einem einfachen `add` benötigt, weil jedes Profil eine `pnpm-workspace.yaml` mitbringt; pnpm behandelt
224
+ > das Profilverzeichnis als Workspace-Root, daher schlägt ein einfaches `add` mit `ERR_PNPM_ADDING_TO_ROOT` fehl. Wenn dein Profil bereits
225
+ > den Workspace nutzt, musst du es nicht wiederholen.
226
+
227
+ ## 🔄 Aktualisieren / Deinstallieren
228
+
229
+ **Auf die neueste Version aktualisieren** (wenn aus dem npm-Release installiert):
230
+
231
+ ```sh
232
+ dsh plugin --profile web update dsh-dream-skin
233
+ dsh web # restart to pick it up
234
+ ```
235
+
236
+ > Hängst du nach einem Update an einer alten Version fest? Die Minimum-Release-Alter-Richtlinie (Supply-Chain) von pnpm kann ein
237
+ > frisch veröffentlichtes Release zurückhalten. Führe im Profilverzeichnis aus:
238
+ > `pnpm add dsh-dream-skin@latest --config.minimumReleaseAge=0`, um es zu erzwingen.
239
+
240
+ **Deinstallieren:**
241
+
242
+ ```sh
243
+ dsh plugin --profile web remove dsh-dream-skin
244
+ dsh web # restores the official appearance
245
+ ```
246
+
247
+ ## 🧩 Kompatibilität
248
+
249
+ | Punkt | Wert |
250
+ |------|-------|
251
+ | DeepSeek Harness (`dsh`) | `0.1.0-rc.6` (peerDependencies auf `^0.1.0-rc.6` festgelegt) |
252
+ | Node.js | `>=18` |
253
+ | Browser | modernes Chromium / WebKit (native CSS-Variablen & `matchMedia`) |
254
+
255
+ > Beim Upgraden von DSH die `peerDependencies` in `package.json` entsprechend anheben.
256
+
257
+ ## ⚙️ So funktioniert es
258
+
259
+ Das Theme-System von DSH ist token-basiert: Die Web-Shell liefert `--dsw-*`-Design-Tokens, und `ThemeRuntime` erlaubt
260
+ Drittanbieter-Plugins, Themes zu registrieren, die die Alias-Ebene (`--dsw-alias-*`) überschreiben. Dieses Paket ist ein
261
+ standardmäßiges Dual-Face-Plugin:
262
+
263
+ ```text
264
+ ┌─────────────────────────────────────────────┐
265
+ │ dsh-dream-skin (dual-face plugin) │
266
+ ├────────────────────────────┬────────────────┤
267
+ Host half │ lib/index.js │ Browser half │
268
+ │ cordis.patch.yml inserts │ lib/client.js │
269
+ │ dream-skin loader entry │ __ModuleLoader__│
270
+ └────────────────────────────┴────────────────┘
271
+ │ │
272
+ profile tree loaded /plugins/dsh-dream-skin/client.js
273
+ │
274
+ ┌────────────────────────────────┬────────────────┐
275
+ │ │ │
276
+ ctx.theme.register(8 skins) ctx.theme.overrideTokens(wallpaper) ctx.slots.inject('settings.section' + 'settings.dreamSkin.item')
277
+ ```
278
+
279
+ - **Host-Hälfte** (`lib/index.js`) — eine `dsh.bundle`-Patch-Ebene, die den `dream-skin`-Loader-Eintrag einfügt; `apply` ist
280
+ ein No-op, genau wie bei den mitgelieferten `ui-*`-Paketen.
281
+ - **Browser-Hälfte** (`lib/client.js`):
282
+ 1. registriert die 8 Skins über `ctx.theme.register(...)`;
283
+ 2. stellt den gespeicherten Skin wieder her und wendet ihn mit `ctx.theme.setTheme(...)` an;
284
+ 3. rendert das Wallpaper als festen Hintergrund mit `z-index:-1` und stapelt `ctx.theme.overrideTokens(...)`, wodurch die
285
+ Hauptfläche (`--dsw-alias-bg-base`) und die Seitenleiste (`--dsw-specific-sidebar-fill`) durchscheinend werden;
286
+ 4. lauscht auf `theme/change` und färbt den Wallpaper-Wash beim Wechsel von Skin / Schema neu ein;
287
+ 5. registriert einen dedizierten Bereich **Settings → Theme / Appearance** (`settings.section`) und hängt die fünf
288
+ Funktionsreihen in den Slot `settings.dreamSkin.item` ein.
289
+
290
+ Jeder Skin trägt sein `colorScheme` (`light`/`dark`), das `body[data-ds-dark-theme]` steuert; die Alias-Token-Overrides
291
+ werden von ThemePresenter von ui-layout als Inline-Custom-Properties auf `<body>` angewendet.
292
+
293
+ ## 💼 Hinweise zur Speicherung
294
+
295
+ - Skin & Wallpaper werden in `localStorage` gespeichert (Schlüssel mit Präfix `dsh-dream-skin:`), **pro Browser**.
296
+ - Warum nicht die Host-Einstellungen? Die Host-Einstellungs-Schnittstelle legt Browser-Clients nur eine auf die Whitelist
297
+ gesetzte Auswahl von Namespaces offen (`WEB_SETTINGS_NAMESPACES` in `dsh-host-apiproxy`), daher würde ein
298
+ Drittanbieter-Namespace mit `settings-not-exposed` antworten; das Produkt selbst hält Remote-Browser-Einstellungen
299
+ prozesslokal. `localStorage` entspricht dieser Grenze und übersteht Neuladen.
300
+
301
+ ## 🛠️ Entwicklung / Themes erweitern
302
+
303
+ Das Client-Bundle ist direkt im `__ModuleLoader__`-Format geschrieben (dieselbe Form, die tsdown für die mitgelieferten
304
+ `ui-*`-Pakete erzeugt), daher ist **kein Build-Schritt** erforderlich. `lib/client.js` darf nur Module-Table-Entitäten
305
+ `require`n: Plattform-Seeds (`react`, `react/jsx-runtime`, …) und registrierte Client-Bundles
306
+ (`@deepseek-ai/dsh-client-runtime/client`, …).
307
+
308
+ - **Einen integrierten Skin hinzufügen**: Füge dem `SKINS`-Array in `lib/client.js` ein Objekt (`id` + `colorScheme` +
309
+ `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.
310
+
311
+ - **Ein Theme-Paket ausliefern (empfohlen)**: Folge [`docs/examples/sample-theme-pack.json`](./docs/examples/sample-theme-pack.json) —
312
+ eine `*.dsh-theme.json` ist in den Einstellungen importierbar und über einen Link teilbar, ohne Codeänderungen.
313
+ - **Eigene Wallpaper hinzufügen**: Lege Bilder in [`wallpapers/`](./wallpapers/) ab (verbreite nur, wofür du die Rechte
314
+ hast) und importiere sie dann über die „Wallpaper“-Reihe von DSH.
315
+ - **Validieren**: `npm test` (VM-Smoke-Tests, die Factory-Eval, `apply()` sowie Paket-Import/-Persistenz abdecken).
316
+ - **Neu einfärben**: Nutze die `--dsw-alias-*`-Tokens (vollständiger Vertrag in [`docs/themes-spec.md`](./docs/themes-spec.md)).
317
+
318
+ ## 📌 Roadmap
319
+
320
+ - [x] v0.1: 8 Themes + eigenes Wallpaper (Deckkraft / Unschärfe) + lokale Speicherung
321
+ - [x] Theme-Paket-Format + Import / Export / Share-Link (JSON + Manifest + Validierung)
322
+ - [x] Akzent pro Benutzer + Zufallsfunktion
323
+ - [x] Wallpaper 2.0 (URL / Verlauf / Vorschlag pro Skin / automatisches Abdunkeln)
324
+ - [x] Lokale Paketbibliothek + Anwenden mit einem Klick / Favoriten / Überrasche-mich
325
+ - [x] Vollständige i18n-Texte & Doku (zh / en / ja / ko / es / fr / de / ru)
326
+ - [ ] Online-Farb-/Theme-Vorschau-Studio (reines Frontend, Kontrastprüfung)
327
+ - [ ] Community-Theme-Galerie (Pakete an das Repo / die Online-Galerie senden)
328
+ - [ ] Verbesserung des ersten Paintings (FOUC)
329
+
330
+ ## 🤝 Mitwirken
331
+
332
+ Issues und PRs sind willkommen! Bitte lies den [Contributing Guide](./CONTRIBUTING.md) und beachte den
333
+ [Code of Conduct](./CODE_OF_CONDUCT.md).
334
+
335
+ ## ⭐ Das Projekt unterstützen
336
+
337
+ Wenn es dir gefällt: Gib dem Repo einen Stern **⭐**, ein Daumen-hoch **👍** auf npm, oder teile es mit DSH-Freunden — das
338
+ hilft dem Projekt, entdeckt zu werden, und hält es gepflegt. Möchtest du Themes / ein Online-Studio / mehr Skins
339
+ beisteuern? Mach mit.
340
+
341
+ ## 🔒 Sicherheit
342
+
343
+ Ein Sicherheitsproblem gefunden? Öffne kein öffentliches Issue — siehe die [Security Policy](./SECURITY.md).
344
+
345
+ ## 📄 Lizenz
346
+
347
+ [MIT](./LICENSE)
348
+
349
+ ## 🙏 Danksagungen
350
+
351
+ - Architektur- & API-Referenz: das offizielle [ui-theme](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/client/ui-theme)-Client-Paket
352
+ von DeepSeek Harness.
353
+ - Konzept-Hommage: [Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin).
package/README.en.md CHANGED
@@ -1,23 +1,25 @@
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">
6
6
 
7
7
  # dsh-dream-skin 🔮
8
8
 
9
- **Give DeepSeek Harness a face that breathes, feels, and belongs to you.**
9
+ **Give DeepSeek Harness a face that's restrained, clear and textured.**
10
10
 
11
- Native skinning · wallpaper · shareable theme packs — a romance-engineered project built entirely on DSH's official `--dsw-*` token system.
11
+ Native skinning · wallpaper · shareable theme packs — an elegant implementation built entirely on DSH's official `--dsw-*` token system.
12
12
 
13
- > **TL;DR: code with atmosphere.** ✨
13
+ > **TL;DR: your coding space can be quiet.**
14
14
 
15
- | 🎨 8 original themes | 🖼️ wallpaper + opacity/blur | 🌈 one-click accent | 📦 shareable theme packs |
15
+ | 🎨 8 original themes | 🖼️ wallpaper + diffused glow | 🎯 restrained 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
- [中文](./README.md) · [Changelog](./CHANGELOG.md) · [Project Notes](./docs/PROJECT.md) · [Publishing Guide](./docs/publishing-to-npm.md)
20
+ ✨ **Design Philosophy — [a statement on what "premium" means](./docs/design-philosophy.md)** · grounded in iOS / Linear aesthetics, premium comes from material precision and restrained color.
21
+
22
+ [中文](./README.md) · [Changelog](./CHANGELOG.md) · [Project Notes](./docs/PROJECT.md) · [Design Philosophy](./docs/design-philosophy.md) · [Publishing Guide](./docs/publishing-to-npm.md)
21
23
 
22
24
  ![npm version](https://img.shields.io/npm/v/dsh-dream-skin?color=4f83f2&label=npm)
23
25
  ![license](https://img.shields.io/github/license/RevolutionLA/dsh-dream-skin?color=34d399)
@@ -30,10 +32,19 @@ Native skinning · wallpaper · shareable theme packs — a romance-engineered p
30
32
 
31
33
  </div>
32
34
 
33
- > 🚀 **Now on npm!** With DSH installed, add it in one command — no cloning needed:
34
- > ```sh
35
- > dsh plugin --profile web add dsh-dream-skin
36
- > ```
35
+ ## ⚡ One-line install
36
+
37
+ **Copy this sentence to your DSH and it installs everything for you:**
38
+
39
+ > 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.
40
+
41
+ Prefer the CLI? One command:
42
+
43
+ ```sh
44
+ dsh plugin --profile web add dsh-dream-skin && dsh web
45
+ ```
46
+
47
+ > 🚀 **Now on npm!** With DSH installed, add it in one command — no cloning needed.
37
48
 
38
49
  > **Homage to [Codex-Dream-Skin](https://github.com/Fei-Away/Codex-Dream-Skin).** But the approach is different:
39
50
  > Codex injects CSS into the desktop client's renderer via CDP, whereas DSH is a **token-driven Web GUI** that ships
@@ -88,7 +99,7 @@ Differentiation inspired by existing DSH skin projects plus Codex's skin UX:
88
99
  | 📦 **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) |
89
100
  | 🌈 **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 |
90
101
  | 🖼️ **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 |
91
- | 🧩 **Local pack library** | All built-in skins + imported packs in one place; **apply / favorite** in a click |
102
+ | 🧩 **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) |
92
103
  | ✅ **Clear selection feedback** | Switching skins updates the checked/bordered highlight **instantly** — no stale white highlight box |
93
104
  | 🎲 **Surprise me** | Randomly switch to a theme different from the current one |
94
105
  | ⭐ **Favorites** | Star your favorite skins and switch between them fast |
@@ -163,17 +174,48 @@ system.
163
174
 
164
175
  ## 📦 Install
165
176
 
177
+ Pick any of the four options, then **restart DSH Web** (the current session will be interrupted, but DSH sessions are
178
+ persisted to disk and recover after restart).
179
+
166
180
  ### Option A: From npm (published, **recommended**)
167
181
 
168
182
  ```sh
169
183
  dsh plugin --profile web add dsh-dream-skin
170
184
  ```
171
185
 
172
- Then **restart** the web server:
186
+ ### Option B: From GitHub (pinned to a verified commit)
187
+
188
+ ```sh
189
+ dsh plugin --profile web add 'github:RevolutionLA/dsh-dream-skin#<40-char-commit>'
190
+ ```
191
+
192
+ > Pinning to the commit of a release means new `main` changes never silently alter your installed copy.
193
+
194
+ ### Option C: From a Release tarball (offline / no git)
195
+
196
+ Download `dsh-dream-skin-<version>.tgz` from the [Releases](https://github.com/RevolutionLA/dsh-dream-skin/releases)
197
+ page (it ships the built `lib/client.js`, so no prepare script runs on install), then:
198
+
199
+ ```sh
200
+ dsh plugin --profile web add ./dsh-dream-skin-<version>.tgz
201
+ ```
202
+
203
+ ### Option D: Clone and install from the local path (development)
204
+
205
+ ```sh
206
+ git clone https://github.com/RevolutionLA/dsh-dream-skin.git
207
+ cd dsh-dream-skin
208
+ dsh plugin --profile web add .
209
+ ```
210
+
211
+ > `dsh plugin` anchors relative paths to the directory **you run the command in**, installing a link dependency
212
+ > pointing at your clone: edit the source, save, restart DSH — no reinstall needed.
213
+
214
+ **Restart and verify:**
173
215
 
174
216
  ```sh
175
- # stop the running instance, then:
176
217
  dsh web
218
+ dsh --profile web --dump-config | grep -A2 dream-skin # a dream-skin loader entry should appear
177
219
  ```
178
220
 
179
221
  Open **Settings → Theme / Appearance** to see the **Skins**, **Accent**, **Wallpaper** / **Advanced Wallpaper**, and **Theme Packs** rows.
@@ -182,12 +224,6 @@ Open **Settings → Theme / Appearance** to see the **Skins**, **Accent**, **Wal
182
224
  > the profile directory as a workspace root, so a bare add fails with `ERR_PNPM_ADDING_TO_ROOT`. If your profile already
183
225
  > uses the workspace, you won't need to repeat it.
184
226
 
185
- ### Option B: From source / a local directory (developers)
186
-
187
- ```sh
188
- dsh plugin --profile web add -w /path/to/dsh-dream-skin
189
- ```
190
-
191
227
  ## 🔄 Update / Uninstall
192
228
 
193
229
  **Update to the latest** (when installed from the npm release):
@@ -236,7 +272,7 @@ plugins register themes that override the alias layer (`--dsw-alias-*`). This pa
236
272
  │
237
273
  ┌────────────────────────────────┬────────────────┐
238
274
  │ │ │
239
- ctx.theme.register(8 skins) ctx.theme.overrideTokens(wallpaper) ctx.slots.inject('settings.general.item')
275
+ ctx.theme.register(8 skins) ctx.theme.overrideTokens(wallpaper) ctx.slots.inject('settings.section' + 'settings.dreamSkin.item')
240
276
  ```
241
277
 
242
278
  - **Host half** (`lib/index.js`) — a `dsh.bundle` patch layer inserting the `dream-skin` loader entry; `apply` is a
@@ -247,7 +283,8 @@ plugins register themes that override the alias layer (`--dsw-alias-*`). This pa
247
283
  3. renders the wallpaper as a `z-index:-1` fixed backdrop and stacks `ctx.theme.overrideTokens(...)` making the
248
284
  main canvas (`--dsw-alias-bg-base`) and sidebar (`--dsw-specific-sidebar-fill`) translucent;
249
285
  4. listens for `theme/change` and re-shades the wallpaper wash on skin / scheme switch;
250
- 5. mounts both rows into the `settings.general.item` slot.
286
+ 5. registers a dedicated **Settings → Theme / Appearance** section (`settings.section`) and mounts the five
287
+ feature rows under the `settings.dreamSkin.item` slot.
251
288
 
252
289
  Each skin carries its `colorScheme` (`light`/`dark`), driving `body[data-ds-dark-theme]`; the alias-token overrides
253
290
  are applied as inline custom properties on `<body>` by ui-layout's ThemePresenter.
@@ -267,7 +304,8 @@ The client bundle is written directly in the `__ModuleLoader__` format (the same
267
304
  seeds (`react`, `react/jsx-runtime`, …) and registered client bundles (`@deepseek-ai/dsh-client-runtime/client`, …).
268
305
 
269
306
  - **Add a built-in skin**: append an object (`id` + `colorScheme` + `tokens`) to the `SKINS` array in `lib/client.js`;
270
- it then appears in Settings automatically. Add a `skin.<id>` key to both the `zh` and `en` dictionaries.
307
+ it then appears in Settings automatically. Add a `skin.<id>` key to **all 8 locale dictionaries**
308
+ (`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`).
271
309
  - **Ship a theme pack (recommended)**: follow [`docs/examples/sample-theme-pack.json`](./docs/examples/sample-theme-pack.json) —
272
310
  one `*.dsh-theme.json` is importable in Settings and shareable via a link, no code changes needed.
273
311
  - **Add your own wallpapers**: drop images into [`wallpapers/`](./wallpapers/) (distribute only what you have rights
@@ -282,9 +320,9 @@ seeds (`react`, `react/jsx-runtime`, …) and registered client bundles (`@deeps
282
320
  - [x] Per-user Accent + randomize
283
321
  - [x] Wallpaper 2.0 (URL / gradient / per-skin suggestion / auto-dim)
284
322
  - [x] Local pack library + one-click apply / favorites / surprise-me
323
+ - [x] Full i18n copy & docs (zh / en / ja / ko / es / fr / de / ru)
285
324
  - [ ] Online palette / theme-preview Studio (pure frontend, contrast checker)
286
325
  - [ ] Community theme gallery (submit packs to the repo / online gallery)
287
- - [ ] Full i18n copy & docs (zh / en / more)
288
326
  - [ ] First-paint (FOUC) improvement
289
327
 
290
328
  ## 🤝 Contributing