dsh-remote-plugin 0.6.18 → 0.6.19
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/apk/dsh-remote.apk +0 -0
- package/package.json +1 -1
- package/public/admin.html +16 -17
- package/public/admin.js +6 -5
- package/public/app.js +52 -14
- package/public/desktop/desktop.css +48 -7
- package/public/desktop/desktop.html +23 -20
- package/public/desktop/desktop.js +72 -16
- package/public/index.html +31 -29
- package/public/motion.js +105 -17
- package/public/plugin.html +6 -5
- package/public/styles.css +56 -24
- package/public/theme-vars.css +244 -167
- package/public/theme.js +2 -2
- package/public/update.json +8 -8
- package/public/version.json +1 -1
package/public/theme-vars.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/* DSH Remote · 移动优先 ·
|
|
2
|
-
* 统一 --dsr-* 变量; 主题由 <html data-theme="dark|light|neutral"> 驱动, theme.js 持久化。
|
|
1
|
+
/* DSH Remote · 移动优先 · 五皮肤(默认深空/深色落日/亮色易北爱乐厅/中性草原孤塔/黑曜白)
|
|
2
|
+
* 统一 --dsr-* 变量; 主题由 <html data-theme="default|dark|light|neutral|mono"> 驱动, theme.js 持久化。
|
|
3
3
|
* 红绿色弱友好原则: 状态语义色之外, 品牌色使用蓝/青 + 橙/紫系, 避免红绿配对。 */
|
|
4
4
|
|
|
5
5
|
/* ============ 通用变量 ============ */
|
|
@@ -11,14 +11,15 @@
|
|
|
11
11
|
|
|
12
12
|
html,
|
|
13
13
|
html[data-theme="default"],
|
|
14
|
-
html[data-theme="dark"]
|
|
14
|
+
html[data-theme="dark"],
|
|
15
|
+
html[data-theme="mono"] { color-scheme: dark; }
|
|
15
16
|
html[data-theme="light"],
|
|
16
17
|
html[data-theme="neutral"] { color-scheme: light; }
|
|
17
18
|
@media (prefers-color-scheme: light) {
|
|
18
19
|
html:not([data-theme]) { color-scheme: light; }
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
/* ============ 深空「默认」:
|
|
22
|
+
/* ============ 深空「默认」: 石墨中性色表面 + 单一清蓝色阶 ============ */
|
|
22
23
|
:root,
|
|
23
24
|
html[data-theme="default"] {
|
|
24
25
|
/* 中性灰阶 0(白) → 9(近黑) */
|
|
@@ -33,27 +34,27 @@ html[data-theme="default"] {
|
|
|
33
34
|
--dsr-neutral-8: #2B3442;
|
|
34
35
|
--dsr-neutral-9: #1A212C;
|
|
35
36
|
|
|
36
|
-
--dsr-bg: #
|
|
37
|
-
--dsr-bg-2: #
|
|
38
|
-
--dsr-panel: #
|
|
39
|
-
--dsr-panel-2: #
|
|
40
|
-
--dsr-line: #
|
|
41
|
-
--dsr-divider: rgba(
|
|
42
|
-
--dsr-text: #
|
|
43
|
-
--dsr-muted: #
|
|
44
|
-
--dsr-text-disabled:
|
|
45
|
-
|
|
46
|
-
--dsr-accent: #
|
|
47
|
-
--dsr-on-accent: #
|
|
48
|
-
--dsr-accent-strong: #
|
|
49
|
-
--dsr-accent-soft: #
|
|
50
|
-
--dsr-accent-line: #
|
|
51
|
-
--dsr-accent-2: #
|
|
52
|
-
--dsr-accent-2-strong: #
|
|
53
|
-
--dsr-accent-2-soft: #
|
|
54
|
-
--dsr-accent-2-line: #
|
|
55
|
-
--dsr-brand-a: #
|
|
56
|
-
--dsr-brand-b: #
|
|
37
|
+
--dsr-bg: #0D1117;
|
|
38
|
+
--dsr-bg-2: #11161E;
|
|
39
|
+
--dsr-panel: #161B22;
|
|
40
|
+
--dsr-panel-2: #21262D;
|
|
41
|
+
--dsr-line: #30363D;
|
|
42
|
+
--dsr-divider: rgba(240, 246, 252, .14);
|
|
43
|
+
--dsr-text: #F0F6FC;
|
|
44
|
+
--dsr-muted: #A7B0BC;
|
|
45
|
+
--dsr-text-disabled: #6E7681;
|
|
46
|
+
|
|
47
|
+
--dsr-accent: #58A6FF;
|
|
48
|
+
--dsr-on-accent: #07111F;
|
|
49
|
+
--dsr-accent-strong: #79C0FF;
|
|
50
|
+
--dsr-accent-soft: #58A6FF1F;
|
|
51
|
+
--dsr-accent-line: #58A6FF66;
|
|
52
|
+
--dsr-accent-2: #A5D6FF;
|
|
53
|
+
--dsr-accent-2-strong: #CAEAFF;
|
|
54
|
+
--dsr-accent-2-soft: #A5D6FF1A;
|
|
55
|
+
--dsr-accent-2-line: #A5D6FF59;
|
|
56
|
+
--dsr-brand-a: #58A6FF;
|
|
57
|
+
--dsr-brand-b: #A5D6FF;
|
|
57
58
|
|
|
58
59
|
--dsr-success: #4BCF7E;
|
|
59
60
|
--dsr-success-soft: #4BCF7E21;
|
|
@@ -69,24 +70,24 @@ html[data-theme="default"] {
|
|
|
69
70
|
--dsr-info-soft: #7DCFFF21;
|
|
70
71
|
--dsr-info-line: #7DCFFF66;
|
|
71
72
|
|
|
72
|
-
--dsr-head-bg: rgba(
|
|
73
|
-
--dsr-nav-bg: rgba(
|
|
74
|
-
--dsr-nav-muted: #
|
|
75
|
-
--dsr-nav-active: #
|
|
73
|
+
--dsr-head-bg: rgba(13, 17, 23, .94);
|
|
74
|
+
--dsr-nav-bg: rgba(22, 27, 34, .95);
|
|
75
|
+
--dsr-nav-muted: #A7B0BC;
|
|
76
|
+
--dsr-nav-active: #79C0FF;
|
|
76
77
|
--dsr-nav-badge-bg: #FF9E64;
|
|
77
78
|
--dsr-nav-badge-text: #1A120B;
|
|
78
|
-
--dsr-composer-bg: rgba(
|
|
79
|
+
--dsr-composer-bg: rgba(22, 27, 34, .94);
|
|
79
80
|
--dsr-overlay: rgba(5, 7, 14, .66);
|
|
80
81
|
--dsr-code-bg: rgba(0, 0, 0, .28);
|
|
81
82
|
--dsr-shadow: rgba(0, 0, 0, .4);
|
|
82
|
-
--dsr-glow: rgba(
|
|
83
|
-
--dsr-head-running-bg: linear-gradient(90deg, rgba(
|
|
84
|
-
--dsr-head-running-line: rgba(
|
|
85
|
-
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(
|
|
83
|
+
--dsr-glow: rgba(88, 166, 255, .56);
|
|
84
|
+
--dsr-head-running-bg: linear-gradient(90deg, rgba(13, 17, 23, .96), rgba(24, 52, 82, .94), rgba(88, 166, 255, .45), rgba(24, 52, 82, .94), rgba(13, 17, 23, .96));
|
|
85
|
+
--dsr-head-running-line: rgba(88, 166, 255, .55);
|
|
86
|
+
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(13, 17, 23, .96), rgba(74, 34, 23, .92), rgba(255, 158, 100, .48), rgba(74, 34, 23, .92), rgba(13, 17, 23, .96));
|
|
86
87
|
--dsr-head-interrupted-line: rgba(255, 158, 100, .55);
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
/* ============ 深色「落日」:
|
|
90
|
+
/* ============ 深色「落日」: 暖炭色表面 + 琥珀珊瑚同系强调 ============ */
|
|
90
91
|
html[data-theme="dark"] {
|
|
91
92
|
/* 中性灰阶 0(白) → 9(近黑) */
|
|
92
93
|
--dsr-neutral-0: #FFFFFF;
|
|
@@ -101,36 +102,36 @@ html[data-theme="dark"] {
|
|
|
101
102
|
--dsr-neutral-9: #1A212C;
|
|
102
103
|
|
|
103
104
|
/* 表面与文字 */
|
|
104
|
-
--dsr-bg: #
|
|
105
|
-
--dsr-bg-2: #
|
|
106
|
-
--dsr-panel: #
|
|
107
|
-
--dsr-panel-2: #
|
|
108
|
-
--dsr-line: #
|
|
109
|
-
--dsr-divider: rgba(255,
|
|
110
|
-
--dsr-text: #
|
|
111
|
-
--dsr-muted:
|
|
112
|
-
--dsr-text-disabled:
|
|
105
|
+
--dsr-bg: #161316;
|
|
106
|
+
--dsr-bg-2: #1D1819;
|
|
107
|
+
--dsr-panel: #251D1D;
|
|
108
|
+
--dsr-panel-2: #302323;
|
|
109
|
+
--dsr-line: #4A3532;
|
|
110
|
+
--dsr-divider: rgba(255, 244, 230, .15);
|
|
111
|
+
--dsr-text: #FFF4E6;
|
|
112
|
+
--dsr-muted: #D2BEB0;
|
|
113
|
+
--dsr-text-disabled: #8E7B73;
|
|
113
114
|
|
|
114
115
|
/* 品牌强调(琥珀橙)与点缀(米色) */
|
|
115
|
-
--dsr-accent: #
|
|
116
|
+
--dsr-accent: #FFB86B;
|
|
116
117
|
--dsr-on-accent: #1A120B;
|
|
117
|
-
--dsr-accent-strong: #
|
|
118
|
-
--dsr-accent-soft: #
|
|
119
|
-
--dsr-accent-line: #
|
|
120
|
-
--dsr-accent-2: #
|
|
121
|
-
--dsr-accent-2-strong: #
|
|
122
|
-
--dsr-accent-2-soft: #
|
|
123
|
-
--dsr-accent-2-line: #
|
|
124
|
-
--dsr-brand-a: #
|
|
125
|
-
--dsr-brand-b: #
|
|
126
|
-
|
|
127
|
-
/* 状态色(WCAG
|
|
118
|
+
--dsr-accent-strong: #FFD08A;
|
|
119
|
+
--dsr-accent-soft: #FFB86B1F;
|
|
120
|
+
--dsr-accent-line: #FFB86B70;
|
|
121
|
+
--dsr-accent-2: #FF8A65;
|
|
122
|
+
--dsr-accent-2-strong: #FFA083;
|
|
123
|
+
--dsr-accent-2-soft: #FF8A651F;
|
|
124
|
+
--dsr-accent-2-line: #FF8A6566;
|
|
125
|
+
--dsr-brand-a: #FFB86B;
|
|
126
|
+
--dsr-brand-b: #FF8A65;
|
|
127
|
+
|
|
128
|
+
/* 状态色(WCAG 对比度按暖炭底校准) */
|
|
128
129
|
--dsr-success: #7EE2A8;
|
|
129
130
|
--dsr-success-soft: #7EE2A821;
|
|
130
131
|
--dsr-success-line: #7EE2A866;
|
|
131
|
-
--dsr-warning: #
|
|
132
|
-
--dsr-warning-soft: #
|
|
133
|
-
--dsr-warning-line: #
|
|
132
|
+
--dsr-warning: #FFB86B;
|
|
133
|
+
--dsr-warning-soft: #FFB86B21;
|
|
134
|
+
--dsr-warning-line: #FFB86B66;
|
|
134
135
|
--dsr-on-warning: #1A120B;
|
|
135
136
|
--dsr-error: #FFB4A6;
|
|
136
137
|
--dsr-error-soft: #FFB4A624;
|
|
@@ -140,24 +141,24 @@ html[data-theme="dark"] {
|
|
|
140
141
|
--dsr-info-line: #7DCFFF66;
|
|
141
142
|
|
|
142
143
|
/* 悬浮/遮罩/特殊表面 */
|
|
143
|
-
--dsr-head-bg: rgba(
|
|
144
|
-
--dsr-nav-bg: rgba(
|
|
145
|
-
--dsr-nav-muted:
|
|
146
|
-
--dsr-nav-active: #
|
|
147
|
-
--dsr-nav-badge-bg: #
|
|
144
|
+
--dsr-head-bg: rgba(22, 19, 22, .95);
|
|
145
|
+
--dsr-nav-bg: rgba(37, 29, 29, .96);
|
|
146
|
+
--dsr-nav-muted: #D2BEB0;
|
|
147
|
+
--dsr-nav-active: #FFD08A;
|
|
148
|
+
--dsr-nav-badge-bg: #FFB86B;
|
|
148
149
|
--dsr-nav-badge-text: #1A120B;
|
|
149
|
-
--dsr-composer-bg: rgba(
|
|
150
|
-
--dsr-overlay: rgba(
|
|
150
|
+
--dsr-composer-bg: rgba(37, 29, 29, .95);
|
|
151
|
+
--dsr-overlay: rgba(12, 7, 8, .74);
|
|
151
152
|
--dsr-code-bg: rgba(0, 0, 0, .28);
|
|
152
153
|
--dsr-shadow: rgba(0, 0, 0, .4);
|
|
153
|
-
--dsr-glow: rgba(
|
|
154
|
-
--dsr-head-running-bg: linear-gradient(90deg, rgba(
|
|
155
|
-
--dsr-head-running-line: rgba(
|
|
156
|
-
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(
|
|
154
|
+
--dsr-glow: rgba(255, 184, 107, .46);
|
|
155
|
+
--dsr-head-running-bg: linear-gradient(90deg, rgba(22, 19, 22, .96), rgba(94, 49, 34, .94), rgba(255, 184, 107, .45), rgba(94, 49, 34, .94), rgba(22, 19, 22, .96));
|
|
156
|
+
--dsr-head-running-line: rgba(255, 184, 107, .58);
|
|
157
|
+
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(22, 19, 22, .96), rgba(94, 38, 31, .94), rgba(255, 138, 101, .45), rgba(94, 38, 31, .94), rgba(22, 19, 22, .96));
|
|
157
158
|
--dsr-head-interrupted-line: rgba(255, 180, 166, .55);
|
|
158
159
|
}
|
|
159
160
|
|
|
160
|
-
/* ============ 亮色「易北爱乐厅」:
|
|
161
|
+
/* ============ 亮色「易北爱乐厅」: 玻璃白表面 + 易北青蓝单色阶 ============ */
|
|
161
162
|
html[data-theme="light"] {
|
|
162
163
|
--dsr-neutral-0: #FFFFFF;
|
|
163
164
|
--dsr-neutral-1: #FAF9F7;
|
|
@@ -170,28 +171,28 @@ html[data-theme="light"] {
|
|
|
170
171
|
--dsr-neutral-8: #3F3C37;
|
|
171
172
|
--dsr-neutral-9: #2B2B2B;
|
|
172
173
|
|
|
173
|
-
--dsr-bg: #
|
|
174
|
-
--dsr-bg-2: #
|
|
175
|
-
--dsr-panel: #
|
|
174
|
+
--dsr-bg: #F5F7F8;
|
|
175
|
+
--dsr-bg-2: #E8EDF0;
|
|
176
|
+
--dsr-panel: #FFFFFF;
|
|
176
177
|
--dsr-panel-2: #FFFFFF;
|
|
177
|
-
--dsr-line: #
|
|
178
|
-
--dsr-divider: rgba(
|
|
179
|
-
--dsr-text: #
|
|
180
|
-
--dsr-muted: #
|
|
181
|
-
--dsr-text-disabled: #
|
|
182
|
-
|
|
183
|
-
/*
|
|
184
|
-
--dsr-accent: #
|
|
185
|
-
--dsr-on-accent: #
|
|
186
|
-
--dsr-accent-strong: #
|
|
187
|
-
--dsr-accent-soft: #
|
|
188
|
-
--dsr-accent-line: #
|
|
189
|
-
--dsr-accent-2: #
|
|
190
|
-
--dsr-accent-2-strong: #
|
|
191
|
-
--dsr-accent-2-soft: #
|
|
192
|
-
--dsr-accent-2-line: #
|
|
193
|
-
--dsr-brand-a: #
|
|
194
|
-
--dsr-brand-b: #
|
|
178
|
+
--dsr-line: #C7D2D8;
|
|
179
|
+
--dsr-divider: rgba(24, 33, 38, .13);
|
|
180
|
+
--dsr-text: #182126;
|
|
181
|
+
--dsr-muted: #52616A;
|
|
182
|
+
--dsr-text-disabled: #7B8990;
|
|
183
|
+
|
|
184
|
+
/* 深青蓝负责交互,同色阶浅青蓝负责柔和强调;铜色仅用于品牌点缀。 */
|
|
185
|
+
--dsr-accent: #176B87;
|
|
186
|
+
--dsr-on-accent: #FFFFFF;
|
|
187
|
+
--dsr-accent-strong: #0F5268;
|
|
188
|
+
--dsr-accent-soft: #176B871A;
|
|
189
|
+
--dsr-accent-line: #176B8759;
|
|
190
|
+
--dsr-accent-2: #4B879C;
|
|
191
|
+
--dsr-accent-2-strong: #2E6E84;
|
|
192
|
+
--dsr-accent-2-soft: #4B879C1A;
|
|
193
|
+
--dsr-accent-2-line: #4B879C59;
|
|
194
|
+
--dsr-brand-a: #176B87;
|
|
195
|
+
--dsr-brand-b: #B8613E;
|
|
195
196
|
|
|
196
197
|
--dsr-success: #237A46;
|
|
197
198
|
--dsr-success-soft: #237A461A;
|
|
@@ -207,24 +208,24 @@ html[data-theme="light"] {
|
|
|
207
208
|
--dsr-info-soft: #2563C01A;
|
|
208
209
|
--dsr-info-line: #2563C059;
|
|
209
210
|
|
|
210
|
-
--dsr-head-bg: rgba(
|
|
211
|
-
--dsr-nav-bg: rgba(
|
|
212
|
-
--dsr-nav-muted: #
|
|
213
|
-
--dsr-nav-active: #
|
|
211
|
+
--dsr-head-bg: rgba(245, 247, 248, .96);
|
|
212
|
+
--dsr-nav-bg: rgba(255, 255, 255, .96);
|
|
213
|
+
--dsr-nav-muted: #52616A;
|
|
214
|
+
--dsr-nav-active: #0F5268;
|
|
214
215
|
--dsr-nav-badge-bg: #965A0B;
|
|
215
216
|
--dsr-nav-badge-text: #FFFFFF;
|
|
216
|
-
--dsr-composer-bg: rgba(
|
|
217
|
-
--dsr-overlay: rgba(
|
|
217
|
+
--dsr-composer-bg: rgba(255, 255, 255, .95);
|
|
218
|
+
--dsr-overlay: rgba(24, 33, 38, .42);
|
|
218
219
|
--dsr-code-bg: rgba(0, 0, 0, .06);
|
|
219
|
-
--dsr-shadow: rgba(
|
|
220
|
-
--dsr-glow: rgba(
|
|
221
|
-
--dsr-head-running-bg: linear-gradient(90deg, rgba(
|
|
222
|
-
--dsr-head-running-line: rgba(
|
|
223
|
-
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(
|
|
220
|
+
--dsr-shadow: rgba(24, 33, 38, .17);
|
|
221
|
+
--dsr-glow: rgba(23, 107, 135, .35);
|
|
222
|
+
--dsr-head-running-bg: linear-gradient(90deg, rgba(245, 247, 248, .96), rgba(75, 135, 156, .26), rgba(255, 255, 255, .82), rgba(75, 135, 156, .26), rgba(245, 247, 248, .96));
|
|
223
|
+
--dsr-head-running-line: rgba(23, 107, 135, .58);
|
|
224
|
+
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(245, 247, 248, .96), rgba(183, 66, 63, .18), rgba(255, 255, 255, .82), rgba(183, 66, 63, .18), rgba(245, 247, 248, .96));
|
|
224
225
|
--dsr-head-interrupted-line: rgba(183, 66, 63, .55);
|
|
225
226
|
}
|
|
226
227
|
|
|
227
|
-
/* ============ 中性「草原孤塔」:
|
|
228
|
+
/* ============ 中性「草原孤塔」: 高明度鼠尾草表面 + 林地绿单色阶 ============ */
|
|
228
229
|
html[data-theme="neutral"] {
|
|
229
230
|
--dsr-neutral-0: #FFFFFF;
|
|
230
231
|
--dsr-neutral-1: #FAF7EE;
|
|
@@ -237,28 +238,28 @@ html[data-theme="neutral"] {
|
|
|
237
238
|
--dsr-neutral-8: #454133;
|
|
238
239
|
--dsr-neutral-9: #2B2B2B;
|
|
239
240
|
|
|
240
|
-
--dsr-bg: #
|
|
241
|
-
--dsr-bg-2: #
|
|
242
|
-
--dsr-panel: #
|
|
243
|
-
--dsr-panel-2: #
|
|
244
|
-
--dsr-line: #
|
|
245
|
-
--dsr-divider: rgba(
|
|
246
|
-
--dsr-text: #
|
|
247
|
-
--dsr-muted: #
|
|
248
|
-
--dsr-text-disabled: #
|
|
241
|
+
--dsr-bg: #EEF1E8;
|
|
242
|
+
--dsr-bg-2: #E2E8DB;
|
|
243
|
+
--dsr-panel: #FAFBF6;
|
|
244
|
+
--dsr-panel-2: #FFFFFF;
|
|
245
|
+
--dsr-line: #C2CCB7;
|
|
246
|
+
--dsr-divider: rgba(31, 40, 28, .13);
|
|
247
|
+
--dsr-text: #1F281C;
|
|
248
|
+
--dsr-muted: #4E5D49;
|
|
249
|
+
--dsr-text-disabled: #768171;
|
|
249
250
|
|
|
250
251
|
/* 橄榄军绿 = 主色(按钮/开关/底部导航块); 陶土砖红 = 强调(徽标/图标/链接) */
|
|
251
|
-
--dsr-accent: #
|
|
252
|
+
--dsr-accent: #47643C;
|
|
252
253
|
--dsr-on-accent: #F5F1E3;
|
|
253
|
-
--dsr-accent-strong: #
|
|
254
|
-
--dsr-accent-soft: #
|
|
255
|
-
--dsr-accent-line: #
|
|
256
|
-
--dsr-accent-2: #
|
|
257
|
-
--dsr-accent-2-strong: #
|
|
258
|
-
--dsr-accent-2-soft: #
|
|
259
|
-
--dsr-accent-2-line: #
|
|
260
|
-
--dsr-brand-a: #
|
|
261
|
-
--dsr-brand-b: #
|
|
254
|
+
--dsr-accent-strong: #36502E;
|
|
255
|
+
--dsr-accent-soft: #47643C1F;
|
|
256
|
+
--dsr-accent-line: #47643C66;
|
|
257
|
+
--dsr-accent-2: #789568;
|
|
258
|
+
--dsr-accent-2-strong: #5D7C50;
|
|
259
|
+
--dsr-accent-2-soft: #7895681F;
|
|
260
|
+
--dsr-accent-2-line: #78956866;
|
|
261
|
+
--dsr-brand-a: #47643C;
|
|
262
|
+
--dsr-brand-b: #A95F3F;
|
|
262
263
|
|
|
263
264
|
--dsr-success: #1E5C33;
|
|
264
265
|
--dsr-success-soft: #1E5C331F;
|
|
@@ -274,21 +275,97 @@ html[data-theme="neutral"] {
|
|
|
274
275
|
--dsr-info-soft: #1F4E7A1F;
|
|
275
276
|
--dsr-info-line: #1F4E7A66;
|
|
276
277
|
|
|
277
|
-
--dsr-head-bg: rgba(
|
|
278
|
-
--dsr-nav-bg:
|
|
279
|
-
--dsr-nav-muted:
|
|
280
|
-
--dsr-nav-active: #
|
|
281
|
-
--dsr-nav-badge-bg: #
|
|
282
|
-
--dsr-nav-badge-text: #
|
|
283
|
-
--dsr-composer-bg: rgba(
|
|
278
|
+
--dsr-head-bg: rgba(238, 241, 232, .96);
|
|
279
|
+
--dsr-nav-bg: rgba(250, 251, 246, .96);
|
|
280
|
+
--dsr-nav-muted: #5B6856;
|
|
281
|
+
--dsr-nav-active: #36502E;
|
|
282
|
+
--dsr-nav-badge-bg: #A95F3F;
|
|
283
|
+
--dsr-nav-badge-text: #FFFFFF;
|
|
284
|
+
--dsr-composer-bg: rgba(250, 251, 246, .95);
|
|
284
285
|
--dsr-overlay: rgba(43, 43, 43, .4);
|
|
285
286
|
--dsr-code-bg: rgba(0, 0, 0, .07);
|
|
286
|
-
--dsr-shadow: rgba(
|
|
287
|
-
--dsr-glow: rgba(
|
|
288
|
-
--dsr-head-running-bg: linear-gradient(90deg, rgba(
|
|
289
|
-
--dsr-head-running-line: rgba(
|
|
290
|
-
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(
|
|
291
|
-
--dsr-head-interrupted-line: rgba(
|
|
287
|
+
--dsr-shadow: rgba(31, 40, 28, .17);
|
|
288
|
+
--dsr-glow: rgba(71, 100, 60, .36);
|
|
289
|
+
--dsr-head-running-bg: linear-gradient(90deg, rgba(238, 241, 232, .96), rgba(120, 149, 104, .26), rgba(255, 255, 255, .78), rgba(120, 149, 104, .26), rgba(238, 241, 232, .96));
|
|
290
|
+
--dsr-head-running-line: rgba(71, 100, 60, .58);
|
|
291
|
+
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(238, 241, 232, .96), rgba(169, 95, 63, .18), rgba(255, 255, 255, .78), rgba(169, 95, 63, .18), rgba(238, 241, 232, .96));
|
|
292
|
+
--dsr-head-interrupted-line: rgba(169, 95, 63, .58);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/* ============ 黑白「黑曜白」: 纯灰阶层次 + 冷白高光 ============ */
|
|
296
|
+
html[data-theme="mono"] {
|
|
297
|
+
--dsr-neutral-0: #FFFFFF;
|
|
298
|
+
--dsr-neutral-1: #F5F5F5;
|
|
299
|
+
--dsr-neutral-2: #E5E5E5;
|
|
300
|
+
--dsr-neutral-3: #D4D4D4;
|
|
301
|
+
--dsr-neutral-4: #A3A3A3;
|
|
302
|
+
--dsr-neutral-5: #737373;
|
|
303
|
+
--dsr-neutral-6: #525252;
|
|
304
|
+
--dsr-neutral-7: #333333;
|
|
305
|
+
--dsr-neutral-8: #171717;
|
|
306
|
+
--dsr-neutral-9: #050505;
|
|
307
|
+
|
|
308
|
+
--dsr-bg: #050505;
|
|
309
|
+
--dsr-bg-2: #0A0A0A;
|
|
310
|
+
--dsr-panel: #111111;
|
|
311
|
+
--dsr-panel-2: #1A1A1A;
|
|
312
|
+
--dsr-line: #333333;
|
|
313
|
+
--dsr-divider: rgba(255, 255, 255, .14);
|
|
314
|
+
--dsr-text: #F5F5F5;
|
|
315
|
+
--dsr-muted: #A3A3A3;
|
|
316
|
+
--dsr-text-disabled: #737373;
|
|
317
|
+
|
|
318
|
+
--dsr-accent: #F5F5F5;
|
|
319
|
+
--dsr-on-accent: #050505;
|
|
320
|
+
--dsr-accent-strong: #FFFFFF;
|
|
321
|
+
--dsr-accent-soft: rgba(255, 255, 255, .10);
|
|
322
|
+
--dsr-accent-line: rgba(255, 255, 255, .38);
|
|
323
|
+
--dsr-accent-2: #A3A3A3;
|
|
324
|
+
--dsr-accent-2-strong: #D4D4D4;
|
|
325
|
+
--dsr-accent-2-soft: rgba(163, 163, 163, .12);
|
|
326
|
+
--dsr-accent-2-line: rgba(212, 212, 212, .32);
|
|
327
|
+
--dsr-brand-a: #FFFFFF;
|
|
328
|
+
--dsr-brand-b: #737373;
|
|
329
|
+
|
|
330
|
+
--dsr-success: #D4D4D4;
|
|
331
|
+
--dsr-success-soft: rgba(212, 212, 212, .10);
|
|
332
|
+
--dsr-success-line: rgba(212, 212, 212, .36);
|
|
333
|
+
--dsr-warning: #E5E5E5;
|
|
334
|
+
--dsr-warning-soft: rgba(229, 229, 229, .11);
|
|
335
|
+
--dsr-warning-line: rgba(229, 229, 229, .40);
|
|
336
|
+
--dsr-on-warning: #050505;
|
|
337
|
+
--dsr-error: #FFFFFF;
|
|
338
|
+
--dsr-error-soft: rgba(255, 255, 255, .13);
|
|
339
|
+
--dsr-error-line: rgba(255, 255, 255, .48);
|
|
340
|
+
--dsr-info: #BDBDBD;
|
|
341
|
+
--dsr-info-soft: rgba(189, 189, 189, .10);
|
|
342
|
+
--dsr-info-line: rgba(189, 189, 189, .34);
|
|
343
|
+
|
|
344
|
+
--dsr-head-bg: rgba(5, 5, 5, .96);
|
|
345
|
+
--dsr-nav-bg: rgba(10, 10, 10, .96);
|
|
346
|
+
--dsr-nav-muted: #8A8A8A;
|
|
347
|
+
--dsr-nav-active: #FFFFFF;
|
|
348
|
+
--dsr-nav-badge-bg: #F5F5F5;
|
|
349
|
+
--dsr-nav-badge-text: #050505;
|
|
350
|
+
--dsr-composer-bg: rgba(10, 10, 10, .95);
|
|
351
|
+
--dsr-overlay: rgba(0, 0, 0, .78);
|
|
352
|
+
--dsr-code-bg: rgba(255, 255, 255, .055);
|
|
353
|
+
--dsr-shadow: rgba(0, 0, 0, .72);
|
|
354
|
+
--dsr-glow: rgba(255, 255, 255, .30);
|
|
355
|
+
--dsr-head-running-bg: linear-gradient(90deg, rgba(5, 5, 5, .97), rgba(38, 38, 38, .95), rgba(245, 245, 245, .36), rgba(38, 38, 38, .95), rgba(5, 5, 5, .97));
|
|
356
|
+
--dsr-head-running-line: rgba(255, 255, 255, .46);
|
|
357
|
+
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(5, 5, 5, .97), rgba(28, 28, 28, .95), rgba(163, 163, 163, .32), rgba(28, 28, 28, .95), rgba(5, 5, 5, .97));
|
|
358
|
+
--dsr-head-interrupted-line: rgba(212, 212, 212, .42);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
html[data-theme="mono"] body {
|
|
362
|
+
background-image: radial-gradient(ellipse 82% 46% at 50% -16%, rgba(255, 255, 255, .085), transparent 72%);
|
|
363
|
+
background-attachment: fixed;
|
|
364
|
+
}
|
|
365
|
+
html[data-theme="mono"] .brand-dot,
|
|
366
|
+
html[data-theme="mono"] .plugin-brand-mark {
|
|
367
|
+
background: #F5F5F5;
|
|
368
|
+
box-shadow: 0 0 0 3px rgba(255, 255, 255, .08), 0 0 18px rgba(255, 255, 255, .38);
|
|
292
369
|
}
|
|
293
370
|
|
|
294
371
|
/* 无 JS 或 JS 前: 跟随系统深浅偏好 */
|
|
@@ -305,27 +382,27 @@ html[data-theme="neutral"] {
|
|
|
305
382
|
--dsr-neutral-8: #3F3C37;
|
|
306
383
|
--dsr-neutral-9: #2B2B2B;
|
|
307
384
|
|
|
308
|
-
--dsr-bg: #
|
|
309
|
-
--dsr-bg-2: #
|
|
310
|
-
--dsr-panel: #
|
|
385
|
+
--dsr-bg: #F5F7F8;
|
|
386
|
+
--dsr-bg-2: #E8EDF0;
|
|
387
|
+
--dsr-panel: #FFFFFF;
|
|
311
388
|
--dsr-panel-2: #FFFFFF;
|
|
312
|
-
--dsr-line: #
|
|
313
|
-
--dsr-divider: rgba(
|
|
314
|
-
--dsr-text: #
|
|
315
|
-
--dsr-muted: #
|
|
316
|
-
--dsr-text-disabled: #
|
|
317
|
-
|
|
318
|
-
--dsr-accent: #
|
|
319
|
-
--dsr-on-accent: #
|
|
320
|
-
--dsr-accent-strong: #
|
|
321
|
-
--dsr-accent-soft: #
|
|
322
|
-
--dsr-accent-line: #
|
|
323
|
-
--dsr-accent-2: #
|
|
324
|
-
--dsr-accent-2-strong: #
|
|
325
|
-
--dsr-accent-2-soft: #
|
|
326
|
-
--dsr-accent-2-line: #
|
|
327
|
-
--dsr-brand-a: #
|
|
328
|
-
--dsr-brand-b: #
|
|
389
|
+
--dsr-line: #C7D2D8;
|
|
390
|
+
--dsr-divider: rgba(24, 33, 38, .13);
|
|
391
|
+
--dsr-text: #182126;
|
|
392
|
+
--dsr-muted: #52616A;
|
|
393
|
+
--dsr-text-disabled: #7B8990;
|
|
394
|
+
|
|
395
|
+
--dsr-accent: #176B87;
|
|
396
|
+
--dsr-on-accent: #FFFFFF;
|
|
397
|
+
--dsr-accent-strong: #0F5268;
|
|
398
|
+
--dsr-accent-soft: #176B871A;
|
|
399
|
+
--dsr-accent-line: #176B8759;
|
|
400
|
+
--dsr-accent-2: #4B879C;
|
|
401
|
+
--dsr-accent-2-strong: #2E6E84;
|
|
402
|
+
--dsr-accent-2-soft: #4B879C1A;
|
|
403
|
+
--dsr-accent-2-line: #4B879C59;
|
|
404
|
+
--dsr-brand-a: #176B87;
|
|
405
|
+
--dsr-brand-b: #B8613E;
|
|
329
406
|
|
|
330
407
|
--dsr-success: #237A46;
|
|
331
408
|
--dsr-success-soft: #237A461A;
|
|
@@ -341,20 +418,20 @@ html[data-theme="neutral"] {
|
|
|
341
418
|
--dsr-info-soft: #2563C01A;
|
|
342
419
|
--dsr-info-line: #2563C059;
|
|
343
420
|
|
|
344
|
-
--dsr-head-bg: rgba(
|
|
345
|
-
--dsr-nav-bg: rgba(
|
|
346
|
-
--dsr-nav-muted: #
|
|
347
|
-
--dsr-nav-active: #
|
|
421
|
+
--dsr-head-bg: rgba(245, 247, 248, .96);
|
|
422
|
+
--dsr-nav-bg: rgba(255, 255, 255, .96);
|
|
423
|
+
--dsr-nav-muted: #52616A;
|
|
424
|
+
--dsr-nav-active: #0F5268;
|
|
348
425
|
--dsr-nav-badge-bg: #965A0B;
|
|
349
426
|
--dsr-nav-badge-text: #FFFFFF;
|
|
350
|
-
--dsr-composer-bg: rgba(
|
|
351
|
-
--dsr-overlay: rgba(
|
|
427
|
+
--dsr-composer-bg: rgba(255, 255, 255, .95);
|
|
428
|
+
--dsr-overlay: rgba(24, 33, 38, .42);
|
|
352
429
|
--dsr-code-bg: rgba(0, 0, 0, .06);
|
|
353
|
-
--dsr-shadow: rgba(
|
|
354
|
-
--dsr-glow: rgba(
|
|
355
|
-
--dsr-head-running-bg: linear-gradient(90deg, rgba(
|
|
356
|
-
--dsr-head-running-line: rgba(
|
|
357
|
-
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(
|
|
430
|
+
--dsr-shadow: rgba(24, 33, 38, .17);
|
|
431
|
+
--dsr-glow: rgba(23, 107, 135, .35);
|
|
432
|
+
--dsr-head-running-bg: linear-gradient(90deg, rgba(245, 247, 248, .96), rgba(75, 135, 156, .26), rgba(255, 255, 255, .82), rgba(75, 135, 156, .26), rgba(245, 247, 248, .96));
|
|
433
|
+
--dsr-head-running-line: rgba(23, 107, 135, .58);
|
|
434
|
+
--dsr-head-interrupted-bg: linear-gradient(90deg, rgba(245, 247, 248, .96), rgba(183, 66, 63, .18), rgba(255, 255, 255, .82), rgba(183, 66, 63, .18), rgba(245, 247, 248, .96));
|
|
358
435
|
--dsr-head-interrupted-line: rgba(183, 66, 63, .55);
|
|
359
436
|
}
|
|
360
437
|
}
|
package/public/theme.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* DSH Remote 皮肤系统 · 零依赖
|
|
2
|
-
* html[data-theme] = default(默认深空) | dark(落日) | light(易北爱乐厅) | neutral(草原孤塔)
|
|
2
|
+
* html[data-theme] = default(默认深空) | dark(落日) | light(易北爱乐厅) | neutral(草原孤塔) | mono(黑曜白)
|
|
3
3
|
* 优先级: localStorage dshTheme > prefers-color-scheme(浅→light, 深→default)
|
|
4
4
|
* set() 写入用户显式选择; applyCurrent() 只应用不写, 用于跟随系统变化。 */
|
|
5
5
|
'use strict'
|
|
6
6
|
;(function () {
|
|
7
7
|
const KEY = 'dshTheme'
|
|
8
|
-
const VALID = ['default', 'dark', 'light', 'neutral']
|
|
8
|
+
const VALID = ['default', 'dark', 'light', 'neutral', 'mono']
|
|
9
9
|
const mq = window.matchMedia('(prefers-color-scheme: light)')
|
|
10
10
|
const store = {
|
|
11
11
|
get(k) { try { return localStorage.getItem(k) } catch { return null } },
|
package/public/update.json
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.6.
|
|
2
|
+
"version": "0.6.19",
|
|
3
3
|
"apkUrl": "dsh-remote.apk",
|
|
4
|
-
"sha256": "
|
|
5
|
-
"releasedAt": "2026-08-
|
|
6
|
-
"notes": "0.6.
|
|
4
|
+
"sha256": "d79c732efa12a8f303a89fd9e707fdcd4c0e30a29515b222157ae48a6c07260b",
|
|
5
|
+
"releasedAt": "2026-08-30T04:41:52.453Z",
|
|
6
|
+
"notes": "0.6.19:全面优化手机端、桌面端、管理页和插件页的布局、动效与响应式体验,并支持减少动态效果偏好;重做蓝色、草原、音乐厅等主题的明暗层级和文字图标对比度,新增利落的黑白配色;统一主页图标配色并修正设置齿轮中心孔偏移;目标面板支持收起为始终可见的侧边入口,保留运行状态、可随时恢复,并按会话与目标在本地记忆。",
|
|
7
7
|
"history": [
|
|
8
|
+
{
|
|
9
|
+
"version": "0.6.19",
|
|
10
|
+
"notes": "0.6.19:全面优化手机端、桌面端、管理页和插件页的布局、动效与响应式体验,并支持减少动态效果偏好;重做蓝色、草原、音乐厅等主题的明暗层级和文字图标对比度,新增利落的黑白配色;统一主页图标配色并修正设置齿轮中心孔偏移;目标面板支持收起为始终可见的侧边入口,保留运行状态、可随时恢复,并按会话与目标在本地记忆。"
|
|
11
|
+
},
|
|
8
12
|
{
|
|
9
13
|
"version": "0.6.18",
|
|
10
14
|
"notes": "0.6.18:新增独立 Token 量趋势统计并保留原有费用趋势;服务器连接身份改为地址加令牌,支持同地址不同令牌并兼容旧配置;投票在网关不可达时尝试直连公网收集器托底(需收集器允许 App/Web CORS);修复 Windows 下 gateway-stats 调用 zstd 时弹出终端窗口的问题,并补充回归测试;同步完善相关模块文档。"
|
|
@@ -40,10 +44,6 @@
|
|
|
40
44
|
{
|
|
41
45
|
"version": "0.6.10",
|
|
42
46
|
"notes": "0.6.10 正式版:修复 DSH/网关重启后事件通道不自动恢复、启动阶段网卡读取异常、同源状态误报、双通道总览卡在 3/4、图片后实时回复不可见及子代理重复;新增完整用户链路与重启生命周期测试;公网反馈切换到安全的 HTTPS 临时入口并加强来源 IP 防伪造、节流与隐私保护。"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"version": "0.6.9",
|
|
46
|
-
"notes": "0.6.9 正式版:全面优化网络连接稳定性,重构网关实时链路与连接管理;修复 downlink-only 心跳断联、网关重启风暴和 WebSocket 状态竞态;新增 VPN 友好 Ping/Pong、集中 mux/host collector、短时 WebSocket ticket、CORS 收紧与统计旁路优化。"
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
49
|
}
|
package/public/version.json
CHANGED