dsh-theme-escook 1.0.0 → 1.0.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Simon-yyy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -10,6 +10,10 @@
10
10
  A premium dark violet & amber gold aesthetic theme crafted for DeepSeek Harness Web GUI & Desktop.
11
11
  </p>
12
12
 
13
+ <p align="center">
14
+ <img src="https://raw.githubusercontent.com/Simon-yyy/dsh-theme-escook/main/assets/preview.png" alt="escook-theme 4-in-1 preview" width="100%" />
15
+ </p>
16
+
13
17
  ---
14
18
 
15
19
  ## ✨ Features
package/README.zh.md CHANGED
@@ -10,6 +10,10 @@
10
10
  专为 DeepSeek Harness Web GUI / Desktop 设计的暗夜紫调与琥珀金高亮美学主题。
11
11
  </p>
12
12
 
13
+ <p align="center">
14
+ <img src="https://raw.githubusercontent.com/Simon-yyy/dsh-theme-escook/main/assets/preview.png" alt="escook-theme 4 合 1 真实效果预览" width="100%" />
15
+ </p>
16
+
13
17
  ---
14
18
 
15
19
  ## ✨ 主题特性
@@ -23,6 +27,8 @@
23
27
 
24
28
  ## 📦 安装使用
25
29
 
30
+ > 💡 **桌面端用户提示**:如果您使用的是 **DSH Desktop 桌面客户端**,客户端内核已原生内置本系列主题,开箱即用,无需在此重复安装。
31
+
26
32
  ### 方法一:通过 DSH 插件市场安装(推荐)
27
33
  1. 打开 DeepSeek Harness 桌面端 / Web;
28
34
  2. 进入 **设置 → 插件市场 → 主题** 专区;
Binary file
package/client/client.js CHANGED
@@ -1,240 +1,337 @@
1
1
  /**
2
- * dsh-theme-escook - Client Theme Injector (4 Schemes)
3
- * 🌸 彬哥の VS Code 完整 4 款经典主题 for DeepSeek Harness
4
- * 1. escook Dark (经典暗黑)
5
- * 2. escook Dark Soft (柔和暗黑)
6
- * 3. escook Light (经典紫韵浅色)
7
- * 4. escook Light Soft (柔和浅色)
2
+ * Escook Theme Client Plugin for DSH (Redesigned Edition)
8
3
  */
9
4
 
10
5
  export const THEME_SCHEMES = {
11
6
  "dark": {
12
- name: "escook Dark (经典暗黑)",
7
+ name: "escook Dark (经典暗黑 · 标志暖阳橙)",
8
+ desc: "VS Code 彬哥经典暖调极客深灰搭配标志暖阳橙,正统耐看长效护眼",
13
9
  type: "dark",
10
+ colorPreview: "#ef820c",
11
+ bgPreview: "#252526",
14
12
  css: `
15
13
  :root, html, body, body[data-ds-dark-theme], [data-theme="escook-dark"] {
16
14
  --dsw-alias-bg-base: #252526 !important;
17
- --dsw-alias-bg-layer-1: #202020 !important;
15
+ --dsw-alias-bg-layer-1: #202021 !important;
18
16
  --dsw-alias-bg-layer-2: #29292c !important;
19
- --dsw-alias-bg-mask-1: rgba(0, 0, 0, 0.6) !important;
20
- --dsw-specific-sidebar-fill: #202020 !important;
21
- --dsw-specific-sidebar-nav-item-hover: rgba(255, 255, 255, 0.08) !important;
22
- --dsw-specific-sidebar-nav-item-active: rgba(239, 130, 12, 0.18) !important;
23
- --dsw-specific-sidebar-nav-item-active-accent: #EF820C !important;
17
+ --dsw-alias-bg-layer-3: #2d2d30 !important;
18
+ --dsw-alias-bg-module-platform: #2d2d30 !important;
19
+ --dsw-alias-bg-multi-select: #2d2d30 !important;
20
+ --dsw-alias-bg-overlay: #333333 !important;
21
+ --dsw-specific-selector: #2d2d30 !important;
22
+ --dsw-alias-bg-mask-1: rgba(18, 18, 20, 0.75) !important;
23
+ --dsw-specific-sidebar-fill: #202021 !important;
24
+ --dsw-specific-sidebar-nav-item-hover: rgba(239, 130, 12, 0.1) !important;
25
+ --dsw-specific-sidebar-nav-item-active: rgba(239, 130, 12, 0.2) !important;
26
+ --dsw-specific-sidebar-nav-item-active-accent: #ef820c !important;
24
27
  --dsw-specific-input-major: #29292c !important;
25
28
  --dsw-specific-bubble: #29292c !important;
26
- --dsw-specific-menu: #29292c !important;
29
+ --dsw-specific-menu: #202021 !important;
27
30
  --dsw-hovercard-bg: #29292c !important;
28
- --dsw-alias-tooltip-bg: #202020 !important;
29
- --dsw-alias-button-elevated-fill: #29292c !important;
30
- --dsw-alias-button-floating-hover: #333336 !important;
31
- --dsw-alias-brand-primary: #EF820C !important;
32
- --dsw-alias-button-primary-fill: #EF820C !important;
31
+ --dsw-alias-tooltip-bg: #1c1c1d !important;
32
+ --dsw-alias-button-elevated-fill: #2f2f33 !important;
33
+ --dsw-alias-button-floating-hover: #38383c !important;
34
+ --dsw-alias-brand-primary: #ef820c !important;
35
+ --dsw-alias-button-primary-fill: #ef820c !important;
33
36
  --dsw-alias-button-primary-hover: #ff9940 !important;
34
37
  --dsw-alias-label-primary-foreground: #ffffff !important;
35
38
  --dsw-alias-label-primary: #fafafa !important;
36
39
  --dsw-alias-label-secondary: #cccccc !important;
37
- --dsw-alias-label-tertiary: #999999 !important;
38
- --dsw-alias-label-dimmed: #777777 !important;
40
+ --dsw-alias-label-tertiary: #888888 !important;
41
+ --dsw-alias-label-dimmed: #555555 !important;
39
42
  --dsw-alias-label-caption: #888888 !important;
40
- --dsw-alias-interactive-bg-hover: rgba(255, 255, 255, 0.08) !important;
41
- --dsw-alias-interactive-bg-active: rgba(255, 255, 255, 0.14) !important;
42
- --dsw-alias-border-l1: #383838 !important;
43
- --dsw-alias-border-l2: #2e2e2e !important;
44
- --dsw-alias-border-l3: #444444 !important;
43
+ --dsw-alias-interactive-bg-hover: rgba(239, 130, 12, 0.1) !important;
44
+ --dsw-alias-interactive-bg-active: rgba(239, 130, 12, 0.2) !important;
45
+ --dsw-alias-border-l1: #333333 !important;
46
+ --dsw-alias-border-l2: #2a2a2a !important;
47
+ --dsw-alias-border-l3: #3e3e3e !important;
45
48
  --dsw-alias-border-l4: #555555 !important;
46
- --dsw-alias-markdown-code-block: #1e1e1e !important;
49
+ --dsw-alias-markdown-code-block: #1c1c1d !important;
47
50
  --dsw-alias-markdown-code-block-banner: #252526 !important;
48
- --dsw-alias-scrollbar-bg-l2: #383838 !important;
49
- --dsw-alias-scrollbar-hover-l2: #EF820C !important;
51
+ --dsw-alias-scrollbar-bg-l2: #333333 !important;
52
+ --dsw-alias-scrollbar-hover-l2: #ef820c !important;
50
53
  }
51
54
  body, body[data-ds-dark-theme] { background-color: #252526 !important; color: #fafafa !important; }
52
55
  pre, code, [class*="codeBlock"] {
53
- background-color: #1e1e1e !important;
54
- color: #d4d4d4 !important;
55
- border-color: #383838 !important;
56
+ background-color: #1c1c1d !important;
57
+ color: #fafafa !important;
58
+ border-color: #333333 !important;
59
+ }
60
+ [class*="selector"], [class*="themeCube"] {
61
+ color: #fafafa !important;
62
+ background-color: #2d2d30 !important;
63
+ }
64
+ [class*="selected"], [class*="themeCube"]:hover {
65
+ border-color: #ef820c !important;
56
66
  }
57
67
  `
58
68
  },
59
69
  "dark-soft": {
60
- name: "escook Dark Soft (柔和暗黑)",
70
+ name: "escook Dark Soft (柔和暗黑 · 柔光奶杏黄)",
71
+ desc: "Ayu 经典深海蓝灰底色搭配温润奶杏黄,细腻柔和长效防疲劳",
61
72
  type: "dark",
73
+ colorPreview: "#ffcc66",
74
+ bgPreview: "#1f2430",
62
75
  css: `
63
76
  :root, html, body, body[data-ds-dark-theme], [data-theme="escook-dark-soft"] {
64
77
  --dsw-alias-bg-base: #1f2430 !important;
65
- --dsw-alias-bg-layer-1: #191e2a !important;
78
+ --dsw-alias-bg-layer-1: #191e28 !important;
66
79
  --dsw-alias-bg-layer-2: #232834 !important;
67
- --dsw-alias-bg-mask-1: rgba(15, 18, 26, 0.65) !important;
68
- --dsw-specific-sidebar-fill: #191e2a !important;
69
- --dsw-specific-sidebar-nav-item-hover: rgba(255, 204, 102, 0.08) !important;
70
- --dsw-specific-sidebar-nav-item-active: rgba(255, 204, 102, 0.16) !important;
80
+ --dsw-alias-bg-layer-3: #262c3b !important;
81
+ --dsw-alias-bg-module-platform: #262c3b !important;
82
+ --dsw-alias-bg-multi-select: #262c3b !important;
83
+ --dsw-alias-bg-overlay: #333a4c !important;
84
+ --dsw-specific-selector: #262c3b !important;
85
+ --dsw-alias-bg-mask-1: rgba(16, 20, 28, 0.7) !important;
86
+ --dsw-specific-sidebar-fill: #191e28 !important;
87
+ --dsw-specific-sidebar-nav-item-hover: rgba(255, 204, 102, 0.1) !important;
88
+ --dsw-specific-sidebar-nav-item-active: rgba(255, 204, 102, 0.18) !important;
71
89
  --dsw-specific-sidebar-nav-item-active-accent: #ffcc66 !important;
72
90
  --dsw-specific-input-major: #232834 !important;
73
91
  --dsw-specific-bubble: #232834 !important;
74
- --dsw-specific-menu: #232834 !important;
75
- --dsw-hovercard-bg: #232834 !important;
76
- --dsw-alias-tooltip-bg: #191e2a !important;
77
- --dsw-alias-button-elevated-fill: #232834 !important;
78
- --dsw-alias-button-floating-hover: #2b3240 !important;
92
+ --dsw-specific-menu: #191e28 !important;
93
+ --dsw-hovercard-bg: #191e28 !important;
94
+ --dsw-alias-tooltip-bg: #171b24 !important;
95
+ --dsw-alias-button-elevated-fill: #2b3140 !important;
96
+ --dsw-alias-button-floating-hover: #333a4c !important;
79
97
  --dsw-alias-brand-primary: #ffcc66 !important;
80
98
  --dsw-alias-button-primary-fill: #ffcc66 !important;
81
- --dsw-alias-button-primary-hover: #fac761 !important;
99
+ --dsw-alias-button-primary-hover: #ffd580 !important;
82
100
  --dsw-alias-label-primary-foreground: #1f2430 !important;
83
101
  --dsw-alias-label-primary: #cbccc6 !important;
84
102
  --dsw-alias-label-secondary: #969aa4 !important;
85
103
  --dsw-alias-label-tertiary: #707a8c !important;
86
- --dsw-alias-label-dimmed: #5c6773 !important;
104
+ --dsw-alias-label-dimmed: #515764 !important;
87
105
  --dsw-alias-label-caption: #707a8c !important;
88
106
  --dsw-alias-interactive-bg-hover: rgba(255, 204, 102, 0.1) !important;
89
107
  --dsw-alias-interactive-bg-active: rgba(255, 204, 102, 0.18) !important;
90
108
  --dsw-alias-border-l1: #373e4c !important;
91
- --dsw-alias-border-l2: #2d3443 !important;
92
- --dsw-alias-border-l3: #4f5869 !important;
93
- --dsw-alias-border-l4: #636e84 !important;
94
- --dsw-alias-markdown-code-block: #1a1f29 !important;
95
- --dsw-alias-markdown-code-block-banner: #232834 !important;
109
+ --dsw-alias-border-l2: #2d3340 !important;
110
+ --dsw-alias-border-l3: #444c5e !important;
111
+ --dsw-alias-border-l4: #515764 !important;
112
+ --dsw-alias-markdown-code-block: #171b24 !important;
113
+ --dsw-alias-markdown-code-block-banner: #1f2430 !important;
96
114
  --dsw-alias-scrollbar-bg-l2: #373e4c !important;
97
115
  --dsw-alias-scrollbar-hover-l2: #ffcc66 !important;
98
116
  }
99
117
  body, body[data-ds-dark-theme] { background-color: #1f2430 !important; color: #cbccc6 !important; }
100
118
  pre, code, [class*="codeBlock"] {
101
- background-color: #1a1f29 !important;
119
+ background-color: #171b24 !important;
102
120
  color: #cbccc6 !important;
103
- border-color: #2d3443 !important;
121
+ border-color: #373e4c !important;
122
+ }
123
+ [class*="selector"], [class*="themeCube"] {
124
+ color: #cbccc6 !important;
125
+ background-color: #262c3b !important;
126
+ }
127
+ [class*="selected"], [class*="themeCube"]:hover {
128
+ border-color: #ffcc66 !important;
104
129
  }
105
- .hljs-keyword, .token.keyword { color: #f28779 !important; font-weight: 600; }
106
- .hljs-string, .token.string { color: #bae67e !important; }
107
- .hljs-function, .token.function { color: #73d0ff !important; }
108
- .hljs-number, .token.number { color: #ff9940 !important; }
109
- .hljs-comment, .token.comment { color: #5c6773 !important; font-style: italic; }
110
130
  `
111
131
  },
112
132
  "light": {
113
- name: "escook Light (经典紫韵浅色)",
133
+ name: "escook Light (经典浅色 · 典雅紫罗兰)",
134
+ desc: "Solarized 经典护眼暖米白搭配典雅紫罗兰与青墨文本,温润纸质书卷感",
114
135
  type: "light",
136
+ colorPreview: "#705697",
137
+ bgPreview: "#fdf6e3",
115
138
  css: `
116
139
  :root, html, body, body[data-ds-dark-theme], [data-theme="escook-light"] {
117
- --dsw-alias-bg-base: #FDF6E3 !important;
118
- --dsw-alias-bg-layer-1: #F5EEDB !important;
119
- --dsw-alias-bg-layer-2: #EDE5D0 !important;
120
- --dsw-alias-bg-mask-1: rgba(88, 70, 50, 0.35) !important;
121
- --dsw-specific-sidebar-fill: #F5EEDB !important;
140
+ --dsw-alias-bg-base: #fdf6e3 !important;
141
+ --dsw-alias-bg-layer-1: #f8f0d8 !important;
142
+ --dsw-alias-bg-layer-2: #ffffff !important;
143
+ --dsw-alias-bg-layer-3: #eee8d5 !important;
144
+ --dsw-alias-bg-module-platform: #eee8d5 !important;
145
+ --dsw-alias-bg-multi-select: #eee8d5 !important;
146
+ --dsw-alias-bg-overlay: #e3dac6 !important;
147
+ --dsw-specific-selector: #eee8d5 !important;
148
+ --dsw-alias-bg-mask-1: rgba(50, 40, 60, 0.25) !important;
149
+ --dsw-specific-sidebar-fill: #f8f0d8 !important;
122
150
  --dsw-specific-sidebar-nav-item-hover: rgba(112, 86, 151, 0.08) !important;
123
151
  --dsw-specific-sidebar-nav-item-active: rgba(112, 86, 151, 0.16) !important;
124
152
  --dsw-specific-sidebar-nav-item-active-accent: #705697 !important;
125
- --dsw-specific-input-major: #EDE5D0 !important;
126
- --dsw-specific-bubble: #EDE5D0 !important;
127
- --dsw-specific-menu: #FFFFFF !important;
128
- --dsw-hovercard-bg: #FFFFFF !important;
129
- --dsw-alias-tooltip-bg: #2B2B2B !important;
130
- --dsw-alias-button-elevated-fill: #EDE5D0 !important;
131
- --dsw-alias-button-floating-hover: #e4dcc4 !important;
153
+ --dsw-specific-input-major: #ffffff !important;
154
+ --dsw-specific-bubble: #ffffff !important;
155
+ --dsw-specific-menu: #ffffff !important;
156
+ --dsw-hovercard-bg: #ffffff !important;
157
+ --dsw-alias-tooltip-bg: #2b2638 !important;
158
+ --dsw-alias-button-elevated-fill: #f4ecce !important;
159
+ --dsw-alias-button-floating-hover: #ece2c4 !important;
132
160
  --dsw-alias-brand-primary: #705697 !important;
133
161
  --dsw-alias-button-primary-fill: #705697 !important;
134
- --dsw-alias-button-primary-hover: #8a6ab8 !important;
162
+ --dsw-alias-button-primary-hover: #876cad !important;
135
163
  --dsw-alias-label-primary-foreground: #ffffff !important;
136
- --dsw-alias-label-primary: #2b2b2b !important;
137
- --dsw-alias-label-secondary: #4a5c63 !important;
138
- --dsw-alias-label-tertiary: #657b83 !important;
139
- --dsw-alias-label-dimmed: #839496 !important;
140
- --dsw-alias-label-caption: #657b83 !important;
164
+ --dsw-alias-label-primary: #586e75 !important;
165
+ --dsw-alias-label-secondary: #657b83 !important;
166
+ --dsw-alias-label-tertiary: #93a1a1 !important;
167
+ --dsw-alias-label-dimmed: #b58900 !important;
168
+ --dsw-alias-label-caption: #93a1a1 !important;
141
169
  --dsw-alias-interactive-bg-hover: rgba(112, 86, 151, 0.08) !important;
142
170
  --dsw-alias-interactive-bg-active: rgba(112, 86, 151, 0.15) !important;
143
- --dsw-alias-border-l1: #d3cbb7 !important;
144
- --dsw-alias-border-l2: #e2dbca !important;
145
- --dsw-alias-border-l3: #ccc4af !important;
146
- --dsw-alias-border-l4: #b8af98 !important;
147
- --dsw-alias-markdown-code-block: #f7f0dc !important;
148
- --dsw-alias-markdown-code-block-banner: #ede5d0 !important;
149
- --dsw-alias-scrollbar-bg-l2: #d3cbb7 !important;
171
+ --dsw-alias-border-l1: #e3dac6 !important;
172
+ --dsw-alias-border-l2: #ece3cf !important;
173
+ --dsw-alias-border-l3: #d8ceb8 !important;
174
+ --dsw-alias-border-l4: #b58900 !important;
175
+ --dsw-alias-markdown-code-block: #f5eed8 !important;
176
+ --dsw-alias-markdown-code-block-banner: #ebe4cc !important;
177
+ --dsw-alias-scrollbar-bg-l2: #e3dac6 !important;
150
178
  --dsw-alias-scrollbar-hover-l2: #705697 !important;
151
179
  }
152
- body, body[data-ds-dark-theme] { background-color: #FDF6E3 !important; color: #2b2b2b !important; }
180
+ body, body[data-ds-dark-theme] { background-color: #fdf6e3 !important; color: #586e75 !important; }
153
181
  pre, code, [class*="codeBlock"] {
154
- background-color: #f7f0dc !important;
155
- color: #2b2b2b !important;
156
- border-color: #d3cbb7 !important;
182
+ background-color: #f5eed8 !important;
183
+ color: #586e75 !important;
184
+ border-color: #e3dac6 !important;
185
+ }
186
+ [class*="selector"], [class*="themeCube"] {
187
+ color: #586e75 !important;
188
+ background-color: #eee8d5 !important;
189
+ }
190
+ [class*="selected"], [class*="themeCube"]:hover {
191
+ border-color: #705697 !important;
157
192
  }
158
193
  `
159
194
  },
160
195
  "light-soft": {
161
- name: "escook Light Soft (柔和浅色)",
196
+ name: "escook Light Soft (柔和浅色 · 活力柔和橙)",
197
+ desc: "现代极简清透浅灰搭配柔和活力橙,明亮清爽不刺眼",
162
198
  type: "light",
199
+ colorPreview: "#ff9940",
200
+ bgPreview: "#fafafa",
163
201
  css: `
164
202
  :root, html, body, body[data-ds-dark-theme], [data-theme="escook-light-soft"] {
165
- --dsw-alias-bg-base: #FAFAFA !important;
166
- --dsw-alias-bg-layer-1: #F0F0F0 !important;
167
- --dsw-alias-bg-layer-2: #FFFFFF !important;
168
- --dsw-alias-bg-mask-1: rgba(0, 0, 0, 0.3) !important;
169
- --dsw-specific-sidebar-fill: #F0F0F0 !important;
203
+ --dsw-alias-bg-base: #fafafa !important;
204
+ --dsw-alias-bg-layer-1: #f2f2f2 !important;
205
+ --dsw-alias-bg-layer-2: #ffffff !important;
206
+ --dsw-alias-bg-layer-3: #e8e8e8 !important;
207
+ --dsw-alias-bg-module-platform: #e8e8e8 !important;
208
+ --dsw-alias-bg-multi-select: #e8e8e8 !important;
209
+ --dsw-alias-bg-overlay: #dcdcdc !important;
210
+ --dsw-specific-selector: #e8e8e8 !important;
211
+ --dsw-alias-bg-mask-1: rgba(0, 0, 0, 0.2) !important;
212
+ --dsw-specific-sidebar-fill: #f2f2f2 !important;
170
213
  --dsw-specific-sidebar-nav-item-hover: rgba(255, 153, 64, 0.08) !important;
171
214
  --dsw-specific-sidebar-nav-item-active: rgba(255, 153, 64, 0.16) !important;
172
215
  --dsw-specific-sidebar-nav-item-active-accent: #ff9940 !important;
173
- --dsw-specific-input-major: #FFFFFF !important;
174
- --dsw-specific-bubble: #FFFFFF !important;
175
- --dsw-specific-menu: #FFFFFF !important;
176
- --dsw-hovercard-bg: #FFFFFF !important;
177
- --dsw-alias-tooltip-bg: #1F2937 !important;
178
- --dsw-alias-button-elevated-fill: #FFFFFF !important;
179
- --dsw-alias-button-floating-hover: #f5f5f5 !important;
216
+ --dsw-specific-input-major: #ffffff !important;
217
+ --dsw-specific-bubble: #ffffff !important;
218
+ --dsw-specific-menu: #ffffff !important;
219
+ --dsw-hovercard-bg: #ffffff !important;
220
+ --dsw-alias-tooltip-bg: #2d3748 !important;
221
+ --dsw-alias-button-elevated-fill: #eaeaea !important;
222
+ --dsw-alias-button-floating-hover: #e0e0e0 !important;
180
223
  --dsw-alias-brand-primary: #ff9940 !important;
181
224
  --dsw-alias-button-primary-fill: #ff9940 !important;
182
- --dsw-alias-button-primary-hover: #ffaa5e !important;
225
+ --dsw-alias-button-primary-hover: #f58220 !important;
183
226
  --dsw-alias-label-primary-foreground: #ffffff !important;
184
- --dsw-alias-label-primary: #1F2937 !important;
185
- --dsw-alias-label-secondary: #4B5563 !important;
186
- --dsw-alias-label-tertiary: #6B7280 !important;
187
- --dsw-alias-label-dimmed: #9CA3AF !important;
188
- --dsw-alias-label-caption: #6B7280 !important;
227
+ --dsw-alias-label-primary: #2d3748 !important;
228
+ --dsw-alias-label-secondary: #4a5568 !important;
229
+ --dsw-alias-label-tertiary: #718096 !important;
230
+ --dsw-alias-label-dimmed: #a0aec0 !important;
231
+ --dsw-alias-label-caption: #718096 !important;
189
232
  --dsw-alias-interactive-bg-hover: rgba(255, 153, 64, 0.08) !important;
190
233
  --dsw-alias-interactive-bg-active: rgba(255, 153, 64, 0.15) !important;
191
- --dsw-alias-border-l1: #E5E7EB !important;
192
- --dsw-alias-border-l2: #F3F4F6 !important;
193
- --dsw-alias-border-l3: #D1D5DB !important;
194
- --dsw-alias-border-l4: #9CA3AF !important;
195
- --dsw-alias-markdown-code-block: #f4f4f5 !important;
196
- --dsw-alias-markdown-code-block-banner: #e5e7eb !important;
197
- --dsw-alias-scrollbar-bg-l2: #E5E7EB !important;
234
+ --dsw-alias-border-l1: #dcdcdc !important;
235
+ --dsw-alias-border-l2: #e8e8e8 !important;
236
+ --dsw-alias-border-l3: #d0d0d0 !important;
237
+ --dsw-alias-border-l4: #a0aec0 !important;
238
+ --dsw-alias-markdown-code-block: #f0f2f5 !important;
239
+ --dsw-alias-markdown-code-block-banner: #e6e9ee !important;
240
+ --dsw-alias-scrollbar-bg-l2: #dcdcdc !important;
198
241
  --dsw-alias-scrollbar-hover-l2: #ff9940 !important;
199
242
  }
200
- body, body[data-ds-dark-theme] { background-color: #FAFAFA !important; color: #1F2937 !important; }
243
+ body, body[data-ds-dark-theme] { background-color: #fafafa !important; color: #2d3748 !important; }
201
244
  pre, code, [class*="codeBlock"] {
202
- background-color: #f4f4f5 !important;
203
- color: #1F2937 !important;
204
- border-color: #E5E7EB !important;
245
+ background-color: #f0f2f5 !important;
246
+ color: #2d3748 !important;
247
+ border-color: #dcdcdc !important;
248
+ }
249
+ [class*="selector"], [class*="themeCube"] {
250
+ color: #2d3748 !important;
251
+ background-color: #e8e8e8 !important;
252
+ }
253
+ [class*="selected"], [class*="themeCube"]:hover {
254
+ border-color: #ff9940 !important;
205
255
  }
206
256
  `
207
257
  }
208
258
  };
209
259
 
210
260
  export default function activate(context) {
261
+ // 环境感知与防冲突协同:若宿主环境为 DSH Desktop 客户端且已原生内置主题,自动注册最新主题并委派托管
262
+ if (typeof window !== "undefined" && window.__DSH_BUILTIN_THEMES__) {
263
+ console.info("🌸 [dsh-theme-escook] 检测到当前处于 DSH Desktop 桌面端,正在将插件最新主题矩阵热同步至客户端...");
264
+ const builtin = window.__DSH_BUILTIN_THEMES__;
265
+ if (typeof builtin.registerThemes === "function") {
266
+ builtin.registerThemes(THEME_SCHEMES);
267
+ }
268
+ const themeController = {
269
+ schemes: Object.keys(THEME_SCHEMES),
270
+ setScheme(key) {
271
+ builtin.apply(key);
272
+ },
273
+ getCurrentScheme() {
274
+ return builtin.getCurrent();
275
+ },
276
+ dispose() {
277
+ // 由桌面端原生管理生命周期
278
+ }
279
+ };
280
+ window.__ESCOOK_THEME__ = themeController;
281
+ return themeController;
282
+ }
283
+
211
284
  const styleId = "dsh-theme-escook-styles";
285
+ const storageKey = "dsh_theme_escook_scheme";
212
286
  let styleEl = document.getElementById(styleId);
213
287
 
214
288
  function applyScheme(key) {
215
- const scheme = THEME_SCHEMES[key] || THEME_SCHEMES["dark-soft"];
289
+ const validKey = THEME_SCHEMES[key] ? key : "dark-soft";
290
+ const scheme = THEME_SCHEMES[validKey];
291
+
216
292
  if (!styleEl) {
217
293
  styleEl = document.createElement("style");
218
294
  styleEl.id = styleId;
219
295
  document.head.appendChild(styleEl);
220
296
  }
221
297
  styleEl.textContent = scheme.css;
222
- document.documentElement.setAttribute("data-dsh-theme", `escook-${key}`);
223
- console.log(`🌸 [dsh-theme-escook] 已切换至: ${scheme.name}`);
298
+ document.documentElement.setAttribute("data-dsh-theme", `escook-${validKey}`);
299
+ try {
300
+ localStorage.setItem(storageKey, validKey);
301
+ } catch (e) {}
302
+ console.info(`🌸 [dsh-theme-escook] 当前激活配色: ${scheme.name}`);
224
303
  }
225
304
 
226
- // 默认应用 dark-soft 柔和暗黑方案
227
- applyScheme("dark-soft");
305
+ let savedScheme = "dark-soft";
306
+ try {
307
+ savedScheme = localStorage.getItem(storageKey) || localStorage.getItem("dsh_selected_theme") || "dark-soft";
308
+ } catch (e) {}
309
+
310
+ applyScheme(savedScheme);
228
311
 
229
- return {
312
+ const themeController = {
313
+ schemes: Object.keys(THEME_SCHEMES),
230
314
  setScheme(key) {
231
315
  applyScheme(key);
232
316
  },
317
+ getCurrentScheme() {
318
+ try {
319
+ return localStorage.getItem(storageKey) || "dark-soft";
320
+ } catch (e) {
321
+ return "dark-soft";
322
+ }
323
+ },
233
324
  dispose() {
234
325
  if (styleEl && styleEl.parentNode) {
235
326
  styleEl.parentNode.removeChild(styleEl);
236
327
  }
237
328
  document.documentElement.removeAttribute("data-dsh-theme");
329
+ if (window.__ESCOOK_THEME__ === themeController) {
330
+ delete window.__ESCOOK_THEME__;
331
+ }
238
332
  }
239
333
  };
334
+
335
+ window.__ESCOOK_THEME__ = themeController;
336
+ return themeController;
240
337
  }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Escook Theme Color Palettes Definition (Redesigned & Modernized)
3
+ * 100% 对齐 codex-desktop 与官方正统 escook-theme 调色哲学
4
+ */
5
+
6
+ export const PALETTES = {
7
+ dark: {
8
+ name: "escook Dark (经典暗黑)",
9
+ desc: "VS Code 彬哥经典暖调极客深灰搭配标志暖阳橙,正统耐看长效护眼",
10
+ type: "dark",
11
+ bgBase: "#252526",
12
+ bgSidebar: "#202021",
13
+ bgSurface: "#29292c",
14
+ accent: "#ef820c",
15
+ accentHover: "#ff9940",
16
+ textPrimary: "#fafafa",
17
+ textSecondary: "#cccccc",
18
+ border: "#333333"
19
+ },
20
+ darkSoft: {
21
+ name: "escook Dark Soft (柔和暗黑)",
22
+ desc: "Ayu 经典深海蓝灰底色搭配温润奶杏黄,细腻柔和长效防疲劳",
23
+ type: "dark",
24
+ bgBase: "#1f2430",
25
+ bgSidebar: "#191e28",
26
+ bgSurface: "#232834",
27
+ accent: "#ffcc66",
28
+ accentHover: "#ffd580",
29
+ textPrimary: "#cbccc6",
30
+ textSecondary: "#969aa4",
31
+ border: "#373e4c"
32
+ },
33
+ light: {
34
+ name: "escook Light (经典紫韵浅色)",
35
+ desc: "Solarized 经典护眼暖米白搭配典雅紫罗兰与青墨文本,温润纸质书卷感",
36
+ type: "light",
37
+ bgBase: "#fdf6e3",
38
+ bgSidebar: "#f8f0d8",
39
+ bgSurface: "#ffffff",
40
+ accent: "#705697",
41
+ accentHover: "#876cad",
42
+ textPrimary: "#586e75",
43
+ textSecondary: "#657b83",
44
+ border: "#e3dac6"
45
+ },
46
+ lightSoft: {
47
+ name: "escook Light Soft (柔和浅色)",
48
+ desc: "现代极简清透浅灰搭配柔和活力橙,明亮清爽不刺眼",
49
+ type: "light",
50
+ bgBase: "#fafafa",
51
+ bgSidebar: "#f2f2f2",
52
+ bgSurface: "#ffffff",
53
+ accent: "#ff9940",
54
+ accentHover: "#f58220",
55
+ textPrimary: "#2d3748",
56
+ textSecondary: "#4a5568",
57
+ border: "#dcdcdc"
58
+ }
59
+ };
package/lib/index.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ /**
2
+ * dsh-theme-escook TypeScript Interface Definitions
3
+ */
4
+
5
+ export type EscookThemeType = "dark" | "dark-soft" | "light" | "light-soft";
6
+
7
+ export interface EscookThemeScheme {
8
+ name: string;
9
+ type: "dark" | "light";
10
+ css: string;
11
+ }
12
+
13
+ export interface EscookThemePluginContext {
14
+ setScheme: (key: EscookThemeType) => void;
15
+ dispose: () => void;
16
+ }
17
+
18
+ export default function activate(context: any): EscookThemePluginContext;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-theme-escook",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "🌸 彬哥の经典主题 (escook-theme) for DeepSeek Harness — 优雅暗夜紫调与琥珀金高亮美学主题",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -37,11 +37,15 @@
37
37
  "files": [
38
38
  "lib",
39
39
  "client",
40
+ "assets",
40
41
  "cordis.patch.yml",
41
42
  "README.md",
42
43
  "README.zh.md",
43
44
  "LICENSE"
44
45
  ],
46
+ "peerDependencies": {
47
+ "@deepseek-ai/dsh-client-ui-theme": ">=0.0.1-rc.1 <0.1.0 || >=0.1.0-rc.1 <0.2.0-0"
48
+ },
45
49
  "publishConfig": {
46
50
  "access": "public",
47
51
  "registry": "https://registry.npmjs.org/"