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 +353 -0
- package/README.en.md +62 -24
- package/README.es.md +349 -0
- package/README.fr.md +349 -0
- package/README.ja.md +349 -0
- package/README.ko.md +349 -0
- package/README.md +65 -26
- package/README.ru.md +349 -0
- package/docs/design-philosophy.md +102 -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 +3126 -2437
- package/lib/index.js +282 -18
- package/lib/types/index.d.ts +55 -29
- package/package.json +90 -78
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
|
+

|
|
25
|
+

|
|
26
|
+
[](https://awesome-dsh-plugin.com)
|
|
27
|
+

|
|
28
|
+

|
|
29
|
+
-4f83f2)
|
|
30
|
+

|
|
31
|
+

|
|
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
|
+
|
|
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
|
|
9
|
+
**Give DeepSeek Harness a face that's restrained, clear and textured.**
|
|
10
10
|
|
|
11
|
-
Native skinning · wallpaper · shareable theme packs —
|
|
11
|
+
Native skinning · wallpaper · shareable theme packs — an elegant implementation built entirely on DSH's official `--dsw-*` token system.
|
|
12
12
|
|
|
13
|
-
> **TL;DR:
|
|
13
|
+
> **TL;DR: your coding space can be quiet.**
|
|
14
14
|
|
|
15
|
-
| 🎨 8 original themes | 🖼️ wallpaper +
|
|
15
|
+
| 🎨 8 original themes | 🖼️ wallpaper + diffused glow | 🎯 restrained 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
|
+
✨ **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
|

|
|
23
25
|

|
|
@@ -30,10 +32,19 @@ Native skinning · wallpaper · shareable theme packs — a romance-engineered p
|
|
|
30
32
|
|
|
31
33
|
</div>
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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** |
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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
|