dsh-plugin-update 0.7.0 → 0.7.1
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 +9 -0
- package/dist/panel-batch.d.ts +19 -0
- package/dist/panel-batch.js +52 -8
- package/dist/panel.d.ts +2 -0
- package/dist/panel.js +11 -8
- package/package.json +76 -76
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
格式为 Keep-a-Changelog 子集:`Added/Fixed/Changed` 必写,`Deprecated/Removed/Security` 有则透传,`Unreleased` 面板忽略,禁止 git-log 直倒。面板缺日志时中性提示,不挡安装。
|
|
4
4
|
|
|
5
|
+
## [0.7.1] - 2026-10-06
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- 批量行三列对齐 + pending 显示最新版 + 新版红(#71):行主区改网格(名 5em/版 18ch/态 1fr,版 nowrap + tabular-nums,态换行同列起,失败跨整行);版本三段式只红新版(老版本弱化/箭头中性/专用红 token `newText`,深浅主题与档案皮肤及 forced-colors 回退,加粗 + 箭头 + 状态词为非颜色信号);版本会话优先、知识仅展示,无轮次无知识回还没查过(不再误 wait-turn),轮次中仍执行态;会话/安装语义未动。
|
|
9
|
+
- 默认弹窗 01~05 横滑消除 + 疏朗化(#72,A 方案落地)。
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- 主题变量新增 `newText`(`--dsh-update-new-text`,有新版版本号专用红,可覆盖,非法即抛)。
|
|
13
|
+
|
|
5
14
|
## [0.7.0] - 2026-10-06
|
|
6
15
|
|
|
7
16
|
### Added
|
package/dist/panel-batch.d.ts
CHANGED
|
@@ -160,6 +160,25 @@ export declare function batchRowStatus(row: BatchRowView, skippedVersion?: strin
|
|
|
160
160
|
* 无知识(从没查过)回 null,调用方回退旧 pending 文案。
|
|
161
161
|
*/
|
|
162
162
|
export declare function batchRowKnowledgeText(row: BatchRowView, entry: BatchKnowledgeEntry | null, lang?: unknown): string | null;
|
|
163
|
+
/**
|
|
164
|
+
* 一行的版本展示(#71 Q3:永远显示当前版;有新版才 `当前 → 最新`)。
|
|
165
|
+
* latest 只做展示,不参与安装决策:会话目标版优先(安装语义),无会话目标时才看知识最新版。
|
|
166
|
+
* - 会话有目标版:current(快照运行版优先)→ 会话目标(current 缺失时占位 `?`,与旧口径一致)。
|
|
167
|
+
* - 会话无目标:current(快照优先,缺失退知识 installedVersion)→ 知识 latest(仅当两者皆有且不等;相等即已是最新,只显当前)。
|
|
168
|
+
* - 两者皆无:current 为 null、latest 为 null、hasUpdate 为 false(调用方不画版本 span)。
|
|
169
|
+
*/
|
|
170
|
+
export interface BatchRowVersionParts {
|
|
171
|
+
current: string | null;
|
|
172
|
+
latest: string | null;
|
|
173
|
+
hasUpdate: boolean;
|
|
174
|
+
}
|
|
175
|
+
export declare function batchRowVersionParts(row: BatchRowView, knowledge: BatchKnowledgeEntry | null): BatchRowVersionParts;
|
|
176
|
+
/**
|
|
177
|
+
* 无轮次 pending 行的状态词(#71 Q3 四态:有新版 / 已是最新 / 还没查过 / 查失败)。
|
|
178
|
+
* 有知识走知识分支;无知识(inventory 缺失或该家无条目)回「还没查过」,不再误显示 wait-turn。
|
|
179
|
+
* 有轮次未做完(inRound)仍走执行态,由调用方按旧口径显示 wait-turn + 未终态标记。
|
|
180
|
+
*/
|
|
181
|
+
export declare function batchRowPendingStatus(row: BatchRowView, knowledge: BatchKnowledgeEntry | null, lang?: unknown): string | null;
|
|
163
182
|
export interface BatchPanelRenderInput {
|
|
164
183
|
rows?: readonly BatchRowView[];
|
|
165
184
|
theme?: UpdatePanelTheme;
|
package/dist/panel-batch.js
CHANGED
|
@@ -175,6 +175,38 @@ function batchRowKnowledgeText(row, entry, lang) {
|
|
|
175
175
|
if (entry.lastCheckedAt > 0) return batchText("batch.row.current", lang);
|
|
176
176
|
return batchText("batch.row.never", lang);
|
|
177
177
|
}
|
|
178
|
+
function batchRowVersionParts(row, knowledge) {
|
|
179
|
+
const sessionTarget = typeof row.targetVersion === "string" && row.targetVersion ? row.targetVersion : null;
|
|
180
|
+
if (sessionTarget) {
|
|
181
|
+
const current2 = currentVersionOf(row);
|
|
182
|
+
if (current2 === null) return { current: null, latest: sessionTarget, hasUpdate: true };
|
|
183
|
+
if (current2 === sessionTarget) return { current: current2, latest: null, hasUpdate: false };
|
|
184
|
+
return { current: current2, latest: sessionTarget, hasUpdate: true };
|
|
185
|
+
}
|
|
186
|
+
const snapshotCurrent = currentVersionOf(row);
|
|
187
|
+
const current = snapshotCurrent ?? (knowledge && typeof knowledge.installedVersion === "string" && knowledge.installedVersion ? knowledge.installedVersion : null);
|
|
188
|
+
const latest = knowledge && typeof knowledge.latestVersion === "string" && knowledge.latestVersion ? knowledge.latestVersion : null;
|
|
189
|
+
if (current && latest && latest !== current) return { current, latest, hasUpdate: true };
|
|
190
|
+
if (current) return { current, latest: null, hasUpdate: false };
|
|
191
|
+
if (latest) return { current: latest, latest: null, hasUpdate: false };
|
|
192
|
+
return { current: null, latest: null, hasUpdate: false };
|
|
193
|
+
}
|
|
194
|
+
function batchRowVersionHTML(row, knowledge) {
|
|
195
|
+
const parts = batchRowVersionParts(row, knowledge);
|
|
196
|
+
if (parts.hasUpdate && parts.latest) {
|
|
197
|
+
const cur = parts.current ?? "?";
|
|
198
|
+
return '<span class="dsh-upd-bver"><span class="dsh-upd-bver-cur">' + escapeHtml(cur) + '</span><span class="dsh-upd-bver-arrow" aria-hidden="true"> \u2192 </span><span class="dsh-upd-bver-new">' + escapeHtml(parts.latest) + "</span></span>";
|
|
199
|
+
}
|
|
200
|
+
if (parts.current) return '<span class="dsh-upd-bver">' + escapeHtml(parts.current) + "</span>";
|
|
201
|
+
return "";
|
|
202
|
+
}
|
|
203
|
+
function batchRowPendingStatus(row, knowledge, lang) {
|
|
204
|
+
if (asBatchPhase(row.phase) !== "pending") return null;
|
|
205
|
+
const known = batchRowKnowledgeText(row, knowledge, lang);
|
|
206
|
+
if (known !== null) return known;
|
|
207
|
+
if (!knowledge) return batchText("batch.row.never", lang);
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
178
210
|
function renderBatchPanelHTML(input) {
|
|
179
211
|
const rows = Array.isArray(input.rows) ? input.rows : [];
|
|
180
212
|
const theme = normalizePanelTheme(input.theme);
|
|
@@ -353,8 +385,8 @@ function rowSetHTML(row, ctx) {
|
|
|
353
385
|
const skipped = ctx.skipped;
|
|
354
386
|
const queued = isQueuedRow(row);
|
|
355
387
|
const position = queued ? queuePositionOf(row) : null;
|
|
356
|
-
const
|
|
357
|
-
const
|
|
388
|
+
const versionHTML = batchRowVersionHTML(row, ctx.knowledge);
|
|
389
|
+
const rowStatusText = queued ? batchQueuedStatus(position, ctx.lang) : ctx.inRound ? batchRowKnowledgeText(row, ctx.knowledge, ctx.lang) ?? batchRowStatus(row, skipped, ctx.lang) : batchRowPendingStatus(row, ctx.knowledge, ctx.lang) ?? batchRowStatus(row, skipped, ctx.lang);
|
|
358
390
|
const actions = [];
|
|
359
391
|
const off = ctx.inFlight ? " disabled" : "";
|
|
360
392
|
if (phase === "installing") {
|
|
@@ -395,7 +427,7 @@ function rowSetHTML(row, ctx) {
|
|
|
395
427
|
const withCode = escaped.includes(codeEsc) ? escaped.replace(codeEsc, "<code>" + codeEsc + "</code>") : escaped;
|
|
396
428
|
return '<span class="dsh-upd-bfail">' + withCode + "</span>";
|
|
397
429
|
})() : "";
|
|
398
|
-
const main = '<button type="button" class="dsh-upd-brow-main" data-act="toggle-details" data-key="' + keyAttr + '" aria-expanded="' + (ctx.expanded ? "true" : "false") + '"><span class="dsh-upd-updot" data-tone="' + dotToneOf(row, phase, skipped, queued) + '"></span><span class="dsh-upd-bname">' + escapeHtml(titleOf(row, ctx.titles)) + "</span>" +
|
|
430
|
+
const main = '<button type="button" class="dsh-upd-brow-main" data-act="toggle-details" data-key="' + keyAttr + '" aria-expanded="' + (ctx.expanded ? "true" : "false") + '"><span class="dsh-upd-updot" data-tone="' + dotToneOf(row, phase, skipped, queued) + '"></span><span class="dsh-upd-bname">' + escapeHtml(titleOf(row, ctx.titles)) + "</span>" + versionHTML + '<span class="dsh-upd-bstat">' + escapeHtml(rowStatusText) + (ctx.inRound && !queued ? "\uFF08" + escapeHtml(batchText("batch.row.unfinished-tag", ctx.lang)) + "\uFF09" : "") + "</span>" + failLine + "</button>";
|
|
399
431
|
const detail = ctx.expanded ? '<div class="dsh-upd-bdetail" data-key="' + keyAttr + '">' + detailActionsHTML(row, ctx) + (ctx.notice !== null ? '<div class="dsh-upd-bdetail-notice" role="status">' + escapeHtml(ctx.notice) + "</div>" : "") + detailHTML(row, ctx) + "</div>" : "";
|
|
400
432
|
return '<div class="dsh-upd-brow-set" data-key="' + keyAttr + '"><div class="dsh-upd-brow" data-phase="' + escapeHtml(phase) + '" data-key="' + keyAttr + '"' + (queued ? ' data-queued="1"' : "") + ">" + main + '<span class="dsh-upd-brow-actions">' + actions.join("") + "</span></div>" + detail + "</div>";
|
|
401
433
|
}
|
|
@@ -486,7 +518,7 @@ const UPDATE_BATCH_PANEL_CSS = [
|
|
|
486
518
|
".dsh-upd-brow-set{border-top:1px solid var(--dsh-update-border,#e5e7eb)}",
|
|
487
519
|
".dsh-upd-brow-set:first-child{border-top:0}",
|
|
488
520
|
".dsh-upd-brow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0}",
|
|
489
|
-
".dsh-upd .dsh-upd-brow-main{display:
|
|
521
|
+
".dsh-upd .dsh-upd-brow-main{display:grid;grid-template-columns:auto minmax(5em,max-content) minmax(18ch,max-content) minmax(0,1fr);align-items:baseline;column-gap:8px;row-gap:2px;flex:1 1 260px;min-width:0;",
|
|
490
522
|
"text-align:left;cursor:pointer;color:inherit;font:inherit;background:transparent;border:0;padding:2px 0;margin:0}",
|
|
491
523
|
".dsh-upd .dsh-upd-brow-main:hover{color:var(--dsh-update-primary,#2563eb)}",
|
|
492
524
|
".dsh-upd-brow-actions{flex:none;margin-left:auto}",
|
|
@@ -497,10 +529,16 @@ const UPDATE_BATCH_PANEL_CSS = [
|
|
|
497
529
|
'.dsh-upd-updot[data-tone="busy"]{background:var(--dsh-update-busy-border,#2563eb);opacity:1}',
|
|
498
530
|
'.dsh-upd-updot[data-tone="warn"]{background:var(--dsh-update-warn-border,#d97706);opacity:1}',
|
|
499
531
|
'.dsh-upd-updot[data-tone="bad"]{background:var(--dsh-update-bad-border,#dc2626);opacity:1}',
|
|
500
|
-
".dsh-upd-bname{font-weight:700;
|
|
501
|
-
".dsh-upd-bver{font-family:Consolas,Menlo,monospace;font-size:12px;
|
|
502
|
-
".dsh-upd-
|
|
503
|
-
".dsh-upd-
|
|
532
|
+
".dsh-upd-bname{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}",
|
|
533
|
+
".dsh-upd-bver{font-family:Consolas,Menlo,monospace;font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:0}",
|
|
534
|
+
".dsh-upd-bver-cur{opacity:.65}",
|
|
535
|
+
".dsh-upd-bver-arrow{opacity:.6}",
|
|
536
|
+
".dsh-upd-bver-new{color:var(--dsh-update-new-text,#dc2626);font-weight:700}",
|
|
537
|
+
".dsh-upd-bstat{font-size:12.5px;opacity:.9;min-width:0;overflow-wrap:anywhere}",
|
|
538
|
+
".dsh-upd-bfail{grid-column:1/-1;display:block;font-size:12.5px;color:var(--dsh-update-bad-border,#dc2626)}",
|
|
539
|
+
".dsh-upd-batch{--dsh-update-new-text:#dc2626}",
|
|
540
|
+
"@media (prefers-color-scheme: dark){.dsh-upd-batch{--dsh-update-new-text:#f87171}}",
|
|
541
|
+
"@media (forced-colors: active){.dsh-upd-bver-new{color:CanvasText}}",
|
|
504
542
|
".dsh-upd-blist{font-size:12.5px;margin-top:2px}",
|
|
505
543
|
".dsh-upd-batch-ledger{margin:8px 0 0;font-size:13px;opacity:.85}",
|
|
506
544
|
".dsh-upd-batch-more{margin-top:6px}",
|
|
@@ -536,6 +574,10 @@ const UPDATE_BATCH_PANEL_ARCHIVE_CSS = [
|
|
|
536
574
|
'.dsh-upd[data-theme="archive"] .dsh-upd-brow-main:hover{color:var(--dsh-update-primary)}',
|
|
537
575
|
'.dsh-upd[data-theme="archive"] .dsh-upd-bname{font-family:var(--dsh-update-font-serif)}',
|
|
538
576
|
'.dsh-upd[data-theme="archive"] .dsh-upd-bver{font-family:var(--dsh-update-font-mono);color:var(--dsh-update-text-muted)}',
|
|
577
|
+
'.dsh-upd[data-theme="archive"] .dsh-upd-bver-cur{opacity:.75}',
|
|
578
|
+
'.dsh-upd[data-theme="archive"] .dsh-upd-bver-new{color:var(--dsh-update-new-text,#b3261e)}',
|
|
579
|
+
'.dsh-upd[data-theme="archive"] .dsh-upd-batch{--dsh-update-new-text:#b3261e}',
|
|
580
|
+
'@media (prefers-color-scheme: dark){.dsh-upd[data-theme="archive"] .dsh-upd-batch{--dsh-update-new-text:#ef8a7d}}',
|
|
539
581
|
'.dsh-upd[data-theme="archive"] .dsh-upd-batch-ledger{color:var(--dsh-update-text-muted)}',
|
|
540
582
|
'.dsh-upd[data-theme="archive"] .dsh-upd-batch-sum{color:var(--dsh-update-text)}',
|
|
541
583
|
'.dsh-upd[data-theme="archive"] .dsh-upd-brow-set{border-top-color:var(--dsh-update-border)}'
|
|
@@ -1419,7 +1461,9 @@ export {
|
|
|
1419
1461
|
batchLedgerText,
|
|
1420
1462
|
batchQueuedStatus,
|
|
1421
1463
|
batchRowKnowledgeText,
|
|
1464
|
+
batchRowPendingStatus,
|
|
1422
1465
|
batchRowStatus,
|
|
1466
|
+
batchRowVersionParts,
|
|
1423
1467
|
buildBatchPhoneNames,
|
|
1424
1468
|
hasUnfinishedRows,
|
|
1425
1469
|
mountUpdateBatchPanel,
|
package/dist/panel.d.ts
CHANGED
package/dist/panel.js
CHANGED
|
@@ -38,6 +38,7 @@ const THEME_TOKEN_VARS = {
|
|
|
38
38
|
busyBg: "--dsh-update-busy-bg",
|
|
39
39
|
busyBorder: "--dsh-update-busy-border",
|
|
40
40
|
busyText: "--dsh-update-busy-text",
|
|
41
|
+
newText: "--dsh-update-new-text",
|
|
41
42
|
fontSans: "--dsh-update-font-sans",
|
|
42
43
|
fontSerif: "--dsh-update-font-serif",
|
|
43
44
|
fontMono: "--dsh-update-font-mono",
|
|
@@ -72,7 +73,8 @@ const THEME_TOKEN_COLOR_KEYS = /* @__PURE__ */ new Set([
|
|
|
72
73
|
"badText",
|
|
73
74
|
"busyBg",
|
|
74
75
|
"busyBorder",
|
|
75
|
-
"busyText"
|
|
76
|
+
"busyText",
|
|
77
|
+
"newText"
|
|
76
78
|
]);
|
|
77
79
|
function themeTokensError(raw) {
|
|
78
80
|
return new Error(`[dsh-plugin-update] \u4E3B\u9898\u53C2\u6570 themeTokens \u975E\u6CD5\uFF1A\u53EA\u6536\u5DF2\u77E5 token \u952E\uFF08\u989C\u8272\u7528 hex \u6216\u82F1\u6587\u540D\uFF0C\u5B57\u4F53/\u5706\u89D2/\u9634\u5F71/\u5C3A\u5BF8\u4E3A\u5B89\u5168 CSS \u503C\uFF0CentryScale \u4E3A\u5927\u4E8E 0 \u7684\u6709\u9650\u6570\uFF09\uFF08\u6536\u5230 ${JSON.stringify(raw ?? null)})`);
|
|
@@ -575,7 +577,7 @@ function panelViewModelCore(input, lang) {
|
|
|
575
577
|
};
|
|
576
578
|
}
|
|
577
579
|
const UPDATE_PANEL_CSS = [
|
|
578
|
-
'.dsh-upd{font:14px/1.
|
|
580
|
+
'.dsh-upd{font:14px/1.75 system-ui,"Microsoft YaHei",sans-serif;color:var(--dsh-update-text,#1f2937);',
|
|
579
581
|
"background:var(--dsh-update-bg,#ffffff);border:1px solid var(--dsh-update-border,#e5e7eb);border-radius:8px;padding:12px 14px;max-width:560px;",
|
|
580
582
|
// 横幅配色走变量(浅色默认 + 深色覆盖,见下方 dark 媒体块):硬编码浅色会让深色下
|
|
581
583
|
// 「浅底 + 浅字」读不出来(现场回归:默认主题深色模式更新横幅白底浅字)。
|
|
@@ -583,7 +585,7 @@ const UPDATE_PANEL_CSS = [
|
|
|
583
585
|
"--dsh-update-bad-bg:#fef2f2;--dsh-update-bad-border:#dc2626;--dsh-update-busy-bg:#eff6ff;--dsh-update-busy-border:#2563eb}",
|
|
584
586
|
".dsh-upd *{box-sizing:border-box}",
|
|
585
587
|
".dsh-upd button{font:inherit;border:1px solid var(--dsh-update-border-strong,#d1d5db);border-radius:var(--dsh-update-radius-button,6px);background:var(--dsh-update-button-bg,#f9fafb);",
|
|
586
|
-
"color:inherit;padding:
|
|
588
|
+
"color:inherit;padding:7px 14px;cursor:pointer;margin:2px 6px 2px 0}",
|
|
587
589
|
".dsh-upd button:disabled{opacity:.45;cursor:not-allowed}",
|
|
588
590
|
".dsh-upd button:focus-visible{outline:2px solid var(--dsh-update-focus,#2563eb);outline-offset:1px}",
|
|
589
591
|
'.dsh-upd button[data-primary="1"]{background:var(--dsh-update-primary,#2563eb);border-color:var(--dsh-update-primary,#2563eb);color:#fff}',
|
|
@@ -613,7 +615,8 @@ const UPDATE_PANEL_CSS = [
|
|
|
613
615
|
".dsh-upd-overlay .dsh-upd{background:var(--dsh-update-bg,#ffffff);max-height:85vh;display:flex;flex-direction:column;overflow:hidden}",
|
|
614
616
|
// —— 弹窗分栏滚动:头(抬头/档案头/横幅/版本条)与尾固定,只有 01–05 章节区滚动 ——
|
|
615
617
|
".dsh-upd-body{min-height:0}",
|
|
616
|
-
".dsh-upd-
|
|
618
|
+
".dsh-upd-body *{min-width:0}",
|
|
619
|
+
".dsh-upd-overlay .dsh-upd-body{flex:1 1 auto;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--dsh-update-border,#e5e7eb) transparent}",
|
|
617
620
|
".dsh-upd-overlay .dsh-upd-body::-webkit-scrollbar{width:8px}",
|
|
618
621
|
".dsh-upd-overlay .dsh-upd-body::-webkit-scrollbar-thumb{background:var(--dsh-update-border,#e5e7eb);border-radius:4px}",
|
|
619
622
|
".dsh-upd-overlay .dsh-upd-body::-webkit-scrollbar-track{background:transparent}",
|
|
@@ -628,11 +631,11 @@ const UPDATE_PANEL_CSS = [
|
|
|
628
631
|
".dsh-upd-meta{font-size:12.5px;opacity:.75}",
|
|
629
632
|
".dsh-upd-proftag{font-family:Consolas,Menlo,monospace;font-size:11px;border:1px solid var(--dsh-update-border,#d1d5db);border-radius:3px;padding:0 5px;margin-left:6px;letter-spacing:.06em}",
|
|
630
633
|
".dsh-upd-strip{display:flex;flex-wrap:wrap;margin:8px 0 0;border:1px solid var(--dsh-update-border,#e5e7eb);border-radius:4px;overflow:hidden;font-size:12.5px}",
|
|
631
|
-
".dsh-upd-strip>div{flex:1 1 110px;padding:6px 10px;border-left:1px solid var(--dsh-update-border,#e5e7eb)}",
|
|
634
|
+
".dsh-upd-strip>div{flex:1 1 110px;min-width:0;padding:6px 10px;border-left:1px solid var(--dsh-update-border,#e5e7eb)}",
|
|
632
635
|
".dsh-upd-strip>div:first-child{border-left:0}",
|
|
633
636
|
".dsh-upd-strip-k{display:block;font-size:11px;letter-spacing:.14em;opacity:.7}",
|
|
634
|
-
".dsh-upd-strip-v{font-family:Consolas,Menlo,monospace;font-size:12.5px}",
|
|
635
|
-
".dsh-upd-chapter{margin-top:
|
|
637
|
+
".dsh-upd-strip-v{font-family:Consolas,Menlo,monospace;font-size:12.5px;word-break:break-all}",
|
|
638
|
+
".dsh-upd-chapter{margin-top:18px;padding-top:14px;border-top:1px solid var(--dsh-update-border,#e5e7eb)}",
|
|
636
639
|
// 右下角独立 footer 区(#47 定案 A):与第一章 actions 脱钩,右对齐,一次找到。
|
|
637
640
|
".dsh-upd-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px;padding-top:10px;border-top:1px solid var(--dsh-update-border,#e5e7eb)}",
|
|
638
641
|
".dsh-upd-foot-note{margin-right:auto;font-size:12px;opacity:.7}",
|
|
@@ -645,7 +648,7 @@ const UPDATE_PANEL_CSS = [
|
|
|
645
648
|
".dsh-upd-chap-note{flex:none;font-size:12px;opacity:.75}",
|
|
646
649
|
".dsh-upd-chap-note button{margin:0}",
|
|
647
650
|
// 更新队列两行键值(用户定案的设计):结构两主题共用,皮肤各自收敛。
|
|
648
|
-
".dsh-upd-qrow{display:flex;align-items:baseline;gap:10px;padding:6px 0}",
|
|
651
|
+
".dsh-upd-qrow{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px;padding:6px 0;min-width:0}",
|
|
649
652
|
".dsh-upd-qrow+.dsh-upd-qrow{border-top:1px solid var(--dsh-update-border,#e5e7eb)}",
|
|
650
653
|
".dsh-upd-qdot{width:8px;height:8px;border-radius:50%;flex:none;align-self:center;background:currentColor;opacity:.5}",
|
|
651
654
|
'.dsh-upd-qdot[data-tone="busy"]{background:var(--dsh-update-warn-border,#d97706);opacity:1}',
|
package/package.json
CHANGED
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dsh-plugin-update",
|
|
3
|
-
"version": "0.7.
|
|
4
|
-
"description": "可复用的更新系统装成的 npm 包:任何 DSH 插件照文档能集成检查更新等功能(地图 #579)",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"author": "王辰浩",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/FeatherHunter/dsh-plugin-update.git"
|
|
10
|
-
},
|
|
11
|
-
"engines": {
|
|
12
|
-
"node": ">=22"
|
|
13
|
-
},
|
|
14
|
-
"type": "module",
|
|
15
|
-
"types": "./dist/host.d.ts",
|
|
16
|
-
"exports": {
|
|
17
|
-
".": {
|
|
18
|
-
"types": "./dist/host.d.ts",
|
|
19
|
-
"default": "./dist/host.js"
|
|
20
|
-
},
|
|
21
|
-
"./panel": {
|
|
22
|
-
"types": "./dist/panel.d.ts",
|
|
23
|
-
"default": "./dist/panel.js"
|
|
24
|
-
},
|
|
25
|
-
"./client": {
|
|
26
|
-
"types": "./dist/client.d.ts",
|
|
27
|
-
"default": "./dist/client.js"
|
|
28
|
-
},
|
|
29
|
-
"./batch": {
|
|
30
|
-
"types": "./dist/host-batch.d.ts",
|
|
31
|
-
"default": "./dist/host-batch.js"
|
|
32
|
-
},
|
|
33
|
-
"./panel-batch": {
|
|
34
|
-
"types": "./dist/panel-batch.d.ts",
|
|
35
|
-
"default": "./dist/panel-batch.js"
|
|
36
|
-
},
|
|
37
|
-
"./entry": {
|
|
38
|
-
"types": "./dist/entry.d.ts",
|
|
39
|
-
"default": "./dist/entry.js"
|
|
40
|
-
},
|
|
41
|
-
"./entry-batch": {
|
|
42
|
-
"types": "./dist/entry-batch.d.ts",
|
|
43
|
-
"default": "./dist/entry-batch.js"
|
|
44
|
-
},
|
|
45
|
-
"./http": {
|
|
46
|
-
"types": "./dist/http.d.ts",
|
|
47
|
-
"default": "./dist/http.js"
|
|
48
|
-
},
|
|
49
|
-
"./package.json": "./package.json"
|
|
50
|
-
},
|
|
51
|
-
"files": [
|
|
52
|
-
"dist",
|
|
53
|
-
"derive-client-values.mjs",
|
|
54
|
-
"event-list.template.json",
|
|
55
|
-
"README.md",
|
|
56
|
-
"CHANGELOG.md",
|
|
57
|
-
"LICENSE"
|
|
58
|
-
],
|
|
59
|
-
"publishConfig": {
|
|
60
|
-
"access": "public",
|
|
61
|
-
"registry": "https://registry.npmjs.org/"
|
|
62
|
-
},
|
|
63
|
-
"scripts": {
|
|
64
|
-
"typecheck": "tsc -p tsconfig.json",
|
|
65
|
-
"build": "node build.mjs",
|
|
66
|
-
"prepack": "npm run build",
|
|
67
|
-
"pretest": "npm run build",
|
|
68
|
-
"test": "node --test tests/*.test.mjs",
|
|
69
|
-
"gate:bilingual": "node scripts/bilingual-gate.mjs",
|
|
70
|
-
"gate:bilingual:release": "node scripts/bilingual-gate.mjs --release"
|
|
71
|
-
},
|
|
72
|
-
"devDependencies": {
|
|
73
|
-
"esbuild": "^0.28.2",
|
|
74
|
-
"typescript": "5.6.3"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-plugin-update",
|
|
3
|
+
"version": "0.7.1",
|
|
4
|
+
"description": "可复用的更新系统装成的 npm 包:任何 DSH 插件照文档能集成检查更新等功能(地图 #579)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "王辰浩",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/FeatherHunter/dsh-plugin-update.git"
|
|
10
|
+
},
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=22"
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
15
|
+
"types": "./dist/host.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/host.d.ts",
|
|
19
|
+
"default": "./dist/host.js"
|
|
20
|
+
},
|
|
21
|
+
"./panel": {
|
|
22
|
+
"types": "./dist/panel.d.ts",
|
|
23
|
+
"default": "./dist/panel.js"
|
|
24
|
+
},
|
|
25
|
+
"./client": {
|
|
26
|
+
"types": "./dist/client.d.ts",
|
|
27
|
+
"default": "./dist/client.js"
|
|
28
|
+
},
|
|
29
|
+
"./batch": {
|
|
30
|
+
"types": "./dist/host-batch.d.ts",
|
|
31
|
+
"default": "./dist/host-batch.js"
|
|
32
|
+
},
|
|
33
|
+
"./panel-batch": {
|
|
34
|
+
"types": "./dist/panel-batch.d.ts",
|
|
35
|
+
"default": "./dist/panel-batch.js"
|
|
36
|
+
},
|
|
37
|
+
"./entry": {
|
|
38
|
+
"types": "./dist/entry.d.ts",
|
|
39
|
+
"default": "./dist/entry.js"
|
|
40
|
+
},
|
|
41
|
+
"./entry-batch": {
|
|
42
|
+
"types": "./dist/entry-batch.d.ts",
|
|
43
|
+
"default": "./dist/entry-batch.js"
|
|
44
|
+
},
|
|
45
|
+
"./http": {
|
|
46
|
+
"types": "./dist/http.d.ts",
|
|
47
|
+
"default": "./dist/http.js"
|
|
48
|
+
},
|
|
49
|
+
"./package.json": "./package.json"
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"dist",
|
|
53
|
+
"derive-client-values.mjs",
|
|
54
|
+
"event-list.template.json",
|
|
55
|
+
"README.md",
|
|
56
|
+
"CHANGELOG.md",
|
|
57
|
+
"LICENSE"
|
|
58
|
+
],
|
|
59
|
+
"publishConfig": {
|
|
60
|
+
"access": "public",
|
|
61
|
+
"registry": "https://registry.npmjs.org/"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"typecheck": "tsc -p tsconfig.json",
|
|
65
|
+
"build": "node build.mjs",
|
|
66
|
+
"prepack": "npm run build",
|
|
67
|
+
"pretest": "npm run build",
|
|
68
|
+
"test": "node --test tests/*.test.mjs",
|
|
69
|
+
"gate:bilingual": "node scripts/bilingual-gate.mjs",
|
|
70
|
+
"gate:bilingual:release": "node scripts/bilingual-gate.mjs --release"
|
|
71
|
+
},
|
|
72
|
+
"devDependencies": {
|
|
73
|
+
"esbuild": "^0.28.2",
|
|
74
|
+
"typescript": "5.6.3"
|
|
75
|
+
}
|
|
76
|
+
}
|