@huaqiu/dsh-tool-plugin-update 0.6.8 → 0.6.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huaqiu/dsh-tool-plugin-update",
3
- "version": "0.6.8",
3
+ "version": "0.6.9",
4
4
  "type": "module",
5
5
  "main": "./lib/index.mjs",
6
6
  "types": "./lib/index.d.mts",
@@ -31,8 +31,8 @@
31
31
  "@deepseek-ai/dsh-host-webserver": "^0.2.1-rc.2"
32
32
  },
33
33
  "dependencies": {
34
- "@huaqiu/dsh-plugin-log": "0.6.8",
35
- "@huaqiu/dsh-sidebar-entry": "0.6.8"
34
+ "@huaqiu/dsh-plugin-log": "0.6.9",
35
+ "@huaqiu/dsh-sidebar-entry": "0.6.9"
36
36
  },
37
37
  "files": [
38
38
  "lib",
@@ -127,8 +127,12 @@ const ENTRY_CSS_TEXT = `
127
127
  text-align: center;
128
128
  font-variant-numeric: tabular-nums;
129
129
  }
130
- /* Collapsed rail: icon-only, centered — same 36px square the shell uses. */
130
+ /* Collapsed rail: icon-only, centered — same 36px square the shell uses.
131
+ The update-count badge moves to the button's bottom-right corner. The
132
+ sidebar-entry helper only renders the badge element while count > 0, so a
133
+ zero count shows a bare icon with no dot. */
131
134
  [data-sidebar-collapsed] .hqpu-sidebar-entry {
135
+ position: relative;
132
136
  justify-content: center;
133
137
  width: 36px;
134
138
  height: 36px;
@@ -139,10 +143,25 @@ const ENTRY_CSS_TEXT = `
139
143
  width: 18px;
140
144
  height: 18px;
141
145
  }
142
- [data-sidebar-collapsed] .hqpu-sidebar-entry__label,
143
- [data-sidebar-collapsed] .hqpu-sidebar-entry__badge {
146
+ [data-sidebar-collapsed] .hqpu-sidebar-entry__label {
144
147
  display: none;
145
148
  }
149
+ [data-sidebar-collapsed] .hqpu-sidebar-entry__badge {
150
+ /* Corner count badge: overlaps the icon's bottom-right like a notification
151
+ dot. The ring uses the rail's own fill (HuaQiu override when the theme is
152
+ mounted, shell layer-1 otherwise) so it reads on any sidebar surface. */
153
+ position: absolute;
154
+ right: 0;
155
+ bottom: 0;
156
+ min-width: 14px;
157
+ height: 14px;
158
+ padding: 0 3px;
159
+ border-radius: 7px;
160
+ font-size: 9px;
161
+ line-height: 14px;
162
+ box-shadow: 0 0 0 1.5px var(--dsw-specific-sidebar-fill, var(--dsw-alias-bg-layer-1));
163
+ transform: translate(12%, 12%);
164
+ }
146
165
  `
147
166
 
148
167
  /**
@@ -892,25 +911,39 @@ const VIEW_CSS_TEXT = `
892
911
  }
893
912
 
894
913
  /* ════════════════════════════════════════════════════════════════════════
895
- * Refactored dock (interactive_refactored_ui_mockup.html) — a narrow dark-zinc
914
+ * Refactored dock (interactive_refactored_ui_mockup.html) — a fluid
896
915
  * update-center column. These rules cascade over the shell-token base: the
897
- * panel becomes ~340px wide, the zinc palette hard-coded per mockup, with a
898
- * sticky header / scroll body / sticky footer. No Tailwind, no dependencies.
916
+ * panel takes the available width (up to 720px), every colour is a
917
+ * --dsw-alias-* token so light/dark follow the shell's
918
+ * body[data-ds-dark-theme] and the brand follows the HuaQiu theme overrides,
919
+ * with a sticky header / scroll body / sticky footer. No Tailwind, no
920
+ * dependencies.
899
921
  * ════════════════════════════════════════════════════════════════════════ */
900
922
  .hqpu-panel,
901
923
  .hqpu-panel * {
902
- --hq-bg: #18181b;
903
- --hq-card: #27272a;
904
- --hq-card-soft: #1c1c1f;
905
- --hq-border: #3f3f46;
906
- --hq-hover: #323236;
907
- --hq-text: #f4f4f5;
908
- --hq-muted: #a1a1aa;
909
- --hq-faint: #71717a;
910
- --hq-brand: #dc2626;
911
- --hq-brand-soft: #ef4444;
912
- --hq-emerald: #34d399;
913
- --hq-amber: #f59e0b;
924
+ /* Every colour rides a shell theme token, so light/dark follow
925
+ * body[data-ds-dark-theme] automatically. The brand tokens are exactly the
926
+ * ones @huaqiu/dsh-ui-theme-huaqiu overrides (light #C7000B / dark #FF6B74),
927
+ * so the dock honours the HuaQiu brand scheme in both themes without knowing
928
+ * which theme is active. */
929
+ --hq-bg: var(--dsw-alias-bg-layer-1);
930
+ --hq-card: var(--dsw-alias-bg-layer-2);
931
+ --hq-card-soft: var(--dsw-alias-bg-overlay);
932
+ --hq-border: var(--dsw-alias-border-l2);
933
+ --hq-border-strong: var(--dsw-alias-border-l3);
934
+ --hq-hover: var(--dsw-alias-interactive-bg-hover);
935
+ --hq-text: var(--dsw-alias-label-primary);
936
+ --hq-text-strong: var(--dsw-alias-label-primary);
937
+ --hq-text-code: var(--dsw-alias-label-secondary);
938
+ --hq-muted: var(--dsw-alias-label-secondary);
939
+ --hq-faint: var(--dsw-alias-label-tertiary);
940
+ --hq-brand: var(--dsw-alias-brand-primary);
941
+ --hq-brand-soft: var(--dsw-alias-button-primary-hover);
942
+ --hq-brand-dim: var(--dsw-alias-button-primary-dimmed);
943
+ --hq-brand-fg: var(--dsw-alias-brand-primary-invert);
944
+ --hq-emerald: var(--dsw-alias-state-success-primary);
945
+ --hq-amber: var(--dsw-alias-state-warn-primary);
946
+ --hq-rose: var(--dsw-alias-state-error-primary);
914
947
  }
915
948
  .hqpu-panel {
916
949
  width: min(360px, calc(100vw - 32px));
@@ -923,7 +956,7 @@ const VIEW_CSS_TEXT = `
923
956
  overflow: hidden;
924
957
  }
925
958
  .hqpu-scrim {
926
- background: rgba(0, 0, 0, 0.55);
959
+ background: var(--dsw-alias-bg-mask-3);
927
960
  }
928
961
 
929
962
  /* Sticky header */
@@ -994,7 +1027,7 @@ const VIEW_CSS_TEXT = `
994
1027
  flex: none;
995
1028
  padding: 10px 12px;
996
1029
  border-bottom: 0.5px solid var(--hq-border);
997
- background: #131316;
1030
+ background: var(--hq-card-soft);
998
1031
  }
999
1032
  .hqpu-settings-row {
1000
1033
  display: flex;
@@ -1006,7 +1039,7 @@ const VIEW_CSS_TEXT = `
1006
1039
  .hqpu-settings-title {
1007
1040
  font-size: 11px;
1008
1041
  font-weight: 500;
1009
- color: #d4d4d8;
1042
+ color: var(--hq-text-code);
1010
1043
  }
1011
1044
  .hqpu-origin-badge {
1012
1045
  font-size: 9px;
@@ -1015,14 +1048,14 @@ const VIEW_CSS_TEXT = `
1015
1048
  border: 0.5px solid;
1016
1049
  }
1017
1050
  .hqpu-origin-badge[data-origin='config'] {
1018
- background: rgba(6, 78, 59, 0.4);
1051
+ background: color-mix(in srgb, var(--dsw-alias-state-success-tertiary) 55%, transparent);
1019
1052
  color: var(--hq-emerald);
1020
- border-color: rgba(6, 95, 70, 0.6);
1053
+ border-color: color-mix(in srgb, var(--hq-emerald) 40%, transparent);
1021
1054
  }
1022
1055
  .hqpu-origin-badge[data-origin='override'] {
1023
- background: rgba(120, 53, 15, 0.4);
1056
+ background: color-mix(in srgb, var(--dsw-alias-state-warn-tertiary) 55%, transparent);
1024
1057
  color: var(--hq-amber);
1025
- border-color: rgba(180, 83, 9, 0.5);
1058
+ border-color: color-mix(in srgb, var(--hq-amber) 40%, transparent);
1026
1059
  }
1027
1060
  .hqpu-settings label {
1028
1061
  display: block;
@@ -1038,7 +1071,7 @@ const VIEW_CSS_TEXT = `
1038
1071
  background: var(--hq-bg);
1039
1072
  border: 0.5px solid var(--hq-border);
1040
1073
  border-radius: 5px;
1041
- color: #d4d4d8;
1074
+ color: var(--hq-text-code);
1042
1075
  padding: 0 8px;
1043
1076
  box-sizing: border-box;
1044
1077
  }
@@ -1058,8 +1091,8 @@ const VIEW_CSS_TEXT = `
1058
1091
  flex: 1;
1059
1092
  padding: 12px;
1060
1093
  background: var(--hq-bg);
1061
- --dsh-scrollbar-thumb: #3f3f46;
1062
- --dsh-scrollbar-thumb-hover: #52525b;
1094
+ --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);
1095
+ --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);
1063
1096
  }
1064
1097
  .hqpu-column {
1065
1098
  max-width: none;
@@ -1074,8 +1107,8 @@ const VIEW_CSS_TEXT = `
1074
1107
  padding: 12px;
1075
1108
  border-radius: 8px;
1076
1109
  border: 0.5px solid color-mix(in srgb, var(--hq-brand-soft) 30%, transparent);
1077
- background: #18181b;
1078
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
1110
+ background: var(--hq-bg);
1111
+ box-shadow: var(--dsw-elevation-prominent);
1079
1112
  }
1080
1113
  .hqpu-active-top {
1081
1114
  display: flex;
@@ -1090,7 +1123,7 @@ const VIEW_CSS_TEXT = `
1090
1123
  min-width: 0;
1091
1124
  font-size: 11px;
1092
1125
  font-weight: 600;
1093
- color: #e4e4e7;
1126
+ color: var(--hq-text-strong);
1094
1127
  }
1095
1128
  .hqpu-pulse-dot {
1096
1129
  position: relative;
@@ -1127,7 +1160,7 @@ const VIEW_CSS_TEXT = `
1127
1160
  height: 6px;
1128
1161
  margin-top: 10px;
1129
1162
  border-radius: 999px;
1130
- background: #27272a;
1163
+ background: var(--hq-card);
1131
1164
  overflow: hidden;
1132
1165
  }
1133
1166
  .hqpu-progress-fill {
@@ -1150,7 +1183,7 @@ const VIEW_CSS_TEXT = `
1150
1183
  gap: 4px;
1151
1184
  margin-top: 10px;
1152
1185
  padding-top: 8px;
1153
- border-top: 0.5px solid #27272a;
1186
+ border-top: 0.5px solid var(--hq-border);
1154
1187
  text-align: center;
1155
1188
  font-size: 9px;
1156
1189
  font-weight: 500;
@@ -1175,30 +1208,30 @@ const VIEW_CSS_TEXT = `
1175
1208
  border-radius: 8px;
1176
1209
  }
1177
1210
  .hqpu-alert--amber {
1178
- background: rgba(69, 26, 3, 0.35);
1179
- border: 0.5px solid rgba(180, 83, 9, 0.4);
1211
+ background: color-mix(in srgb, var(--dsw-alias-state-warn-tertiary) 60%, transparent);
1212
+ border: 0.5px solid color-mix(in srgb, var(--hq-amber) 35%, transparent);
1180
1213
  }
1181
1214
  .hqpu-alert--amber svg { color: var(--hq-amber); flex: none; margin-top: 1px; }
1182
1215
  .hqpu-alert-green {
1183
- background: rgba(6, 78, 59, 0.3);
1184
- border: 0.5px solid rgba(6, 95, 70, 0.4);
1185
- color: #a7f3d0;
1216
+ background: color-mix(in srgb, var(--dsw-alias-state-success-tertiary) 55%, transparent);
1217
+ border: 0.5px solid color-mix(in srgb, var(--hq-emerald) 35%, transparent);
1218
+ color: var(--hq-emerald);
1186
1219
  font-size: 11px;
1187
1220
  }
1188
1221
  .hqpu-alert-title {
1189
1222
  font-size: 11px;
1190
1223
  font-weight: 500;
1191
- color: #fcd34d;
1224
+ color: var(--dsw-alias-state-warn-label);
1192
1225
  }
1193
1226
  .hqpu-alert-body {
1194
1227
  margin: 2px 0 0;
1195
1228
  font-size: 10px;
1196
1229
  line-height: 15px;
1197
- color: rgba(252, 211, 77, 0.8);
1230
+ color: color-mix(in srgb, var(--dsw-alias-state-warn-label) 85%, transparent);
1198
1231
  }
1199
1232
  .hqpu-alert-body code {
1200
1233
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1201
- background: rgba(120, 53, 15, 0.5);
1234
+ background: color-mix(in srgb, var(--hq-amber) 18%, transparent);
1202
1235
  padding: 1px 4px;
1203
1236
  border-radius: 3px;
1204
1237
  }
@@ -1212,7 +1245,7 @@ const VIEW_CSS_TEXT = `
1212
1245
  border: 0;
1213
1246
  padding: 0;
1214
1247
  font-size: 10px;
1215
- color: #fbbf24;
1248
+ color: var(--dsw-alias-state-warn-label);
1216
1249
  cursor: pointer;
1217
1250
  text-decoration: underline;
1218
1251
  }
@@ -1236,17 +1269,17 @@ const VIEW_CSS_TEXT = `
1236
1269
  gap: 6px;
1237
1270
  font-size: 12px;
1238
1271
  font-weight: 600;
1239
- color: #e4e4e7;
1272
+ color: var(--hq-text-strong);
1240
1273
  }
1241
- .hqpu-engine-title svg { width: 14px; height: 14px; color: #a1a1aa; }
1274
+ .hqpu-engine-title svg { width: 14px; height: 14px; color: var(--hq-muted); }
1242
1275
  .hqpu-chip {
1243
1276
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1244
1277
  font-size: 9px;
1245
1278
  padding: 2px 6px;
1246
1279
  border-radius: 4px;
1247
- background: #27272a;
1248
- border: 0.5px solid #52525b;
1249
- color: #d4d4d8;
1280
+ background: var(--hq-card);
1281
+ border: 0.5px solid var(--hq-border-strong);
1282
+ color: var(--hq-text-code);
1250
1283
  }
1251
1284
  .hqpu-engine-update-row {
1252
1285
  display: flex;
@@ -1256,8 +1289,8 @@ const VIEW_CSS_TEXT = `
1256
1289
  margin-top: 10px;
1257
1290
  padding: 8px;
1258
1291
  border-radius: 6px;
1259
- border: 0.5px solid rgba(63, 63, 70, 0.7);
1260
- background: rgba(24, 24, 27, 0.6);
1292
+ border: 0.5px solid color-mix(in srgb, var(--hq-border) 70%, transparent);
1293
+ background: color-mix(in srgb, var(--hq-card) 60%, transparent);
1261
1294
  }
1262
1295
  .hqpu-engine-new-line {
1263
1296
  display: flex;
@@ -1265,15 +1298,15 @@ const VIEW_CSS_TEXT = `
1265
1298
  gap: 4px;
1266
1299
  font-size: 11px;
1267
1300
  font-weight: 500;
1268
- color: #d4d4d8;
1301
+ color: var(--hq-text-code);
1269
1302
  }
1270
1303
  .hqpu-tag--brand {
1271
1304
  font-size: 9px;
1272
1305
  padding: 1px 4px;
1273
1306
  border-radius: 3px;
1274
1307
  color: var(--hq-brand-soft);
1275
- background: rgba(69, 10, 10, 0.6);
1276
- border: 0.5px solid rgba(153, 27, 27, 0.5);
1308
+ background: color-mix(in srgb, var(--hq-brand-dim) 60%, transparent);
1309
+ border: 0.5px solid color-mix(in srgb, var(--hq-brand) 45%, transparent);
1277
1310
  }
1278
1311
  .hqpu-engine-size {
1279
1312
  margin: 3px 0 0;
@@ -1288,12 +1321,12 @@ const VIEW_CSS_TEXT = `
1288
1321
  height: auto;
1289
1322
  padding: 6px 10px;
1290
1323
  font-size: 10px;
1291
- background: #27272a;
1292
- border: 0.5px solid #52525b;
1293
- color: #e4e4e7;
1324
+ background: var(--hq-card);
1325
+ border: 0.5px solid var(--hq-border-strong);
1326
+ color: var(--hq-text-strong);
1294
1327
  border-radius: 5px;
1295
1328
  }
1296
- .hqpu-btn--engine:hover:not(:disabled) { background: #3f3f46; }
1329
+ .hqpu-btn--engine:hover:not(:disabled) { background: var(--hq-border); }
1297
1330
  .hqpu-engine-note {
1298
1331
  display: flex;
1299
1332
  align-items: center;
@@ -1318,7 +1351,7 @@ const VIEW_CSS_TEXT = `
1318
1351
  gap: 6px;
1319
1352
  font-size: 12px;
1320
1353
  font-weight: 600;
1321
- color: #e4e4e7;
1354
+ color: var(--hq-text-strong);
1322
1355
  }
1323
1356
  .hqpu-count-pill {
1324
1357
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
@@ -1339,7 +1372,12 @@ const VIEW_CSS_TEXT = `
1339
1372
  }
1340
1373
  .hqpu-all-changelog:hover { color: var(--hq-text); }
1341
1374
 
1342
- .hqpu-cards { gap: 8px; }
1375
+ .hqpu-cards {
1376
+ gap: 8px;
1377
+ display: grid;
1378
+ grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
1379
+ align-items: start;
1380
+ }
1343
1381
  .hqpu-card {
1344
1382
  margin: 0;
1345
1383
  padding: 10px;
@@ -1348,7 +1386,7 @@ const VIEW_CSS_TEXT = `
1348
1386
  background: var(--hq-card);
1349
1387
  transition: border-color 0.15s ease;
1350
1388
  }
1351
- .hqpu-card:hover { border-color: #52525b; }
1389
+ .hqpu-card:hover { border-color: var(--hq-border-strong); }
1352
1390
  .hqpu-card-head {
1353
1391
  display: flex;
1354
1392
  align-items: flex-start;
@@ -1365,16 +1403,16 @@ const VIEW_CSS_TEXT = `
1365
1403
  width: 28px;
1366
1404
  height: 28px;
1367
1405
  border-radius: 6px;
1368
- border: 0.5px solid #52525b;
1369
- background: #27272a;
1370
- color: #d4d4d8;
1406
+ border: 0.5px solid var(--hq-border-strong);
1407
+ background: var(--hq-card);
1408
+ color: var(--hq-text-code);
1371
1409
  font-size: 10px;
1372
1410
  font-weight: 700;
1373
1411
  }
1374
1412
  .hqpu-card-title {
1375
1413
  font-size: 12px;
1376
1414
  font-weight: 600;
1377
- color: #e4e4e7;
1415
+ color: var(--hq-text-strong);
1378
1416
  }
1379
1417
  .hqpu-card-sub {
1380
1418
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
@@ -1390,7 +1428,7 @@ const VIEW_CSS_TEXT = `
1390
1428
  font-size: 10px;
1391
1429
  }
1392
1430
  .hqpu-ver-old { color: var(--hq-muted); }
1393
- .hqpu-ver-arrow { color: #52525b; }
1431
+ .hqpu-ver-arrow { color: var(--hq-border-strong); }
1394
1432
  .hqpu-ver-new { color: var(--hq-emerald); font-weight: 700; }
1395
1433
  .hqpu-log-toggle {
1396
1434
  display: inline-flex;
@@ -1410,8 +1448,8 @@ const VIEW_CSS_TEXT = `
1410
1448
  margin-top: 8px;
1411
1449
  padding: 8px;
1412
1450
  border-radius: 6px;
1413
- border: 0.5px solid #27272a;
1414
- background: rgba(24, 24, 27, 0.8);
1451
+ border: 0.5px solid var(--hq-border);
1452
+ background: color-mix(in srgb, var(--hq-card) 80%, transparent);
1415
1453
  font-size: 10px;
1416
1454
  }
1417
1455
  .hqpu-changelog-drawer-title {
@@ -1419,34 +1457,34 @@ const VIEW_CSS_TEXT = `
1419
1457
  font-weight: 500;
1420
1458
  text-transform: uppercase;
1421
1459
  letter-spacing: 0.05em;
1422
- color: #a1a1aa;
1460
+ color: var(--hq-muted);
1423
1461
  }
1424
1462
  .hqpu-changelog-drawer ul {
1425
1463
  margin: 4px 0 0;
1426
1464
  padding-left: 16px;
1427
- color: #d4d4d8;
1465
+ color: var(--hq-text-code);
1428
1466
  line-height: 16px;
1429
1467
  }
1430
1468
 
1431
1469
  /* Blocked / incompatible card: dimmed, rose badge, no install button */
1432
1470
  .hqpu-card--blocked {
1433
1471
  opacity: 0.8;
1434
- background: rgba(39, 39, 42, 0.6);
1435
- border-color: #27272a;
1472
+ background: color-mix(in srgb, var(--hq-card) 60%, transparent);
1473
+ border-color: var(--hq-border);
1436
1474
  }
1437
1475
  .hqpu-card--blocked .hqpu-avatar {
1438
- background: rgba(39, 39, 42, 0.5);
1439
- border-color: #27272a;
1440
- color: #71717a;
1476
+ background: color-mix(in srgb, var(--hq-card) 50%, transparent);
1477
+ border-color: var(--hq-border);
1478
+ color: var(--hq-faint);
1441
1479
  }
1442
- .hqpu-card--blocked .hqpu-card-title { color: #a1a1aa; }
1480
+ .hqpu-card--blocked .hqpu-card-title { color: var(--hq-muted); }
1443
1481
  .hqpu-blocked-badge {
1444
1482
  font-size: 9px;
1445
1483
  padding: 2px 6px;
1446
1484
  border-radius: 4px;
1447
- color: #fb7185;
1448
- background: rgba(76, 5, 25, 0.5);
1449
- border: 0.5px solid rgba(136, 19, 55, 0.5);
1485
+ color: var(--hq-rose);
1486
+ background: color-mix(in srgb, var(--hq-rose) 18%, transparent);
1487
+ border: 0.5px solid color-mix(in srgb, var(--hq-rose) 40%, transparent);
1450
1488
  }
1451
1489
  .hqpu-reason-line {
1452
1490
  display: flex;
@@ -1455,10 +1493,10 @@ const VIEW_CSS_TEXT = `
1455
1493
  margin: 8px 0 0;
1456
1494
  padding: 6px;
1457
1495
  border-radius: 5px;
1458
- border: 0.5px solid rgba(136, 19, 55, 0.2);
1459
- background: rgba(76, 5, 25, 0.2);
1496
+ border: 0.5px solid color-mix(in srgb, var(--hq-rose) 20%, transparent);
1497
+ background: color-mix(in srgb, var(--hq-rose) 8%, transparent);
1460
1498
  font-size: 10px;
1461
- color: rgba(251, 113, 133, 0.9);
1499
+ color: var(--hq-rose);
1462
1500
  }
1463
1501
  .hqpu-reason-line svg { width: 12px; height: 12px; flex: none; margin-top: 1px; }
1464
1502
 
@@ -1492,11 +1530,11 @@ const VIEW_CSS_TEXT = `
1492
1530
  flex: 1;
1493
1531
  height: 32px;
1494
1532
  background: var(--hq-brand);
1495
- color: #fff;
1533
+ color: var(--hq-brand-fg);
1496
1534
  font-size: 11px;
1497
1535
  font-weight: 500;
1498
1536
  border-radius: 6px;
1499
- box-shadow: 0 4px 12px rgba(127, 29, 29, 0.4);
1537
+ box-shadow: 0 4px 12px color-mix(in srgb, var(--hq-brand) 40%, transparent);
1500
1538
  }
1501
1539
  .hqpu-btn--block:hover:not(:disabled) { background: var(--hq-brand-soft); }
1502
1540
  .hqpu-btn--block:disabled { opacity: 0.5; box-shadow: none; }
@@ -1521,7 +1559,7 @@ const VIEW_CSS_TEXT = `
1521
1559
  .hqpu-status { color: var(--hq-muted); font-size: 11px; }
1522
1560
  .hqpu-empty { color: var(--hq-muted); font-size: 11px; padding: 16px 0; }
1523
1561
  .hqpu-toast { background: var(--hq-card); border: 0.5px solid var(--hq-border); color: var(--hq-text); font-size: 12px; }
1524
- .hqpu-skeleton-fill { background: #3f3f46; }
1562
+ .hqpu-skeleton-fill { background: var(--hq-border); }
1525
1563
  .hqpu-job { background: var(--hq-card); border-color: var(--hq-border); }
1526
1564
  .hqpu-job-meta { color: var(--hq-muted); }
1527
1565
  .hqpu-release-notes { color: var(--hq-muted); font-size: 11px; }
@@ -873,7 +873,7 @@ function sourceEditor(
873
873
  // Read mode: show the URL currently in effect (mono, muted), then edit.
874
874
  const urlLine = el('p', 'hqpu-source-current-url', source.url)
875
875
  urlLine.style.cssText =
876
- 'margin:2px 0 6px;font-size:9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#a1a1aa;word-break:break-all;'
876
+ 'margin:2px 0 6px;font-size:9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--dsw-alias-label-tertiary);word-break:break-all;'
877
877
  block.append(urlLine)
878
878
  block.append(el('p', 'hqpu-status hqpu-source-hint', labels.hint))
879
879
  const edit = el('button', 'hqpu-btn hqpu-btn--outline hqpu-btn--sm', labels.edit)