dsh-github-flow 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.en.md +220 -143
  2. package/README.md +202 -124
  3. package/docs/UPGRADE-NOTES.md +14 -8
  4. package/docs/architecture.md +111 -129
  5. package/lib/api/routes-actions.js +117 -0
  6. package/lib/api/routes-overview.js +94 -2
  7. package/lib/cache.d.ts +4 -0
  8. package/lib/cache.js +14 -0
  9. package/lib/client.d.ts +13 -1
  10. package/lib/client.js +2906 -2475
  11. package/lib/executor/git-parser.d.ts +25 -0
  12. package/lib/executor/git-parser.js +143 -0
  13. package/lib/executor/platform-guide.d.ts +14 -0
  14. package/lib/executor/platform-guide.js +40 -0
  15. package/lib/executor/process-utils.d.ts +51 -0
  16. package/lib/executor/process-utils.js +162 -0
  17. package/lib/executor/version-utils.d.ts +12 -0
  18. package/lib/executor/version-utils.js +27 -0
  19. package/lib/executor.d.ts +45 -48
  20. package/lib/executor.js +184 -353
  21. package/lib/git-watcher.d.ts +36 -0
  22. package/lib/git-watcher.js +91 -0
  23. package/lib/main.js +10 -0
  24. package/lib/renderers/cache.d.ts +8 -0
  25. package/lib/renderers/cache.js +66 -0
  26. package/lib/renderers/common.d.ts +24 -0
  27. package/lib/renderers/common.js +88 -0
  28. package/lib/renderers/gist.d.ts +15 -0
  29. package/lib/renderers/gist.js +99 -0
  30. package/lib/renderers/issue.d.ts +4 -0
  31. package/lib/renderers/issue.js +70 -0
  32. package/lib/renderers/label.d.ts +4 -0
  33. package/lib/renderers/label.js +48 -0
  34. package/lib/renderers/markdown.d.ts +15 -32
  35. package/lib/renderers/markdown.js +15 -624
  36. package/lib/renderers/pr.d.ts +4 -0
  37. package/lib/renderers/pr.js +107 -0
  38. package/lib/renderers/release.d.ts +4 -0
  39. package/lib/renderers/release.js +74 -0
  40. package/lib/renderers/repo.d.ts +4 -0
  41. package/lib/renderers/repo.js +149 -0
  42. package/lib/renderers/ruleset.d.ts +4 -0
  43. package/lib/renderers/ruleset.js +74 -0
  44. package/lib/renderers/run.d.ts +4 -0
  45. package/lib/renderers/run.js +79 -0
  46. package/lib/renderers/skill.d.ts +4 -0
  47. package/lib/renderers/skill.js +61 -0
  48. package/lib/renderers/status.d.ts +23 -0
  49. package/lib/renderers/status.js +124 -0
  50. package/lib/tools/cache.d.ts +64 -0
  51. package/lib/tools/cache.js +186 -0
  52. package/lib/tools/gist.d.ts +155 -0
  53. package/lib/tools/gist.js +190 -0
  54. package/lib/tools/help.js +107 -6
  55. package/lib/tools/image-utils.d.ts +8 -0
  56. package/lib/tools/image-utils.js +34 -0
  57. package/lib/tools/issue.d.ts +8 -1
  58. package/lib/tools/issue.js +26 -4
  59. package/lib/tools/label.d.ts +80 -0
  60. package/lib/tools/label.js +237 -0
  61. package/lib/tools/pr.d.ts +8 -0
  62. package/lib/tools/pr.js +48 -3
  63. package/lib/tools/ruleset.d.ts +80 -0
  64. package/lib/tools/ruleset.js +177 -0
  65. package/lib/tools/status.d.ts +39 -0
  66. package/lib/tools/status.js +53 -0
  67. package/lib/types.d.ts +39 -0
  68. package/lib/ui/auth-guide-card.d.ts +4 -0
  69. package/lib/ui/auth-guide-card.js +161 -0
  70. package/lib/ui/branch-selector.d.ts +10 -0
  71. package/lib/ui/branch-selector.js +163 -0
  72. package/lib/ui/commit-modal.d.ts +8 -0
  73. package/lib/ui/commit-modal.js +89 -0
  74. package/lib/ui/icons.d.ts +7 -0
  75. package/lib/ui/icons.js +53 -0
  76. package/lib/ui/network-banner.d.ts +10 -0
  77. package/lib/ui/network-banner.js +54 -0
  78. package/lib/ui/storage.d.ts +26 -0
  79. package/lib/ui/storage.js +134 -0
  80. package/lib/ui/styles.d.ts +6 -0
  81. package/lib/ui/styles.js +1285 -0
  82. package/lib/ui/sync-settings-modal.d.ts +11 -0
  83. package/lib/ui/sync-settings-modal.js +350 -0
  84. package/lib/ui/sync-status-badge.d.ts +8 -0
  85. package/lib/ui/sync-status-badge.js +64 -0
  86. package/lib/ui/upgrade-card.d.ts +7 -0
  87. package/lib/ui/upgrade-card.js +197 -0
  88. package/lib/ui/utils.d.ts +10 -0
  89. package/lib/ui/utils.js +66 -0
  90. package/lib/ui/workspace-panel.d.ts +4 -0
  91. package/lib/ui/workspace-panel.js +464 -0
  92. package/lib/version.d.ts +1 -1
  93. package/lib/version.js +1 -1
  94. package/package.json +1 -1
@@ -0,0 +1,1285 @@
1
+ /**
2
+ * DSH GitHub Flow - 主题自适应样式系统 (Light / Dark 动态联动)
3
+ * 遵循 DSH 原生 DSW (DeepSeek Web) 设计语言规范
4
+ */
5
+ export const GITHUB_PANEL_CSS = `
6
+ /* 1. 侧边栏图标与外壳 */
7
+ .dsh-github-icon {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ width: 100%;
12
+ height: 100%;
13
+ cursor: pointer;
14
+ color: var(--dsw-alias-label-secondary, #656d76);
15
+ transition: color 0.15s ease;
16
+ }
17
+ .dsh-github-icon:hover {
18
+ color: var(--dsw-alias-label-primary, #1f2328);
19
+ }
20
+ .dsh-github-icon-inner {
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ width: 28px;
25
+ height: 28px;
26
+ border-radius: 7px;
27
+ background: transparent;
28
+ color: inherit;
29
+ border: 1px solid transparent;
30
+ transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
31
+ }
32
+ .dsh-github-icon-inner.active {
33
+ background: var(--dsw-alias-bg-module-platform, rgba(9, 105, 218, 0.08));
34
+ color: var(--dsw-alias-link, #0969da);
35
+ border-color: var(--dsw-alias-border-l2, rgba(9, 105, 218, 0.2));
36
+ }
37
+
38
+ body[data-ds-dark-theme] .dsh-github-icon {
39
+ color: var(--dsw-alias-label-secondary, #9ca3af);
40
+ }
41
+ body[data-ds-dark-theme] .dsh-github-icon:hover {
42
+ color: var(--dsw-alias-label-primary, #ffffff);
43
+ }
44
+ body[data-ds-dark-theme] .dsh-github-icon-inner.active {
45
+ background: linear-gradient(135deg, rgba(46, 160, 67, 0.3) 0%, rgba(31, 111, 235, 0.45) 100%);
46
+ color: #ffffff;
47
+ box-shadow: 0 0 12px rgba(31, 111, 235, 0.4);
48
+ border-color: rgba(88, 166, 255, 0.45);
49
+ }
50
+
51
+ /* 2. Octocat 科技勋章 Badge */
52
+ .dsh-octocat-badge {
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ background: linear-gradient(135deg, #1f6feb 0%, #0969da 60%, #8957e5 100%);
57
+ box-shadow: 0 2px 6px rgba(9, 105, 218, 0.25);
58
+ flex-shrink: 0;
59
+ }
60
+ body[data-ds-dark-theme] .dsh-octocat-badge {
61
+ background: linear-gradient(135deg, #2ea043 0%, #1f6feb 60%, #8957e5 100%);
62
+ box-shadow: 0 2px 8px rgba(31, 111, 235, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.25);
63
+ }
64
+
65
+ /* 3. 容器视图(主面板与右侧抽屉栏) */
66
+ .dsh-github-panel {
67
+ display: flex;
68
+ flex-direction: column;
69
+ width: 100%;
70
+ height: 100%;
71
+ overflow-y: auto;
72
+ padding: 24px 32px;
73
+ box-sizing: border-box;
74
+ background: var(--dsw-alias-bg-base, #ffffff);
75
+ color: var(--dsw-alias-label-primary, #1f2328);
76
+ font-family: var(--dsw-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
77
+ }
78
+
79
+ .dsh-github-rightbar-container {
80
+ display: flex;
81
+ flex-direction: column;
82
+ width: 100%;
83
+ height: 100%;
84
+ overflow-y: auto;
85
+ padding: 16px 18px;
86
+ box-sizing: border-box;
87
+ background: var(--dsw-alias-bg-base, #ffffff);
88
+ color: var(--dsw-alias-label-primary, #1f2328);
89
+ font-family: var(--dsw-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
90
+ }
91
+
92
+ body[data-ds-dark-theme] .dsh-github-panel,
93
+ body[data-ds-dark-theme] .dsh-github-rightbar-container {
94
+ background: var(--dsw-alias-bg-base, #151517);
95
+ color: var(--dsw-alias-label-primary, #ececec);
96
+ }
97
+
98
+ /* 4. 头部区域 */
99
+ .dsh-github-header {
100
+ display: flex;
101
+ align-items: center;
102
+ justify-content: space-between;
103
+ margin-bottom: 20px;
104
+ padding-bottom: 12px;
105
+ border-bottom: 1px solid var(--dsw-alias-border-l2, #e5e7eb);
106
+ }
107
+ body[data-ds-dark-theme] .dsh-github-header {
108
+ border-bottom-color: var(--dsw-alias-border-l1, #2c2c2e);
109
+ }
110
+ .dsh-github-title {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: 10px;
114
+ }
115
+ .dsh-github-title h2 {
116
+ margin: 0;
117
+ font-size: 18px;
118
+ font-weight: 600;
119
+ color: var(--dsw-alias-label-primary, #1f2328);
120
+ }
121
+ body[data-ds-dark-theme] .dsh-github-title h2 {
122
+ color: var(--dsw-alias-label-primary, #f0f6fc);
123
+ }
124
+
125
+ /* 5. 刷新按钮 */
126
+ .dsh-github-refresh-btn {
127
+ display: inline-flex;
128
+ align-items: center;
129
+ gap: 6px;
130
+ padding: 5px 12px;
131
+ font-size: 12px;
132
+ font-weight: 500;
133
+ border-radius: 6px;
134
+ border: 1px solid var(--dsw-alias-border-l2, #e1e4e8);
135
+ background: var(--dsw-alias-bg-module-platform, #f6f8fa);
136
+ color: var(--dsw-alias-label-primary, #1f2328);
137
+ cursor: pointer;
138
+ transition: all 0.15s ease;
139
+ }
140
+ .dsh-github-refresh-btn:hover:not(:disabled) {
141
+ background: var(--dsw-alias-interactive-bg-hover, #ebeef2);
142
+ border-color: var(--dsw-alias-border-l3, #d0d7de);
143
+ }
144
+ .dsh-github-refresh-btn:disabled {
145
+ opacity: 0.6;
146
+ cursor: not-allowed;
147
+ }
148
+ body[data-ds-dark-theme] .dsh-github-refresh-btn {
149
+ border-color: var(--dsw-alias-border-l1, #38383c);
150
+ background: var(--dsw-alias-bg-layer-2, #242528);
151
+ color: var(--dsw-alias-label-primary, #f0f6fc);
152
+ }
153
+ body[data-ds-dark-theme] .dsh-github-refresh-btn:hover:not(:disabled) {
154
+ background: var(--dsw-alias-interactive-bg-hover, #2f3034);
155
+ border-color: rgba(255, 255, 255, 0.25);
156
+ }
157
+
158
+ /* 6. 概览卡片与网格 */
159
+ .dsh-github-overview-cards {
160
+ display: grid;
161
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
162
+ gap: 14px;
163
+ margin-bottom: 20px;
164
+ }
165
+ .dsh-github-card {
166
+ padding: 14px 16px;
167
+ border-radius: 8px;
168
+ border: 1px solid var(--dsw-alias-border-l2, #e5e7eb);
169
+ background: var(--dsw-alias-bg-layer-1, #fcfcfd);
170
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
171
+ margin-bottom: 12px;
172
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
173
+ }
174
+ body[data-ds-dark-theme] .dsh-github-card {
175
+ border-color: var(--dsw-alias-border-l1, #303034);
176
+ background: var(--dsw-alias-bg-layer-2, #212124);
177
+ box-shadow: none;
178
+ }
179
+ .dsh-github-card-title {
180
+ font-size: 11px;
181
+ text-transform: uppercase;
182
+ letter-spacing: 0.5px;
183
+ color: var(--dsw-alias-label-tertiary, #656d76);
184
+ margin-bottom: 6px;
185
+ font-weight: 500;
186
+ }
187
+ body[data-ds-dark-theme] .dsh-github-card-title {
188
+ color: var(--dsw-alias-label-tertiary, #888);
189
+ }
190
+ .dsh-github-card-value {
191
+ font-size: 15px;
192
+ font-weight: 600;
193
+ display: flex;
194
+ align-items: center;
195
+ flex-wrap: wrap;
196
+ gap: 8px;
197
+ color: var(--dsw-alias-label-primary, #1f2328);
198
+ }
199
+ body[data-ds-dark-theme] .dsh-github-card-value {
200
+ color: var(--dsw-alias-label-primary, #f0f6fc);
201
+ }
202
+ .dsh-github-card-desc {
203
+ font-size: 12px;
204
+ color: var(--dsw-alias-label-secondary, #656d76);
205
+ margin-top: 4px;
206
+ line-height: 1.4;
207
+ }
208
+ body[data-ds-dark-theme] .dsh-github-card-desc {
209
+ color: var(--dsw-alias-label-secondary, #bbb);
210
+ }
211
+ .dsh-github-card-subtext {
212
+ font-size: 11px;
213
+ color: var(--dsw-alias-label-tertiary, #8c959f);
214
+ margin-top: 6px;
215
+ }
216
+ body[data-ds-dark-theme] .dsh-github-card-subtext {
217
+ color: var(--dsw-alias-label-tertiary, #888);
218
+ }
219
+
220
+ /* 7. 徽章(Badges) */
221
+ .dsh-github-badge {
222
+ display: inline-flex;
223
+ align-items: center;
224
+ font-size: 11px;
225
+ padding: 2px 8px;
226
+ border-radius: 12px;
227
+ font-weight: 500;
228
+ line-height: 16px;
229
+ }
230
+ .dsh-badge-green {
231
+ background: rgba(46, 160, 67, 0.12);
232
+ color: #1a7f37;
233
+ border: 1px solid rgba(46, 160, 67, 0.2);
234
+ }
235
+ .dsh-badge-red {
236
+ background: rgba(207, 34, 46, 0.12);
237
+ color: #cf222e;
238
+ border: 1px solid rgba(207, 34, 46, 0.2);
239
+ }
240
+ .dsh-badge-yellow {
241
+ background: rgba(154, 103, 0, 0.12);
242
+ color: #9a6700;
243
+ border: 1px solid rgba(154, 103, 0, 0.2);
244
+ }
245
+ .dsh-badge-blue {
246
+ background: rgba(9, 105, 218, 0.12);
247
+ color: #0969da;
248
+ border: 1px solid rgba(9, 105, 218, 0.2);
249
+ }
250
+ .dsh-badge-purple {
251
+ background: rgba(137, 87, 229, 0.12);
252
+ color: #8250df;
253
+ border: 1px solid rgba(137, 87, 229, 0.2);
254
+ }
255
+ body[data-ds-dark-theme] .dsh-badge-green {
256
+ background: rgba(46, 160, 67, 0.22);
257
+ color: #3fb950;
258
+ border-color: rgba(46, 160, 67, 0.3);
259
+ }
260
+ body[data-ds-dark-theme] .dsh-badge-red {
261
+ background: rgba(248, 81, 73, 0.22);
262
+ color: #f85149;
263
+ border-color: rgba(248, 81, 73, 0.3);
264
+ }
265
+ body[data-ds-dark-theme] .dsh-badge-yellow {
266
+ background: rgba(210, 153, 34, 0.22);
267
+ color: #d29922;
268
+ border-color: rgba(210, 153, 34, 0.3);
269
+ }
270
+ body[data-ds-dark-theme] .dsh-badge-blue {
271
+ background: rgba(56, 139, 253, 0.22);
272
+ color: #58a6ff;
273
+ border-color: rgba(56, 139, 253, 0.3);
274
+ }
275
+ body[data-ds-dark-theme] .dsh-badge-purple {
276
+ background: rgba(163, 113, 247, 0.22);
277
+ color: #bc8cff;
278
+ border-color: rgba(163, 113, 247, 0.3);
279
+ }
280
+
281
+ /* 插件身份徽标:标识界面由第三方插件 dsh-github-flow 提供(非 DSH/GitHub 官方) */
282
+ .dsh-github-plugin-badge {
283
+ display: inline-flex;
284
+ align-items: center;
285
+ font-size: 10px;
286
+ font-weight: 500;
287
+ padding: 1px 7px;
288
+ border-radius: 10px;
289
+ line-height: 14px;
290
+ vertical-align: middle;
291
+ margin-left: 8px;
292
+ text-decoration: none !important;
293
+ background: rgba(125, 133, 144, 0.12);
294
+ color: #656d76;
295
+ border: 1px solid rgba(125, 133, 144, 0.25);
296
+ cursor: pointer;
297
+ transition: all 0.15s ease;
298
+ }
299
+ .dsh-github-plugin-badge:hover {
300
+ background: rgba(125, 133, 144, 0.2);
301
+ color: var(--dsw-alias-label-primary, #1f2328);
302
+ }
303
+ body[data-ds-dark-theme] .dsh-github-plugin-badge {
304
+ background: rgba(139, 148, 158, 0.18);
305
+ color: #8b949e;
306
+ border-color: rgba(139, 148, 158, 0.3);
307
+ }
308
+ body[data-ds-dark-theme] .dsh-github-plugin-badge:hover {
309
+ background: rgba(139, 148, 158, 0.28);
310
+ color: #f0f6fc;
311
+ }
312
+
313
+ /* 7.5. 分类筛选药丸栏 */
314
+ .dsh-github-pills {
315
+ display: flex;
316
+ align-items: center;
317
+ gap: 6px;
318
+ flex-wrap: wrap;
319
+ margin-bottom: 12px;
320
+ }
321
+ .dsh-github-pill-btn {
322
+ display: inline-flex;
323
+ align-items: center;
324
+ gap: 4px;
325
+ padding: 4px 10px;
326
+ border-radius: 14px;
327
+ font-size: 11px;
328
+ font-weight: 500;
329
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
330
+ background: var(--dsw-alias-bg-module-platform, #f6f8fa);
331
+ color: var(--dsw-alias-label-secondary, #656d76);
332
+ cursor: pointer;
333
+ transition: all 0.15s ease;
334
+ }
335
+ .dsh-github-pill-btn:hover {
336
+ color: var(--dsw-alias-label-primary, #1f2328);
337
+ border-color: var(--dsw-alias-border-l3, #b0b8c1);
338
+ }
339
+ .dsh-github-pill-btn.active {
340
+ background: var(--dsw-alias-bg-module-platform, rgba(9, 105, 218, 0.1));
341
+ color: var(--dsw-alias-link, #0969da);
342
+ border-color: var(--dsw-alias-link, #0969da);
343
+ font-weight: 600;
344
+ }
345
+ body[data-ds-dark-theme] .dsh-github-pill-btn {
346
+ background: var(--dsw-alias-bg-layer-2, #21262d);
347
+ color: var(--dsw-alias-label-secondary, #8b949e);
348
+ border-color: var(--dsw-alias-border-l1, #30363d);
349
+ }
350
+ body[data-ds-dark-theme] .dsh-github-pill-btn:hover {
351
+ color: var(--dsw-alias-label-primary, #f0f6fc);
352
+ border-color: #8b949e;
353
+ }
354
+ body[data-ds-dark-theme] .dsh-github-pill-btn.active {
355
+ background: rgba(56, 139, 253, 0.18);
356
+ color: #58a6ff;
357
+ border-color: #58a6ff;
358
+ }
359
+
360
+ /* 8. 快捷操作网格 */
361
+ .dsh-github-quick-actions {
362
+ display: grid;
363
+ grid-template-columns: 1fr 1fr;
364
+ gap: 8px;
365
+ margin-bottom: 16px;
366
+ }
367
+ .dsh-github-action-btn {
368
+ display: flex;
369
+ align-items: center;
370
+ justify-content: center;
371
+ gap: 6px;
372
+ padding: 8px 10px;
373
+ border-radius: 6px;
374
+ border: 1px solid var(--dsw-alias-border-l2, #e1e4e8);
375
+ background: var(--dsw-alias-bg-module-platform, #f6f8fa);
376
+ color: var(--dsw-alias-label-primary, #1f2328);
377
+ font-size: 12px;
378
+ font-weight: 500;
379
+ cursor: pointer;
380
+ transition: all 0.15s ease;
381
+ }
382
+ .dsh-github-action-btn:hover {
383
+ background: var(--dsw-alias-interactive-bg-hover, #ebeef2);
384
+ border-color: var(--dsw-alias-link, #0969da);
385
+ color: var(--dsw-alias-link, #0969da);
386
+ }
387
+ body[data-ds-dark-theme] .dsh-github-action-btn {
388
+ border-color: var(--dsw-alias-border-l1, #444);
389
+ background: var(--dsw-alias-bg-layer-2, #28282b);
390
+ color: var(--dsw-alias-label-primary, #fff);
391
+ }
392
+ body[data-ds-dark-theme] .dsh-github-action-btn:hover {
393
+ background: var(--dsw-alias-interactive-bg-hover, #343438);
394
+ border-color: #58a6ff;
395
+ color: #58a6ff;
396
+ }
397
+
398
+ /* 组合式快捷操作按钮 (AI 智能装填主操作 + 官方外链直达) */
399
+ .dsh-github-split-btn {
400
+ display: flex;
401
+ align-items: stretch;
402
+ border-radius: 6px;
403
+ border: 1px solid var(--dsw-alias-border-l2, #e1e4e8);
404
+ background: var(--dsw-alias-bg-module-platform, #f6f8fa);
405
+ overflow: hidden;
406
+ transition: all 0.15s ease;
407
+ }
408
+ .dsh-github-split-btn:hover {
409
+ border-color: var(--dsw-alias-link, #0969da);
410
+ }
411
+ body[data-ds-dark-theme] .dsh-github-split-btn {
412
+ border-color: var(--dsw-alias-border-l1, #444);
413
+ background: var(--dsw-alias-bg-layer-2, #28282b);
414
+ }
415
+ body[data-ds-dark-theme] .dsh-github-split-btn:hover {
416
+ border-color: #58a6ff;
417
+ }
418
+ .dsh-github-split-main {
419
+ flex: 1;
420
+ display: flex;
421
+ align-items: center;
422
+ justify-content: center;
423
+ gap: 5px;
424
+ padding: 8px 8px;
425
+ border: 0;
426
+ background: transparent;
427
+ color: var(--dsw-alias-label-primary, #1f2328);
428
+ font-size: 12px;
429
+ font-weight: 500;
430
+ cursor: pointer;
431
+ transition: all 0.15s ease;
432
+ white-space: nowrap;
433
+ }
434
+ .dsh-github-split-main:hover {
435
+ background: var(--dsw-alias-interactive-bg-hover, #ebeef2);
436
+ color: var(--dsw-alias-link, #0969da);
437
+ }
438
+ body[data-ds-dark-theme] .dsh-github-split-main {
439
+ color: var(--dsw-alias-label-primary, #fff);
440
+ }
441
+ body[data-ds-dark-theme] .dsh-github-split-main:hover {
442
+ background: var(--dsw-alias-interactive-bg-hover, #343438);
443
+ color: #58a6ff;
444
+ }
445
+ .dsh-github-split-link {
446
+ display: flex;
447
+ align-items: center;
448
+ justify-content: center;
449
+ padding: 0 8px;
450
+ border-left: 1px solid var(--dsw-alias-border-l2, #e1e4e8);
451
+ background: transparent;
452
+ color: var(--dsw-alias-label-tertiary, #656d76);
453
+ font-size: 12px;
454
+ font-weight: bold;
455
+ text-decoration: none !important;
456
+ cursor: pointer;
457
+ transition: all 0.15s ease;
458
+ }
459
+ .dsh-github-split-link:hover {
460
+ background: var(--dsw-alias-interactive-bg-hover, #ebeef2);
461
+ color: var(--dsw-alias-link, #0969da);
462
+ }
463
+ body[data-ds-dark-theme] .dsh-github-split-link {
464
+ border-left-color: var(--dsw-alias-border-l1, #444);
465
+ color: var(--dsw-alias-label-secondary, #9ca3af);
466
+ }
467
+ body[data-ds-dark-theme] .dsh-github-split-link:hover {
468
+ background: var(--dsw-alias-interactive-bg-hover, #343438);
469
+ color: #58a6ff;
470
+ }
471
+
472
+ /* 9. 模块分区与列表 */
473
+ .dsh-github-section {
474
+ margin-bottom: 20px;
475
+ }
476
+ .dsh-github-section-header {
477
+ display: flex;
478
+ align-items: center;
479
+ justify-content: space-between;
480
+ margin-bottom: 8px;
481
+ }
482
+ .dsh-github-section-header h3 {
483
+ margin: 0;
484
+ font-size: 13px;
485
+ font-weight: 600;
486
+ color: var(--dsw-alias-label-secondary, #656d76);
487
+ }
488
+ body[data-ds-dark-theme] .dsh-github-section-header h3 {
489
+ color: var(--dsw-alias-label-secondary, #ccc);
490
+ }
491
+ .dsh-github-list {
492
+ display: flex;
493
+ flex-direction: column;
494
+ gap: 8px;
495
+ }
496
+ .dsh-github-item {
497
+ display: flex;
498
+ flex-direction: column;
499
+ gap: 4px;
500
+ padding: 10px 14px;
501
+ border-radius: 6px;
502
+ border: 1px solid var(--dsw-alias-border-l2, #e5e7eb);
503
+ background: var(--dsw-alias-bg-layer-1, #fcfcfd);
504
+ transition: border-color 0.15s ease, background 0.15s ease;
505
+ }
506
+ .dsh-github-item:hover {
507
+ border-color: var(--dsw-alias-border-l3, #d0d7de);
508
+ background: var(--dsw-alias-interactive-bg-hover, #f6f8fa);
509
+ }
510
+ body[data-ds-dark-theme] .dsh-github-item {
511
+ border-color: var(--dsw-alias-border-l1, #333336);
512
+ background: var(--dsw-alias-bg-layer-2, #252528);
513
+ }
514
+ body[data-ds-dark-theme] .dsh-github-item:hover {
515
+ border-color: var(--dsw-alias-border-l2, #555);
516
+ background: var(--dsw-alias-interactive-bg-hover, #2c2c30);
517
+ }
518
+ .dsh-github-item-title {
519
+ font-size: 13px;
520
+ font-weight: 500;
521
+ color: var(--dsw-alias-label-primary, #1f2328);
522
+ text-decoration: none;
523
+ transition: color 0.15s ease;
524
+ }
525
+ .dsh-github-item-title:hover {
526
+ color: var(--dsw-alias-link, #0969da);
527
+ text-decoration: underline;
528
+ }
529
+ body[data-ds-dark-theme] .dsh-github-item-title {
530
+ color: var(--dsw-alias-label-primary, #f0f6fc);
531
+ }
532
+ body[data-ds-dark-theme] .dsh-github-item-title:hover {
533
+ color: #58a6ff;
534
+ }
535
+ .dsh-github-item-desc {
536
+ font-size: 12px;
537
+ color: var(--dsw-alias-label-secondary, #656d76);
538
+ line-height: 1.4;
539
+ }
540
+ body[data-ds-dark-theme] .dsh-github-item-desc {
541
+ color: var(--dsw-alias-label-secondary, #bbb);
542
+ }
543
+ .dsh-github-item-meta {
544
+ font-size: 11px;
545
+ color: var(--dsw-alias-label-tertiary, #656d76);
546
+ display: flex;
547
+ align-items: center;
548
+ flex-wrap: wrap;
549
+ gap: 8px;
550
+ }
551
+ body[data-ds-dark-theme] .dsh-github-item-meta {
552
+ color: var(--dsw-alias-label-secondary, #8c8c8c);
553
+ }
554
+
555
+ /* 10. 小按钮样式(在 GitHub 打开等) */
556
+ .dsh-github-btn-sm {
557
+ display: inline-flex;
558
+ align-items: center;
559
+ justify-content: center;
560
+ font-size: 12px;
561
+ font-weight: 500;
562
+ padding: 4px 10px;
563
+ border-radius: 6px;
564
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
565
+ background: var(--dsw-alias-bg-module-platform, #f6f8fa);
566
+ color: var(--dsw-alias-label-primary, #1f2328);
567
+ cursor: pointer;
568
+ text-decoration: none !important;
569
+ transition: all 0.15s ease;
570
+ }
571
+ .dsh-github-btn-sm:hover {
572
+ background: var(--dsw-alias-interactive-bg-hover, #ebeef2);
573
+ border-color: var(--dsw-alias-border-l3, #b0b8c1);
574
+ color: var(--dsw-alias-link, #0969da);
575
+ }
576
+ body[data-ds-dark-theme] .dsh-github-btn-sm {
577
+ border-color: var(--dsw-alias-border-l1, #444);
578
+ background: var(--dsw-alias-bg-layer-2, #26272b);
579
+ color: var(--dsw-alias-label-primary, #f0f6fc);
580
+ }
581
+ body[data-ds-dark-theme] .dsh-github-btn-sm:hover {
582
+ background: var(--dsw-alias-interactive-bg-hover, #33343a);
583
+ border-color: rgba(255, 255, 255, 0.25);
584
+ color: #58a6ff;
585
+ }
586
+
587
+ /* 11. 空状态 */
588
+ .dsh-github-empty {
589
+ padding: 24px;
590
+ text-align: center;
591
+ font-size: 12px;
592
+ color: var(--dsw-alias-label-tertiary, #656d76);
593
+ border: 1px dashed var(--dsw-alias-border-l2, #d0d7de);
594
+ border-radius: 8px;
595
+ background: rgba(0, 0, 0, 0.01);
596
+ }
597
+ body[data-ds-dark-theme] .dsh-github-empty {
598
+ color: var(--dsw-alias-label-tertiary, #888);
599
+ border-color: var(--dsw-alias-border-l1, #38383c);
600
+ background: rgba(255, 255, 255, 0.01);
601
+ }
602
+
603
+ /* 12. Tabs 导航栏 */
604
+ .dsh-github-tabs {
605
+ display: flex;
606
+ gap: 8px;
607
+ margin-bottom: 18px;
608
+ border-bottom: 1px solid var(--dsw-alias-border-l2, #e5e7eb);
609
+ padding-bottom: 8px;
610
+ }
611
+ body[data-ds-dark-theme] .dsh-github-tabs {
612
+ border-bottom-color: var(--dsw-alias-border-l1, #303034);
613
+ }
614
+ .dsh-github-tab-btn {
615
+ padding: 6px 14px;
616
+ border-radius: 6px;
617
+ font-size: 13px;
618
+ font-weight: 500;
619
+ border: 0;
620
+ background: transparent;
621
+ color: var(--dsw-alias-label-secondary, #656d76);
622
+ cursor: pointer;
623
+ transition: all 0.15s ease;
624
+ }
625
+ .dsh-github-tab-btn:hover {
626
+ color: var(--dsw-alias-label-primary, #1f2328);
627
+ background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.05));
628
+ }
629
+ .dsh-github-tab-btn.active {
630
+ color: var(--dsw-alias-link, #0969da);
631
+ background: rgba(9, 105, 218, 0.1);
632
+ font-weight: 600;
633
+ }
634
+ body[data-ds-dark-theme] .dsh-github-tab-btn {
635
+ color: var(--dsw-alias-label-secondary, #8c8c8c);
636
+ }
637
+ body[data-ds-dark-theme] .dsh-github-tab-btn:hover {
638
+ color: var(--dsw-alias-label-primary, #fff);
639
+ background: var(--dsw-alias-interactive-bg-hover, rgba(255, 255, 255, 0.06));
640
+ }
641
+ body[data-ds-dark-theme] .dsh-github-tab-btn.active {
642
+ color: #58a6ff;
643
+ background: rgba(88, 166, 255, 0.15);
644
+ }
645
+
646
+ /* 13. 搜索输入框 */
647
+ .dsh-github-search-input {
648
+ width: 100%;
649
+ max-width: 320px;
650
+ padding: 6px 12px;
651
+ font-size: 12px;
652
+ border-radius: 6px;
653
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
654
+ background: var(--dsw-alias-bg-base, #ffffff);
655
+ color: var(--dsw-alias-label-primary, #1f2328);
656
+ outline: none;
657
+ margin-bottom: 14px;
658
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
659
+ }
660
+ .dsh-github-search-input:focus {
661
+ border-color: var(--dsw-alias-link, #0969da);
662
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.15);
663
+ }
664
+ body[data-ds-dark-theme] .dsh-github-search-input {
665
+ border-color: var(--dsw-alias-border-l1, #444);
666
+ background: var(--dsw-alias-bg-layer-2, #212124);
667
+ color: var(--dsw-alias-label-primary, #f0f6fc);
668
+ }
669
+ body[data-ds-dark-theme] .dsh-github-search-input:focus {
670
+ border-color: #58a6ff;
671
+ box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.2);
672
+ }
673
+
674
+ /* 14. 工作区矩阵条目专属类 */
675
+ .dsh-github-workspace-card {
676
+ display: flex;
677
+ align-items: center;
678
+ justify-content: space-between;
679
+ margin-bottom: 8px;
680
+ }
681
+ .dsh-github-ws-title {
682
+ font-size: 14px;
683
+ font-weight: 600;
684
+ color: var(--dsw-alias-label-primary, #1f2328);
685
+ }
686
+ body[data-ds-dark-theme] .dsh-github-ws-title {
687
+ color: var(--dsw-alias-label-primary, #f0f6fc);
688
+ }
689
+ .dsh-github-ws-path {
690
+ font-size: 12px;
691
+ color: var(--dsw-alias-label-tertiary, #656d76);
692
+ font-family: var(--ds-font-family-code, monospace);
693
+ }
694
+ body[data-ds-dark-theme] .dsh-github-ws-path {
695
+ color: var(--dsw-alias-label-tertiary, #888);
696
+ }
697
+ .dsh-github-ws-repo-link {
698
+ color: var(--dsw-alias-link, #0969da);
699
+ display: inline-flex;
700
+ align-items: center;
701
+ gap: 5px;
702
+ font-weight: 500;
703
+ }
704
+ body[data-ds-dark-theme] .dsh-github-ws-repo-link {
705
+ color: #58a6ff;
706
+ }
707
+ .dsh-github-repo-link {
708
+ color: var(--dsw-alias-link, #0969da);
709
+ text-decoration: none;
710
+ font-weight: 600;
711
+ }
712
+ .dsh-github-repo-link:hover {
713
+ text-decoration: underline;
714
+ }
715
+ body[data-ds-dark-theme] .dsh-github-repo-link {
716
+ color: #58a6ff;
717
+ }
718
+ .dsh-github-subheading {
719
+ font-size: 14px;
720
+ font-weight: 600;
721
+ margin: 0 0 10px 0;
722
+ color: var(--dsw-alias-label-primary, #1f2328);
723
+ }
724
+ body[data-ds-dark-theme] .dsh-github-subheading {
725
+ color: var(--dsw-alias-label-primary, #f0f6fc);
726
+ }
727
+
728
+ /* 15. 就绪引导横幅 (Setup Guide Banner) */
729
+ .dsh-github-guide-card {
730
+ padding: 16px;
731
+ border-radius: 8px;
732
+ margin-bottom: 16px;
733
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
734
+ background: var(--dsw-alias-bg-layer-1, #f6f8fa);
735
+ }
736
+ .dsh-github-guide-card.warning {
737
+ border-color: rgba(210, 153, 34, 0.4);
738
+ background: rgba(210, 153, 34, 0.08);
739
+ }
740
+ .dsh-github-guide-card.danger {
741
+ border-color: rgba(248, 81, 73, 0.4);
742
+ background: rgba(248, 81, 73, 0.08);
743
+ }
744
+ .dsh-github-guide-header {
745
+ display: flex;
746
+ align-items: center;
747
+ gap: 8px;
748
+ font-size: 15px;
749
+ font-weight: 600;
750
+ margin-bottom: 6px;
751
+ color: var(--dsw-alias-label-primary, #1f2328);
752
+ }
753
+ body[data-ds-dark-theme] .dsh-github-guide-header {
754
+ color: var(--dsw-alias-label-primary, #f0f6fc);
755
+ }
756
+ .dsh-github-guide-desc {
757
+ font-size: 13px;
758
+ color: var(--dsw-alias-label-secondary, #656d76);
759
+ line-height: 1.5;
760
+ margin-bottom: 12px;
761
+ }
762
+ body[data-ds-dark-theme] .dsh-github-guide-desc {
763
+ color: var(--dsw-alias-label-secondary, #8c8c8c);
764
+ }
765
+ .dsh-github-cmd-box {
766
+ display: flex;
767
+ align-items: center;
768
+ justify-content: space-between;
769
+ background: var(--dsw-alias-bg-base, #ffffff);
770
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
771
+ border-radius: 6px;
772
+ padding: 8px 12px;
773
+ font-family: var(--ds-font-family-code, monospace);
774
+ font-size: 13px;
775
+ color: var(--dsw-alias-label-primary, #1f2328);
776
+ margin-bottom: 12px;
777
+ }
778
+ body[data-ds-dark-theme] .dsh-github-cmd-box {
779
+ background: var(--dsw-alias-bg-layer-2, #161b22);
780
+ border-color: var(--dsw-alias-border-l1, #30363d);
781
+ color: var(--dsw-alias-label-primary, #f0f6fc);
782
+ }
783
+ .dsh-github-copy-btn {
784
+ padding: 4px 10px;
785
+ font-size: 12px;
786
+ border-radius: 4px;
787
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
788
+ background: var(--dsw-alias-bg-layer-1, #f6f8fa);
789
+ color: var(--dsw-alias-label-primary, #1f2328);
790
+ cursor: pointer;
791
+ white-space: nowrap;
792
+ transition: all 0.15s ease;
793
+ }
794
+ body[data-ds-dark-theme] .dsh-github-copy-btn {
795
+ background: var(--dsw-alias-bg-layer-2, #21262d);
796
+ border-color: var(--dsw-alias-border-l1, #30363d);
797
+ color: var(--dsw-alias-label-primary, #c9d1d9);
798
+ }
799
+ .dsh-github-copy-btn:hover {
800
+ background: var(--dsw-alias-interactive-bg-hover, #ebeef1);
801
+ }
802
+ body[data-ds-dark-theme] .dsh-github-copy-btn:hover {
803
+ background: #30363d;
804
+ }
805
+ .dsh-github-copy-btn.copied {
806
+ color: #2da44e !important;
807
+ border-color: #2da44e !important;
808
+ background: rgba(45, 164, 78, 0.15) !important;
809
+ }
810
+ .dsh-github-steps-list {
811
+ font-size: 12px;
812
+ color: var(--dsw-alias-label-secondary, #656d76);
813
+ line-height: 1.6;
814
+ margin: 0 0 12px 18px;
815
+ padding: 0;
816
+ }
817
+ body[data-ds-dark-theme] .dsh-github-steps-list {
818
+ color: var(--dsw-alias-label-secondary, #8c8c8c);
819
+ }
820
+ .dsh-github-guide-actions {
821
+ display: flex;
822
+ gap: 8px;
823
+ flex-wrap: wrap;
824
+ }
825
+ .dsh-github-guide-tip {
826
+ font-size: 11px;
827
+ color: var(--dsw-alias-label-tertiary, #8c8c8c);
828
+ margin-top: 10px;
829
+ line-height: 1.4;
830
+ }
831
+
832
+ /* 16. 设置弹窗 (Settings Modal):左侧分区导航 + 右侧内容区 */
833
+ .dsh-github-modal-overlay {
834
+ position: fixed;
835
+ top: 0;
836
+ left: 0;
837
+ right: 0;
838
+ bottom: 0;
839
+ background: rgba(0, 0, 0, 0.45);
840
+ display: flex;
841
+ align-items: center;
842
+ justify-content: center;
843
+ z-index: 99999;
844
+ backdrop-filter: blur(2px);
845
+ }
846
+ .dsh-github-modal-dialog {
847
+ width: 92%;
848
+ max-width: 640px;
849
+ max-height: 86vh;
850
+ display: flex;
851
+ flex-direction: column;
852
+ background: var(--dsw-alias-bg-base, #ffffff);
853
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
854
+ border-radius: 12px;
855
+ box-shadow: 0 16px 32px rgba(0, 0, 0, 0.18);
856
+ padding: 0;
857
+ box-sizing: border-box;
858
+ overflow: hidden;
859
+ color: var(--dsw-alias-label-primary, #1f2328);
860
+ font-family: var(--dsw-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
861
+ }
862
+ body[data-ds-dark-theme] .dsh-github-modal-dialog {
863
+ background: var(--dsw-alias-bg-layer-2, #1e1e22);
864
+ border-color: var(--dsw-alias-border-l1, #30363d);
865
+ box-shadow: 0 16px 36px rgba(0, 0, 0, 0.45);
866
+ }
867
+ .dsh-github-modal-header {
868
+ display: flex;
869
+ justify-content: space-between;
870
+ align-items: center;
871
+ padding: 18px 22px 14px;
872
+ border-bottom: 1px solid var(--dsw-alias-border-l2, #d0d7de);
873
+ flex-shrink: 0;
874
+ }
875
+ body[data-ds-dark-theme] .dsh-github-modal-header {
876
+ border-bottom-color: var(--dsw-alias-border-l1, #30363d);
877
+ }
878
+ .dsh-github-modal-body {
879
+ display: flex;
880
+ min-height: 0;
881
+ flex: 1;
882
+ }
883
+ .dsh-github-settings-nav {
884
+ flex-shrink: 0;
885
+ width: 148px;
886
+ padding: 14px 10px;
887
+ border-right: 1px solid var(--dsw-alias-border-l2, #d0d7de);
888
+ display: flex;
889
+ flex-direction: column;
890
+ gap: 4px;
891
+ box-sizing: border-box;
892
+ }
893
+ body[data-ds-dark-theme] .dsh-github-settings-nav {
894
+ border-right-color: var(--dsw-alias-border-l1, #30363d);
895
+ }
896
+ .dsh-github-settings-nav-item {
897
+ display: flex;
898
+ align-items: center;
899
+ gap: 8px;
900
+ padding: 8px 10px;
901
+ border-radius: 6px;
902
+ border: none;
903
+ background: none;
904
+ cursor: pointer;
905
+ font-size: 13px;
906
+ text-align: left;
907
+ color: var(--dsw-alias-label-secondary, #656d76);
908
+ transition: background 0.12s ease, color 0.12s ease;
909
+ }
910
+ .dsh-github-settings-nav-item:hover {
911
+ background: var(--dsw-alias-bg-layer-1, #f6f8fa);
912
+ color: var(--dsw-alias-label-primary, #1f2328);
913
+ }
914
+ .dsh-github-settings-nav-item.active {
915
+ background: rgba(9, 105, 218, 0.1);
916
+ color: var(--dsw-alias-link, #0969da);
917
+ font-weight: 600;
918
+ }
919
+ body[data-ds-dark-theme] .dsh-github-settings-nav-item:hover {
920
+ background: rgba(240, 246, 252, 0.06);
921
+ color: var(--dsw-alias-label-primary, #f0f6fc);
922
+ }
923
+ body[data-ds-dark-theme] .dsh-github-settings-nav-item.active {
924
+ background: rgba(88, 166, 255, 0.15);
925
+ color: #58a6ff;
926
+ }
927
+ .dsh-github-settings-content {
928
+ flex: 1;
929
+ min-width: 0;
930
+ padding: 18px 22px 20px;
931
+ overflow-y: auto;
932
+ box-sizing: border-box;
933
+ }
934
+ @media (max-width: 560px) {
935
+ .dsh-github-modal-body {
936
+ flex-direction: column;
937
+ }
938
+ .dsh-github-settings-nav {
939
+ width: 100%;
940
+ flex-direction: row;
941
+ border-right: none;
942
+ border-bottom: 1px solid var(--dsw-alias-border-l2, #d0d7e0);
943
+ overflow-x: auto;
944
+ }
945
+ body[data-ds-dark-theme] .dsh-github-settings-nav {
946
+ border-bottom-color: var(--dsw-alias-border-l1, #30363d);
947
+ }
948
+ .dsh-github-settings-nav-item {
949
+ white-space: nowrap;
950
+ }
951
+ }
952
+ .dsh-github-modal-footer {
953
+ display: flex;
954
+ justify-content: flex-end;
955
+ gap: 8px;
956
+ padding: 14px 22px;
957
+ border-top: 1px solid var(--dsw-alias-border-l2, #d0d7de);
958
+ flex-shrink: 0;
959
+ }
960
+ body[data-ds-dark-theme] .dsh-github-modal-footer {
961
+ border-top-color: var(--dsw-alias-border-l1, #30363d);
962
+ }
963
+ .dsh-github-radio-card {
964
+ display: flex;
965
+ align-items: flex-start;
966
+ gap: 10px;
967
+ padding: 10px 12px;
968
+ border-radius: 8px;
969
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
970
+ margin-bottom: 8px;
971
+ cursor: pointer;
972
+ transition: all 0.15s ease;
973
+ background: var(--dsw-alias-bg-layer-1, #f6f8fa);
974
+ }
975
+ .dsh-github-radio-card:hover {
976
+ border-color: var(--dsw-alias-link, #0969da);
977
+ }
978
+ .dsh-github-radio-card.active {
979
+ border-color: var(--dsw-alias-link, #0969da);
980
+ background: rgba(9, 105, 218, 0.08);
981
+ }
982
+ body[data-ds-dark-theme] .dsh-github-radio-card {
983
+ background: var(--dsw-alias-bg-base, #161b22);
984
+ border-color: var(--dsw-alias-border-l1, #30363d);
985
+ }
986
+ body[data-ds-dark-theme] .dsh-github-radio-card.active {
987
+ border-color: #58a6ff;
988
+ background: rgba(88, 166, 255, 0.12);
989
+ }
990
+
991
+ .dsh-github-select {
992
+ width: 100%;
993
+ padding: 8px 12px;
994
+ border-radius: 6px;
995
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
996
+ background: var(--dsw-alias-bg-base, #ffffff);
997
+ color: var(--dsw-alias-label-primary, #1f2328);
998
+ font-size: 13px;
999
+ outline: none;
1000
+ cursor: pointer;
1001
+ box-sizing: border-box;
1002
+ color-scheme: light;
1003
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
1004
+ }
1005
+ .dsh-github-select:focus {
1006
+ border-color: var(--dsw-alias-link, #0969da);
1007
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.15);
1008
+ }
1009
+ .dsh-github-select option {
1010
+ background-color: #ffffff;
1011
+ color: #1f2328;
1012
+ padding: 6px 10px;
1013
+ }
1014
+ body[data-ds-dark-theme] .dsh-github-select {
1015
+ border-color: var(--dsw-alias-border-l1, #30363d);
1016
+ background: var(--dsw-alias-bg-layer-2, #1e1e22);
1017
+ color: var(--dsw-alias-label-primary, #f0f6fc);
1018
+ color-scheme: dark;
1019
+ }
1020
+ body[data-ds-dark-theme] .dsh-github-select:focus {
1021
+ border-color: #58a6ff;
1022
+ box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.2);
1023
+ }
1024
+ body[data-ds-dark-theme] .dsh-github-select option {
1025
+ background-color: #1e1e22;
1026
+ color: #f0f6fc;
1027
+ }
1028
+
1029
+ .dsh-github-input {
1030
+ padding: 7px 12px;
1031
+ border-radius: 6px;
1032
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
1033
+ background: var(--dsw-alias-bg-base, #ffffff);
1034
+ color: var(--dsw-alias-label-primary, #1f2328);
1035
+ font-size: 13px;
1036
+ outline: none;
1037
+ box-sizing: border-box;
1038
+ color-scheme: light;
1039
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
1040
+ }
1041
+ .dsh-github-input:focus {
1042
+ border-color: var(--dsw-alias-link, #0969da);
1043
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.15);
1044
+ }
1045
+ .dsh-github-input::placeholder {
1046
+ color: var(--dsw-alias-label-tertiary, #8c959f);
1047
+ }
1048
+ body[data-ds-dark-theme] .dsh-github-input {
1049
+ border-color: var(--dsw-alias-border-l1, #30363d);
1050
+ background: var(--dsw-alias-bg-layer-2, #1e1e22);
1051
+ color: var(--dsw-alias-label-primary, #f0f6fc);
1052
+ color-scheme: dark;
1053
+ }
1054
+ body[data-ds-dark-theme] .dsh-github-input:focus {
1055
+ border-color: #58a6ff;
1056
+ box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.2);
1057
+ }
1058
+
1059
+ .dsh-github-cache-info-box {
1060
+ padding: 10px 12px;
1061
+ border-radius: 6px;
1062
+ background: var(--dsw-alias-bg-layer-1, #f6f8fa);
1063
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
1064
+ margin-bottom: 20px;
1065
+ font-size: 12px;
1066
+ color: var(--dsw-alias-label-secondary, #656d76);
1067
+ transition: all 0.15s ease;
1068
+ }
1069
+ body[data-ds-dark-theme] .dsh-github-cache-info-box {
1070
+ background: var(--dsw-alias-bg-base, #161b22);
1071
+ border-color: var(--dsw-alias-border-l1, #30363d);
1072
+ color: var(--dsw-alias-label-secondary, #8c8c8c);
1073
+ }
1074
+
1075
+ .dsh-github-about-star-box {
1076
+ padding: 12px 14px;
1077
+ border-radius: 8px;
1078
+ background: var(--dsw-alias-bg-layer-1, #f6f8fa);
1079
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
1080
+ }
1081
+ body[data-ds-dark-theme] .dsh-github-about-star-box {
1082
+ background: var(--dsw-alias-bg-base, #161b22);
1083
+ border-color: var(--dsw-alias-border-l1, #30363d);
1084
+ }
1085
+
1086
+ .dsh-github-primary-btn {
1087
+ padding: 5px 14px;
1088
+ font-weight: 600;
1089
+ white-space: nowrap;
1090
+ background: var(--dsw-alias-link, #0969da);
1091
+ border-color: var(--dsw-alias-link, #0969da);
1092
+ color: #ffffff;
1093
+ }
1094
+ .dsh-github-primary-btn:hover {
1095
+ background: var(--dsw-alias-link, #0969da);
1096
+ border-color: var(--dsw-alias-link, #0969da);
1097
+ color: #ffffff;
1098
+ opacity: 0.88;
1099
+ }
1100
+ body[data-ds-dark-theme] .dsh-github-primary-btn {
1101
+ background: #58a6ff;
1102
+ border-color: #58a6ff;
1103
+ color: #0d1117;
1104
+ }
1105
+ body[data-ds-dark-theme] .dsh-github-primary-btn:hover {
1106
+ background: #58a6ff;
1107
+ border-color: #58a6ff;
1108
+ color: #0d1117;
1109
+ opacity: 0.88;
1110
+ }
1111
+
1112
+ .dsh-github-radio {
1113
+ accent-color: var(--dsw-alias-link, #0969da);
1114
+ cursor: pointer;
1115
+ margin-top: 3px;
1116
+ }
1117
+ body[data-ds-dark-theme] .dsh-github-radio {
1118
+ accent-color: #58a6ff;
1119
+ }
1120
+
1121
+ #dsh-github-commit-dialog {
1122
+ max-width: 600px;
1123
+ width: calc(100vw - 48px);
1124
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
1125
+ border-radius: 12px;
1126
+ padding: 0;
1127
+ box-sizing: border-box;
1128
+ background: var(--dsw-alias-bg-base, #ffffff);
1129
+ color: var(--dsw-alias-label-primary, #1f2328);
1130
+ box-shadow: 0 16px 36px rgba(0, 0, 0, 0.22);
1131
+ font-family: var(--dsw-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
1132
+ }
1133
+ #dsh-github-commit-dialog::backdrop {
1134
+ background: rgba(0, 0, 0, 0.45);
1135
+ backdrop-filter: blur(2px);
1136
+ }
1137
+ body[data-ds-dark-theme] #dsh-github-commit-dialog {
1138
+ background: var(--dsw-alias-bg-layer-2, #1e1e22);
1139
+ border-color: var(--dsw-alias-border-l1, #30363d);
1140
+ color: var(--dsw-alias-label-primary, #ececec);
1141
+ box-shadow: 0 16px 36px rgba(0, 0, 0, 0.5);
1142
+ }
1143
+ .dsh-github-commit-row {
1144
+ transition: background 0.15s ease;
1145
+ }
1146
+ .dsh-github-commit-row:hover {
1147
+ background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.05));
1148
+ }
1149
+ body[data-ds-dark-theme] .dsh-github-commit-row:hover {
1150
+ background: var(--dsw-alias-interactive-bg-hover, rgba(255, 255, 255, 0.08));
1151
+ }
1152
+ body[data-ds-dark-theme] .dsh-github-commit-pre {
1153
+ background: var(--dsw-alias-bg-base, #151517) !important;
1154
+ color: #ececec !important;
1155
+ border: 1px solid #30363d !important;
1156
+ }
1157
+ .dsh-github-dialog-close-btn:hover {
1158
+ background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.08)) !important;
1159
+ opacity: 1 !important;
1160
+ }
1161
+
1162
+ .dsh-github-branch-btn {
1163
+ display: inline-flex;
1164
+ align-items: center;
1165
+ gap: 4px;
1166
+ padding: 2px 8px;
1167
+ font-size: 11px;
1168
+ font-weight: 500;
1169
+ border-radius: 12px;
1170
+ border: 1px solid rgba(46, 160, 67, 0.4);
1171
+ background: rgba(46, 160, 67, 0.12);
1172
+ color: var(--dsw-alias-state-success, #2ea043);
1173
+ cursor: pointer;
1174
+ transition: all 0.15s ease;
1175
+ user-select: none;
1176
+ }
1177
+ .dsh-github-branch-btn:hover {
1178
+ background: rgba(46, 160, 67, 0.22);
1179
+ border-color: rgba(46, 160, 67, 0.6);
1180
+ }
1181
+ body[data-ds-dark-theme] .dsh-github-branch-btn {
1182
+ border-color: rgba(56, 139, 253, 0.4);
1183
+ background: rgba(56, 139, 253, 0.15);
1184
+ color: #58a6ff;
1185
+ }
1186
+ body[data-ds-dark-theme] .dsh-github-branch-btn:hover {
1187
+ background: rgba(56, 139, 253, 0.25);
1188
+ border-color: #58a6ff;
1189
+ }
1190
+
1191
+ .dsh-github-branch-dropdown {
1192
+ position: absolute;
1193
+ top: 100%;
1194
+ left: 0;
1195
+ margin-top: 5px;
1196
+ width: 290px;
1197
+ max-height: 380px;
1198
+ background: var(--dsw-alias-bg-base, #ffffff);
1199
+ border: 1px solid var(--dsw-alias-border-l2, #e1e4e8);
1200
+ border-radius: 8px;
1201
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.16);
1202
+ z-index: 1000;
1203
+ display: flex;
1204
+ flex-direction: column;
1205
+ overflow: hidden;
1206
+ }
1207
+ body[data-ds-dark-theme] .dsh-github-branch-dropdown {
1208
+ background: var(--dsw-alias-bg-layer-2, #1e1e22);
1209
+ border-color: var(--dsw-alias-border-l1, #30363d);
1210
+ box-shadow: 0 8px 28px rgba(0, 0, 0, 0.5);
1211
+ }
1212
+
1213
+ .dsh-github-branch-search {
1214
+ padding: 8px 10px;
1215
+ border-bottom: 1px solid var(--dsw-alias-border-l2, #e1e4e8);
1216
+ }
1217
+ body[data-ds-dark-theme] .dsh-github-branch-search {
1218
+ border-bottom-color: var(--dsw-alias-border-l1, #30363d);
1219
+ }
1220
+ .dsh-github-branch-input {
1221
+ width: 100%;
1222
+ padding: 5px 8px;
1223
+ box-sizing: border-box;
1224
+ font-size: 11px;
1225
+ border-radius: 5px;
1226
+ border: 1px solid var(--dsw-alias-border-l2, #d0d7de);
1227
+ background: var(--dsw-alias-bg-base, #ffffff);
1228
+ color: var(--dsw-alias-label-primary, #1f2328);
1229
+ outline: none;
1230
+ }
1231
+ body[data-ds-dark-theme] .dsh-github-branch-input {
1232
+ border-color: var(--dsw-alias-border-l1, #30363d);
1233
+ background: var(--dsw-alias-bg-base, #151517);
1234
+ color: #ececec;
1235
+ }
1236
+ .dsh-github-branch-input:focus {
1237
+ border-color: var(--dsw-alias-link, #0969da);
1238
+ }
1239
+
1240
+ .dsh-github-branch-list {
1241
+ flex: 1;
1242
+ overflow-y: auto;
1243
+ max-height: 280px;
1244
+ padding: 4px 0;
1245
+ }
1246
+ .dsh-github-branch-item {
1247
+ display: flex;
1248
+ align-items: center;
1249
+ justify-content: space-between;
1250
+ padding: 6px 12px;
1251
+ font-size: 12px;
1252
+ cursor: pointer;
1253
+ transition: background 0.12s ease;
1254
+ color: var(--dsw-alias-label-primary, #1f2328);
1255
+ }
1256
+ body[data-ds-dark-theme] .dsh-github-branch-item {
1257
+ color: var(--dsw-alias-label-primary, #ececec);
1258
+ }
1259
+ .dsh-github-branch-item:hover {
1260
+ background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.05));
1261
+ }
1262
+ body[data-ds-dark-theme] .dsh-github-branch-item:hover {
1263
+ background: rgba(255, 255, 255, 0.08);
1264
+ }
1265
+ .dsh-github-branch-item.active {
1266
+ font-weight: 600;
1267
+ color: var(--dsw-alias-state-success, #1a7f37);
1268
+ }
1269
+ body[data-ds-dark-theme] .dsh-github-branch-item.active {
1270
+ color: #3fb950;
1271
+ }
1272
+ `;
1273
+ export function injectStyles() {
1274
+ var styleId = "dsh-plugin-github-styles";
1275
+ var existing = document.getElementById(styleId);
1276
+ if (existing) {
1277
+ existing.textContent = GITHUB_PANEL_CSS;
1278
+ return () => { };
1279
+ }
1280
+ var style = document.createElement("style");
1281
+ style.id = styleId;
1282
+ style.textContent = GITHUB_PANEL_CSS;
1283
+ document.head.appendChild(style);
1284
+ return () => style.remove();
1285
+ }