dsh-theme-gallery 0.1.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,290 @@
1
+ [
2
+ {
3
+ "id": "pei-an-jie-xin",
4
+ "label": "佩安杰心",
5
+ "description": "檀香禅影,自在安顿 —— 复刻自电商新零售系统管理后台同名主题",
6
+ "colorScheme": "light",
7
+ "tokens": {
8
+ "--dsw-alias-bg-base": {
9
+ "light": "linear-gradient(to bottom,#FCFAF5 0%,#F8F3E9 55%,#F3ECDD 100%)",
10
+ "dark": "linear-gradient(to bottom,#FCFAF5 0%,#F8F3E9 55%,#F3ECDD 100%)"
11
+ },
12
+ "--dsw-alias-bg-layer-1": {
13
+ "light": "#FDFBF7",
14
+ "dark": "#FDFBF7"
15
+ },
16
+ "--dsw-alias-bg-layer-2": {
17
+ "light": "#FFFFFF",
18
+ "dark": "#FFFFFF"
19
+ },
20
+ "--dsw-alias-bg-layer-3": {
21
+ "light": "#FFFFFF",
22
+ "dark": "#FFFFFF"
23
+ },
24
+ "--dsw-alias-bg-overlay": {
25
+ "light": "#EFE7D7",
26
+ "dark": "#EFE7D7"
27
+ },
28
+ "--dsw-alias-bg-skeleton": {
29
+ "light": "#7A5C3E14",
30
+ "dark": "#7A5C3E14"
31
+ },
32
+ "--dsw-alias-bg-module-platform": {
33
+ "light": "#F3EBDD",
34
+ "dark": "#F3EBDD"
35
+ },
36
+ "--dsw-alias-bg-multi-select": {
37
+ "light": "#F3EBDD",
38
+ "dark": "#F3EBDD"
39
+ },
40
+ "--dsw-alias-border-l1": {
41
+ "light": "#7A5C3E0F",
42
+ "dark": "#7A5C3E0F"
43
+ },
44
+ "--dsw-alias-border-l2": {
45
+ "light": "#7A5C3E21",
46
+ "dark": "#7A5C3E21"
47
+ },
48
+ "--dsw-alias-border-l3": {
49
+ "light": "#7A5C3E2E",
50
+ "dark": "#7A5C3E2E"
51
+ },
52
+ "--dsw-alias-border-l4": {
53
+ "light": "#7A5C3E3D",
54
+ "dark": "#7A5C3E3D"
55
+ },
56
+ "--dsw-alias-brand-primary": {
57
+ "light": "#7A5C3E",
58
+ "dark": "#7A5C3E"
59
+ },
60
+ "--dsw-alias-brand-primary-invert": {
61
+ "light": "#FFFFFF",
62
+ "dark": "#FFFFFF"
63
+ },
64
+ "--dsw-alias-brand-text": {
65
+ "light": "#7A5C3E",
66
+ "dark": "#7A5C3E"
67
+ },
68
+ "--dsw-alias-label-primary": {
69
+ "light": "#3F3222",
70
+ "dark": "#3F3222"
71
+ },
72
+ "--dsw-alias-label-primary-bluish": {
73
+ "light": "#3F3222",
74
+ "dark": "#3F3222"
75
+ },
76
+ "--dsw-alias-label-secondary": {
77
+ "light": "#5E4A38",
78
+ "dark": "#5E4A38"
79
+ },
80
+ "--dsw-alias-label-tertiary": {
81
+ "light": "#85705A",
82
+ "dark": "#85705A"
83
+ },
84
+ "--dsw-alias-label-caption": {
85
+ "light": "#85705A",
86
+ "dark": "#85705A"
87
+ },
88
+ "--dsw-alias-label-dimmed": {
89
+ "light": "#AC9C86",
90
+ "dark": "#AC9C86"
91
+ },
92
+ "--dsw-alias-label-primary-dimmed": {
93
+ "light": "#5E4A38",
94
+ "dark": "#5E4A38"
95
+ },
96
+ "--dsw-alias-label-primary-foreground": {
97
+ "light": "#FFFFFF",
98
+ "dark": "#FFFFFF"
99
+ },
100
+ "--dsw-alias-label-primary-inverted": {
101
+ "light": "#FFFFFF",
102
+ "dark": "#FFFFFF"
103
+ },
104
+ "--dsw-alias-link": {
105
+ "light": "#B4653A",
106
+ "dark": "#B4653A"
107
+ },
108
+ "--dsw-alias-interactive-bg-hover": {
109
+ "light": "#9C7B5814",
110
+ "dark": "#9C7B5814"
111
+ },
112
+ "--dsw-alias-interactive-bg-active": {
113
+ "light": "#B4653A2E",
114
+ "dark": "#B4653A2E"
115
+ },
116
+ "--dsw-alias-interactive-bg-hover-solid": {
117
+ "light": "#F3EBDD",
118
+ "dark": "#F3EBDD"
119
+ },
120
+ "--dsw-alias-interactive-bg-hover-accent": {
121
+ "light": "#B4653A3D",
122
+ "dark": "#B4653A3D"
123
+ },
124
+ "--dsw-alias-button-primary-fill": {
125
+ "light": "#7A5C3E",
126
+ "dark": "#7A5C3E"
127
+ },
128
+ "--dsw-alias-button-primary-hover": {
129
+ "light": "#9C7B58",
130
+ "dark": "#9C7B58"
131
+ },
132
+ "--dsw-alias-button-primary-dimmed": {
133
+ "light": "#7A5C3E47",
134
+ "dark": "#7A5C3E47"
135
+ },
136
+ "--dsw-alias-button-ghost-active-fill": {
137
+ "light": "#B4653A29",
138
+ "dark": "#B4653A29"
139
+ },
140
+ "--dsw-alias-button-ghost-active-border": {
141
+ "light": "#B4653A",
142
+ "dark": "#B4653A"
143
+ },
144
+ "--dsw-alias-button-ghost-active-hover": {
145
+ "light": "#B4653A47",
146
+ "dark": "#B4653A47"
147
+ },
148
+ "--dsw-alias-button-info-fill": {
149
+ "light": "#9C7B58",
150
+ "dark": "#9C7B58"
151
+ },
152
+ "--dsw-alias-button-info-hover": {
153
+ "light": "#8A6E52",
154
+ "dark": "#8A6E52"
155
+ },
156
+ "--dsw-alias-button-elevated-fill": {
157
+ "light": "#FFFFFF",
158
+ "dark": "#FFFFFF"
159
+ },
160
+ "--dsw-alias-button-floating-fill": {
161
+ "light": "#FFFFFF",
162
+ "dark": "#FFFFFF"
163
+ },
164
+ "--dsw-alias-button-floating-hover": {
165
+ "light": "#FAF6EE",
166
+ "dark": "#FAF6EE"
167
+ },
168
+ "--dsw-alias-button-contrast-fill": {
169
+ "light": "#3F3222",
170
+ "dark": "#3F3222"
171
+ },
172
+ "--dsw-alias-markdown-code-block": {
173
+ "light": "#F5EFE3",
174
+ "dark": "#F5EFE3"
175
+ },
176
+ "--dsw-alias-markdown-code-block-banner": {
177
+ "light": "#EDE4D2",
178
+ "dark": "#EDE4D2"
179
+ },
180
+ "--dsw-alias-markdown-inline-code": {
181
+ "light": "#F3EBDD",
182
+ "dark": "#F3EBDD"
183
+ },
184
+ "--dsw-alias-markdown-citation": {
185
+ "light": "#F3EBDD",
186
+ "dark": "#F3EBDD"
187
+ },
188
+ "--dsw-alias-markdown-tag": {
189
+ "light": "#F3EBDD",
190
+ "dark": "#F3EBDD"
191
+ },
192
+ "--dsw-alias-markdown-placeholder": {
193
+ "light": "#EDE4D2",
194
+ "dark": "#EDE4D2"
195
+ },
196
+ "--dsw-alias-markdown-code-segment-selected": {
197
+ "light": "#B4653A29",
198
+ "dark": "#B4653A29"
199
+ },
200
+ "--dsw-alias-markdown-code-segment-unselected": {
201
+ "light": "#F5EFE3",
202
+ "dark": "#F5EFE3"
203
+ },
204
+ "--dsw-alias-scrollbar-bg-l1": {
205
+ "light": "#7A5C3E29",
206
+ "dark": "#7A5C3E29"
207
+ },
208
+ "--dsw-alias-scrollbar-bg-l2": {
209
+ "light": "#7A5C3E38",
210
+ "dark": "#7A5C3E38"
211
+ },
212
+ "--dsw-alias-scrollbar-hover-l1": {
213
+ "light": "#7A5C3E52",
214
+ "dark": "#7A5C3E52"
215
+ },
216
+ "--dsw-alias-scrollbar-hover-l2": {
217
+ "light": "#7A5C3E66",
218
+ "dark": "#7A5C3E66"
219
+ },
220
+ "--dsw-alias-tooltip-bg": {
221
+ "light": "#3F3222",
222
+ "dark": "#3F3222"
223
+ },
224
+ "--dsw-alias-toast-bg": {
225
+ "light": "#FFFFFF",
226
+ "dark": "#FFFFFF"
227
+ },
228
+ "--dsw-alias-state-error-primary": {
229
+ "light": "#C65B6A",
230
+ "dark": "#C65B6A"
231
+ },
232
+ "--dsw-alias-state-error-secondary": {
233
+ "light": "#DB5A6B",
234
+ "dark": "#DB5A6B"
235
+ },
236
+ "--dsw-alias-state-success-primary": {
237
+ "light": "#21A675",
238
+ "dark": "#21A675"
239
+ },
240
+ "--dsw-alias-state-success-secondary": {
241
+ "light": "#7A5C3E",
242
+ "dark": "#7A5C3E"
243
+ },
244
+ "--dsw-alias-state-success-tertiary": {
245
+ "light": "#C4B39A",
246
+ "dark": "#C4B39A"
247
+ },
248
+ "--dsw-alias-state-warn-primary": {
249
+ "light": "#B97F3A",
250
+ "dark": "#B97F3A"
251
+ },
252
+ "--dsw-alias-state-warn-secondary": {
253
+ "light": "#D9A45E",
254
+ "dark": "#D9A45E"
255
+ },
256
+ "--dsw-alias-state-warn-tertiary": {
257
+ "light": "#EFDCC0",
258
+ "dark": "#EFDCC0"
259
+ },
260
+ "--dsw-alias-state-warn-label": {
261
+ "light": "#8A5A22",
262
+ "dark": "#8A5A22"
263
+ },
264
+ "--dsw-alias-state-business-primary": {
265
+ "light": "#B4653A",
266
+ "dark": "#B4653A"
267
+ },
268
+ "--dsw-alias-state-business-tertiary": {
269
+ "light": "#D08A5C",
270
+ "dark": "#D08A5C"
271
+ },
272
+ "--dsw-specific-sidebar-fill": {
273
+ "light": "linear-gradient(to bottom,#F2E8D8 0%,#EBDCC4 22%,#E0CDAD 42%,#D4BC98 60%,#C3A87F 78%,#A98D6B 100%)",
274
+ "dark": "linear-gradient(to bottom,#F2E8D8 0%,#EBDCC4 22%,#E0CDAD 42%,#D4BC98 60%,#C3A87F 78%,#A98D6B 100%)"
275
+ }
276
+ },
277
+ "reading": {
278
+ "colorScheme": "light",
279
+ "bg": "#FFFFFF",
280
+ "alpha": 0.62,
281
+ "blur": 3,
282
+ "maxWidth": 640
283
+ },
284
+ "accent": "#B4653A",
285
+ "ambient": {
286
+ "kind": "jiexin",
287
+ "dust": 4
288
+ }
289
+ }
290
+ ]
@@ -0,0 +1,290 @@
1
+ [
2
+ {
3
+ "id": "ying-mu-cai-yun",
4
+ "label": "营慕彩云",
5
+ "description": "营幕之下,彩云为伴 —— 复刻自电商新零售系统管理后台同名主题",
6
+ "colorScheme": "light",
7
+ "tokens": {
8
+ "--dsw-alias-bg-base": {
9
+ "light": "linear-gradient(to bottom,#FBFCF8 0%,#F5F8EF 55%,#EEF3E4 100%)",
10
+ "dark": "linear-gradient(to bottom,#FBFCF8 0%,#F5F8EF 55%,#EEF3E4 100%)"
11
+ },
12
+ "--dsw-alias-bg-layer-1": {
13
+ "light": "#FBFDF7",
14
+ "dark": "#FBFDF7"
15
+ },
16
+ "--dsw-alias-bg-layer-2": {
17
+ "light": "#FFFFFF",
18
+ "dark": "#FFFFFF"
19
+ },
20
+ "--dsw-alias-bg-layer-3": {
21
+ "light": "#FFFFFF",
22
+ "dark": "#FFFFFF"
23
+ },
24
+ "--dsw-alias-bg-overlay": {
25
+ "light": "#E7EFE0",
26
+ "dark": "#E7EFE0"
27
+ },
28
+ "--dsw-alias-bg-skeleton": {
29
+ "light": "#2D5A3D14",
30
+ "dark": "#2D5A3D14"
31
+ },
32
+ "--dsw-alias-bg-module-platform": {
33
+ "light": "#ECF3E6",
34
+ "dark": "#ECF3E6"
35
+ },
36
+ "--dsw-alias-bg-multi-select": {
37
+ "light": "#ECF3E6",
38
+ "dark": "#ECF3E6"
39
+ },
40
+ "--dsw-alias-border-l1": {
41
+ "light": "#2D5A3D0F",
42
+ "dark": "#2D5A3D0F"
43
+ },
44
+ "--dsw-alias-border-l2": {
45
+ "light": "#2D5A3D21",
46
+ "dark": "#2D5A3D21"
47
+ },
48
+ "--dsw-alias-border-l3": {
49
+ "light": "#2D5A3D2E",
50
+ "dark": "#2D5A3D2E"
51
+ },
52
+ "--dsw-alias-border-l4": {
53
+ "light": "#2D5A3D3D",
54
+ "dark": "#2D5A3D3D"
55
+ },
56
+ "--dsw-alias-brand-primary": {
57
+ "light": "#2D5A3D",
58
+ "dark": "#2D5A3D"
59
+ },
60
+ "--dsw-alias-brand-primary-invert": {
61
+ "light": "#FFFFFF",
62
+ "dark": "#FFFFFF"
63
+ },
64
+ "--dsw-alias-brand-text": {
65
+ "light": "#2D5A3D",
66
+ "dark": "#2D5A3D"
67
+ },
68
+ "--dsw-alias-label-primary": {
69
+ "light": "#234030",
70
+ "dark": "#234030"
71
+ },
72
+ "--dsw-alias-label-primary-bluish": {
73
+ "light": "#234030",
74
+ "dark": "#234030"
75
+ },
76
+ "--dsw-alias-label-secondary": {
77
+ "light": "#3E6B4A",
78
+ "dark": "#3E6B4A"
79
+ },
80
+ "--dsw-alias-label-tertiary": {
81
+ "light": "#62816C",
82
+ "dark": "#62816C"
83
+ },
84
+ "--dsw-alias-label-caption": {
85
+ "light": "#62816C",
86
+ "dark": "#62816C"
87
+ },
88
+ "--dsw-alias-label-dimmed": {
89
+ "light": "#93A996",
90
+ "dark": "#93A996"
91
+ },
92
+ "--dsw-alias-label-primary-dimmed": {
93
+ "light": "#3E6B4A",
94
+ "dark": "#3E6B4A"
95
+ },
96
+ "--dsw-alias-label-primary-foreground": {
97
+ "light": "#FFFFFF",
98
+ "dark": "#FFFFFF"
99
+ },
100
+ "--dsw-alias-label-primary-inverted": {
101
+ "light": "#FFFFFF",
102
+ "dark": "#FFFFFF"
103
+ },
104
+ "--dsw-alias-link": {
105
+ "light": "#C4899F",
106
+ "dark": "#C4899F"
107
+ },
108
+ "--dsw-alias-interactive-bg-hover": {
109
+ "light": "#3E6B4A14",
110
+ "dark": "#3E6B4A14"
111
+ },
112
+ "--dsw-alias-interactive-bg-active": {
113
+ "light": "#FFB3472E",
114
+ "dark": "#FFB3472E"
115
+ },
116
+ "--dsw-alias-interactive-bg-hover-solid": {
117
+ "light": "#ECF3E6",
118
+ "dark": "#ECF3E6"
119
+ },
120
+ "--dsw-alias-interactive-bg-hover-accent": {
121
+ "light": "#FFB3473D",
122
+ "dark": "#FFB3473D"
123
+ },
124
+ "--dsw-alias-button-primary-fill": {
125
+ "light": "#2D5A3D",
126
+ "dark": "#2D5A3D"
127
+ },
128
+ "--dsw-alias-button-primary-hover": {
129
+ "light": "#3E6B4A",
130
+ "dark": "#3E6B4A"
131
+ },
132
+ "--dsw-alias-button-primary-dimmed": {
133
+ "light": "#2D5A3D47",
134
+ "dark": "#2D5A3D47"
135
+ },
136
+ "--dsw-alias-button-ghost-active-fill": {
137
+ "light": "#FFB34729",
138
+ "dark": "#FFB34729"
139
+ },
140
+ "--dsw-alias-button-ghost-active-border": {
141
+ "light": "#FFB347",
142
+ "dark": "#FFB347"
143
+ },
144
+ "--dsw-alias-button-ghost-active-hover": {
145
+ "light": "#FFB34747",
146
+ "dark": "#FFB34747"
147
+ },
148
+ "--dsw-alias-button-info-fill": {
149
+ "light": "#3E6B4A",
150
+ "dark": "#3E6B4A"
151
+ },
152
+ "--dsw-alias-button-info-hover": {
153
+ "light": "#4A7D58",
154
+ "dark": "#4A7D58"
155
+ },
156
+ "--dsw-alias-button-elevated-fill": {
157
+ "light": "#FFFFFF",
158
+ "dark": "#FFFFFF"
159
+ },
160
+ "--dsw-alias-button-floating-fill": {
161
+ "light": "#FFFFFF",
162
+ "dark": "#FFFFFF"
163
+ },
164
+ "--dsw-alias-button-floating-hover": {
165
+ "light": "#F6FAF2",
166
+ "dark": "#F6FAF2"
167
+ },
168
+ "--dsw-alias-button-contrast-fill": {
169
+ "light": "#234030",
170
+ "dark": "#234030"
171
+ },
172
+ "--dsw-alias-markdown-code-block": {
173
+ "light": "#EFF6EA",
174
+ "dark": "#EFF6EA"
175
+ },
176
+ "--dsw-alias-markdown-code-block-banner": {
177
+ "light": "#E3EEDC",
178
+ "dark": "#E3EEDC"
179
+ },
180
+ "--dsw-alias-markdown-inline-code": {
181
+ "light": "#ECF3E6",
182
+ "dark": "#ECF3E6"
183
+ },
184
+ "--dsw-alias-markdown-citation": {
185
+ "light": "#ECF3E6",
186
+ "dark": "#ECF3E6"
187
+ },
188
+ "--dsw-alias-markdown-tag": {
189
+ "light": "#ECF3E6",
190
+ "dark": "#ECF3E6"
191
+ },
192
+ "--dsw-alias-markdown-placeholder": {
193
+ "light": "#E3EEDC",
194
+ "dark": "#E3EEDC"
195
+ },
196
+ "--dsw-alias-markdown-code-segment-selected": {
197
+ "light": "#FFB34729",
198
+ "dark": "#FFB34729"
199
+ },
200
+ "--dsw-alias-markdown-code-segment-unselected": {
201
+ "light": "#EFF6EA",
202
+ "dark": "#EFF6EA"
203
+ },
204
+ "--dsw-alias-scrollbar-bg-l1": {
205
+ "light": "#2D5A3D29",
206
+ "dark": "#2D5A3D29"
207
+ },
208
+ "--dsw-alias-scrollbar-bg-l2": {
209
+ "light": "#2D5A3D38",
210
+ "dark": "#2D5A3D38"
211
+ },
212
+ "--dsw-alias-scrollbar-hover-l1": {
213
+ "light": "#2D5A3D52",
214
+ "dark": "#2D5A3D52"
215
+ },
216
+ "--dsw-alias-scrollbar-hover-l2": {
217
+ "light": "#2D5A3D66",
218
+ "dark": "#2D5A3D66"
219
+ },
220
+ "--dsw-alias-tooltip-bg": {
221
+ "light": "#234030",
222
+ "dark": "#234030"
223
+ },
224
+ "--dsw-alias-toast-bg": {
225
+ "light": "#FFFFFF",
226
+ "dark": "#FFFFFF"
227
+ },
228
+ "--dsw-alias-state-error-primary": {
229
+ "light": "#C65B6A",
230
+ "dark": "#C65B6A"
231
+ },
232
+ "--dsw-alias-state-error-secondary": {
233
+ "light": "#DB5A6B",
234
+ "dark": "#DB5A6B"
235
+ },
236
+ "--dsw-alias-state-success-primary": {
237
+ "light": "#21A675",
238
+ "dark": "#21A675"
239
+ },
240
+ "--dsw-alias-state-success-secondary": {
241
+ "light": "#2D5A3D",
242
+ "dark": "#2D5A3D"
243
+ },
244
+ "--dsw-alias-state-success-tertiary": {
245
+ "light": "#A8C8B2",
246
+ "dark": "#A8C8B2"
247
+ },
248
+ "--dsw-alias-state-warn-primary": {
249
+ "light": "#B97F3A",
250
+ "dark": "#B97F3A"
251
+ },
252
+ "--dsw-alias-state-warn-secondary": {
253
+ "light": "#D9A45E",
254
+ "dark": "#D9A45E"
255
+ },
256
+ "--dsw-alias-state-warn-tertiary": {
257
+ "light": "#EFDCC0",
258
+ "dark": "#EFDCC0"
259
+ },
260
+ "--dsw-alias-state-warn-label": {
261
+ "light": "#8A5A22",
262
+ "dark": "#8A5A22"
263
+ },
264
+ "--dsw-alias-state-business-primary": {
265
+ "light": "#FFB347",
266
+ "dark": "#FFB347"
267
+ },
268
+ "--dsw-alias-state-business-tertiary": {
269
+ "light": "#FFD08A",
270
+ "dark": "#FFD08A"
271
+ },
272
+ "--dsw-specific-sidebar-fill": {
273
+ "light": "linear-gradient(160deg,#D9E8DC 0%,#E6D9C6 28%,#F2E0BE 58%,#F6E1EE 88%,#DCD5F0 100%)",
274
+ "dark": "linear-gradient(160deg,#D9E8DC 0%,#E6D9C6 28%,#F2E0BE 58%,#F6E1EE 88%,#DCD5F0 100%)"
275
+ }
276
+ },
277
+ "reading": {
278
+ "colorScheme": "light",
279
+ "bg": "#FFFFFF",
280
+ "alpha": 0.62,
281
+ "blur": 3,
282
+ "maxWidth": 640
283
+ },
284
+ "accent": "#FFB347",
285
+ "ambient": {
286
+ "kind": "caiyun",
287
+ "stars": 12
288
+ }
289
+ }
290
+ ]
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-theme-gallery",
3
- "version": "0.1.5",
4
- "description": "A community theme gallery for DeepSeek Harness (DSH): JSON-defined skins with full-screen coverage and ported sidebar scenery, switched from the plugin's own sidebar panel — adding skins needs no code change",
3
+ "version": "0.3.0",
4
+ "description": "A theme gallery for DeepSeek Harness (DSH): six JSON-defined skins with full-screen coverage and sidebar scenery, plus built-in light/dark cards, switched from the panel under the sidebar's Plugins icon — adding skins needs no code change",
5
5
  "author": "renjie2026 (https://github.com/renjie2026)",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -51,6 +51,8 @@
51
51
  "test:order": "node tests/check-declaration-order.mjs",
52
52
  "test:tdz": "node tests/check-tdz-order.mjs && node tests/check-tdz-logic.mjs",
53
53
  "test:theme": "node tests/check-theme-contribution.mjs",
54
+ "test:cards": "node tests/check-card-order.mjs",
55
+ "test:copy": "node tests/check-copy-consistency-logic.mjs",
54
56
  "test:ambient": "node tests/check-ambient-render.mjs",
55
57
  "test:boot": "node tests/check-boot-timing.mjs",
56
58
  "test:safety": "node tests/check-boot-safety.mjs",
@@ -60,9 +62,10 @@
60
62
  "test:scope": "node tests/check-scope-reach.mjs",
61
63
  "test:scopelogic": "node tests/check-scope-reach-logic.mjs",
62
64
  "test:preview": "node scripts/build-ambient-preview.mjs",
65
+ "preview:panel": "node scripts/build-panel-preview.mjs",
63
66
  "test:calls": "node tests/check-undefined-calls.mjs",
64
67
  "test:emitguard": "node tests/check-self-emit-guard.mjs && node tests/check-self-emit-guard-logic.mjs",
65
- "test": "npm run test:schema && npm run test:host && npm run test:store && npm run test:order && npm run test:tdz && npm run test:theme && npm run test:ambient && npm run test:boot && npm run test:safety && npm run test:module && npm run test:bounded && npm run test:bootpath && npm run test:scope && npm run test:scopelogic && npm run test:calls && npm run test:emitguard",
68
+ "test": "npm run test:schema && npm run test:host && npm run test:store && npm run test:order && npm run test:tdz && npm run test:theme && npm run test:cards && npm run test:copy && npm run test:ambient && npm run test:boot && npm run test:safety && npm run test:module && npm run test:bounded && npm run test:bootpath && npm run test:scope && npm run test:scopelogic && npm run test:calls && npm run test:emitguard",
66
69
  "prepack": "node scripts/embed-themes.mjs",
67
70
  "publish:check": "node scripts/publish-check.mjs",
68
71
  "embed-themes": "node scripts/embed-themes.mjs",
@@ -73,7 +76,7 @@
73
76
  "skin:enable": "node tools/profile-skin.mjs enable",
74
77
  "skin:rollback": "node tools/profile-skin.mjs rollback",
75
78
  "watch:renderer": "node tools/watch-renderer.mjs",
76
- "check": "npm run typecheck && npm run test && npm run embed-themes && npm run preview:ambient",
79
+ "check": "npm run typecheck && npm run test && npm run embed-themes && npm run preview:ambient && npm run preview:panel",
77
80
  "prepublishOnly": "npm run publish:check"
78
81
  },
79
82
  "keywords": [
@@ -71,11 +71,11 @@
71
71
  "type": "object",
72
72
  "additionalProperties": false,
73
73
  "required": ["kind"],
74
- "description": "Scenery drawn inside the sidebar column, ported from the source admin system where each theme mounted its own animation component behind the left menu. Only the two kinds this plugin ships artwork for are accepted; a theme without this field gets no scenery.",
74
+ "description": "Scenery drawn inside the sidebar column, ported from the source admin system where each theme mounted its own animation component behind the left menu. Only the kinds this plugin ships artwork for are accepted; a theme without this field gets no scenery.",
75
75
  "properties": {
76
76
  "kind": {
77
- "enum": ["shan", "dream"],
78
- "description": "Which ported scene to draw: 'shan' is 山青婷彩 (mountains, mist, water, ripples, dragonflies, falling petals); 'dream' is 梦海游鱼 (corner glow, light washes, rising bubbles, glowing motes, swimming cartoon fish, swaying seaweed)."
77
+ "enum": ["shan", "dream", "caiyun", "dongyun", "junyue", "jiexin", "fengchen", "humao", "ahuang"],
78
+ "description": "Which ported scene to draw: 'shan' is 山青婷彩 (mountains, mist, water, ripples, dragonflies, falling petals); 'dream' is 梦海游鱼 (corner glow, light washes, rising bubbles, glowing motes, swimming cartoon fish, swaying seaweed); 'caiyun' is 营慕彩云 (dusk glow, warm stars, drifting clouds, two marquee cloud-seas, hot-air balloons); 'dongyun' is 江畔冬云 (winter moon, drifting clouds, snow, river with moonlight, ripples, glints, a sampan, reeds); 'junyue' is 徐山军月 (brass stars, full moon, night clouds, meteor, mountain ridges, pines); 'jiexin' is 佩安杰心 (misty hills, zen enso and meditator, incense smoke, dust motes); 'fengchen' is 光彩凤晨 (dawn rays, falling feathers, a flying brush-stroke phoenix, dew); 'humao' is 琥珀猫咪, an original pet scene (warm haze, sunlit sill, a sitting tabby with a swaying tail, a curled sleeping cat breathing, amber dust motes); 'ahuang' is 虎子阿黄, an original pet scene (golden haze, field-path bank, a yellow pastoral dog with a wagging sickle tail and a head tilt, dry grass tufts, a ball, dandelion fluff)."
79
79
  },
80
80
  "petals": {
81
81
  "type": "integer",
@@ -100,6 +100,36 @@
100
100
  "minimum": 0,
101
101
  "maximum": 6,
102
102
  "description": "'dream' only: how many cartoon fish to swim across the water. A third independent effect, ported from the source system's FishAnimation component."
103
+ },
104
+ "stars": {
105
+ "type": "integer",
106
+ "minimum": 0,
107
+ "maximum": 30,
108
+ "description": "'caiyun' and 'junyue' only: how many stars to seed. Each gets its own position, size and twinkle phase from a deterministic formula."
109
+ },
110
+ "snow": {
111
+ "type": "integer",
112
+ "minimum": 0,
113
+ "maximum": 30,
114
+ "description": "'dongyun' only: how many snowflakes to seed."
115
+ },
116
+ "dust": {
117
+ "type": "integer",
118
+ "minimum": 0,
119
+ "maximum": 20,
120
+ "description": "'jiexin' / 'humao' / 'ahuang' only: how many drifting motes to seed — incense dust for jiexin, amber sun motes for humao, dandelion fluff for ahuang."
121
+ },
122
+ "feathers": {
123
+ "type": "integer",
124
+ "minimum": 0,
125
+ "maximum": 16,
126
+ "description": "'fengchen' only: how many falling phoenix feathers to seed. A separate effect from the dew."
127
+ },
128
+ "dew": {
129
+ "type": "integer",
130
+ "minimum": 0,
131
+ "maximum": 30,
132
+ "description": "'fengchen' only: how many twinkling dew drops to seed."
103
133
  }
104
134
  }
105
135
  }