dsh-dream-skin 0.4.1 → 0.4.2
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.md +3 -2
- package/{README.de.md → docs/i18n/README.de.md} +10 -10
- package/{README.en.md → docs/i18n/README.en.md} +10 -10
- package/{README.es.md → docs/i18n/README.es.md} +10 -10
- package/{README.fr.md → docs/i18n/README.fr.md} +10 -10
- package/{README.ja.md → docs/i18n/README.ja.md} +10 -10
- package/{README.ko.md → docs/i18n/README.ko.md} +10 -10
- package/{README.ru.md → docs/i18n/README.ru.md} +10 -10
- package/lib/client.js +199 -19
- package/package.json +2 -8
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<strong>中文</strong> · <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> · <a href="./README.de.md">Deutsch</a> · <a href="./README.ru.md">Русский</a>
|
|
2
|
+
<strong>中文</strong> · <a href="./docs/i18n/README.en.md">English</a> · <a href="./docs/i18n/README.ja.md">日本語</a> · <a href="./docs/i18n/README.ko.md">한국어</a> · <a href="./docs/i18n/README.es.md">Español</a> · <a href="./docs/i18n/README.fr.md">Français</a> · <a href="./docs/i18n/README.de.md">Deutsch</a> · <a href="./docs/i18n/README.ru.md">Русский</a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
✨ **Design Philosophy — [一份关于「什么算高级」的设计声明](./docs/design-philosophy.md)** · 以 iOS / Linear 的审美为基准,把「高级感」建立在材质的准确与配色的克制上。
|
|
21
21
|
|
|
22
|
-
[English](./README.en.md) · [变更日志](./CHANGELOG.md) · [项目说明](./docs/PROJECT.md) · [设计哲学](./docs/design-philosophy.md) · [发布指引](./docs/publishing-to-npm.md)
|
|
22
|
+
[English](./docs/i18n/README.en.md) · [变更日志](./CHANGELOG.md) · [项目说明](./docs/PROJECT.md) · [设计哲学](./docs/design-philosophy.md) · [发布指引](./docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -103,6 +103,7 @@ dsh plugin --profile web add dsh-dream-skin && dsh web
|
|
|
103
103
|
| 📦 **主题包格式 + 导入/导出** | 一个 `*.dsh-theme.json` 主题包 = 格式标记 + 版本 + manifest(id/name/作者/色系/accent/tokens)。可**导入文件**、**一键应用**、**复制分享链接**(编码进 URL hash) |
|
|
104
104
|
| 🌈 **每用户强调色 Accent** | 为当前皮肤叠加一个自定义品牌强调色(`overrideTokens` 层,不动皮肤本身),**12 个典型色块一键选色** + 选色盘 + 随机 + 恢复主题色 |
|
|
105
105
|
| 🖼️ **壁纸 2.0** | 本地图 / **图片 URL** / **渐变预设**,每套皮肤**自动建议**一张渐变,可**自动弱化**(聚焦任务时降低干扰);**最近使用**(最多 5 张)一键换回 |
|
|
106
|
+
| 🪟 **弹窗不透明度** | 设置 → 外观 →「弹窗不透明度」滑块(0–100%),控制选项弹窗 / 选项卡卡片的底填充透明度——调高文字更清晰,调低可透出背后内容,跟随持久化保存 |
|
|
106
107
|
| 🧩 **本地主题包库** | 你导入的自定义主题包集中展示,**应用 / 收藏 / 移除** 一键完成(内置 8 套皮肤在「皮肤」行选择) |
|
|
107
108
|
| ✅ **清晰选中反馈** | 切换皮肤时选中态(✓ + 边框)**即时跟随**,不再残留模糊的白色高亮框 |
|
|
108
109
|
| 🎲 **换一个试试(surprise me)** | 随机挑一个和你当前不同的主题 |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="
|
|
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
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
@@ -17,9 +17,9 @@ Natives Skinning · Wallpaper · teilbare Theme-Pakete — eine elegante Umsetzu
|
|
|
17
17
|
|
|
18
18
|
> 1-Zeilen-Installation · rein nativ (keine Injektion, keine Installer-Patches) · übersteht DSH-Updates
|
|
19
19
|
|
|
20
|
-
✨ **Design Philosophy — [eine Aussage darüber, was „premium" bedeutet](
|
|
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
21
|
|
|
22
|
-
[中文](
|
|
22
|
+
[中文](../../README.md) · [Änderungshistorie](../../CHANGELOG.md) · [Projektnotizen](../../docs/PROJECT.md) · [Design Philosophy](../../docs/design-philosophy.md) · [Veröffentlichungsanleitung](../../docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -308,12 +308,12 @@ Das Client-Bundle ist direkt im `__ModuleLoader__`-Format geschrieben (dieselbe
|
|
|
308
308
|
- **Einen integrierten Skin hinzufügen**: Füge dem `SKINS`-Array in `lib/client.js` ein Objekt (`id` + `colorScheme` +
|
|
309
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
310
|
|
|
311
|
-
- **Ein Theme-Paket ausliefern (empfohlen)**: Folge [`docs/examples/sample-theme-pack.json`](
|
|
311
|
+
- **Ein Theme-Paket ausliefern (empfohlen)**: Folge [`docs/examples/sample-theme-pack.json`](../../docs/examples/sample-theme-pack.json) —
|
|
312
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/`](
|
|
313
|
+
- **Eigene Wallpaper hinzufügen**: Lege Bilder in [`wallpapers/`](../../wallpapers/) ab (verbreite nur, wofür du die Rechte
|
|
314
314
|
hast) und importiere sie dann über die „Wallpaper“-Reihe von DSH.
|
|
315
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`](
|
|
316
|
+
- **Neu einfärben**: Nutze die `--dsw-alias-*`-Tokens (vollständiger Vertrag in [`docs/themes-spec.md`](../../docs/themes-spec.md)).
|
|
317
317
|
|
|
318
318
|
## 📌 Roadmap
|
|
319
319
|
|
|
@@ -329,8 +329,8 @@ Das Client-Bundle ist direkt im `__ModuleLoader__`-Format geschrieben (dieselbe
|
|
|
329
329
|
|
|
330
330
|
## 🤝 Mitwirken
|
|
331
331
|
|
|
332
|
-
Issues und PRs sind willkommen! Bitte lies den [Contributing Guide](
|
|
333
|
-
[Code of Conduct](
|
|
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
334
|
|
|
335
335
|
## ⭐ Das Projekt unterstützen
|
|
336
336
|
|
|
@@ -340,11 +340,11 @@ beisteuern? Mach mit.
|
|
|
340
340
|
|
|
341
341
|
## 🔒 Sicherheit
|
|
342
342
|
|
|
343
|
-
Ein Sicherheitsproblem gefunden? Öffne kein öffentliches Issue — siehe die [Security Policy](
|
|
343
|
+
Ein Sicherheitsproblem gefunden? Öffne kein öffentliches Issue — siehe die [Security Policy](../../SECURITY.md).
|
|
344
344
|
|
|
345
345
|
## 📄 Lizenz
|
|
346
346
|
|
|
347
|
-
[MIT](
|
|
347
|
+
[MIT](../../LICENSE)
|
|
348
348
|
|
|
349
349
|
## 🙏 Danksagungen
|
|
350
350
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="
|
|
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">
|
|
@@ -17,9 +17,9 @@ Native skinning · wallpaper · shareable theme packs — an elegant implementat
|
|
|
17
17
|
|
|
18
18
|
> 1-line install · purely native (no injection, no installer patches) · survives DSH updates
|
|
19
19
|
|
|
20
|
-
✨ **Design Philosophy — [a statement on what "premium" means](
|
|
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
21
|
|
|
22
|
-
[中文](
|
|
22
|
+
[中文](../../README.md) · [Changelog](../../CHANGELOG.md) · [Project Notes](../../docs/PROJECT.md) · [Design Philosophy](../../docs/design-philosophy.md) · [Publishing Guide](../../docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -306,12 +306,12 @@ seeds (`react`, `react/jsx-runtime`, …) and registered client bundles (`@deeps
|
|
|
306
306
|
- **Add a built-in skin**: append an object (`id` + `colorScheme` + `tokens`) to the `SKINS` array in `lib/client.js`;
|
|
307
307
|
it then appears in Settings automatically. Add a `skin.<id>` key to **all 8 locale dictionaries**
|
|
308
308
|
(`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`).
|
|
309
|
-
- **Ship a theme pack (recommended)**: follow [`docs/examples/sample-theme-pack.json`](
|
|
309
|
+
- **Ship a theme pack (recommended)**: follow [`docs/examples/sample-theme-pack.json`](../../docs/examples/sample-theme-pack.json) —
|
|
310
310
|
one `*.dsh-theme.json` is importable in Settings and shareable via a link, no code changes needed.
|
|
311
|
-
- **Add your own wallpapers**: drop images into [`wallpapers/`](
|
|
311
|
+
- **Add your own wallpapers**: drop images into [`wallpapers/`](../../wallpapers/) (distribute only what you have rights
|
|
312
312
|
to), then import them via DSH's "Wallpaper" row.
|
|
313
313
|
- **Validate**: `npm test` (VM smoke tests covering factory eval, `apply()`, and pack import/persistence).
|
|
314
|
-
- **Repaint**: reference the `--dsw-alias-*` tokens (full contract in [`docs/themes-spec.md`](
|
|
314
|
+
- **Repaint**: reference the `--dsw-alias-*` tokens (full contract in [`docs/themes-spec.md`](../../docs/themes-spec.md)).
|
|
315
315
|
|
|
316
316
|
## 📌 Roadmap
|
|
317
317
|
|
|
@@ -327,8 +327,8 @@ seeds (`react`, `react/jsx-runtime`, …) and registered client bundles (`@deeps
|
|
|
327
327
|
|
|
328
328
|
## 🤝 Contributing
|
|
329
329
|
|
|
330
|
-
Issues and PRs welcome! Please read the [Contributing Guide](
|
|
331
|
-
[Code of Conduct](
|
|
330
|
+
Issues and PRs welcome! Please read the [Contributing Guide](../../CONTRIBUTING.md) and follow the
|
|
331
|
+
[Code of Conduct](../../CODE_OF_CONDUCT.md).
|
|
332
332
|
|
|
333
333
|
## ⭐ Support the project
|
|
334
334
|
|
|
@@ -337,11 +337,11 @@ get discovered and keeps it maintained. Want to contribute themes / an online St
|
|
|
337
337
|
|
|
338
338
|
## 🔒 Security
|
|
339
339
|
|
|
340
|
-
Found a security issue? Don't open a public issue — see the [Security Policy](
|
|
340
|
+
Found a security issue? Don't open a public issue — see the [Security Policy](../../SECURITY.md).
|
|
341
341
|
|
|
342
342
|
## 📄 License
|
|
343
343
|
|
|
344
|
-
[MIT](
|
|
344
|
+
[MIT](../../LICENSE)
|
|
345
345
|
|
|
346
346
|
## 🙏 Acknowledgments
|
|
347
347
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="
|
|
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> · <strong>Español</strong> · <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">
|
|
@@ -17,9 +17,9 @@ Skinning nativo · wallpaper · paquetes de temas compartibles — una implement
|
|
|
17
17
|
|
|
18
18
|
> Instalación en 1 línea · 100 % nativo (sin inyección, sin parches al instalador) · sobrevive a las actualizaciones de DSH
|
|
19
19
|
|
|
20
|
-
✨ **Design Philosophy — [una declaración sobre qué significa «premium»](
|
|
20
|
+
✨ **Design Philosophy — [una declaración sobre qué significa «premium»](../../docs/design-philosophy.md)** · con la estética de iOS / Linear como base, lo premium nace de la precisión del material y la restricción del color.
|
|
21
21
|
|
|
22
|
-
[中文](
|
|
22
|
+
[中文](../../README.md) · [Historial de cambios](../../CHANGELOG.md) · [Notas del proyecto](../../docs/PROJECT.md) · [Design Philosophy](../../docs/design-philosophy.md) · [Guía de publicación](../../docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -305,12 +305,12 @@ entidades de la tabla de módulos: semillas de plataforma (`react`, `react/jsx-r
|
|
|
305
305
|
|
|
306
306
|
- **Añadir un skin integrado**: añade un objeto (`id` + `colorScheme` + `tokens`) al array `SKINS` en `lib/client.js`;
|
|
307
307
|
aparecerá automáticamente en Ajustes. Añade una clave `skin.<id>` a **los 8 diccionarios de idioma** (`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`).
|
|
308
|
-
- **Publicar un paquete de temas (recomendado)**: sigue [`docs/examples/sample-theme-pack.json`](
|
|
308
|
+
- **Publicar un paquete de temas (recomendado)**: sigue [`docs/examples/sample-theme-pack.json`](../../docs/examples/sample-theme-pack.json):
|
|
309
309
|
un único `*.dsh-theme.json` es importable en Ajustes y compartible mediante un enlace, sin necesidad de cambios de código.
|
|
310
|
-
- **Añadir tus propios wallpapers**: coloca las imágenes en [`wallpapers/`](
|
|
310
|
+
- **Añadir tus propios wallpapers**: coloca las imágenes en [`wallpapers/`](../../wallpapers/) (distribuye solo aquello sobre
|
|
311
311
|
lo que tengas derechos) e impórtalas desde la fila «Wallpaper» de DSH.
|
|
312
312
|
- **Validar**: `npm test` (pruebas de humo en VM que cubren la evaluación de la factory, `apply()` y la importación/persistencia de paquetes).
|
|
313
|
-
- **Repintar**: consulta los tokens `--dsw-alias-*` (contrato completo en [`docs/themes-spec.md`](
|
|
313
|
+
- **Repintar**: consulta los tokens `--dsw-alias-*` (contrato completo en [`docs/themes-spec.md`](../../docs/themes-spec.md)).
|
|
314
314
|
|
|
315
315
|
## 📌 Hoja de ruta
|
|
316
316
|
|
|
@@ -326,8 +326,8 @@ entidades de la tabla de módulos: semillas de plataforma (`react`, `react/jsx-r
|
|
|
326
326
|
|
|
327
327
|
## 🤝 Contribuciones
|
|
328
328
|
|
|
329
|
-
¡Las issues y los PRs son bienvenidos! Lee la [Guía de contribución](
|
|
330
|
-
[Código de conducta](
|
|
329
|
+
¡Las issues y los PRs son bienvenidos! Lee la [Guía de contribución](../../CONTRIBUTING.md) y sigue el
|
|
330
|
+
[Código de conducta](../../CODE_OF_CONDUCT.md).
|
|
331
331
|
|
|
332
332
|
## ⭐ Apoya el proyecto
|
|
333
333
|
|
|
@@ -336,11 +336,11 @@ ayuda a que el proyecto sea descubierto y se mantenga. ¿Quieres aportar temas,
|
|
|
336
336
|
|
|
337
337
|
## 🔒 Seguridad
|
|
338
338
|
|
|
339
|
-
¿Has encontrado un problema de seguridad? No abras una issue pública: consulta la [Política de seguridad](
|
|
339
|
+
¿Has encontrado un problema de seguridad? No abras una issue pública: consulta la [Política de seguridad](../../SECURITY.md).
|
|
340
340
|
|
|
341
341
|
## 📄 Licencia
|
|
342
342
|
|
|
343
|
-
[MIT](
|
|
343
|
+
[MIT](../../LICENSE)
|
|
344
344
|
|
|
345
345
|
## 🙏 Agradecimientos
|
|
346
346
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="
|
|
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> · <strong>Français</strong> · <a href="./README.de.md">Deutsch</a> · <a href="./README.ru.md">Русский</a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
@@ -17,9 +17,9 @@ Habillage natif · fond d'écran · packs de thèmes partageables — une implé
|
|
|
17
17
|
|
|
18
18
|
> Installation en 1 ligne · 100 % natif (aucune injection, aucun patch d'installation) · résiste aux mises à jour de DSH
|
|
19
19
|
|
|
20
|
-
✨ **Design Philosophy — [une déclaration sur ce que « premium » signifie](
|
|
20
|
+
✨ **Design Philosophy — [une déclaration sur ce que « premium » signifie](../../docs/design-philosophy.md)** · avec l'esthétique iOS / Linear comme base, le premium naît de la précision du matériau et de la retenue des couleurs.
|
|
21
21
|
|
|
22
|
-
[中文](
|
|
22
|
+
[中文](../../README.md) · [Historique](../../CHANGELOG.md) · [Notes du projet](../../docs/PROJECT.md) · [Design Philosophy](../../docs/design-philosophy.md) · [Guide de publication](../../docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -305,12 +305,12 @@ seeds de plateforme (`react`, `react/jsx-runtime`, …) et les bundles client en
|
|
|
305
305
|
|
|
306
306
|
- **Ajouter un skin intégré** : ajoutez un objet (`id` + `colorScheme` + `tokens`) au tableau `SKINS` dans `lib/client.js` ;
|
|
307
307
|
il apparaîtra alors automatiquement dans les Paramètres. Ajoutez une clé `skin.<id>` aux **8 dictionnaires de langue** (`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`).
|
|
308
|
-
- **Publier un pack de thèmes (recommandé)** : suivez [`docs/examples/sample-theme-pack.json`](
|
|
308
|
+
- **Publier un pack de thèmes (recommandé)** : suivez [`docs/examples/sample-theme-pack.json`](../../docs/examples/sample-theme-pack.json) —
|
|
309
309
|
un `*.dsh-theme.json` est importable dans les Paramètres et partageable via un lien, sans aucune modification de code.
|
|
310
|
-
- **Ajouter vos propres fonds d'écran** : déposez des images dans [`wallpapers/`](
|
|
310
|
+
- **Ajouter vos propres fonds d'écran** : déposez des images dans [`wallpapers/`](../../wallpapers/) (ne distribuez que ce dont vous avez
|
|
311
311
|
les droits), puis importez-les via la rangée « Fond d'écran » de DSH.
|
|
312
312
|
- **Valider** : `npm test` (tests de fumée VM couvrant l'évaluation de la factory, `apply()` et l'import/la persistance des packs).
|
|
313
|
-
- **Repeindre** : référez-vous aux tokens `--dsw-alias-*` (contrat complet dans [`docs/themes-spec.md`](
|
|
313
|
+
- **Repeindre** : référez-vous aux tokens `--dsw-alias-*` (contrat complet dans [`docs/themes-spec.md`](../../docs/themes-spec.md)).
|
|
314
314
|
|
|
315
315
|
## 📌 Feuille de route
|
|
316
316
|
|
|
@@ -326,8 +326,8 @@ seeds de plateforme (`react`, `react/jsx-runtime`, …) et les bundles client en
|
|
|
326
326
|
|
|
327
327
|
## 🤝 Contribuer
|
|
328
328
|
|
|
329
|
-
Issues et PR bienvenues ! Veuillez lire le [Guide de contribution](
|
|
330
|
-
[Code de conduite](
|
|
329
|
+
Issues et PR bienvenues ! Veuillez lire le [Guide de contribution](../../CONTRIBUTING.md) et respecter le
|
|
330
|
+
[Code de conduite](../../CODE_OF_CONDUCT.md).
|
|
331
331
|
|
|
332
332
|
## ⭐ Soutenir le projet
|
|
333
333
|
|
|
@@ -336,11 +336,11 @@ Si vous l'aimez : mettez une étoile **⭐** au dépôt, un pouce **👍** sur n
|
|
|
336
336
|
|
|
337
337
|
## 🔒 Sécurité
|
|
338
338
|
|
|
339
|
-
Vous avez trouvé un problème de sécurité ? N'ouvrez pas d'issue publique — consultez la [Politique de sécurité](
|
|
339
|
+
Vous avez trouvé un problème de sécurité ? N'ouvrez pas d'issue publique — consultez la [Politique de sécurité](../../SECURITY.md).
|
|
340
340
|
|
|
341
341
|
## 📄 Licence
|
|
342
342
|
|
|
343
|
-
[MIT](
|
|
343
|
+
[MIT](../../LICENSE)
|
|
344
344
|
|
|
345
345
|
## 🙏 Remerciements
|
|
346
346
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="
|
|
2
|
+
<a href="../../README.md">中文</a> · <a href="./README.en.md">English</a> · <strong>日本語</strong> · <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">
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
> 1行インストール · 完全ネイティブ(注入なし・インストーラへのパッチなし)· DSH のアップデート後もそのまま動作
|
|
19
19
|
|
|
20
|
-
✨ **Design Philosophy — [「高級とは何か」についてのデザイン宣言](
|
|
20
|
+
✨ **Design Philosophy — [「高級とは何か」についてのデザイン宣言](../../docs/design-philosophy.md)** · iOS / Linear の美学を基準に、高級感を素材の正確さと克制された配色に置く。
|
|
21
21
|
|
|
22
|
-
[中文](
|
|
22
|
+
[中文](../../README.md) · [変更履歴](../../CHANGELOG.md) · [プロジェクトメモ](../../docs/PROJECT.md) · [Design Philosophy](../../docs/design-philosophy.md) · [公開ガイド](../../docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -305,12 +305,12 @@ ui-layout の ThemePresenter によって `<body>` へのインラインカス
|
|
|
305
305
|
|
|
306
306
|
- **内蔵スキンを追加する**: `lib/client.js` の `SKINS` 配列にオブジェクト(`id` + `colorScheme` + `tokens`)を追加するだけ。
|
|
307
307
|
Settings には自動的に表示されます。**全 8 言語の辞書**(`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`)に `skin.<id>` キーを追加してください。
|
|
308
|
-
- **テーマパックを配布する(推奨)**: [`docs/examples/sample-theme-pack.json`](
|
|
308
|
+
- **テーマパックを配布する(推奨)**: [`docs/examples/sample-theme-pack.json`](../../docs/examples/sample-theme-pack.json) に従って —
|
|
309
309
|
`*.dsh-theme.json` を1つ用意すれば Settings からインポートでき、リンクで共有も可能。コードの変更は不要です。
|
|
310
|
-
- **自分で壁紙を追加する**: [`wallpapers/`](
|
|
310
|
+
- **自分で壁紙を追加する**: [`wallpapers/`](../../wallpapers/) に画像を配置し(配布権のあるものだけを)、
|
|
311
311
|
DSH の「Wallpaper」行からインポートします。
|
|
312
312
|
- **検証する**: `npm test`(ファクトリの評価、`apply()`、パックのインポート/永続化をカバーする VM スモークテスト)。
|
|
313
|
-
- **塗り直す**: `--dsw-alias-*` トークンを参照(完全な仕様は [`docs/themes-spec.md`](
|
|
313
|
+
- **塗り直す**: `--dsw-alias-*` トークンを参照(完全な仕様は [`docs/themes-spec.md`](../../docs/themes-spec.md))。
|
|
314
314
|
|
|
315
315
|
## 📌 ロードマップ
|
|
316
316
|
|
|
@@ -326,8 +326,8 @@ ui-layout の ThemePresenter によって `<body>` へのインラインカス
|
|
|
326
326
|
|
|
327
327
|
## 🤝 コントリビューション
|
|
328
328
|
|
|
329
|
-
Issue や PR を歓迎します をお読みの上、
|
|
330
|
+
[行動規範](../../CODE_OF_CONDUCT.md) に従ってください。
|
|
331
331
|
|
|
332
332
|
## ⭐ プロジェクトを支援する
|
|
333
333
|
|
|
@@ -336,11 +336,11 @@ Issue や PR を歓迎します を確認してください。
|
|
340
340
|
|
|
341
341
|
## 📄 ライセンス
|
|
342
342
|
|
|
343
|
-
[MIT](
|
|
343
|
+
[MIT](../../LICENSE)
|
|
344
344
|
|
|
345
345
|
## 🙏 謝辞
|
|
346
346
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="
|
|
2
|
+
<a href="../../README.md">中文</a> · <a href="./README.en.md">English</a> · <a href="./README.ja.md">日本語</a> · <strong>한국어</strong> · <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">
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
> 1줄 설치 · 순수 네이티브 (주입 없음, 설치 프로그램 패치 없음) · DSH 업데이트에도 안전
|
|
19
19
|
|
|
20
|
-
✨ **Design Philosophy — ["고급"이란 무엇인가에 대한 디자인 선언](
|
|
20
|
+
✨ **Design Philosophy — ["고급"이란 무엇인가에 대한 디자인 선언](../../docs/design-philosophy.md)** · iOS / Linear 미학을 기준으로, 고급감을 소재의 정확성과 절제된 배색에 둡니다.
|
|
21
21
|
|
|
22
|
-
[中文](
|
|
22
|
+
[中文](../../README.md) · [변경 내역](../../CHANGELOG.md) · [프로젝트 노트](../../docs/PROJECT.md) · [Design Philosophy](../../docs/design-philosophy.md) · [배포 가이드](../../docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -304,12 +304,12 @@ ui-layout의 ThemePresenter가 `<body>`에 인라인 커스텀 프로퍼티로
|
|
|
304
304
|
|
|
305
305
|
- **기본 스킨 추가**: `lib/client.js`의 `SKINS` 배열에 객체(`id` + `colorScheme` + `tokens`)를 추가하면
|
|
306
306
|
설정(Settings)에 자동으로 나타납니다. **8개 언어 사전 전체**(`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`)에 `skin.<id>` 키를 추가하세요.
|
|
307
|
-
- **테마 팩 배포 (권장)**: [`docs/examples/sample-theme-pack.json`](
|
|
307
|
+
- **테마 팩 배포 (권장)**: [`docs/examples/sample-theme-pack.json`](../../docs/examples/sample-theme-pack.json)을 따르세요 —
|
|
308
308
|
`*.dsh-theme.json` 하나로 설정(Settings)에서 가져오기 가능하고 링크로 공유할 수 있으며, 코드 변경이 필요 없습니다.
|
|
309
|
-
- **자체 월페이퍼 추가**: [`wallpapers/`](
|
|
309
|
+
- **자체 월페이퍼 추가**: [`wallpapers/`](../../wallpapers/)에 이미지를 넣으세요 (권리 보유 이미지만 배포), 그런 다음
|
|
310
310
|
DSH의 "Wallpaper" 행에서 가져오면 됩니다.
|
|
311
311
|
- **검증**: `npm test` (factory eval, `apply()`, 팩 가져오기/영속성 등을 다루는 VM 스모크 테스트).
|
|
312
|
-
- **리페인트**: `--dsw-alias-*` 토큰을 참조하세요 (전체 계약은 [`docs/themes-spec.md`](
|
|
312
|
+
- **리페인트**: `--dsw-alias-*` 토큰을 참조하세요 (전체 계약은 [`docs/themes-spec.md`](../../docs/themes-spec.md)에).
|
|
313
313
|
|
|
314
314
|
## 📌 로드맵
|
|
315
315
|
|
|
@@ -325,8 +325,8 @@ ui-layout의 ThemePresenter가 `<body>`에 인라인 커스텀 프로퍼티로
|
|
|
325
325
|
|
|
326
326
|
## 🤝 기여하기
|
|
327
327
|
|
|
328
|
-
이슈와 PR 환영합니다! [기여 가이드](
|
|
329
|
-
[행동 강령](
|
|
328
|
+
이슈와 PR 환영합니다! [기여 가이드](../../CONTRIBUTING.md)를 읽고
|
|
329
|
+
[행동 강령](../../CODE_OF_CONDUCT.md)을 따라주세요.
|
|
330
330
|
|
|
331
331
|
## ⭐ 프로젝트 지원하기
|
|
332
332
|
|
|
@@ -336,11 +336,11 @@ ui-layout의 ThemePresenter가 `<body>`에 인라인 커스텀 프로퍼티로
|
|
|
336
336
|
|
|
337
337
|
## 🔒 보안
|
|
338
338
|
|
|
339
|
-
보안 문제를 발견하셨나요? 공개 이슈로 열지 말고 [보안 정책](
|
|
339
|
+
보안 문제를 발견하셨나요? 공개 이슈로 열지 말고 [보안 정책](../../SECURITY.md)을 참고하세요.
|
|
340
340
|
|
|
341
341
|
## 📄 라이선스
|
|
342
342
|
|
|
343
|
-
[MIT](
|
|
343
|
+
[MIT](../../LICENSE)
|
|
344
344
|
|
|
345
345
|
## 🙏 감사의 말
|
|
346
346
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="
|
|
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> · <a href="./README.de.md">Deutsch</a> · <strong>Русский</strong>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
> Установка в одну строку · полностью нативно (без инъекций, без патчей установщика) · переживает обновления DSH
|
|
19
19
|
|
|
20
|
-
✨ **Design Philosophy — [заявление о том, что значит «премиум»](
|
|
20
|
+
✨ **Design Philosophy — [заявление о том, что значит «премиум»](../../docs/design-philosophy.md)** · с эстетикой iOS / Linear за основу премиум рождается из точности материала и сдержанности цвета.
|
|
21
21
|
|
|
22
|
-
[中文](
|
|
22
|
+
[中文](../../README.md) · [История изменений](../../CHANGELOG.md) · [Заметки о проекте](../../docs/PROJECT.md) · [Design Philosophy](../../docs/design-philosophy.md) · [Руководство по публикации](../../docs/publishing-to-npm.md)
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|

|
|
@@ -304,12 +304,12 @@ dsh web # restores the official appearance
|
|
|
304
304
|
|
|
305
305
|
- **Добавить встроенную тему**: добавьте объект (`id` + `colorScheme` + `tokens`) в массив `SKINS` в `lib/client.js`;
|
|
306
306
|
она появится в Настройках автоматически. Добавьте ключ `skin.<id>` во **все 8 словарей языков** (`zh`/`en`/`ja`/`ko`/`es`/`fr`/`de`/`ru`).
|
|
307
|
-
- **Поставлять набор тем (рекомендуется)**: следуйте [`docs/examples/sample-theme-pack.json`](
|
|
307
|
+
- **Поставлять набор тем (рекомендуется)**: следуйте [`docs/examples/sample-theme-pack.json`](../../docs/examples/sample-theme-pack.json) —
|
|
308
308
|
любой `*.dsh-theme.json` импортируется в Настройках и распространяется по ссылке, без изменений кода.
|
|
309
|
-
- **Добавить свои обои**: положите изображения в [`wallpapers/`](
|
|
309
|
+
- **Добавить свои обои**: положите изображения в [`wallpapers/`](../../wallpapers/) (распространяйте только то, на что у вас
|
|
310
310
|
есть права), затем импортируйте их через ряд «Обои» в DSH.
|
|
311
311
|
- **Проверка**: `npm test` (VM-смоук-тесты: factory eval, `apply()`, импорт набора и сохранение).
|
|
312
|
-
- **Перекраска**: используйте токены `--dsw-alias-*` (полный контракт в [`docs/themes-spec.md`](
|
|
312
|
+
- **Перекраска**: используйте токены `--dsw-alias-*` (полный контракт в [`docs/themes-spec.md`](../../docs/themes-spec.md)).
|
|
313
313
|
|
|
314
314
|
## 📌 Дорожная карта
|
|
315
315
|
|
|
@@ -325,8 +325,8 @@ dsh web # restores the official appearance
|
|
|
325
325
|
|
|
326
326
|
## 🤝 Вклад
|
|
327
327
|
|
|
328
|
-
Приветствуются issue и PR! Пожалуйста, прочитайте [Руководство по вкладу](
|
|
329
|
-
[Кодекс поведения](
|
|
328
|
+
Приветствуются issue и PR! Пожалуйста, прочитайте [Руководство по вкладу](../../CONTRIBUTING.md) и соблюдайте
|
|
329
|
+
[Кодекс поведения](../../CODE_OF_CONDUCT.md).
|
|
330
330
|
|
|
331
331
|
## ⭐ Поддержите проект
|
|
332
332
|
|
|
@@ -336,11 +336,11 @@ dsh web # restores the official appearance
|
|
|
336
336
|
|
|
337
337
|
## 🔒 Безопасность
|
|
338
338
|
|
|
339
|
-
Нашли проблему с безопасностью? Не открывайте публичный issue — см. [Политику безопасности](
|
|
339
|
+
Нашли проблему с безопасностью? Не открывайте публичный issue — см. [Политику безопасности](../../SECURITY.md).
|
|
340
340
|
|
|
341
341
|
## 📄 Лицензия
|
|
342
342
|
|
|
343
|
-
[MIT](
|
|
343
|
+
[MIT](../../LICENSE)
|
|
344
344
|
|
|
345
345
|
## 🙏 Благодарности
|
|
346
346
|
|
package/lib/client.js
CHANGED
|
@@ -54,6 +54,12 @@ window.__ModuleLoader__.load({
|
|
|
54
54
|
const SIDEBAR_LINK_KEY = "dsh-dream-skin:sidebar-link";
|
|
55
55
|
/** Default: sidebar wash opacity follows the main canvas (avoids a split look). */
|
|
56
56
|
const DEFAULT_SIDEBAR_LINK = 1;
|
|
57
|
+
/** localStorage key holding the popup / option-card fill opacity (0..1). */
|
|
58
|
+
const MODAL_OPACITY_KEY = "dsh-dream-skin:modal-opacity";
|
|
59
|
+
/** Default fill opacity for popups & the user-options card (kept readable). */
|
|
60
|
+
const DEFAULT_MODAL_OPACITY = 0.94;
|
|
61
|
+
/** CSS variable carrying the current popup fill weight (a percentage). */
|
|
62
|
+
const MODAL_FILL_VAR = "--dsh-dream-skin-modal-fill";
|
|
57
63
|
/** Built-in base colors used when no skin token owns a scheme. */
|
|
58
64
|
const BUILTIN_BASE = {
|
|
59
65
|
light: "rgb(255, 255, 255)",
|
|
@@ -404,7 +410,9 @@ window.__ModuleLoader__.load({
|
|
|
404
410
|
"bg2.gradient": "渐变",
|
|
405
411
|
"bg2.apply": "应用链接",
|
|
406
412
|
"bg2.autodim": "自动弱化(聚焦任务时不喧宾夺主)",
|
|
407
|
-
"bg2.remove": "清除壁纸"
|
|
413
|
+
"bg2.remove": "清除壁纸",
|
|
414
|
+
"modal.title": "弹窗不透明度",
|
|
415
|
+
"modal.hint": "控制选项弹窗 / 选项卡的底填充透明度——越高越不透明、文字越清晰;越低越能透出背后的内容。"
|
|
408
416
|
};
|
|
409
417
|
|
|
410
418
|
/** English dictionary, checked complete against the zh key set. */
|
|
@@ -451,7 +459,9 @@ window.__ModuleLoader__.load({
|
|
|
451
459
|
"bg2.gradient": "Gradient",
|
|
452
460
|
"bg2.apply": "Apply link",
|
|
453
461
|
"bg2.autodim": "Auto-dim (gently fade while focusing tasks)",
|
|
454
|
-
"bg2.remove": "Clear wallpaper"
|
|
462
|
+
"bg2.remove": "Clear wallpaper",
|
|
463
|
+
"modal.title": "Popup opacity",
|
|
464
|
+
"modal.hint": "Controls how opaque the popup / option-card fill is — higher keeps text crisp, lower lets the content behind show through."
|
|
455
465
|
};
|
|
456
466
|
|
|
457
467
|
/** JA dictionary (community translation). */
|
|
@@ -498,7 +508,9 @@ window.__ModuleLoader__.load({
|
|
|
498
508
|
"bg2.gradient": "グラデーション",
|
|
499
509
|
"bg2.apply": "リンクを適用",
|
|
500
510
|
"bg2.autodim": "自動ディム(タスクに集中している間は控えめに薄暗く)",
|
|
501
|
-
"bg2.remove": "壁紙をクリア"
|
|
511
|
+
"bg2.remove": "壁紙をクリア",
|
|
512
|
+
"modal.title": "ポップアップの不透明度",
|
|
513
|
+
"modal.hint": "オプションのポップアップ / カードの塗り不透明度を調整します。高いほど不透明で文字がはっきりし、低いと背後が透けます。"
|
|
502
514
|
};
|
|
503
515
|
|
|
504
516
|
/** KO dictionary (community translation). */
|
|
@@ -545,7 +557,9 @@ window.__ModuleLoader__.load({
|
|
|
545
557
|
"bg2.gradient": "그라데이션",
|
|
546
558
|
"bg2.apply": "링크 적용",
|
|
547
559
|
"bg2.autodim": "자동으로 은은해지기 (작업에 집중할 때 방해하지 않도록)",
|
|
548
|
-
"bg2.remove": "배경화면 지우기"
|
|
560
|
+
"bg2.remove": "배경화면 지우기",
|
|
561
|
+
"modal.title": "팝업 불투명도",
|
|
562
|
+
"modal.hint": "옵션 팝업 / 카드 채우기 불투명도를 조절합니다. 높을수록 불투명해져 텍스트가 선명하고, 낮으면 배경이 비쳐 보입니다."
|
|
549
563
|
};
|
|
550
564
|
|
|
551
565
|
/** ES dictionary (community translation). */
|
|
@@ -592,7 +606,9 @@ window.__ModuleLoader__.load({
|
|
|
592
606
|
"bg2.gradient": "Degradado",
|
|
593
607
|
"bg2.apply": "Aplicar enlace",
|
|
594
608
|
"bg2.autodim": "Atenuación automática (se desvanece suavemente mientras te concentras en las tareas)",
|
|
595
|
-
"bg2.remove": "Quitar fondo"
|
|
609
|
+
"bg2.remove": "Quitar fondo",
|
|
610
|
+
"modal.title": "Opacidad de las ventanas emergentes",
|
|
611
|
+
"modal.hint": "Controla la opacidad del relleno de las ventanas emergentes / tarjetas de opciones: más alta mantiene el texto nítido, más baja deja ver el contenido de atrás."
|
|
596
612
|
};
|
|
597
613
|
|
|
598
614
|
/** FR dictionary (community translation). */
|
|
@@ -639,7 +655,9 @@ window.__ModuleLoader__.load({
|
|
|
639
655
|
"bg2.gradient": "Dégradé",
|
|
640
656
|
"bg2.apply": "Appliquer le lien",
|
|
641
657
|
"bg2.autodim": "Atténuation auto (s'estompe en douceur pendant la concentration)",
|
|
642
|
-
"bg2.remove": "Effacer le fond d'écran"
|
|
658
|
+
"bg2.remove": "Effacer le fond d'écran",
|
|
659
|
+
"modal.title": "Opacité des fenêtres contextuelles",
|
|
660
|
+
"modal.hint": "Contrôle l'opacité du remplissage des fenêtres / cartes d'options : plus élevée, le texte reste net ; plus basse, le contenu derrière transparaît."
|
|
643
661
|
};
|
|
644
662
|
|
|
645
663
|
/** DE dictionary (community translation). */
|
|
@@ -686,7 +704,9 @@ window.__ModuleLoader__.load({
|
|
|
686
704
|
"bg2.gradient": "Verlauf",
|
|
687
705
|
"bg2.apply": "Link anwenden",
|
|
688
706
|
"bg2.autodim": "Automatisch dimmen (sanft verblassen, während du dich auf Aufgaben konzentrierst)",
|
|
689
|
-
"bg2.remove": "Wallpaper entfernen"
|
|
707
|
+
"bg2.remove": "Wallpaper entfernen",
|
|
708
|
+
"modal.title": "Deckkraft von Popups",
|
|
709
|
+
"modal.hint": "Regelt die Fülldeckkraft von Popups / Optionskarten – höher hält den Text klar, niedriger lässt den Hintergrund durchscheinen."
|
|
690
710
|
};
|
|
691
711
|
|
|
692
712
|
/** RU dictionary (community translation). */
|
|
@@ -733,7 +753,9 @@ window.__ModuleLoader__.load({
|
|
|
733
753
|
"bg2.gradient": "Градиент",
|
|
734
754
|
"bg2.apply": "Применить ссылку",
|
|
735
755
|
"bg2.autodim": "Автоприглушение (плавно затухает при фокусе на задачах)",
|
|
736
|
-
"bg2.remove": "Очистить обои"
|
|
756
|
+
"bg2.remove": "Очистить обои",
|
|
757
|
+
"modal.title": "Непрозрачность всплывающих окон",
|
|
758
|
+
"modal.hint": "Регулирует непрозрачность заливки всплывающих окон / карточек с параметрами: выше — текст чётче, ниже — просвечивает фон."
|
|
737
759
|
};
|
|
738
760
|
|
|
739
761
|
//#endregion
|
|
@@ -901,6 +923,21 @@ window.__ModuleLoader__.load({
|
|
|
901
923
|
const n = Number(raw);
|
|
902
924
|
return Number.isFinite(n) ? n !== 0 : (DEFAULT_SIDEBAR_LINK !== 0);
|
|
903
925
|
}
|
|
926
|
+
|
|
927
|
+
/** Popup / option-card fill opacity 0..1 (clamped; default when unset). */
|
|
928
|
+
function readModalOpacity() {
|
|
929
|
+
const raw = readStorage(MODAL_OPACITY_KEY);
|
|
930
|
+
if (raw === null) return DEFAULT_MODAL_OPACITY;
|
|
931
|
+
const value = Number(raw);
|
|
932
|
+
return Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : DEFAULT_MODAL_OPACITY;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
/** Persist the popup fill opacity (0..1, clamped) and cache it in-process. */
|
|
936
|
+
function writeModalOpacity(value) {
|
|
937
|
+
const clamped = Math.min(1, Math.max(0, Number(value)));
|
|
938
|
+
writeStorage(MODAL_OPACITY_KEY, String(clamped));
|
|
939
|
+
return clamped;
|
|
940
|
+
}
|
|
904
941
|
//#endregion
|
|
905
942
|
|
|
906
943
|
//#region dsh-dream-skin: wallpaper layer + token shading
|
|
@@ -984,18 +1021,65 @@ window.__ModuleLoader__.load({
|
|
|
984
1021
|
" backdrop-filter: blur(20px) saturate(140%);",
|
|
985
1022
|
" }",
|
|
986
1023
|
"}",
|
|
987
|
-
// A second rule (always applied, not @supports-gated)
|
|
1024
|
+
// A second rule (always applied, not @supports-gated) used to give the
|
|
988
1025
|
// composer root a bottom-scrim so a scrolled-up message / "turn N"
|
|
989
|
-
// monitor row never shows through under the input.
|
|
990
|
-
//
|
|
991
|
-
//
|
|
992
|
-
//
|
|
993
|
-
//
|
|
994
|
-
//
|
|
1026
|
+
// monitor row never shows through under the input. That scrim was a
|
|
1027
|
+
// full-rectangle gradient over the WIDER `.uV2eYG_root` (which is
|
|
1028
|
+
// wider than the rounded `.uV2eYG_card`), so on skins with a
|
|
1029
|
+
// wallpaper it painted a big sharp-cornered rectangle behind and
|
|
1030
|
+
// around the rounded input — the "外层尖角框" users disliked. The
|
|
1031
|
+
// composer card already carries its own translucent glass fill +
|
|
1032
|
+
// backdrop blur, so the frame is dropped: the root is now fully
|
|
1033
|
+
// transparent and only the rounded card reads. Readability is kept
|
|
1034
|
+
// by the card's own fill; nothing sharp frames the input anymore.
|
|
995
1035
|
".uV2eYG_root {",
|
|
996
|
-
" background:
|
|
997
|
-
"
|
|
998
|
-
|
|
1036
|
+
" background: transparent;",
|
|
1037
|
+
"}",
|
|
1038
|
+
// --- Right file panel consistency (issue: left rail vs right panel) ---
|
|
1039
|
+
// The left sidebar reads the skin's `--dsw-specific-sidebar-fill`
|
|
1040
|
+
// (a translucent dark tint that matches the wallpaper wash), but the
|
|
1041
|
+
// right file panel (`nArs4W_panel`) fell back to DSH's default
|
|
1042
|
+
// near-white translucent fill, so the two halves rendered with
|
|
1043
|
+
// totally different tints. Give the right panel the very same
|
|
1044
|
+
// sidebar fill and a matching hairline so both sides look uniform.
|
|
1045
|
+
".nArs4W_panel {",
|
|
1046
|
+
" background: var(--dsw-specific-sidebar-fill) !important;",
|
|
1047
|
+
" border-left-color: var(--dsw-alias-border-l2);",
|
|
1048
|
+
"}",
|
|
1049
|
+
// The white default show-through can leak on nested panes that carry
|
|
1050
|
+
// their own translucent white; force them to inherit the sidebar fill.
|
|
1051
|
+
".nArs4W_pane, .nArs4W_paneContent, .nArs4W_workbench, .nArs4W_explorerBody {",
|
|
1052
|
+
" background: transparent;",
|
|
1053
|
+
"}",
|
|
1054
|
+
// --- Left sidebar foot/settings consistency (issue: settings area) ---
|
|
1055
|
+
// The workspace list region (`hHd-Xa_regionArea`) overhangs to the
|
|
1056
|
+
// column's left/right edges (margin-left:-4px / margin-right:-12px),
|
|
1057
|
+
// but the footer/settings region was a plain `width:100%` box stuck
|
|
1058
|
+
// at the inner padding, so it sat ~4px inset left and ~12px inset
|
|
1059
|
+
// right. At the seam between the scrolling list and the footer that
|
|
1060
|
+
// difference made a visible vertical step that read as a "断裂" —
|
|
1061
|
+
// the two planes looked misaligned/detached. Align the footer to the
|
|
1062
|
+
// exact same span as the list so the whole left column is one
|
|
1063
|
+
// continuous plane.
|
|
1064
|
+
".hHd-Xa_root .hHd-Xa_footArea, .hHd-Xa_root .hHd-Xa_settingsArea, .hHd-Xa_root .hHd-Xa_footerActions {",
|
|
1065
|
+
" width: auto;",
|
|
1066
|
+
" margin-right: calc(-1 * var(--dsh-sidebar-inline-padding, 12px));",
|
|
1067
|
+
" margin-left: -4px;",
|
|
1068
|
+
" padding-right: var(--dsh-sidebar-inline-padding, 12px);",
|
|
1069
|
+
" padding-left: 4px;",
|
|
1070
|
+
"}",
|
|
1071
|
+
// Force a single uniform fill across the whole sidebar and remove any
|
|
1072
|
+
// leftover erase-band / divider right at the list-footer boundary.
|
|
1073
|
+
".hHd-Xa_footArea, .hHd-Xa_settingsArea, .hHd-Xa_footerActions {",
|
|
1074
|
+
" background: transparent;",
|
|
1075
|
+
" box-shadow: none;",
|
|
1076
|
+
" border: none;",
|
|
1077
|
+
"}",
|
|
1078
|
+
// The conversation list ends with a fade (`.qDHVXG_fade`) so the whole
|
|
1079
|
+
// left column fades uniformly into the sidebar fill — no seam at the
|
|
1080
|
+
// foot.
|
|
1081
|
+
".qDHVXG_fade {",
|
|
1082
|
+
" background: transparent;",
|
|
999
1083
|
"}",
|
|
1000
1084
|
// The user-questions option card (`.Mbwy4a_card`) shares `--dsw-specific-input-major`
|
|
1001
1085
|
// with the composer, which is intentionally very translucent for the liquid-glass
|
|
@@ -1003,8 +1087,12 @@ window.__ModuleLoader__.load({
|
|
|
1003
1087
|
// through). Override it with a high-opacity fill derived from the active base color,
|
|
1004
1088
|
// so the options stay readable in BOTH deep and light skins while still carrying a
|
|
1005
1089
|
// subtle glass blur. This is a leaf card, so backdrop-filter here is safe.
|
|
1090
|
+
//
|
|
1091
|
+
// The fill weight (what % of the base color the block carries) is user-adjustable
|
|
1092
|
+
// via Settings → 外观 → 弹窗不透明度, held in the MODAL_FILL_VAR custom property.
|
|
1093
|
+
// Lower weight = more transparent (content shows through); higher = nearly solid.
|
|
1006
1094
|
".Mbwy4a_card {",
|
|
1007
|
-
" background: color-mix(in srgb, var(--dsw-alias-bg-base) 94
|
|
1095
|
+
" background: color-mix(in srgb, var(--dsw-alias-bg-base) var(" + MODAL_FILL_VAR + ", 94%), transparent);",
|
|
1008
1096
|
" -webkit-backdrop-filter: blur(24px) saturate(150%);",
|
|
1009
1097
|
" backdrop-filter: blur(24px) saturate(150%);",
|
|
1010
1098
|
"}"
|
|
@@ -1021,6 +1109,22 @@ window.__ModuleLoader__.load({
|
|
|
1021
1109
|
materialStyleEl?.remove();
|
|
1022
1110
|
materialStyleEl = null;
|
|
1023
1111
|
}
|
|
1112
|
+
|
|
1113
|
+
/**
|
|
1114
|
+
* Apply the persisted popup-fill weight onto `:root` as MODAL_FILL_VAR, so
|
|
1115
|
+
* every injected rule that references it (the user-options card fill) stays
|
|
1116
|
+
* in sync without rebuilding the stylesheet. The weight is the base-color
|
|
1117
|
+
* percentage (0..100): higher = more opaque/solid, lower = more transparent.
|
|
1118
|
+
* Called at boot (so a saved value re-applies) and whenever the slider moves.
|
|
1119
|
+
*/
|
|
1120
|
+
function applyModalOpacity() {
|
|
1121
|
+
const weight = Math.round(readModalOpacity() * 100);
|
|
1122
|
+
try {
|
|
1123
|
+
document.documentElement.style.setProperty(MODAL_FILL_VAR, `${weight}%`);
|
|
1124
|
+
} catch {
|
|
1125
|
+
// document null in a headless eval — the CSS fallback (94%) still applies
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1024
1128
|
//#endregion
|
|
1025
1129
|
|
|
1026
1130
|
//#region dsh-dream-skin: image compression
|
|
@@ -1728,6 +1832,38 @@ window.__ModuleLoader__.load({
|
|
|
1728
1832
|
]
|
|
1729
1833
|
});
|
|
1730
1834
|
}
|
|
1835
|
+
|
|
1836
|
+
/**
|
|
1837
|
+
* Popup-opacity row: a slider for how opaque the popup / option-card fill
|
|
1838
|
+
* is. Uses the shared Slider component; the injected modal CSS reads the
|
|
1839
|
+
* persisted value through MODAL_FILL_VAR (see applyModalOpacity), so moving
|
|
1840
|
+
* the slider re-applies immediately and persists across reloads.
|
|
1841
|
+
*/
|
|
1842
|
+
function ModalOpacityRow({ t, setOpacity, useStore }) {
|
|
1843
|
+
const opacity = useStore((s) => s.opacity);
|
|
1844
|
+
return (0, react_jsx_runtime.jsxs)("div", {
|
|
1845
|
+
style: styles.group,
|
|
1846
|
+
children: [
|
|
1847
|
+
(0, react_jsx_runtime.jsx)("div", {
|
|
1848
|
+
style: styles.title,
|
|
1849
|
+
children: t("modal.title")
|
|
1850
|
+
}),
|
|
1851
|
+
(0, react_jsx_runtime.jsx)(Slider, {
|
|
1852
|
+
label: t("modal.title"),
|
|
1853
|
+
value: Math.round(opacity * 100),
|
|
1854
|
+
min: 0,
|
|
1855
|
+
max: 100,
|
|
1856
|
+
step: 1,
|
|
1857
|
+
format: (v) => `${v}%`,
|
|
1858
|
+
onChange: setOpacity
|
|
1859
|
+
}),
|
|
1860
|
+
(0, react_jsx_runtime.jsx)("div", {
|
|
1861
|
+
style: styles.hint,
|
|
1862
|
+
children: t("modal.hint")
|
|
1863
|
+
})
|
|
1864
|
+
]
|
|
1865
|
+
});
|
|
1866
|
+
}
|
|
1731
1867
|
//#endregion
|
|
1732
1868
|
|
|
1733
1869
|
//#region dsh-dream-skin: P0 shared utilities (packs, accent, persistence, random)
|
|
@@ -2203,6 +2339,20 @@ window.__ModuleLoader__.load({
|
|
|
2203
2339
|
}
|
|
2204
2340
|
});
|
|
2205
2341
|
}
|
|
2342
|
+
|
|
2343
|
+
/** Popup-opacity row store: the current fill weight (0..1) + revision. */
|
|
2344
|
+
function createModalOpacityStore() {
|
|
2345
|
+
return (0, _runtime_client.defineStore)({
|
|
2346
|
+
init: () => ({ opacity: DEFAULT_MODAL_OPACITY, revision: -1 }),
|
|
2347
|
+
actions: {
|
|
2348
|
+
sync: (d, opacity, revision) => {
|
|
2349
|
+
if (revision <= d.revision) return;
|
|
2350
|
+
d.opacity = opacity;
|
|
2351
|
+
d.revision = revision;
|
|
2352
|
+
}
|
|
2353
|
+
}
|
|
2354
|
+
});
|
|
2355
|
+
}
|
|
2206
2356
|
//#endregion
|
|
2207
2357
|
|
|
2208
2358
|
//#region dsh-dream-skin: P0 accent override
|
|
@@ -2413,6 +2563,9 @@ window.__ModuleLoader__.load({
|
|
|
2413
2563
|
// Apply + push the wallpaper state (includes the sidebar opacity).
|
|
2414
2564
|
applyWallpaper2(ctx);
|
|
2415
2565
|
syncWallpaper();
|
|
2566
|
+
|
|
2567
|
+
// Apply the persisted popup-fill weight so saved modal opacity re-applies.
|
|
2568
|
+
applyModalOpacity();
|
|
2416
2569
|
}
|
|
2417
2570
|
|
|
2418
2571
|
/** Clear wallpaper (all kinds) and its overrides. */
|
|
@@ -3073,6 +3226,33 @@ window.__ModuleLoader__.load({
|
|
|
3073
3226
|
inject: advWallpaperInjected
|
|
3074
3227
|
}, WallpaperAdvancedRow));
|
|
3075
3228
|
|
|
3229
|
+
// Popup / option-card fill opacity row.
|
|
3230
|
+
const modalOpacityStore = createModalOpacityStore();
|
|
3231
|
+
let modalOpacityBound;
|
|
3232
|
+
let modalOpacityRevision = 0;
|
|
3233
|
+
const syncModalOpacity = () => {
|
|
3234
|
+
modalOpacityBound?.sync(readModalOpacity(), ++modalOpacityRevision);
|
|
3235
|
+
};
|
|
3236
|
+
const modalOpacityInjected = (actions) => {
|
|
3237
|
+
modalOpacityBound = actions;
|
|
3238
|
+
syncModalOpacity();
|
|
3239
|
+
return {
|
|
3240
|
+
setOpacity: (percent) => {
|
|
3241
|
+
const clamped = writeModalOpacity(percent / 100);
|
|
3242
|
+
applyModalOpacity();
|
|
3243
|
+
modalOpacityBound?.sync(clamped, ++modalOpacityRevision);
|
|
3244
|
+
}
|
|
3245
|
+
};
|
|
3246
|
+
};
|
|
3247
|
+
ctx.slots.inject("settings.dreamSkin.item", () => ctx.slots.register({
|
|
3248
|
+
name: "settings.dreamSkin.item",
|
|
3249
|
+
id: "dream-skin-modal-opacity",
|
|
3250
|
+
order: 32,
|
|
3251
|
+
store: modalOpacityStore,
|
|
3252
|
+
locale: SETTINGS_NS,
|
|
3253
|
+
inject: modalOpacityInjected
|
|
3254
|
+
}, ModalOpacityRow));
|
|
3255
|
+
|
|
3076
3256
|
// P0: per-user accent override row.
|
|
3077
3257
|
const accentStore = createAccentStore();
|
|
3078
3258
|
let accentBound;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-dream-skin",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "DeepSeek Harness 换肤插件(Dream Skin for DSH):8 套 iOS / Linear 式清透冷调的高质感主题 + 弥散光壁纸 + 每皮肤智能背景 + 强调色 + 主题包分享,把换肤做成材质与配色克制的高级感工艺,而非贴图 — in the spirit of Codex Dream Skin, elevated.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -23,13 +23,7 @@
|
|
|
23
23
|
"lib/types",
|
|
24
24
|
"cordis.patch.yml",
|
|
25
25
|
"README.md",
|
|
26
|
-
"
|
|
27
|
-
"README.ja.md",
|
|
28
|
-
"README.ko.md",
|
|
29
|
-
"README.es.md",
|
|
30
|
-
"README.fr.md",
|
|
31
|
-
"README.de.md",
|
|
32
|
-
"README.ru.md",
|
|
26
|
+
"docs/i18n",
|
|
33
27
|
"docs/previews",
|
|
34
28
|
"docs/screenshots",
|
|
35
29
|
"docs/examples",
|