@morehao/dsh-github-trending 0.8.10 → 0.8.12
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/CHANGELOG.md +16 -0
- package/client.js +127 -65
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [v0.8.12] - 2026-11-02
|
|
4
|
+
|
|
5
|
+
### Refactors
|
|
6
|
+
|
|
7
|
+
- **client**: 恢复提示改为居中弹层并统一页面内容框 (#99)
|
|
8
|
+
|
|
9
|
+
**Full Changelog**: https://github.com/morehao/dsh-github-trending/compare/v0.8.11...v0.8.12
|
|
10
|
+
|
|
11
|
+
## [v0.8.11] - 2026-11-02
|
|
12
|
+
|
|
13
|
+
### Fixes
|
|
14
|
+
|
|
15
|
+
- **client**: 自更新恢复提示改为顶部常驻横条 (#96)
|
|
16
|
+
|
|
17
|
+
**Full Changelog**: https://github.com/morehao/dsh-github-trending/compare/v0.8.10...v0.8.11
|
|
18
|
+
|
|
3
19
|
## [v0.8.10] - 2026-11-02
|
|
4
20
|
|
|
5
21
|
### Features
|
package/client.js
CHANGED
|
@@ -284,9 +284,10 @@ var DICT = {
|
|
|
284
284
|
"shell.update.confirmYes": "确认更新",
|
|
285
285
|
"shell.update.cancel": "取消",
|
|
286
286
|
"restoreNotice.title": "已更新到 v{version}",
|
|
287
|
+
"restoreNotice.titleInstalled": "新版本已安装",
|
|
287
288
|
"restoreNotice.titleBare": "更新已安装",
|
|
288
289
|
"restoreNotice.body": "请彻底退出 DSH(⌘Q)再重新打开,更新才会生效。",
|
|
289
|
-
"restoreNotice.dismiss": "
|
|
290
|
+
"restoreNotice.dismiss": "关闭",
|
|
290
291
|
"time.in.minutes": "{minutes} 分钟后",
|
|
291
292
|
"time.in.hours": "{hours} 小时 {minutes} 分后",
|
|
292
293
|
"time.in.days": "{days} 天后",
|
|
@@ -834,9 +835,10 @@ var DICT = {
|
|
|
834
835
|
"shell.update.confirmYes": "Confirm",
|
|
835
836
|
"shell.update.cancel": "Cancel",
|
|
836
837
|
"restoreNotice.title": "Updated to v{version}",
|
|
838
|
+
"restoreNotice.titleInstalled": "New version installed",
|
|
837
839
|
"restoreNotice.titleBare": "Update installed",
|
|
838
840
|
"restoreNotice.body": "Quit DSH completely (⌘Q) and reopen it so the update takes effect.",
|
|
839
|
-
"restoreNotice.dismiss": "
|
|
841
|
+
"restoreNotice.dismiss": "Close",
|
|
840
842
|
"time.in.minutes": "in {minutes} min",
|
|
841
843
|
"time.in.hours": "in {hours} h {minutes} min",
|
|
842
844
|
"time.in.days": "in {days} d",
|
|
@@ -1176,7 +1178,7 @@ var CSS = `
|
|
|
1176
1178
|
.dshgt-tab[aria-selected="true"]{color:var(--gt-fg);border-bottom-color:var(--gt-accent);font-weight:600;white-space:nowrap;}
|
|
1177
1179
|
.dshgt-shell{height:100%;min-height:0;overflow:hidden;}
|
|
1178
1180
|
.dshgt-content{flex:1;min-height:0;display:flex;}
|
|
1179
|
-
.dshgt-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;
|
|
1181
|
+
.dshgt-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;}
|
|
1180
1182
|
.dshgt-settings{flex:1;min-height:0;display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;}
|
|
1181
1183
|
.dshgt-vtabs{display:flex;flex-direction:column;gap:2px;border-right:1px solid var(--gt-border);padding-right:8px;overflow-y:auto;}
|
|
1182
1184
|
.dshgt-vtab{appearance:none;border:none;background:none;text-align:left;padding:7px 10px;border-radius:7px;color:var(--gt-muted);cursor:pointer;font:inherit;font-size:12px;display:flex;align-items:center;gap:6px;}
|
|
@@ -1244,13 +1246,22 @@ var CSS = `
|
|
|
1244
1246
|
.dshgt-modal-mask{position:fixed;inset:0;background:var(--dsw-alias-bg-mask-1,rgba(15,23,42,.38));display:flex;align-items:center;justify-content:center;z-index:2147483000;}
|
|
1245
1247
|
.dshgt-modal{background:var(--gt-bg);border-radius:12px;border:1px solid var(--gt-border);max-width:640px;width:calc(100% - 32px);max-height:80vh;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:10px;box-shadow:0 20px 50px rgba(15,23,42,.25);}
|
|
1246
1248
|
|
|
1247
|
-
/* ———
|
|
1248
|
-
.dshgt-restore{position:fixed;
|
|
1249
|
-
.dshgt-restore
|
|
1250
|
-
.dshgt-restore-
|
|
1251
|
-
.dshgt-restore-
|
|
1252
|
-
.dshgt-restore-
|
|
1253
|
-
|
|
1249
|
+
/* ——— 自更新后的恢复提示:居中弹层,唯一动作「关闭」,版本跨栏当主角 ——— */
|
|
1250
|
+
.dshgt-restore-mask{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--dsw-alias-bg-mask-1,rgba(15,23,42,.38));animation:dshgt-restore-mask-in .14s ease-out;}
|
|
1251
|
+
.dshgt-restore{width:100%;max-width:448px;padding:18px 20px 12px;border-radius:10px;border:1px solid var(--gt-border);background:var(--gt-bg);box-shadow:0 24px 60px rgba(15,23,42,.28),0 2px 8px rgba(15,23,42,.08);animation:dshgt-restore-in .16s cubic-bezier(.2,.8,.3,1);}
|
|
1252
|
+
.dshgt-restore-versions{display:flex;align-items:center;gap:8px;}
|
|
1253
|
+
.dshgt-restore-version{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:500;line-height:24px;color:var(--gt-muted);}
|
|
1254
|
+
.dshgt-restore-version.is-new{font-weight:650;padding:0 8px;border-radius:6px;color:var(--gt-accent);background:color-mix(in srgb,var(--gt-accent) 9%,var(--gt-bg));}
|
|
1255
|
+
.dshgt-restore-arrow{display:inline-flex;align-items:center;justify-content:center;color:var(--gt-muted);}
|
|
1256
|
+
.dshgt-restore-title{font-size:15px;font-weight:600;letter-spacing:-.008em;color:var(--gt-fg);}
|
|
1257
|
+
.dshgt-restore-versions + .dshgt-restore-title{margin-top:12px;}
|
|
1258
|
+
.dshgt-restore-body{margin:5px 0 0;font-size:13px;line-height:1.6;color:var(--gt-muted);}
|
|
1259
|
+
.dshgt-restore-foot{display:flex;justify-content:flex-end;margin-top:14px;}
|
|
1260
|
+
.dshgt-restore-close{appearance:none;font:inherit;font-size:13px;cursor:pointer;padding:5px 10px;border-radius:7px;border:1px solid transparent;background:none;color:var(--gt-accent);}
|
|
1261
|
+
.dshgt-restore-close:hover{background:color-mix(in srgb,var(--gt-accent) 10%,transparent);}
|
|
1262
|
+
@keyframes dshgt-restore-in{from{opacity:0;transform:translateY(6px) scale(.985);}to{opacity:1;transform:none;}}
|
|
1263
|
+
@keyframes dshgt-restore-mask-in{from{opacity:0;}to{opacity:1;}}
|
|
1264
|
+
@media (prefers-reduced-motion:reduce){.dshgt-restore-mask,.dshgt-restore{animation:none;}}
|
|
1254
1265
|
|
|
1255
1266
|
/* ——— GitHub 设备码登录弹窗 ——— */
|
|
1256
1267
|
.dshgt-authmodal{max-width:420px;gap:14px;}
|
|
@@ -1269,7 +1280,11 @@ var CSS = `
|
|
|
1269
1280
|
|
|
1270
1281
|
/* ——— 01 工作台外壳 ——— */
|
|
1271
1282
|
.dshgt-shell{gap:0;height:100%;min-height:0;overflow:hidden;}
|
|
1272
|
-
|
|
1283
|
+
/* 全页统一内容框:五个 tab 的身份条 / tab 条 / 页头 / 正文共用同一条
|
|
1284
|
+
「内容宽度 + 左右留白」规则,宽屏居中、窄屏退化为最小 gutter。
|
|
1285
|
+
页面内不要再给单个视图加 max-width / margin-inline:auto,否则又会出现
|
|
1286
|
+
一半居中一半靠左。 */
|
|
1287
|
+
.dshgt-app{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--gt-bg);--dshgt-frame:1100px;--dshgt-gutter:30px;--dshgt-inset:max(var(--dshgt-gutter),calc((100% - var(--dshgt-frame)) / 2));}
|
|
1273
1288
|
.dshgt-rail{background:color-mix(in srgb,var(--gt-fg) 3%,var(--gt-bg));border-right:1px solid var(--gt-border);display:flex;flex-direction:column;padding:14px 10px 12px;min-height:0;overflow:hidden;}
|
|
1274
1289
|
.dshgt-brand{display:flex;align-items:center;gap:9px;padding:2px 6px 16px;}
|
|
1275
1290
|
.dshgt-brand svg{flex:none;border-radius:8px;}
|
|
@@ -1299,18 +1314,18 @@ var CSS = `
|
|
|
1299
1314
|
.dshgt-pkg-copy:hover{background:color-mix(in srgb,var(--gt-fg) 7%,var(--gt-bg));color:var(--gt-fg);}
|
|
1300
1315
|
.dshgt-pkg-copy:disabled{opacity:.4;cursor:not-allowed;}
|
|
1301
1316
|
.dshgt-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--gt-bg);}
|
|
1302
|
-
.dshgt-page-head{display:flex;align-items:flex-start;gap:16px;padding:20px
|
|
1317
|
+
.dshgt-page-head{display:flex;align-items:flex-start;gap:16px;padding:20px var(--dshgt-inset) 14px;border-bottom:1px solid color-mix(in srgb,var(--gt-border) 70%,transparent);flex:none;}
|
|
1303
1318
|
.dshgt-page-heading{min-width:0;}
|
|
1304
1319
|
.dshgt-page-head h1{margin:0;font-size:21px;line-height:1.25;font-weight:650;letter-spacing:-.012em;}
|
|
1305
1320
|
.dshgt-dek{margin:4px 0 0;font-size:13px;color:var(--gt-muted);max-width:580px;line-height:1.5;}
|
|
1306
1321
|
.dshgt-head-actions{margin-left:auto;display:flex;align-items:center;gap:8px;padding-top:2px;flex:none;}
|
|
1307
1322
|
.dshgt-main-body{flex:1;min-height:0;display:flex;min-width:0;}
|
|
1308
|
-
.dshgt-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;}
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
.dshgt-view{padding:22px
|
|
1323
|
+
.dshgt-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable both-edges;}
|
|
1324
|
+
/* 设置页不在 .dshgt-scroll 里(自己管理左右分栏滚动),但内容框必须与其它四页完全一致。 */
|
|
1325
|
+
.dshgt-main-body > .dshgt-settings{flex:1;min-height:0;padding:22px var(--dshgt-inset) 30px;width:100%;}
|
|
1326
|
+
/* 五个 tab 共用同一个内容框:宽屏居中、窄屏贴最小 gutter;内容本身铺满框内宽度。
|
|
1327
|
+
只有空态文案这类「短句」用 text-align / 自身 max-width 控制,不再靠外层居中。 */
|
|
1328
|
+
.dshgt-view{padding:22px var(--dshgt-inset) 38px;width:100%;display:flex;flex-direction:column;gap:18px;}
|
|
1314
1329
|
.dshgt-grow{flex:1;min-width:0;}
|
|
1315
1330
|
.dshgt-dim{font-size:12px;color:var(--gt-muted);}
|
|
1316
1331
|
.dshgt-empty{padding:48px 0;text-align:center;color:var(--gt-muted);font-size:13px;}
|
|
@@ -1318,7 +1333,7 @@ var CSS = `
|
|
|
1318
1333
|
.dshgt-inline-tag{margin-left:6px;vertical-align:1px;}
|
|
1319
1334
|
|
|
1320
1335
|
/* ——— 顶部身份条(第一行):名称 / 版本 / 完整包名 / GitHub / 检查更新 ——— */
|
|
1321
|
-
.dshgt-idbar{display:flex;align-items:center;gap:9px;height:48px;padding:0
|
|
1336
|
+
.dshgt-idbar{display:flex;align-items:center;gap:9px;height:48px;padding:0 var(--dshgt-inset);border-bottom:1px solid var(--gt-border);flex:none;background:var(--gt-bg);min-width:0;}
|
|
1322
1337
|
.dshgt-idbar .dshgt-brand{display:flex;align-items:center;gap:9px;padding:0;flex:none;min-width:0;}
|
|
1323
1338
|
.dshgt-idbar .dshgt-brand svg{width:22px;height:22px;flex:none;border-radius:6px;}
|
|
1324
1339
|
.dshgt-brand-name{font-size:13.5px;font-weight:650;letter-spacing:-.01em;white-space:nowrap;line-height:1.3;}
|
|
@@ -1337,7 +1352,7 @@ var CSS = `
|
|
|
1337
1352
|
.dshgt-id-actions{display:flex;align-items:center;gap:8px;flex:none;}
|
|
1338
1353
|
|
|
1339
1354
|
/* ——— 横向 tab(第二行)+ 右侧状态 ——— */
|
|
1340
|
-
.dshgt-tabsbar{display:flex;align-items:stretch;gap:12px;height:46px;padding:0
|
|
1355
|
+
.dshgt-tabsbar{display:flex;align-items:stretch;gap:12px;height:46px;padding:0 var(--dshgt-inset);border-bottom:1px solid var(--gt-border);flex:none;background:var(--gt-bg);min-width:0;}
|
|
1341
1356
|
.dshgt-tabnav{display:flex;align-items:stretch;gap:2px;height:100%;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;}
|
|
1342
1357
|
.dshgt-tabnav::-webkit-scrollbar{display:none;}
|
|
1343
1358
|
.dshgt-tab{display:flex;align-items:center;gap:7px;padding:0 12px;border:0;background:none;color:var(--gt-muted);cursor:pointer;font:inherit;font-size:13.5px;position:relative;border-bottom:2px solid transparent;margin-bottom:-1px;flex:none;white-space:nowrap;}
|
|
@@ -1410,17 +1425,17 @@ var CSS = `
|
|
|
1410
1425
|
@keyframes dshgt-spin{to{transform:rotate(360deg);}}
|
|
1411
1426
|
|
|
1412
1427
|
/* ——— 日报 ——— */
|
|
1413
|
-
/*
|
|
1414
|
-
|
|
1415
|
-
.dshgt-digest
|
|
1428
|
+
/* 日报不再自己限宽 / 居中:整页与其它四个 tab 共用 .dshgt-view 的内容框,
|
|
1429
|
+
工具栏和纸面左右边缘和页头、正文完全对齐。 */
|
|
1430
|
+
.dshgt-digest{gap:12px;}
|
|
1416
1431
|
.dshgt-digest-subbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
|
|
1417
1432
|
.dshgt-datenav{display:flex;align-items:center;gap:2px;border:1px solid var(--gt-border);border-radius:8px;background:var(--gt-card);padding:2px;}
|
|
1418
1433
|
.dshgt-icon-btn{width:28px;height:28px;display:grid;place-items:center;border:1px solid transparent;background:var(--gt-bg);border-radius:6px;color:var(--gt-fg);font-family:inherit;font-size:18px;line-height:1;cursor:pointer;flex:none;}
|
|
1419
1434
|
.dshgt-icon-btn:hover:not(:disabled){background:color-mix(in srgb,var(--gt-fg) 7%,var(--gt-bg));border-color:var(--gt-border);}
|
|
1420
1435
|
.dshgt-icon-btn:disabled{opacity:.3;cursor:not-allowed;}
|
|
1421
1436
|
.dshgt-dateselect{appearance:none;height:28px;border:0;background:transparent;font-family:inherit;font-size:13px;color:var(--gt-fg);padding:0 8px;min-width:210px;max-width:320px;cursor:pointer;}
|
|
1422
|
-
/*
|
|
1423
|
-
.dshgt-digest-sheet{
|
|
1437
|
+
/* 日报预览纸面:铺满统一内容框;阅读行宽由内边距与字号控制。 */
|
|
1438
|
+
.dshgt-digest-sheet{width:100%;border:1px solid var(--gt-border);border-radius:12px;background:var(--gt-card);overflow:hidden;}
|
|
1424
1439
|
.dshgt-digest-body{display:flex;flex-direction:column;min-width:0;}
|
|
1425
1440
|
.dshgt-digest-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;border-bottom:1px solid color-mix(in srgb,var(--gt-border) 70%,transparent);background:color-mix(in srgb,var(--gt-fg) 2.5%,var(--gt-card));}
|
|
1426
1441
|
.dshgt-seg{display:inline-flex;border:1px solid var(--gt-border);border-radius:8px;padding:2px;background:var(--gt-bg);gap:2px;}
|
|
@@ -1430,7 +1445,7 @@ var CSS = `
|
|
|
1430
1445
|
.dshgt-doc-meta{display:flex;gap:12px;flex-wrap:wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:var(--gt-muted);padding-bottom:12px;border-bottom:1px solid color-mix(in srgb,var(--gt-border) 70%,transparent);}
|
|
1431
1446
|
.dshgt-digest-raw{margin:0;padding:22px 28px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.75;white-space:pre-wrap;word-break:break-word;color:var(--gt-muted);background:color-mix(in srgb,var(--gt-fg) 2.5%,var(--gt-card));max-height:640px;overflow:auto;}
|
|
1432
1447
|
.dshgt-digest-loading{padding:40px 28px;color:var(--gt-muted);font-size:13px;}
|
|
1433
|
-
.dshgt-digest-empty{padding:42px 36px 46px;
|
|
1448
|
+
.dshgt-digest-empty{padding:42px 36px 46px;}
|
|
1434
1449
|
.dshgt-status-line{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--gt-muted);}
|
|
1435
1450
|
.dshgt-status-line b{color:var(--gt-fg);font-weight:600;white-space:nowrap;}
|
|
1436
1451
|
.dshgt-digest-empty h2{margin:14px 0 6px;font-size:20px;font-weight:650;letter-spacing:-.012em;}
|
|
@@ -1534,13 +1549,13 @@ var CSS = `
|
|
|
1534
1549
|
.dshgt-about-close{margin-left:auto;flex:none;display:grid;place-items:center;width:28px;height:28px;padding:0;appearance:none;font:inherit;cursor:pointer;border-radius:7px;border:1px solid transparent;background:transparent;color:var(--gt-muted);}
|
|
1535
1550
|
.dshgt-about-close:hover{color:var(--gt-fg);background:color-mix(in srgb,var(--gt-fg) 7%,var(--gt-bg));border-color:var(--gt-border);}
|
|
1536
1551
|
.dshgt-about-close:focus-visible{outline:2px solid color-mix(in srgb,var(--gt-accent) 45%,transparent);outline-offset:1px;}
|
|
1537
|
-
/*
|
|
1538
|
-
.dshgt-about-identity{position:relative;margin:-16px -16px 0;padding:16px;border-radius:12px 12px 0 0;display:flex;flex-direction:column;align-items:center;gap:7px;
|
|
1539
|
-
.dshgt-about-logo svg{width:32px;height:32px;border-radius:12px;display:block;
|
|
1552
|
+
/* 应用身份:logo / 名称 / 版本胶囊居中;与信息表整卡同色(不再用渐变、无分隔边、无图标阴影) */
|
|
1553
|
+
.dshgt-about-identity{position:relative;margin:-16px -16px 0;padding:16px;border-radius:12px 12px 0 0;display:flex;flex-direction:column;align-items:center;gap:7px;background:var(--gt-bg);}
|
|
1554
|
+
.dshgt-about-logo svg{width:32px;height:32px;border-radius:12px;display:block;}
|
|
1540
1555
|
.dshgt-about-name{font-size:13.5px;font-weight:680;letter-spacing:-.01em;line-height:1.2;}
|
|
1541
1556
|
.dshgt-about-ver{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;color:var(--gt-fg);background:var(--gt-card);border:1px solid var(--gt-border);border-radius:999px;padding:0 8px;line-height:16px;}
|
|
1542
|
-
/*
|
|
1543
|
-
.dshgt-about .dshgt-kv{grid-template-columns:88px minmax(0,1fr);
|
|
1557
|
+
/* 信息表:无上方分割线,左对齐 label/value */
|
|
1558
|
+
.dshgt-about .dshgt-kv{grid-template-columns:88px minmax(0,1fr);padding-top:2px;}
|
|
1544
1559
|
.dshgt-about .dshgt-kv a{color:var(--gt-accent);text-decoration:none;}
|
|
1545
1560
|
.dshgt-about .dshgt-kv a:hover{text-decoration:underline;}
|
|
1546
1561
|
.dshgt-about .dshgt-kv dd{min-width:0;overflow-wrap:anywhere;}
|
|
@@ -1554,7 +1569,7 @@ var CSS = `
|
|
|
1554
1569
|
.dshgt-gh{width:15px;height:15px;display:block;fill:currentColor;}
|
|
1555
1570
|
|
|
1556
1571
|
/* ——— 订阅:命令栏 + 四列表格 + 选择条 + 发版记录抽屉 ——— */
|
|
1557
|
-
.dshgt-subs{gap:12px;
|
|
1572
|
+
.dshgt-subs{gap:12px;}
|
|
1558
1573
|
/* 工具条:搜索 + 添加 + 选择 + 生成变更分析;列表在上方操作区之下 */
|
|
1559
1574
|
.dshgt-subs-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid color-mix(in srgb,var(--gt-border) 70%,transparent);}
|
|
1560
1575
|
.dshgt-subs-search{position:relative;flex:1;min-width:180px;max-width:340px;display:flex;align-items:center;}
|
|
@@ -1684,8 +1699,10 @@ var CSS = `
|
|
|
1684
1699
|
}
|
|
1685
1700
|
|
|
1686
1701
|
@media (max-width:1100px){
|
|
1687
|
-
.dshgt-
|
|
1688
|
-
.dshgt-
|
|
1702
|
+
.dshgt-app{--dshgt-gutter:22px;}
|
|
1703
|
+
.dshgt-page-head{padding-block:18px 12px;}
|
|
1704
|
+
.dshgt-view{padding-block:18px 30px;}
|
|
1705
|
+
.dshgt-main-body > .dshgt-settings{padding-block:18px 22px;}
|
|
1689
1706
|
.dshgt-facts{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:10px;}
|
|
1690
1707
|
.dshgt-fact:nth-child(3){padding-left:0;border-left:0;}
|
|
1691
1708
|
.dshgt-week{flex-wrap:wrap;}
|
|
@@ -1699,20 +1716,19 @@ var CSS = `
|
|
|
1699
1716
|
@media (max-width:980px){
|
|
1700
1717
|
.dshgt-page-head h1{font-size:19px;}
|
|
1701
1718
|
.dshgt-dek{font-size:12.5px;}
|
|
1702
|
-
.dshgt-main-body > .dshgt-settings{padding:
|
|
1703
|
-
}
|
|
1704
|
-
@media (max-width:900px){
|
|
1705
|
-
.dshgt-main-body > .dshgt-settings{padding:14px 16px 18px;}
|
|
1719
|
+
.dshgt-main-body > .dshgt-settings{padding-block:16px 18px;}
|
|
1706
1720
|
}
|
|
1707
1721
|
@media (max-width:760px){
|
|
1708
|
-
.dshgt-
|
|
1722
|
+
.dshgt-app{--dshgt-gutter:18px;}
|
|
1723
|
+
.dshgt-idbar{gap:8px;}
|
|
1709
1724
|
.dshgt-id-pkg{max-width:26vw;}
|
|
1710
1725
|
.dshgt-id-status{display:none;}
|
|
1711
|
-
.dshgt-tabsbar{
|
|
1726
|
+
.dshgt-tabsbar{gap:8px;}
|
|
1712
1727
|
.dshgt-tabsbar-status{display:none;}
|
|
1713
|
-
.dshgt-page-head{flex-wrap:wrap;padding:16px
|
|
1728
|
+
.dshgt-page-head{flex-wrap:wrap;padding-block:16px 12px;gap:10px 16px;}
|
|
1714
1729
|
.dshgt-head-actions{margin-left:0;width:100%;justify-content:flex-start;padding-top:0;flex-wrap:wrap;}
|
|
1715
|
-
.dshgt-view{padding:16px
|
|
1730
|
+
.dshgt-view{padding-block:16px 28px;}
|
|
1731
|
+
.dshgt-main-body > .dshgt-settings{padding-block:14px 18px;}
|
|
1716
1732
|
.dshgt-runs-filter{margin-left:0;width:100%;flex-wrap:wrap;}
|
|
1717
1733
|
.dshgt-run-row{grid-template-columns:14px 92px 46px minmax(0,1fr) 20px;gap:8px;padding:0 2px;}
|
|
1718
1734
|
.dshgt-run-item.has-tokens .dshgt-run-row{grid-template-columns:14px 92px 46px minmax(0,1fr) 64px 20px;}
|
|
@@ -5936,26 +5952,71 @@ function IdentityBar(props) {
|
|
|
5936
5952
|
}
|
|
5937
5953
|
|
|
5938
5954
|
// client/restore-notice.ts
|
|
5939
|
-
|
|
5940
|
-
|
|
5955
|
+
function vLabel(value) {
|
|
5956
|
+
if (value === void 0) return void 0;
|
|
5957
|
+
const text = value.trim();
|
|
5958
|
+
if (text === "") return void 0;
|
|
5959
|
+
return text.startsWith("v") ? text : `v${text}`;
|
|
5960
|
+
}
|
|
5961
|
+
var ARROW = h(
|
|
5962
|
+
"svg",
|
|
5963
|
+
{
|
|
5964
|
+
width: 14,
|
|
5965
|
+
height: 14,
|
|
5966
|
+
viewBox: "0 0 16 16",
|
|
5967
|
+
fill: "none",
|
|
5968
|
+
stroke: "currentColor",
|
|
5969
|
+
strokeWidth: 1.6,
|
|
5970
|
+
strokeLinecap: "round",
|
|
5971
|
+
strokeLinejoin: "round",
|
|
5972
|
+
"aria-hidden": "true",
|
|
5973
|
+
focusable: "false"
|
|
5974
|
+
},
|
|
5975
|
+
h("path", { d: "M3 8h9" }),
|
|
5976
|
+
h("polyline", { points: "8.5 4.5 12 8 8.5 11.5" })
|
|
5977
|
+
);
|
|
5978
|
+
function RestoreNotice({ t, version, from, onDismiss }) {
|
|
5979
|
+
const fromLabel = vLabel(from);
|
|
5980
|
+
const toLabel = vLabel(version);
|
|
5981
|
+
const pair = fromLabel !== void 0 && toLabel !== void 0 && fromLabel !== toLabel;
|
|
5982
|
+
const title = pair ? t("restoreNotice.titleInstalled") : toLabel !== void 0 ? t("restoreNotice.title", { version: toLabel.replace(/^v/, "") }) : t("restoreNotice.titleBare");
|
|
5941
5983
|
import_react.default.useEffect(() => {
|
|
5942
|
-
|
|
5943
|
-
|
|
5984
|
+
if (typeof document === "undefined") return void 0;
|
|
5985
|
+
const onKeyDown = (event) => {
|
|
5986
|
+
if (event.key === "Escape") onDismiss();
|
|
5987
|
+
};
|
|
5988
|
+
document.addEventListener("keydown", onKeyDown);
|
|
5989
|
+
return () => document.removeEventListener("keydown", onKeyDown);
|
|
5944
5990
|
}, [onDismiss]);
|
|
5945
|
-
const title = version !== void 0 && version !== "" ? t("restoreNotice.title", { version }) : t("restoreNotice.titleBare");
|
|
5946
5991
|
return h(
|
|
5947
5992
|
"div",
|
|
5948
|
-
{ className: "dshgt-restore
|
|
5993
|
+
{ className: "dshgt-restore-mask" },
|
|
5949
5994
|
h(
|
|
5950
5995
|
"div",
|
|
5951
|
-
{
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
|
|
5957
|
-
|
|
5958
|
-
|
|
5996
|
+
{
|
|
5997
|
+
className: "dshgt-restore",
|
|
5998
|
+
role: "dialog",
|
|
5999
|
+
"aria-modal": "true",
|
|
6000
|
+
"aria-labelledby": "dshgt-restore-title"
|
|
6001
|
+
},
|
|
6002
|
+
pair ? h(
|
|
6003
|
+
"div",
|
|
6004
|
+
{ className: "dshgt-restore-versions" },
|
|
6005
|
+
h("span", { className: "dshgt-restore-version" }, fromLabel),
|
|
6006
|
+
h("span", { className: "dshgt-restore-arrow" }, ARROW),
|
|
6007
|
+
h("span", { className: "dshgt-restore-version is-new" }, toLabel)
|
|
6008
|
+
) : null,
|
|
6009
|
+
h("div", { className: "dshgt-restore-title", id: "dshgt-restore-title" }, title),
|
|
6010
|
+
h("p", { className: "dshgt-restore-body" }, t("restoreNotice.body")),
|
|
6011
|
+
h(
|
|
6012
|
+
"div",
|
|
6013
|
+
{ className: "dshgt-restore-foot" },
|
|
6014
|
+
h(
|
|
6015
|
+
"button",
|
|
6016
|
+
{ type: "button", className: "dshgt-restore-close", autoFocus: true, onClick: () => onDismiss() },
|
|
6017
|
+
t("restoreNotice.dismiss")
|
|
6018
|
+
)
|
|
6019
|
+
)
|
|
5959
6020
|
)
|
|
5960
6021
|
);
|
|
5961
6022
|
}
|
|
@@ -6144,6 +6205,15 @@ function apply(ctx) {
|
|
|
6144
6205
|
h(
|
|
6145
6206
|
"div",
|
|
6146
6207
|
{ className: "dshgt-app" },
|
|
6208
|
+
pendingUpdate === null ? null : h(RestoreNotice, {
|
|
6209
|
+
t,
|
|
6210
|
+
version: pendingUpdate.to,
|
|
6211
|
+
from: pendingUpdate.from,
|
|
6212
|
+
onDismiss: () => {
|
|
6213
|
+
clearPendingUpdate();
|
|
6214
|
+
setPendingUpdate(null);
|
|
6215
|
+
}
|
|
6216
|
+
}),
|
|
6147
6217
|
plugin === void 0 ? null : h(IdentityBar, { t, plugin, onOpenAbout: openAbout }),
|
|
6148
6218
|
h(
|
|
6149
6219
|
"div",
|
|
@@ -6236,15 +6306,7 @@ function apply(ctx) {
|
|
|
6236
6306
|
h("div", { className: "dshgt-main-body" }, view === "settings" ? viewNode : h("div", { className: "dshgt-scroll" }, viewNode))
|
|
6237
6307
|
)
|
|
6238
6308
|
),
|
|
6239
|
-
aboutOpen && state !== null ? h(AboutDialog, { t, state, onClose: () => setAboutOpen(false) }) : null
|
|
6240
|
-
pendingUpdate ? h(RestoreNotice, {
|
|
6241
|
-
t,
|
|
6242
|
-
version: pendingUpdate.to,
|
|
6243
|
-
onDismiss: () => {
|
|
6244
|
-
clearPendingUpdate();
|
|
6245
|
-
setPendingUpdate(null);
|
|
6246
|
-
}
|
|
6247
|
-
}) : null
|
|
6309
|
+
aboutOpen && state !== null ? h(AboutDialog, { t, state, onClose: () => setAboutOpen(false) }) : null
|
|
6248
6310
|
);
|
|
6249
6311
|
}
|
|
6250
6312
|
disposers.push(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morehao/dsh-github-trending",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.12",
|
|
4
4
|
"description": "GitHub 趋势日报的 DeepSeek Harness 插件:按日 / 周 / 月周期定时 spawn 本地 trendradar 核心,抓取 Trending、生成中文简介与周期总结,并可选把订阅仓库的新 Release 合成中文摘要,一起提交到你的仓库、自动开 PR 合并;内置概览 / 榜单 / 运行记录 / 订阅 / 设置工作台。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|