dsh-update-center 0.8.3 → 0.9.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.
package/README.md CHANGED
@@ -62,6 +62,10 @@ dsh plugin --profile web add link:<本插件目录>
62
62
  - 更新由 `$DSH_HOME/update-center` 下的独立 worker 执行,停止或重启 dsh 不会中断任务。
63
63
  - npm 插件按包名精准更新,不会因为点击单个插件而更新整个 profile。
64
64
  - npm 更新完成后核对 `node_modules` 中的实际版本;版本没有变化时返回失败。
65
+ - npm 更新失败自动回滚到更新前版本("失败 = 保持原样");检查与执行之间上游又发新版时,装上的版本若就是当前 npm latest 则按实际版本放行,不做无谓回滚。
66
+ - dsh 更新后一键「回退上一版」:重置到任务记录的更新前提交并重新 `pnpm install` + `pnpm run build`,回退前校验工作区干净与目标提交存在。
67
+ - 「重启 dsh」助手在拉起新进程后保留 15 秒存活观察期:新进程若提前退出,把退出码与诊断结论写入 `~/.dsh/update-center/dsh-web.stderr.log`,不再静默失败。
68
+ - 更新任务历史只保留最近 20 个(状态与 spec 文件一并清理),不再无限累积。
65
69
  - npm 更新/安装/卸载后按官方 `dsh plugin` 的规则对账 `dsh.profile.bundles`;模板 bundle 不受影响。
66
70
  - link 与 preset 只能通过已安装清单中的包名更新,API 不接受任意目录。
67
71
  - Git 插件只更新了 `src` 而没有更新 `lib/dist` 时,自动执行包的 `build` 脚本。
package/lib/client.js CHANGED
@@ -313,7 +313,7 @@ window.__ModuleLoader__.load({
313
313
  if (job?.error) lines.push(String(job.error));
314
314
  return lines.filter(Boolean).join("\n");
315
315
  }
316
- function pollJob(id, activeButton) {
316
+ function pollJob(id, activeButton, failures = 0) {
317
317
  activeJobId = id;
318
318
  fetchJson("/job?id=" + encodeURIComponent(id)).then((data) => {
319
319
  const job = data?.job;
@@ -350,8 +350,14 @@ window.__ModuleLoader__.load({
350
350
  });
351
351
  }).catch((error) => {
352
352
  if (!page.isConnected) return;
353
+ if (failures >= 20) {
354
+ activeJobId = "";
355
+ setBusy(false, activeButton);
356
+ say(`更新进度连续 ${failures} 次读取失败,已停止轮询:${String(error)}\n任务状态保存在磁盘上,稍后刷新面板即可查看结果。`, "err");
357
+ return;
358
+ }
353
359
  say("暂时无法读取更新进度,dsh 重启后会从磁盘恢复任务状态:" + String(error), "info");
354
- window.setTimeout(() => pollJob(id, activeButton), 1500);
360
+ window.setTimeout(() => pollJob(id, activeButton, failures + 1), 1500);
355
361
  });
356
362
  }
357
363
  function resumeJob(job) {
@@ -423,12 +429,15 @@ window.__ModuleLoader__.load({
423
429
  const actions = el("div", "uc-actions");
424
430
  const fullButton = actionButton("完整更新");
425
431
  const pullButton = actionButton("仅拉取代码", "secondary");
432
+ const rollbackButton = actionButton("回退上一版", "secondary");
426
433
  const canUpdate = checked && !repo?.error && !git.dirty && Number(git.behind) > 0;
427
434
  fullButton.disabled = !canUpdate;
428
435
  pullButton.disabled = !canUpdate;
436
+ rollbackButton.disabled = !checked || !!repo?.error || !!git.dirty;
429
437
  bindAction(fullButton, "/update-dsh", { full: true }, "完整更新会在独立后台任务中拉取代码、安装依赖并重新构建 dsh。任务完成后再重启,是否继续?", "正在创建后台更新任务…");
430
438
  bindAction(pullButton, "/update-dsh", { full: false }, "仅拉取代码不会安装依赖或重新构建,重启后仍可能运行旧产物。确认继续?", "正在创建后台更新任务…");
431
- actions.append(fullButton, pullButton);
439
+ bindAction(rollbackButton, "/rollback-dsh", {}, "回退会把 dsh 源码重置到上一次更新前的提交,并重新安装依赖、重新构建(需要工作区干净)。完成后需重启 dsh web。被回退的提交仍可用 git reflog 找回。是否继续?", "正在创建后台回退任务…");
440
+ actions.append(fullButton, pullButton, rollbackButton);
432
441
  row.append(info, actions);
433
442
  repoContent.append(row);
434
443
  if (git.dirty && Array.isArray(git.dirtyFiles) && git.dirtyFiles.length) {
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../src/client/index.ts"],"sourcesContent":["/**\r\n * dsh-update-center 设置页面板。\r\n *\r\n * 同源 API 提供状态、检查、更新、市场(安装/卸载/禁用)动作;React 组件只负责\r\n * 面板挂载,界面使用原生 DOM,避免把宿主的 React 运行时打进插件 bundle。\r\n * 市场数据来自 awesome-dsh-plugin.com 清单(服务端白名单拉取,本地快照兜底)。\r\n */\r\nimport { createElement, useEffect, useRef } from 'react'\r\nimport type { ReactNode } from 'react'\r\nimport type { SlotsService } from '@deepseek-ai/dsh-client-ui-slots'\r\n\r\ntype ClientContext = {\r\n slots: SlotsService\r\n}\r\n\r\ntype MessageKind = 'ok' | 'info' | 'err'\r\ntype BadgeKind = 'ok' | 'warn' | 'err' | 'muted' | 'update'\r\n\r\nexport const inject = ['slots']\r\n\r\nconst API = '/update-center/api'\r\nconst MARKET_PAGE_SIZE = 500\r\n\r\nfunction el<K extends keyof HTMLElementTagNameMap>(tag: K, cls?: string, text?: string): HTMLElementTagNameMap[K] {\r\n const element = document.createElement(tag)\r\n if (cls) element.className = cls\r\n if (text !== void 0) element.textContent = text\r\n return element\r\n}\r\n\r\nconst styles = `\r\n.uc-page{font-family:inherit;font-size:13px;line-height:1.5;width:min(100%,920px);min-width:0;overflow:hidden;padding:8px 4px 24px;color:var(--dsw-alias-label-primary)}\r\n.uc-toolbar,.uc-section-head,.uc-row-main,.uc-meta,.uc-actions{display:flex;align-items:center}\r\n.uc-toolbar{justify-content:space-between;gap:12px;padding:4px 0 16px;border-bottom:1px solid var(--dsw-alias-border-l2)}\r\n.uc-toolbar h2{font-size:16px;line-height:1.3;margin:0;letter-spacing:0}\r\n.uc-summary{color:var(--dsw-alias-label-tertiary);font-size:12px}\r\n.uc-tabs{display:flex;gap:4px;padding:12px 0 0;border-bottom:1px solid var(--dsw-alias-border-l2)}\r\n.uc-tab{border:1px solid transparent;border-bottom:0;border-radius:6px 6px 0 0;padding:6px 14px;background:transparent;color:var(--dsw-alias-label-secondary);font:inherit;font-size:12px;cursor:pointer}\r\n.uc-tab.active{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);font-weight:600}\r\n.uc-section{padding:18px 0;border-bottom:1px solid var(--dsw-alias-border-l2)}\r\n.uc-section-head{justify-content:space-between;gap:12px;margin-bottom:10px}\r\n.uc-section h3{font-size:13px;line-height:1.4;margin:0;letter-spacing:0}\r\n.uc-repo-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:16px;align-items:center}\r\n.uc-row-main{gap:8px;min-width:0;flex-wrap:wrap}\r\n.uc-version{font-weight:650}\r\n.uc-meta{gap:6px;color:var(--dsw-alias-label-tertiary);font-size:11px;min-width:0;flex-wrap:wrap}\r\n.uc-path{display:block;min-width:0;max-width:460px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\r\n.uc-actions{gap:8px;justify-content:flex-end;flex-wrap:wrap}\r\n.uc-btn{min-height:32px;border:1px solid transparent;border-radius:6px;padding:6px 12px;background:#2878d0;color:#fff;font:inherit;font-size:12px;cursor:pointer;white-space:nowrap;text-decoration:none}\r\n.uc-btn.secondary{background:transparent;border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary)}\r\n.uc-btn.danger{background:transparent;border-color:rgba(210,58,58,.45);color:#d23a3a}\r\n.uc-btn:disabled{opacity:.45;cursor:not-allowed}\r\n.uc-badge,.uc-tag{display:inline-flex;align-items:center;min-height:20px;border-radius:4px;padding:1px 7px;font-size:10px;line-height:1.4;white-space:nowrap}\r\n.uc-badge.ok{background:rgba(39,174,96,.14);color:#28945a}\r\n.uc-badge.warn{background:rgba(224,166,22,.16);color:#a87800}\r\n.uc-badge.err{background:rgba(210,58,58,.13);color:#d23a3a}\r\n.uc-badge.muted{background:var(--dsw-alias-bg-multi-select);color:var(--dsw-alias-label-tertiary)}\r\n.uc-badge.update{background:rgba(40,120,208,.14);color:#2878d0}\r\n.uc-list{list-style:none;margin:0;padding:0}\r\n.uc-item{display:grid;grid-template-columns:minmax(220px,1fr) minmax(130px,auto) auto;gap:12px;align-items:center;padding:11px 0;border-top:1px solid var(--dsw-alias-border-l2)}\r\n.uc-item>*{min-width:0}\r\n.uc-item:first-child{border-top:0}\r\n.uc-name{font-weight:600;overflow-wrap:anywhere}\r\n.uc-desc{color:var(--dsw-alias-label-secondary);font-size:12px;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\r\n.uc-tags{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-top:3px}\r\n.uc-tag{background:var(--dsw-alias-bg-multi-select);color:var(--dsw-alias-label-secondary)}\r\n.uc-tag.cat{border:none;font:inherit;cursor:pointer;box-shadow:none}\r\n.uc-tag.cat:hover{background:var(--dsw-alias-bg-layer-3)}\r\n.uc-tag.npm{background:rgba(40,120,208,.12);color:#2878d0}\r\n.uc-tag.link{background:rgba(39,174,96,.12);color:#28945a}\r\n.uc-tag.preset{background:rgba(151,89,182,.13);color:#9858b4}\r\n.uc-status{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}\r\n.uc-empty{padding:14px 0;color:var(--dsw-alias-label-tertiary)}\r\n.uc-market-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:14px 0}\r\n.uc-input,.uc-select{min-height:32px;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:inherit;font-size:12px;padding:6px 10px}\r\n.uc-input{flex:1 1 200px;min-width:160px}\r\n.uc-select{flex:0 0 auto}\r\n.uc-market-meta{width:100%;color:var(--dsw-alias-label-tertiary);font-size:11px}\r\n.uc-load-more{display:flex;justify-content:center;padding:16px 0;border-top:1px solid var(--dsw-alias-border-l2)}\r\n.uc-msg{margin-top:14px;padding:10px 12px;border-left:3px solid var(--dsw-alias-border-l3);background:var(--dsw-alias-bg-layer-2);white-space:pre-wrap;max-height:260px;overflow:auto;font-size:12px}\r\n.uc-msg.ok{border-color:#28945a}\r\n.uc-msg.err{border-color:#d23a3a}\r\n.uc-msg.info{border-color:#2878d0}\r\n@media(max-width:680px){\r\n [class$=\"_panel\"]:has(.uc-page)>nav{width:52px!important;flex-basis:52px!important;padding-inline:6px!important}\r\n [class$=\"_panel\"]:has(.uc-page)>nav [class$=\"_navTitle\"]{display:none!important}\r\n [class$=\"_panel\"]:has(.uc-page)>nav [class$=\"_navCell\"]{width:40px!important;min-width:40px!important;justify-content:center!important;padding-inline:0!important}\r\n [class$=\"_panel\"]:has(.uc-page)>nav [class$=\"_navLabel\"]{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}\r\n .uc-toolbar{align-items:flex-start;flex-direction:column}\r\n .uc-section-head{align-items:flex-start;flex-wrap:wrap}\r\n .uc-repo-row,.uc-item{grid-template-columns:1fr}\r\n .uc-actions,.uc-status{justify-content:flex-start}\r\n .uc-path{width:100%;max-width:100%}\r\n}\r\n`\r\n\r\nasync function fetchJson(path: string, init?: RequestInit): Promise<any> {\r\n const response = await fetch(API + path, {\r\n headers: { 'content-type': 'application/json' },\r\n ...init,\r\n })\r\n const data = await response.json().catch(() => ({ ok: false, error: `HTTP ${response.status}` }))\r\n if (!response.ok) throw new Error(data?.error || `HTTP ${response.status}`)\r\n return data\r\n}\r\n\r\nfunction buildPanel(): HTMLElement {\r\n const style = el('style')\r\n style.textContent = styles\r\n\r\n const page = el('div', 'uc-page')\r\n page.append(style)\r\n\r\n const toolbar = el('div', 'uc-toolbar')\r\n const heading = el('div')\r\n heading.append(el('h2', undefined, '更新中心'))\r\n const summary = el('div', 'uc-summary', '正在读取本地状态…')\r\n heading.append(summary)\r\n const checkButton = el('button', 'uc-btn secondary', '检查更新')\r\n checkButton.type = 'button'\r\n const updateAllButton = el('button', 'uc-btn', '全部更新')\r\n updateAllButton.type = 'button'\r\n updateAllButton.disabled = true\r\n const restartButton = el('button', 'uc-btn secondary', '重启 dsh')\r\n restartButton.type = 'button'\r\n restartButton.title = '更新完成后一键重启 dsh web(当前会话会中断)'\r\n const toolbarActions = el('div', 'uc-actions')\r\n toolbarActions.append(checkButton, updateAllButton, restartButton)\r\n toolbar.append(heading, toolbarActions)\r\n\r\n // ── Tab 切换:已安装 / 插件市场 ──\r\n const tabs = el('div', 'uc-tabs')\r\n const installedTab = el('button', 'uc-tab active', '已安装')\r\n installedTab.type = 'button'\r\n const marketTab = el('button', 'uc-tab', '插件市场')\r\n marketTab.type = 'button'\r\n tabs.append(installedTab, marketTab)\r\n\r\n const installedView = el('div')\r\n\r\n const repoSection = el('section', 'uc-section')\r\n const repoHead = el('div', 'uc-section-head')\r\n repoHead.append(el('h3', undefined, 'dsh 本体'))\r\n const repoBadge = badge('未检查', 'muted')\r\n repoHead.append(repoBadge)\r\n const repoContent = el('div')\r\n repoSection.append(repoHead, repoContent)\r\n\r\n const pluginSection = el('section', 'uc-section')\r\n const pluginHead = el('div', 'uc-section-head')\r\n pluginHead.append(el('h3', undefined, '已安装插件'))\r\n const pluginCount = badge('0 个', 'muted')\r\n pluginHead.append(pluginCount)\r\n const pluginList = el('ul', 'uc-list')\r\n pluginSection.append(pluginHead, pluginList)\r\n installedView.append(repoSection, pluginSection)\r\n\r\n // ── 市场视图 ──\r\n const marketView = el('div')\r\n marketView.style.display = 'none'\r\n const marketSection = el('section', 'uc-section')\r\n const marketHead = el('div', 'uc-market-head')\r\n const searchInput = el('input', 'uc-input')\r\n searchInput.type = 'search'\r\n searchInput.placeholder = '搜索插件名 / 作者 / 描述…'\r\n const categorySelect = el('select', 'uc-select')\r\n const sortSelect = el('select', 'uc-select')\r\n const sortStars = el('option', undefined, '星标最多')\r\n sortStars.value = 'stars'\r\n const sortDefault = el('option', undefined, '默认顺序')\r\n sortDefault.value = 'default'\r\n const sortAdded = el('option', undefined, '最近添加')\r\n sortAdded.value = 'added'\r\n sortSelect.append(sortStars, sortDefault, sortAdded)\r\n sortSelect.value = 'stars'\r\n const refreshButton = el('button', 'uc-btn secondary', '刷新清单')\r\n refreshButton.type = 'button'\r\n const marketMeta = el('div', 'uc-market-meta', '尚未加载市场清单')\r\n marketHead.append(searchInput, categorySelect, sortSelect, refreshButton, marketMeta)\r\n const marketList = el('ul', 'uc-list')\r\n marketSection.append(marketHead, marketList)\r\n marketView.append(marketSection)\r\n\r\n const message = el('div', 'uc-msg')\r\n message.style.display = 'none'\r\n page.append(toolbar, tabs, installedView, marketView, message)\r\n\r\n const buttons = new Set<HTMLButtonElement>([checkButton, updateAllButton, restartButton])\r\n let checked = false\r\n // 最近一次 /check 的完整结果(含 npm latest、link behind 等远端信息)。\r\n // 更新任务完成后据此与 /status 的新版本号合并,避免每更新一个插件就要重新检查。\r\n let lastCheckData: any = null\r\n let activeJobId = ''\r\n let marketData: any = null\r\n let marketQuery = ''\r\n let marketCategory = ''\r\n let marketSort = 'stars'\r\n let marketVisibleLimit = MARKET_PAGE_SIZE\r\n let lastStatusData: any = null\r\n\r\n /** 已安装插件里有多少项可更新(用于“全部更新”按钮态)。 */\r\n function pluginUpdateCount(plugins: any[]): number {\r\n return plugins.filter((plugin) => {\r\n const git = plugin.git ?? {}\r\n return (plugin.kind === 'npm' && plugin.latest && plugin.latest !== plugin.version)\r\n || ((plugin.kind === 'link' || plugin.kind === 'preset') && Number(git.behind) > 0 && !git.dirty)\r\n }).length\r\n }\r\n\r\n /** 更新任务完成后合成状态:/status 提供最新的本地版本号(新装/更新后的真实\r\n * 版本、新插件条目),上次 /check 提供尚未更新插件的远端信息(npm latest、\r\n * git behind)。刚更新成功的插件标记为已最新。这样更新完一个插件后其余\r\n * 插件的更新按钮仍然可用,不必重新“检查更新”。 */\r\n function mergeStatusAfterJob(fresh: any, updatedTargets: Set<string>): any {\r\n if (!lastCheckData) return fresh\r\n const checkPlugins: any[] = Array.isArray(lastCheckData.plugins) ? lastCheckData.plugins : []\r\n const checkByName = new Map(checkPlugins.map((plugin) => [String(plugin.name), plugin]))\r\n const plugins = (Array.isArray(fresh.plugins) ? fresh.plugins : []).map((plugin: any) => {\r\n const check = checkByName.get(String(plugin.name))\r\n if (!check) {\r\n // 上次检查后新装的插件(如任务里刚 install):装的就是最新版。\r\n if (plugin.kind === 'npm' && plugin.version) return { ...plugin, latest: plugin.version }\r\n return plugin\r\n }\r\n const merged = { ...plugin }\r\n if (updatedTargets.has(String(plugin.name))) {\r\n if (plugin.kind === 'npm') {\r\n if (plugin.version) merged.latest = plugin.version\r\n else delete merged.latest // 读不到新版本号时宁可显示“未检查”,不残留旧的“可更新”\r\n }\r\n if (merged.git) merged.git = { ...merged.git, behind: 0 }\r\n } else {\r\n if (check.latest != null) merged.latest = check.latest\r\n if (check.git) merged.git = check.git\r\n if (check.upstream) merged.upstream = check.upstream\r\n }\r\n return merged\r\n })\r\n // repo:/status 的 behind 是对本地远端 ref 的实时计数(上次 fetch 后仍有效),\r\n // fetchOk 沿用上次检查结果。\r\n const repo = { ...fresh.repo }\r\n const checkRepo = lastCheckData.repo ?? {}\r\n if (checkRepo.fetchOk !== undefined) {\r\n repo.fetchOk = checkRepo.fetchOk\r\n repo.fetchErr = checkRepo.fetchErr\r\n }\r\n // /status 不带 summary,客户端按合并结果重算。\r\n const repoBehind = Number(repo?.git?.behind ?? 0)\r\n const pluginUpdates = pluginUpdateCount(plugins)\r\n return {\r\n ...fresh,\r\n repo,\r\n plugins,\r\n summary: {\r\n repoUpdates: repoBehind,\r\n pluginUpdates,\r\n totalUpdates: (repoBehind > 0 ? 1 : 0) + pluginUpdates,\r\n failedChecks: 0,\r\n },\r\n // 摘要时间沿用检查时间(合并结果的远端信息来自那次检查)。\r\n ts: lastCheckData.ts ?? Date.now(),\r\n }\r\n }\r\n\r\n /** 市场清单里与某个已安装依赖对应的条目(npm 名或仓库名匹配)。 */\r\n function marketEntryFor(name: string): any | null {\r\n const plugins: any[] = Array.isArray(marketData?.plugins) ? marketData.plugins : []\r\n return plugins.find((entry) => entry.name === name || (entry.npm && entry.npm === name)) ?? null\r\n }\r\n\r\n function externalLink(text: string, url: string): HTMLAnchorElement {\r\n const link = el('a', 'uc-meta', text)\r\n link.href = url\r\n link.target = '_blank'\r\n link.rel = 'noreferrer'\r\n return link\r\n }\r\n\r\n function badge(text: string, kind: BadgeKind): HTMLSpanElement {\r\n return el('span', 'uc-badge ' + kind, text)\r\n }\r\n\r\n function say(text: string, kind: MessageKind = 'info'): void {\r\n message.textContent = text\r\n message.style.display = text ? 'block' : 'none'\r\n message.className = 'uc-msg ' + kind\r\n }\r\n\r\n function setBusy(active: boolean, activeButton?: HTMLButtonElement, label?: string): void {\r\n for (const button of buttons) {\r\n if (!button.isConnected) {\r\n buttons.delete(button)\r\n continue\r\n }\r\n if (active) {\r\n button.dataset.disabledBeforeBusy = button.disabled ? '1' : '0'\r\n button.disabled = true\r\n } else if (button.dataset.disabledBeforeBusy) {\r\n button.disabled = button.dataset.disabledBeforeBusy === '1'\r\n delete button.dataset.disabledBeforeBusy\r\n }\r\n }\r\n if (!activeButton) return\r\n if (active) {\r\n activeButton.dataset.originalLabel = activeButton.textContent ?? ''\r\n if (label) activeButton.textContent = label\r\n } else if (activeButton.dataset.originalLabel) {\r\n activeButton.textContent = activeButton.dataset.originalLabel\r\n delete activeButton.dataset.originalLabel\r\n }\r\n }\r\n\r\n function actionButton(label: string, variant: 'primary' | 'secondary' | 'danger' = 'primary'): HTMLButtonElement {\r\n const cls = variant === 'primary' ? 'uc-btn' : `uc-btn ${variant}`\r\n const button = el('button', cls, label)\r\n button.type = 'button'\r\n buttons.add(button)\r\n return button\r\n }\r\n\r\n function updateSummary(data: any): void {\r\n if (data?.job?.status === 'queued' || data?.job?.status === 'running') {\r\n summary.textContent = `后台更新中 · ${String(data.job.message || data.job.stage || '')}`\r\n return\r\n }\r\n if (!checked) {\r\n summary.textContent = '本地状态已载入,点击“检查更新”获取远端状态'\r\n return\r\n }\r\n const total = Number(data?.summary?.totalUpdates ?? 0)\r\n const time = data?.ts ? new Date(data.ts).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) : ''\r\n summary.textContent = total > 0 ? `发现 ${total} 项可更新 · ${time}` : `全部为最新 · ${time}`\r\n }\r\n\r\n function jobText(job: any): string {\r\n const lines = [String(job?.message || '更新任务')]\r\n if (Array.isArray(job?.steps)) lines.push(...job.steps.map(String))\r\n if (job?.error) lines.push(String(job.error))\r\n return lines.filter(Boolean).join('\\n')\r\n }\r\n\r\n function pollJob(id: string, activeButton?: HTMLButtonElement): void {\r\n activeJobId = id\r\n fetchJson('/job?id=' + encodeURIComponent(id))\r\n .then((data) => {\r\n const job = data?.job\r\n if (!job) throw new Error('更新任务不存在')\r\n if (job.status === 'queued' || job.status === 'running') {\r\n say(jobText(job), 'info')\r\n if (page.isConnected) window.setTimeout(() => pollJob(id, activeButton), 1000)\r\n return\r\n }\r\n activeJobId = ''\r\n // 任务完成后不清空检查状态:把刚更新成功的插件标为已最新,其余插件\r\n // 沿用上次检查的远端信息,更新按钮继续可用(无需重新“检查更新”)。\r\n const updatedTargets = new Set<string>()\r\n if (job.status === 'completed') {\r\n if (Array.isArray(job.results)) {\r\n for (const entry of job.results) {\r\n if (entry?.ok) updatedTargets.add(String(entry.target))\r\n }\r\n } else if ((job.action === 'npm' || job.action === 'link') && job.target) {\r\n updatedTargets.add(String(job.target))\r\n }\r\n }\r\n const done = (status: 'completed' | 'failed') => {\r\n if (status === 'completed') {\r\n const suffix = job.restartRequired ? '\\n\\n更新已核验完成,现在可以重启 dsh web。' : ''\r\n say(jobText(job) + suffix, 'ok')\r\n } else {\r\n say(jobText(job), 'err')\r\n }\r\n }\r\n // 状态刷新与任务轮询是两种失败:任务已终态,状态刷新失败不该重试轮询,\r\n // 只需恢复按钮并展示任务结果。\r\n return fetchJson('/status?fresh=1')\r\n .then((fresh) => {\r\n if (!fresh?.ok) throw new Error(fresh?.error || '状态读取失败')\r\n const merged = checked && lastCheckData ? mergeStatusAfterJob(fresh, updatedTargets) : fresh\r\n if (merged !== fresh) lastCheckData = merged\r\n // 先恢复按钮再 render:render 会按“任务已结束”重新启用工具栏按钮,\r\n // 顺序反了会把 setBusy 记录的旧禁用态又恢复回去。\r\n setBusy(false, activeButton)\r\n render(merged)\r\n if (marketData) void loadMarket(false, true)\r\n done(job.status === 'completed' ? 'completed' : 'failed')\r\n })\r\n .catch((error) => {\r\n setBusy(false, activeButton)\r\n say(jobText(job) + `\\n\\n(列表状态刷新失败:${String(error)},可稍后点“检查更新”重新获取。)`, 'info')\r\n })\r\n })\r\n .catch((error) => {\r\n if (!page.isConnected) return\r\n say('暂时无法读取更新进度,dsh 重启后会从磁盘恢复任务状态:' + String(error), 'info')\r\n window.setTimeout(() => pollJob(id, activeButton), 1500)\r\n })\r\n }\r\n\r\n function resumeJob(job: any): void {\r\n if (!job?.id || activeJobId === job.id) return\r\n if (job.status === 'queued' || job.status === 'running') {\r\n setBusy(true)\r\n pollJob(String(job.id))\r\n }\r\n }\r\n\r\n /** 统一动作绑定:POST 后要么直接返回结果(disable/enable),要么轮询 job。 */\r\n function bindAction(button: HTMLButtonElement, path: string, body: Record<string, unknown>, confirmation: string, startingNote: string): void {\r\n button.addEventListener('click', () => {\r\n if (!window.confirm(confirmation)) return\r\n setBusy(true, button, '处理中…')\r\n say(startingNote, 'info')\r\n fetchJson(path, { method: 'POST', body: JSON.stringify(body) })\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.result || data?.error || '操作失败')\r\n const id = String(data?.job?.id || '')\r\n if (!id) {\r\n setBusy(false, button)\r\n say(String(data?.result || '操作成功'), 'ok')\r\n return refreshStatus(false, true).then(() => {\r\n if (marketData) void loadMarket(false, true)\r\n })\r\n }\r\n button.textContent = '后台执行中…'\r\n pollJob(id, button)\r\n })\r\n .catch((error) => {\r\n setBusy(false, button)\r\n say('请求失败:' + String(error), 'err')\r\n })\r\n })\r\n }\r\n\r\n function renderRepo(repo: any): void {\r\n repoContent.textContent = ''\r\n const git = repo?.git ?? {}\r\n const row = el('div', 'uc-repo-row')\r\n const info = el('div')\r\n const main = el('div', 'uc-row-main')\r\n main.append(el('span', 'uc-version', String(repo?.version || '未知版本')))\r\n if (git.head) main.append(el('span', 'uc-meta', String(git.head)))\r\n if (git.branch) main.append(el('span', 'uc-tag', String(git.branch)))\r\n info.append(main)\r\n const meta = el('div', 'uc-meta')\r\n if (repo?.path) meta.append(el('span', 'uc-path', String(repo.path)))\r\n if (git.ahead > 0) meta.append(el('span', undefined, `本地领先 ${git.ahead}`))\r\n info.append(meta)\r\n\r\n repoBadge.className = 'uc-badge muted'\r\n repoBadge.textContent = checked ? '状态未知' : '未检查'\r\n if (repo?.error) {\r\n repoBadge.className = 'uc-badge err'\r\n repoBadge.textContent = '仓库不可用'\r\n } else if (git.dirty) {\r\n repoBadge.className = 'uc-badge warn'\r\n repoBadge.textContent = '有未提交改动'\r\n } else if (checked && repo?.fetchOk === false) {\r\n repoBadge.className = 'uc-badge err'\r\n repoBadge.textContent = '检查失败'\r\n } else if (checked && git.behind > 0) {\r\n repoBadge.className = 'uc-badge update'\r\n repoBadge.textContent = `落后 ${git.behind} 个提交`\r\n } else if (checked && typeof git.behind === 'number') {\r\n repoBadge.className = 'uc-badge ok'\r\n repoBadge.textContent = '已是最新'\r\n }\r\n\r\n const actions = el('div', 'uc-actions')\r\n const fullButton = actionButton('完整更新')\r\n const pullButton = actionButton('仅拉取代码', 'secondary')\r\n const canUpdate = checked && !repo?.error && !git.dirty && Number(git.behind) > 0\r\n fullButton.disabled = !canUpdate\r\n pullButton.disabled = !canUpdate\r\n bindAction(fullButton, '/update-dsh', { full: true }, '完整更新会在独立后台任务中拉取代码、安装依赖并重新构建 dsh。任务完成后再重启,是否继续?', '正在创建后台更新任务…')\r\n bindAction(pullButton, '/update-dsh', { full: false }, '仅拉取代码不会安装依赖或重新构建,重启后仍可能运行旧产物。确认继续?', '正在创建后台更新任务…')\r\n actions.append(fullButton, pullButton)\r\n row.append(info, actions)\r\n repoContent.append(row)\r\n\r\n if (git.dirty && Array.isArray(git.dirtyFiles) && git.dirtyFiles.length) {\r\n const dirty = el('div', 'uc-msg info', `为保护现有工作,更新已禁用:\\n${git.dirtyFiles.join('\\n')}`)\r\n repoContent.append(dirty)\r\n }\r\n }\r\n\r\n function renderPlugins(plugins: any[]): void {\r\n pluginList.textContent = ''\r\n pluginCount.textContent = `${plugins.length} 个`\r\n if (!plugins.length) {\r\n pluginList.append(el('li', 'uc-empty', '当前 profile 没有外部插件,去“插件市场”看看?'))\r\n return\r\n }\r\n\r\n for (const plugin of plugins) {\r\n const item = el('li', 'uc-item')\r\n const identity = el('div')\r\n identity.append(el('div', 'uc-name', String(plugin.name)))\r\n const marketEntry = marketEntryFor(String(plugin.name))\r\n const description = marketEntry?.description?.zh || marketEntry?.description?.en\r\n if (description) identity.append(el('div', 'uc-desc', String(description)))\r\n const tags = el('div', 'uc-tags')\r\n const kind = plugin.kind === 'preset' ? 'preset' : plugin.kind === 'link' ? 'link' : 'npm'\r\n tags.append(el('span', 'uc-tag ' + kind, kind))\r\n if (plugin.bundled) tags.append(el('span', 'uc-tag', 'bundle'))\r\n if (plugin.upstream && String(plugin.upstream).includes('/')) {\r\n tags.append(externalLink(String(plugin.upstream), `https://github.com/${plugin.upstream}`))\r\n } else if (plugin.upstream) {\r\n tags.append(el('span', 'uc-meta', String(plugin.upstream)))\r\n }\r\n if (plugin.linkDir) tags.append(el('span', 'uc-meta uc-path', String(plugin.linkDir)))\r\n identity.append(tags)\r\n\r\n const status = el('div', 'uc-status')\r\n status.append(el('span', 'uc-meta', plugin.version ? `v${plugin.version}` : '版本未知'))\r\n const git = plugin.git ?? {}\r\n let updateAvailable = false\r\n let blocked = false\r\n if (plugin.disabled) {\r\n status.append(badge('已禁用', 'muted'))\r\n }\r\n if ((kind === 'link' || kind === 'preset') && git.dirty) {\r\n status.append(badge('有未提交改动', 'warn'))\r\n blocked = true\r\n } else if ((kind === 'link' || kind === 'preset') && checked && git.fetchOk === false) {\r\n status.append(badge('检查失败', 'err'))\r\n } else if ((kind === 'link' || kind === 'preset') && checked && Number(git.behind) > 0) {\r\n status.append(badge(`落后 ${git.behind}`, 'update'))\r\n updateAvailable = true\r\n } else if (kind === 'npm' && checked && plugin.latest && plugin.latest !== plugin.version) {\r\n status.append(badge(`可更新至 ${plugin.latest}`, 'update'))\r\n updateAvailable = true\r\n } else if (checked && ((kind === 'npm' && plugin.latest) || typeof git.behind === 'number')) {\r\n status.append(badge('已是最新', 'ok'))\r\n } else if (!plugin.disabled) {\r\n status.append(badge('未检查', 'muted'))\r\n }\r\n\r\n const actions = el('div', 'uc-actions')\r\n const updateButton = actionButton('更新')\r\n updateButton.disabled = !updateAvailable || blocked\r\n if (kind === 'npm') {\r\n bindAction(updateButton, '/update-npm', { name: plugin.name }, `后台更新 ${plugin.name} 到最新版,并核对实际安装版本。任务完成后再重启,是否继续?`, '正在创建后台更新任务…')\r\n } else {\r\n bindAction(updateButton, '/update-link', { name: plugin.name }, `后台更新本地插件 ${plugin.name};若只更新源码,会自动重新构建运行产物。是否继续?`, '正在创建后台更新任务…')\r\n }\r\n actions.append(updateButton)\r\n if (kind === 'npm') {\r\n const toggleButton = actionButton(plugin.disabled ? '启用' : '禁用', 'secondary')\r\n bindAction(toggleButton, plugin.disabled ? '/enable' : '/disable', { name: plugin.name },\r\n plugin.disabled ? `恢复启用 ${plugin.name}?重启 dsh web 后生效。` : `禁用 ${plugin.name}?只是写入配置不卸载,重启 dsh web 后生效。`,\r\n '正在更新配置…')\r\n actions.append(toggleButton)\r\n const removeButton = actionButton('卸载', 'danger')\r\n bindAction(removeButton, '/uninstall', { name: plugin.name }, `从 profile 卸载 ${plugin.name}(pnpm remove + 移出 bundles)。已禁用状态会一并清理。任务完成后再重启,是否继续?`, '正在创建后台卸载任务…')\r\n actions.append(removeButton)\r\n }\r\n item.append(identity, status, actions)\r\n pluginList.append(item)\r\n }\r\n }\r\n\r\n // ── 市场渲染 ──\r\n function renderCategorySelect(): void {\r\n const categories = marketData?.categories ?? {}\r\n const previous = marketCategory\r\n categorySelect.textContent = ''\r\n const all = el('option', undefined, '全部分类')\r\n all.value = ''\r\n categorySelect.append(all)\r\n for (const [key, label] of Object.entries<any>(categories)) {\r\n const option = el('option', undefined, String(label?.zh || label?.en || key))\r\n option.value = key\r\n categorySelect.append(option)\r\n }\r\n marketCategory = previous && [...categorySelect.options].some((o) => o.value === previous) ? previous : ''\r\n categorySelect.value = marketCategory\r\n }\r\n\r\n function renderMarket(): void {\r\n marketList.textContent = ''\r\n if (!marketData) {\r\n marketList.append(el('li', 'uc-empty', '清单尚未加载'))\r\n return\r\n }\r\n const plugins: any[] = Array.isArray(marketData.plugins) ? marketData.plugins : []\r\n const installedSet = new Set<string>(Array.isArray(marketData.installed) ? marketData.installed.map(String) : [])\r\n const query = marketQuery.trim().toLowerCase()\r\n const filtered = plugins.filter((entry) => {\r\n if (marketCategory && entry.category !== marketCategory) return false\r\n if (!query) return true\r\n const haystack = [entry.name, entry.owner, entry.npm, entry.description?.zh, entry.description?.en]\r\n .filter(Boolean).join(' ').toLowerCase()\r\n return haystack.includes(query)\r\n })\r\n // 排序:星标最多 / 最近添加;同值保持清单原顺序(sort 稳定)。\r\n if (marketSort === 'stars') {\r\n filtered.sort((a, b) => Number(b.stars ?? 0) - Number(a.stars ?? 0))\r\n } else if (marketSort === 'added') {\r\n filtered.sort((a, b) => (Date.parse(String(b.added ?? '')) || 0) - (Date.parse(String(a.added ?? '')) || 0))\r\n }\r\n const sourceLabel = { registry: '本仓库 plugins.json', github: 'GitHub topic:dsh-plugin', disk: '本地缓存', snapshot: '内置快照', network: '网络' }[String(marketData.source)] ?? marketData.source\r\n const visibleCount = Math.min(filtered.length, marketVisibleLimit)\r\n marketMeta.textContent = `来源:${sourceLabel} · 扫描于 ${String(marketData.updated || '未知')} · 共 ${plugins.length} 个,筛选出 ${filtered.length} 个 · 已显示 ${visibleCount} 个`\r\n if (!filtered.length) {\r\n marketList.append(el('li', 'uc-empty', '没有匹配的插件'))\r\n return\r\n }\r\n for (const entry of filtered.slice(0, marketVisibleLimit)) {\r\n const installed = installedSet.has(String(entry.name)) || (entry.npm && installedSet.has(String(entry.npm)))\r\n const item = el('li', 'uc-item')\r\n const identity = el('div')\r\n const nameRow = el('div', 'uc-name')\r\n if (entry.url) {\r\n nameRow.append(externalLink(String(entry.name), String(entry.url)))\r\n } else {\r\n nameRow.textContent = String(entry.name)\r\n }\r\n identity.append(nameRow)\r\n const description = entry.description?.zh || entry.description?.en || ''\r\n if (description) identity.append(el('div', 'uc-desc', String(description)))\r\n const tags = el('div', 'uc-tags')\r\n if (entry.category && marketData?.categories?.[entry.category]) {\r\n const catLabel = marketData.categories[entry.category]\r\n const catTag = el('button', 'uc-tag cat', String(catLabel?.zh || catLabel?.en || entry.category))\r\n catTag.type = 'button'\r\n catTag.title = '按此分类筛选'\r\n catTag.addEventListener('click', () => {\r\n marketCategory = String(entry.category)\r\n categorySelect.value = marketCategory\r\n renderMarket()\r\n })\r\n tags.append(catTag)\r\n }\r\n if (entry.owner) tags.append(el('span', 'uc-meta', String(entry.owner)))\r\n if (entry.installMode === 'manual') tags.append(el('span', 'uc-tag preset', '套装'))\r\n else if (entry.npm) tags.append(el('span', 'uc-tag npm', 'npm'))\r\n else tags.append(el('span', 'uc-tag', 'github'))\r\n identity.append(tags)\r\n\r\n const status = el('div', 'uc-status')\r\n const stars = Number(entry.stars ?? 0)\r\n status.append(el('span', 'uc-meta', stars > 0 ? `★ ${stars}` : '暂无星标'))\r\n const statusPlugin = (lastStatusData?.plugins ?? []).find((plugin: any) =>\r\n plugin.name === entry.npm || plugin.name === entry.name)\r\n const updatable = statusPlugin\r\n && ((statusPlugin.kind === 'npm' && statusPlugin.latest && statusPlugin.latest !== statusPlugin.version)\r\n || Number(statusPlugin.git?.behind) > 0)\r\n\r\n const actions = el('div', 'uc-actions')\r\n if (entry.installMode === 'manual') {\r\n status.append(badge('手动安装', 'muted'))\r\n const guideLink = el('a', 'uc-btn', '安装说明')\r\n guideLink.href = String(entry.url)\r\n guideLink.target = '_blank'\r\n guideLink.rel = 'noreferrer'\r\n actions.append(guideLink)\r\n } else if (installed) {\r\n status.append(updatable ? badge('可更新', 'update') : badge('已安装', 'ok'))\r\n const removeButton = actionButton('卸载', 'danger')\r\n bindAction(removeButton, '/uninstall', { name: entry.npm || entry.name }, `从 profile 卸载 ${entry.npm || entry.name}?任务完成后再重启,是否继续?`, '正在创建后台卸载任务…')\r\n actions.append(removeButton)\r\n } else {\r\n const installButton = actionButton('安装')\r\n bindAction(installButton, '/install', { name: entry.name }, `在后台安装 ${entry.name}(优先 npm,来源不一致时回退 GitHub)。安装完成后需要重启 dsh web,是否继续?`, '正在创建后台安装任务…')\r\n actions.append(installButton)\r\n }\r\n item.append(identity, status, actions)\r\n marketList.append(item)\r\n }\r\n if (filtered.length > marketVisibleLimit) {\r\n const remaining = filtered.length - marketVisibleLimit\r\n const loadMoreItem = el('li', 'uc-load-more')\r\n const loadMoreButton = el('button', 'uc-btn secondary', `显示更多(剩余 ${remaining} 个)`)\r\n loadMoreButton.type = 'button'\r\n loadMoreButton.addEventListener('click', () => {\r\n marketVisibleLimit += MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n loadMoreItem.append(loadMoreButton)\r\n marketList.append(loadMoreItem)\r\n }\r\n }\r\n\r\n async function loadMarket(force: boolean, silent: boolean): Promise<void> {\r\n if (force) setBusy(true, refreshButton, '刷新中…')\r\n if (!silent) say('正在加载插件市场清单…', 'info')\r\n try {\r\n // 刷新会触发服务端网络拉取并重写缓存(有副作用),与服务端一致走 POST\r\n const data = await fetchJson(force ? '/market/refresh' : '/market', force ? { method: 'POST' } : undefined)\r\n if (!data?.ok) throw new Error(data?.error || '清单加载失败')\r\n marketData = data\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderCategorySelect()\r\n renderMarket()\r\n if (lastStatusData) renderPlugins(lastStatusData.plugins ?? [])\r\n if (!silent) say('', 'info')\r\n } catch (error) {\r\n if (!silent) say('市场清单加载失败:' + String(error), 'err')\r\n } finally {\r\n if (force) setBusy(false, refreshButton)\r\n }\r\n }\r\n\r\n function switchTab(target: 'installed' | 'market'): void {\r\n const showMarket = target === 'market'\r\n installedTab.className = showMarket ? 'uc-tab' : 'uc-tab active'\r\n marketTab.className = showMarket ? 'uc-tab active' : 'uc-tab'\r\n installedView.style.display = showMarket ? 'none' : 'block'\r\n marketView.style.display = showMarket ? 'block' : 'none'\r\n if (showMarket && !marketData) void loadMarket(false, false)\r\n }\r\n\r\n function render(data: any): void {\r\n lastStatusData = data\r\n renderRepo(data?.repo)\r\n renderPlugins(Array.isArray(data?.plugins) ? data.plugins : [])\r\n updateSummary(data)\r\n // “全部更新”不依赖本地检查状态:服务端 /update-all 会先做一次完整检查再\r\n // 组批量任务,因此除了有后台任务在跑时都保持可点。\r\n const job = data?.job ?? {}\r\n const jobRunning = job.status === 'queued' || job.status === 'running'\r\n updateAllButton.disabled = jobRunning\r\n updateAllButton.title = jobRunning\r\n ? '有更新任务正在执行,请等待完成后再批量更新'\r\n : '先检查远端,再一键更新所有可更新的插件(不含 dsh 本体)'\r\n // 有更新任务执行时不建议重启(会中断后台任务),服务端同样拒绝\r\n restartButton.disabled = jobRunning\r\n restartButton.title = restartButton.disabled\r\n ? '有更新任务正在执行,请等待完成后再重启'\r\n : '更新完成后一键重启 dsh web(当前会话会中断)'\r\n }\r\n\r\n function refreshStatus(showJob = true, fresh = false): Promise<void> {\r\n return fetchJson(fresh ? '/status?fresh=1' : '/status')\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.error || '状态读取失败')\r\n // 已检查过时用检查数据补全远端信息(/status 不带 latest/behind),\r\n // 避免禁用/启用等轻量动作后丢失“可更新”徽章。\r\n render(checked && lastCheckData && !data.summary ? mergeStatusAfterJob(data, new Set()) : data)\r\n if (showJob) {\r\n resumeJob(data.job)\r\n if (data?.job?.status === 'completed') say(jobText(data.job), 'ok')\r\n if (data?.job?.status === 'failed') say(jobText(data.job), 'err')\r\n }\r\n })\r\n .catch((error) => say('状态读取失败:' + String(error), 'err'))\r\n }\r\n\r\n installedTab.addEventListener('click', () => switchTab('installed'))\r\n marketTab.addEventListener('click', () => switchTab('market'))\r\n searchInput.addEventListener('input', () => {\r\n marketQuery = searchInput.value\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n categorySelect.addEventListener('change', () => {\r\n marketCategory = categorySelect.value\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n sortSelect.addEventListener('change', () => {\r\n marketSort = sortSelect.value\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n refreshButton.addEventListener('click', () => void loadMarket(true, false))\r\n bindAction(updateAllButton, '/update-all', {}, '将先自动检查远端更新,再把所有可更新的插件(不含 dsh 本体)排成一个后台批量任务串行执行,单个失败不影响其余。检查可能需要十几秒。任务完成后再重启,是否继续?', '正在检查并创建批量更新任务,可能需要十几秒…')\r\n\r\n /** 重启下发后等待服务恢复:先看到请求失败(旧进程已停),再看到成功(新\r\n * 进程就绪),然后自动刷新页面。期间保持全部按钮禁用,避免把请求打进\r\n * 一个正在关闭/正在启动的服务。超时则恢复按钮并提示手动处理。 */\r\n function waitForRestart(): void {\r\n const deadline = Date.now() + 180_000\r\n let sawDown = false\r\n const tick = () => {\r\n if (!page.isConnected) return\r\n if (Date.now() > deadline) {\r\n setBusy(false, restartButton)\r\n say('等待 dsh 重启超时。请手动刷新页面;若一直打不开,可查看 ~/.dsh/update-center/dsh-web.stderr.log 或用 Start-DSH 启动并查看控制台输出。', 'err')\r\n return\r\n }\r\n fetchJson('/status')\r\n .then(() => {\r\n if (sawDown) {\r\n say('dsh 已重启完成,正在刷新页面…', 'ok')\r\n window.location.reload()\r\n return\r\n }\r\n // 旧进程还活着(重启指令的延迟窗口内),继续等它退出\r\n window.setTimeout(tick, 1000)\r\n })\r\n .catch(() => {\r\n sawDown = true\r\n window.setTimeout(tick, 2000)\r\n })\r\n }\r\n window.setTimeout(tick, 1500)\r\n }\r\n\r\n restartButton.addEventListener('click', () => {\r\n const job = lastStatusData?.job ?? {}\r\n const active = job.status === 'queued' || job.status === 'running'\r\n // 按钮在任务运行中已被禁用;这里兜底面板状态滞后的情形(服务端同样会拒绝)\r\n if (active) {\r\n say('有更新任务正在执行,请等待任务完成后再重启(重启会中断后台任务)。', 'err')\r\n return\r\n }\r\n if (!window.confirm('重启 dsh web?当前会话会中断,重启完成后页面会自动刷新。')) return\r\n setBusy(true, restartButton, '重启中…')\r\n say('正在下发重启指令…', 'info')\r\n fetchJson('/restart', { method: 'POST', body: '{}' })\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.result || data?.error || '重启失败')\r\n say('重启指令已下发,dsh 即将重启;恢复后面板会自动刷新。', 'info')\r\n waitForRestart()\r\n })\r\n .catch((error) => {\r\n setBusy(false, restartButton)\r\n say('重启请求失败:' + String(error), 'err')\r\n })\r\n })\r\n\r\n checkButton.addEventListener('click', () => {\r\n setBusy(true, checkButton, '检查中…')\r\n say('正在检查 dsh 和插件的远端状态…', 'info')\r\n fetchJson('/check', { method: 'POST', body: '{}' })\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.error || '检查失败')\r\n checked = true\r\n lastCheckData = data\r\n render(data)\r\n if (marketData) renderMarket()\r\n const total = Number(data?.summary?.totalUpdates ?? 0)\r\n const failed = Number(data?.summary?.failedChecks ?? 0)\r\n if (failed > 0) {\r\n say(`检查完成,发现 ${total} 项可更新,另有 ${failed} 项检查失败。`, 'err')\r\n } else {\r\n say(total > 0 ? `检查完成,发现 ${total} 项可更新。` : '检查完成,当前全部为最新。', total > 0 ? 'info' : 'ok')\r\n }\r\n })\r\n .catch((error) => say('检查失败:' + String(error), 'err'))\r\n .finally(() => setBusy(false, checkButton))\r\n })\r\n\r\n void refreshStatus()\r\n return page\r\n}\r\n\r\nfunction UpdateCenterPanel(): ReactNode {\r\n const hostRef = useRef<HTMLDivElement | null>(null)\r\n useEffect(() => {\r\n const host = hostRef.current\r\n if (!host) return\r\n const panel = buildPanel()\r\n host.appendChild(panel)\r\n return () => { panel.remove() }\r\n }, [])\r\n return createElement('div', { ref: hostRef })\r\n}\r\n\r\nexport function apply(ctx: ClientContext): void {\r\n ctx.effect(() => ctx.slots.inject('settings.section', () =>\r\n ctx.slots.register({\r\n name: 'settings.section',\r\n id: 'update-center',\r\n order: 60,\r\n label: () => '更新中心',\r\n }, UpdateCenterPanel),\r\n ), 'dsh-update-center: panel')\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":[],"sources":["../src/client/index.ts"],"sourcesContent":["/**\r\n * dsh-update-center 设置页面板。\r\n *\r\n * 同源 API 提供状态、检查、更新、市场(安装/卸载/禁用)动作;React 组件只负责\r\n * 面板挂载,界面使用原生 DOM,避免把宿主的 React 运行时打进插件 bundle。\r\n * 市场数据来自 awesome-dsh-plugin.com 清单(服务端白名单拉取,本地快照兜底)。\r\n */\r\nimport { createElement, useEffect, useRef } from 'react'\r\nimport type { ReactNode } from 'react'\r\nimport type { SlotsService } from '@deepseek-ai/dsh-client-ui-slots'\r\n\r\ntype ClientContext = {\r\n slots: SlotsService\r\n}\r\n\r\ntype MessageKind = 'ok' | 'info' | 'err'\r\ntype BadgeKind = 'ok' | 'warn' | 'err' | 'muted' | 'update'\r\n\r\nexport const inject = ['slots']\r\n\r\nconst API = '/update-center/api'\r\nconst MARKET_PAGE_SIZE = 500\r\n\r\nfunction el<K extends keyof HTMLElementTagNameMap>(tag: K, cls?: string, text?: string): HTMLElementTagNameMap[K] {\r\n const element = document.createElement(tag)\r\n if (cls) element.className = cls\r\n if (text !== void 0) element.textContent = text\r\n return element\r\n}\r\n\r\nconst styles = `\r\n.uc-page{font-family:inherit;font-size:13px;line-height:1.5;width:min(100%,920px);min-width:0;overflow:hidden;padding:8px 4px 24px;color:var(--dsw-alias-label-primary)}\r\n.uc-toolbar,.uc-section-head,.uc-row-main,.uc-meta,.uc-actions{display:flex;align-items:center}\r\n.uc-toolbar{justify-content:space-between;gap:12px;padding:4px 0 16px;border-bottom:1px solid var(--dsw-alias-border-l2)}\r\n.uc-toolbar h2{font-size:16px;line-height:1.3;margin:0;letter-spacing:0}\r\n.uc-summary{color:var(--dsw-alias-label-tertiary);font-size:12px}\r\n.uc-tabs{display:flex;gap:4px;padding:12px 0 0;border-bottom:1px solid var(--dsw-alias-border-l2)}\r\n.uc-tab{border:1px solid transparent;border-bottom:0;border-radius:6px 6px 0 0;padding:6px 14px;background:transparent;color:var(--dsw-alias-label-secondary);font:inherit;font-size:12px;cursor:pointer}\r\n.uc-tab.active{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);font-weight:600}\r\n.uc-section{padding:18px 0;border-bottom:1px solid var(--dsw-alias-border-l2)}\r\n.uc-section-head{justify-content:space-between;gap:12px;margin-bottom:10px}\r\n.uc-section h3{font-size:13px;line-height:1.4;margin:0;letter-spacing:0}\r\n.uc-repo-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:16px;align-items:center}\r\n.uc-row-main{gap:8px;min-width:0;flex-wrap:wrap}\r\n.uc-version{font-weight:650}\r\n.uc-meta{gap:6px;color:var(--dsw-alias-label-tertiary);font-size:11px;min-width:0;flex-wrap:wrap}\r\n.uc-path{display:block;min-width:0;max-width:460px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\r\n.uc-actions{gap:8px;justify-content:flex-end;flex-wrap:wrap}\r\n.uc-btn{min-height:32px;border:1px solid transparent;border-radius:6px;padding:6px 12px;background:#2878d0;color:#fff;font:inherit;font-size:12px;cursor:pointer;white-space:nowrap;text-decoration:none}\r\n.uc-btn.secondary{background:transparent;border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary)}\r\n.uc-btn.danger{background:transparent;border-color:rgba(210,58,58,.45);color:#d23a3a}\r\n.uc-btn:disabled{opacity:.45;cursor:not-allowed}\r\n.uc-badge,.uc-tag{display:inline-flex;align-items:center;min-height:20px;border-radius:4px;padding:1px 7px;font-size:10px;line-height:1.4;white-space:nowrap}\r\n.uc-badge.ok{background:rgba(39,174,96,.14);color:#28945a}\r\n.uc-badge.warn{background:rgba(224,166,22,.16);color:#a87800}\r\n.uc-badge.err{background:rgba(210,58,58,.13);color:#d23a3a}\r\n.uc-badge.muted{background:var(--dsw-alias-bg-multi-select);color:var(--dsw-alias-label-tertiary)}\r\n.uc-badge.update{background:rgba(40,120,208,.14);color:#2878d0}\r\n.uc-list{list-style:none;margin:0;padding:0}\r\n.uc-item{display:grid;grid-template-columns:minmax(220px,1fr) minmax(130px,auto) auto;gap:12px;align-items:center;padding:11px 0;border-top:1px solid var(--dsw-alias-border-l2)}\r\n.uc-item>*{min-width:0}\r\n.uc-item:first-child{border-top:0}\r\n.uc-name{font-weight:600;overflow-wrap:anywhere}\r\n.uc-desc{color:var(--dsw-alias-label-secondary);font-size:12px;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\r\n.uc-tags{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-top:3px}\r\n.uc-tag{background:var(--dsw-alias-bg-multi-select);color:var(--dsw-alias-label-secondary)}\r\n.uc-tag.cat{border:none;font:inherit;cursor:pointer;box-shadow:none}\r\n.uc-tag.cat:hover{background:var(--dsw-alias-bg-layer-3)}\r\n.uc-tag.npm{background:rgba(40,120,208,.12);color:#2878d0}\r\n.uc-tag.link{background:rgba(39,174,96,.12);color:#28945a}\r\n.uc-tag.preset{background:rgba(151,89,182,.13);color:#9858b4}\r\n.uc-status{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}\r\n.uc-empty{padding:14px 0;color:var(--dsw-alias-label-tertiary)}\r\n.uc-market-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:14px 0}\r\n.uc-input,.uc-select{min-height:32px;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:inherit;font-size:12px;padding:6px 10px}\r\n.uc-input{flex:1 1 200px;min-width:160px}\r\n.uc-select{flex:0 0 auto}\r\n.uc-market-meta{width:100%;color:var(--dsw-alias-label-tertiary);font-size:11px}\r\n.uc-load-more{display:flex;justify-content:center;padding:16px 0;border-top:1px solid var(--dsw-alias-border-l2)}\r\n.uc-msg{margin-top:14px;padding:10px 12px;border-left:3px solid var(--dsw-alias-border-l3);background:var(--dsw-alias-bg-layer-2);white-space:pre-wrap;max-height:260px;overflow:auto;font-size:12px}\r\n.uc-msg.ok{border-color:#28945a}\r\n.uc-msg.err{border-color:#d23a3a}\r\n.uc-msg.info{border-color:#2878d0}\r\n@media(max-width:680px){\r\n [class$=\"_panel\"]:has(.uc-page)>nav{width:52px!important;flex-basis:52px!important;padding-inline:6px!important}\r\n [class$=\"_panel\"]:has(.uc-page)>nav [class$=\"_navTitle\"]{display:none!important}\r\n [class$=\"_panel\"]:has(.uc-page)>nav [class$=\"_navCell\"]{width:40px!important;min-width:40px!important;justify-content:center!important;padding-inline:0!important}\r\n [class$=\"_panel\"]:has(.uc-page)>nav [class$=\"_navLabel\"]{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}\r\n .uc-toolbar{align-items:flex-start;flex-direction:column}\r\n .uc-section-head{align-items:flex-start;flex-wrap:wrap}\r\n .uc-repo-row,.uc-item{grid-template-columns:1fr}\r\n .uc-actions,.uc-status{justify-content:flex-start}\r\n .uc-path{width:100%;max-width:100%}\r\n}\r\n`\r\n\r\nasync function fetchJson(path: string, init?: RequestInit): Promise<any> {\r\n const response = await fetch(API + path, {\r\n headers: { 'content-type': 'application/json' },\r\n ...init,\r\n })\r\n const data = await response.json().catch(() => ({ ok: false, error: `HTTP ${response.status}` }))\r\n if (!response.ok) throw new Error(data?.error || `HTTP ${response.status}`)\r\n return data\r\n}\r\n\r\nfunction buildPanel(): HTMLElement {\r\n const style = el('style')\r\n style.textContent = styles\r\n\r\n const page = el('div', 'uc-page')\r\n page.append(style)\r\n\r\n const toolbar = el('div', 'uc-toolbar')\r\n const heading = el('div')\r\n heading.append(el('h2', undefined, '更新中心'))\r\n const summary = el('div', 'uc-summary', '正在读取本地状态…')\r\n heading.append(summary)\r\n const checkButton = el('button', 'uc-btn secondary', '检查更新')\r\n checkButton.type = 'button'\r\n const updateAllButton = el('button', 'uc-btn', '全部更新')\r\n updateAllButton.type = 'button'\r\n updateAllButton.disabled = true\r\n const restartButton = el('button', 'uc-btn secondary', '重启 dsh')\r\n restartButton.type = 'button'\r\n restartButton.title = '更新完成后一键重启 dsh web(当前会话会中断)'\r\n const toolbarActions = el('div', 'uc-actions')\r\n toolbarActions.append(checkButton, updateAllButton, restartButton)\r\n toolbar.append(heading, toolbarActions)\r\n\r\n // ── Tab 切换:已安装 / 插件市场 ──\r\n const tabs = el('div', 'uc-tabs')\r\n const installedTab = el('button', 'uc-tab active', '已安装')\r\n installedTab.type = 'button'\r\n const marketTab = el('button', 'uc-tab', '插件市场')\r\n marketTab.type = 'button'\r\n tabs.append(installedTab, marketTab)\r\n\r\n const installedView = el('div')\r\n\r\n const repoSection = el('section', 'uc-section')\r\n const repoHead = el('div', 'uc-section-head')\r\n repoHead.append(el('h3', undefined, 'dsh 本体'))\r\n const repoBadge = badge('未检查', 'muted')\r\n repoHead.append(repoBadge)\r\n const repoContent = el('div')\r\n repoSection.append(repoHead, repoContent)\r\n\r\n const pluginSection = el('section', 'uc-section')\r\n const pluginHead = el('div', 'uc-section-head')\r\n pluginHead.append(el('h3', undefined, '已安装插件'))\r\n const pluginCount = badge('0 个', 'muted')\r\n pluginHead.append(pluginCount)\r\n const pluginList = el('ul', 'uc-list')\r\n pluginSection.append(pluginHead, pluginList)\r\n installedView.append(repoSection, pluginSection)\r\n\r\n // ── 市场视图 ──\r\n const marketView = el('div')\r\n marketView.style.display = 'none'\r\n const marketSection = el('section', 'uc-section')\r\n const marketHead = el('div', 'uc-market-head')\r\n const searchInput = el('input', 'uc-input')\r\n searchInput.type = 'search'\r\n searchInput.placeholder = '搜索插件名 / 作者 / 描述…'\r\n const categorySelect = el('select', 'uc-select')\r\n const sortSelect = el('select', 'uc-select')\r\n const sortStars = el('option', undefined, '星标最多')\r\n sortStars.value = 'stars'\r\n const sortDefault = el('option', undefined, '默认顺序')\r\n sortDefault.value = 'default'\r\n const sortAdded = el('option', undefined, '最近添加')\r\n sortAdded.value = 'added'\r\n sortSelect.append(sortStars, sortDefault, sortAdded)\r\n sortSelect.value = 'stars'\r\n const refreshButton = el('button', 'uc-btn secondary', '刷新清单')\r\n refreshButton.type = 'button'\r\n const marketMeta = el('div', 'uc-market-meta', '尚未加载市场清单')\r\n marketHead.append(searchInput, categorySelect, sortSelect, refreshButton, marketMeta)\r\n const marketList = el('ul', 'uc-list')\r\n marketSection.append(marketHead, marketList)\r\n marketView.append(marketSection)\r\n\r\n const message = el('div', 'uc-msg')\r\n message.style.display = 'none'\r\n page.append(toolbar, tabs, installedView, marketView, message)\r\n\r\n const buttons = new Set<HTMLButtonElement>([checkButton, updateAllButton, restartButton])\r\n let checked = false\r\n // 最近一次 /check 的完整结果(含 npm latest、link behind 等远端信息)。\r\n // 更新任务完成后据此与 /status 的新版本号合并,避免每更新一个插件就要重新检查。\r\n let lastCheckData: any = null\r\n let activeJobId = ''\r\n let marketData: any = null\r\n let marketQuery = ''\r\n let marketCategory = ''\r\n let marketSort = 'stars'\r\n let marketVisibleLimit = MARKET_PAGE_SIZE\r\n let lastStatusData: any = null\r\n\r\n /** 已安装插件里有多少项可更新(用于“全部更新”按钮态)。 */\r\n function pluginUpdateCount(plugins: any[]): number {\r\n return plugins.filter((plugin) => {\r\n const git = plugin.git ?? {}\r\n return (plugin.kind === 'npm' && plugin.latest && plugin.latest !== plugin.version)\r\n || ((plugin.kind === 'link' || plugin.kind === 'preset') && Number(git.behind) > 0 && !git.dirty)\r\n }).length\r\n }\r\n\r\n /** 更新任务完成后合成状态:/status 提供最新的本地版本号(新装/更新后的真实\r\n * 版本、新插件条目),上次 /check 提供尚未更新插件的远端信息(npm latest、\r\n * git behind)。刚更新成功的插件标记为已最新。这样更新完一个插件后其余\r\n * 插件的更新按钮仍然可用,不必重新“检查更新”。 */\r\n function mergeStatusAfterJob(fresh: any, updatedTargets: Set<string>): any {\r\n if (!lastCheckData) return fresh\r\n const checkPlugins: any[] = Array.isArray(lastCheckData.plugins) ? lastCheckData.plugins : []\r\n const checkByName = new Map(checkPlugins.map((plugin) => [String(plugin.name), plugin]))\r\n const plugins = (Array.isArray(fresh.plugins) ? fresh.plugins : []).map((plugin: any) => {\r\n const check = checkByName.get(String(plugin.name))\r\n if (!check) {\r\n // 上次检查后新装的插件(如任务里刚 install):装的就是最新版。\r\n if (plugin.kind === 'npm' && plugin.version) return { ...plugin, latest: plugin.version }\r\n return plugin\r\n }\r\n const merged = { ...plugin }\r\n if (updatedTargets.has(String(plugin.name))) {\r\n if (plugin.kind === 'npm') {\r\n if (plugin.version) merged.latest = plugin.version\r\n else delete merged.latest // 读不到新版本号时宁可显示“未检查”,不残留旧的“可更新”\r\n }\r\n if (merged.git) merged.git = { ...merged.git, behind: 0 }\r\n } else {\r\n if (check.latest != null) merged.latest = check.latest\r\n if (check.git) merged.git = check.git\r\n if (check.upstream) merged.upstream = check.upstream\r\n }\r\n return merged\r\n })\r\n // repo:/status 的 behind 是对本地远端 ref 的实时计数(上次 fetch 后仍有效),\r\n // fetchOk 沿用上次检查结果。\r\n const repo = { ...fresh.repo }\r\n const checkRepo = lastCheckData.repo ?? {}\r\n if (checkRepo.fetchOk !== undefined) {\r\n repo.fetchOk = checkRepo.fetchOk\r\n repo.fetchErr = checkRepo.fetchErr\r\n }\r\n // /status 不带 summary,客户端按合并结果重算。\r\n const repoBehind = Number(repo?.git?.behind ?? 0)\r\n const pluginUpdates = pluginUpdateCount(plugins)\r\n return {\r\n ...fresh,\r\n repo,\r\n plugins,\r\n summary: {\r\n repoUpdates: repoBehind,\r\n pluginUpdates,\r\n totalUpdates: (repoBehind > 0 ? 1 : 0) + pluginUpdates,\r\n failedChecks: 0,\r\n },\r\n // 摘要时间沿用检查时间(合并结果的远端信息来自那次检查)。\r\n ts: lastCheckData.ts ?? Date.now(),\r\n }\r\n }\r\n\r\n /** 市场清单里与某个已安装依赖对应的条目(npm 名或仓库名匹配)。 */\r\n function marketEntryFor(name: string): any | null {\r\n const plugins: any[] = Array.isArray(marketData?.plugins) ? marketData.plugins : []\r\n return plugins.find((entry) => entry.name === name || (entry.npm && entry.npm === name)) ?? null\r\n }\r\n\r\n function externalLink(text: string, url: string): HTMLAnchorElement {\r\n const link = el('a', 'uc-meta', text)\r\n link.href = url\r\n link.target = '_blank'\r\n link.rel = 'noreferrer'\r\n return link\r\n }\r\n\r\n function badge(text: string, kind: BadgeKind): HTMLSpanElement {\r\n return el('span', 'uc-badge ' + kind, text)\r\n }\r\n\r\n function say(text: string, kind: MessageKind = 'info'): void {\r\n message.textContent = text\r\n message.style.display = text ? 'block' : 'none'\r\n message.className = 'uc-msg ' + kind\r\n }\r\n\r\n function setBusy(active: boolean, activeButton?: HTMLButtonElement, label?: string): void {\r\n for (const button of buttons) {\r\n if (!button.isConnected) {\r\n buttons.delete(button)\r\n continue\r\n }\r\n if (active) {\r\n button.dataset.disabledBeforeBusy = button.disabled ? '1' : '0'\r\n button.disabled = true\r\n } else if (button.dataset.disabledBeforeBusy) {\r\n button.disabled = button.dataset.disabledBeforeBusy === '1'\r\n delete button.dataset.disabledBeforeBusy\r\n }\r\n }\r\n if (!activeButton) return\r\n if (active) {\r\n activeButton.dataset.originalLabel = activeButton.textContent ?? ''\r\n if (label) activeButton.textContent = label\r\n } else if (activeButton.dataset.originalLabel) {\r\n activeButton.textContent = activeButton.dataset.originalLabel\r\n delete activeButton.dataset.originalLabel\r\n }\r\n }\r\n\r\n function actionButton(label: string, variant: 'primary' | 'secondary' | 'danger' = 'primary'): HTMLButtonElement {\r\n const cls = variant === 'primary' ? 'uc-btn' : `uc-btn ${variant}`\r\n const button = el('button', cls, label)\r\n button.type = 'button'\r\n buttons.add(button)\r\n return button\r\n }\r\n\r\n function updateSummary(data: any): void {\r\n if (data?.job?.status === 'queued' || data?.job?.status === 'running') {\r\n summary.textContent = `后台更新中 · ${String(data.job.message || data.job.stage || '')}`\r\n return\r\n }\r\n if (!checked) {\r\n summary.textContent = '本地状态已载入,点击“检查更新”获取远端状态'\r\n return\r\n }\r\n const total = Number(data?.summary?.totalUpdates ?? 0)\r\n const time = data?.ts ? new Date(data.ts).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) : ''\r\n summary.textContent = total > 0 ? `发现 ${total} 项可更新 · ${time}` : `全部为最新 · ${time}`\r\n }\r\n\r\n function jobText(job: any): string {\r\n const lines = [String(job?.message || '更新任务')]\r\n if (Array.isArray(job?.steps)) lines.push(...job.steps.map(String))\r\n if (job?.error) lines.push(String(job.error))\r\n return lines.filter(Boolean).join('\\n')\r\n }\r\n\r\n function pollJob(id: string, activeButton?: HTMLButtonElement, failures = 0): void {\r\n activeJobId = id\r\n fetchJson('/job?id=' + encodeURIComponent(id))\r\n .then((data) => {\r\n const job = data?.job\r\n if (!job) throw new Error('更新任务不存在')\r\n if (job.status === 'queued' || job.status === 'running') {\r\n say(jobText(job), 'info')\r\n if (page.isConnected) window.setTimeout(() => pollJob(id, activeButton), 1000)\r\n return\r\n }\r\n activeJobId = ''\r\n // 任务完成后不清空检查状态:把刚更新成功的插件标为已最新,其余插件\r\n // 沿用上次检查的远端信息,更新按钮继续可用(无需重新“检查更新”)。\r\n const updatedTargets = new Set<string>()\r\n if (job.status === 'completed') {\r\n if (Array.isArray(job.results)) {\r\n for (const entry of job.results) {\r\n if (entry?.ok) updatedTargets.add(String(entry.target))\r\n }\r\n } else if ((job.action === 'npm' || job.action === 'link') && job.target) {\r\n updatedTargets.add(String(job.target))\r\n }\r\n }\r\n const done = (status: 'completed' | 'failed') => {\r\n if (status === 'completed') {\r\n const suffix = job.restartRequired ? '\\n\\n更新已核验完成,现在可以重启 dsh web。' : ''\r\n say(jobText(job) + suffix, 'ok')\r\n } else {\r\n say(jobText(job), 'err')\r\n }\r\n }\r\n // 状态刷新与任务轮询是两种失败:任务已终态,状态刷新失败不该重试轮询,\r\n // 只需恢复按钮并展示任务结果。\r\n return fetchJson('/status?fresh=1')\r\n .then((fresh) => {\r\n if (!fresh?.ok) throw new Error(fresh?.error || '状态读取失败')\r\n const merged = checked && lastCheckData ? mergeStatusAfterJob(fresh, updatedTargets) : fresh\r\n if (merged !== fresh) lastCheckData = merged\r\n // 先恢复按钮再 render:render 会按“任务已结束”重新启用工具栏按钮,\r\n // 顺序反了会把 setBusy 记录的旧禁用态又恢复回去。\r\n setBusy(false, activeButton)\r\n render(merged)\r\n if (marketData) void loadMarket(false, true)\r\n done(job.status === 'completed' ? 'completed' : 'failed')\r\n })\r\n .catch((error) => {\r\n setBusy(false, activeButton)\r\n say(jobText(job) + `\\n\\n(列表状态刷新失败:${String(error)},可稍后点“检查更新”重新获取。)`, 'info')\r\n })\r\n })\r\n .catch((error) => {\r\n if (!page.isConnected) return\r\n // 连续读取失败(dsh 已死/网络异常)时停止轮询并恢复按钮,任务状态\r\n // 在磁盘上不会丢,用户稍后刷新面板即可看到结果。\r\n if (failures >= 20) {\r\n activeJobId = ''\r\n setBusy(false, activeButton)\r\n say(`更新进度连续 ${failures} 次读取失败,已停止轮询:${String(error)}\\n任务状态保存在磁盘上,稍后刷新面板即可查看结果。`, 'err')\r\n return\r\n }\r\n say('暂时无法读取更新进度,dsh 重启后会从磁盘恢复任务状态:' + String(error), 'info')\r\n window.setTimeout(() => pollJob(id, activeButton, failures + 1), 1500)\r\n })\r\n }\r\n\r\n function resumeJob(job: any): void {\r\n if (!job?.id || activeJobId === job.id) return\r\n if (job.status === 'queued' || job.status === 'running') {\r\n setBusy(true)\r\n pollJob(String(job.id))\r\n }\r\n }\r\n\r\n /** 统一动作绑定:POST 后要么直接返回结果(disable/enable),要么轮询 job。 */\r\n function bindAction(button: HTMLButtonElement, path: string, body: Record<string, unknown>, confirmation: string, startingNote: string): void {\r\n button.addEventListener('click', () => {\r\n if (!window.confirm(confirmation)) return\r\n setBusy(true, button, '处理中…')\r\n say(startingNote, 'info')\r\n fetchJson(path, { method: 'POST', body: JSON.stringify(body) })\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.result || data?.error || '操作失败')\r\n const id = String(data?.job?.id || '')\r\n if (!id) {\r\n setBusy(false, button)\r\n say(String(data?.result || '操作成功'), 'ok')\r\n return refreshStatus(false, true).then(() => {\r\n if (marketData) void loadMarket(false, true)\r\n })\r\n }\r\n button.textContent = '后台执行中…'\r\n pollJob(id, button)\r\n })\r\n .catch((error) => {\r\n setBusy(false, button)\r\n say('请求失败:' + String(error), 'err')\r\n })\r\n })\r\n }\r\n\r\n function renderRepo(repo: any): void {\r\n repoContent.textContent = ''\r\n const git = repo?.git ?? {}\r\n const row = el('div', 'uc-repo-row')\r\n const info = el('div')\r\n const main = el('div', 'uc-row-main')\r\n main.append(el('span', 'uc-version', String(repo?.version || '未知版本')))\r\n if (git.head) main.append(el('span', 'uc-meta', String(git.head)))\r\n if (git.branch) main.append(el('span', 'uc-tag', String(git.branch)))\r\n info.append(main)\r\n const meta = el('div', 'uc-meta')\r\n if (repo?.path) meta.append(el('span', 'uc-path', String(repo.path)))\r\n if (git.ahead > 0) meta.append(el('span', undefined, `本地领先 ${git.ahead}`))\r\n info.append(meta)\r\n\r\n repoBadge.className = 'uc-badge muted'\r\n repoBadge.textContent = checked ? '状态未知' : '未检查'\r\n if (repo?.error) {\r\n repoBadge.className = 'uc-badge err'\r\n repoBadge.textContent = '仓库不可用'\r\n } else if (git.dirty) {\r\n repoBadge.className = 'uc-badge warn'\r\n repoBadge.textContent = '有未提交改动'\r\n } else if (checked && repo?.fetchOk === false) {\r\n repoBadge.className = 'uc-badge err'\r\n repoBadge.textContent = '检查失败'\r\n } else if (checked && git.behind > 0) {\r\n repoBadge.className = 'uc-badge update'\r\n repoBadge.textContent = `落后 ${git.behind} 个提交`\r\n } else if (checked && typeof git.behind === 'number') {\r\n repoBadge.className = 'uc-badge ok'\r\n repoBadge.textContent = '已是最新'\r\n }\r\n\r\n const actions = el('div', 'uc-actions')\r\n const fullButton = actionButton('完整更新')\r\n const pullButton = actionButton('仅拉取代码', 'secondary')\r\n const rollbackButton = actionButton('回退上一版', 'secondary')\r\n const canUpdate = checked && !repo?.error && !git.dirty && Number(git.behind) > 0\r\n fullButton.disabled = !canUpdate\r\n pullButton.disabled = !canUpdate\r\n // 回退不要求\"落后\":更新后发现新版有问题时用。没有可回退记录时服务端\r\n // 会返回明确提示。\r\n rollbackButton.disabled = !checked || !!repo?.error || !!git.dirty\r\n bindAction(fullButton, '/update-dsh', { full: true }, '完整更新会在独立后台任务中拉取代码、安装依赖并重新构建 dsh。任务完成后再重启,是否继续?', '正在创建后台更新任务…')\r\n bindAction(pullButton, '/update-dsh', { full: false }, '仅拉取代码不会安装依赖或重新构建,重启后仍可能运行旧产物。确认继续?', '正在创建后台更新任务…')\r\n bindAction(rollbackButton, '/rollback-dsh', {}, '回退会把 dsh 源码重置到上一次更新前的提交,并重新安装依赖、重新构建(需要工作区干净)。完成后需重启 dsh web。被回退的提交仍可用 git reflog 找回。是否继续?', '正在创建后台回退任务…')\r\n actions.append(fullButton, pullButton, rollbackButton)\r\n row.append(info, actions)\r\n repoContent.append(row)\r\n\r\n if (git.dirty && Array.isArray(git.dirtyFiles) && git.dirtyFiles.length) {\r\n const dirty = el('div', 'uc-msg info', `为保护现有工作,更新已禁用:\\n${git.dirtyFiles.join('\\n')}`)\r\n repoContent.append(dirty)\r\n }\r\n }\r\n\r\n function renderPlugins(plugins: any[]): void {\r\n pluginList.textContent = ''\r\n pluginCount.textContent = `${plugins.length} 个`\r\n if (!plugins.length) {\r\n pluginList.append(el('li', 'uc-empty', '当前 profile 没有外部插件,去“插件市场”看看?'))\r\n return\r\n }\r\n\r\n for (const plugin of plugins) {\r\n const item = el('li', 'uc-item')\r\n const identity = el('div')\r\n identity.append(el('div', 'uc-name', String(plugin.name)))\r\n const marketEntry = marketEntryFor(String(plugin.name))\r\n const description = marketEntry?.description?.zh || marketEntry?.description?.en\r\n if (description) identity.append(el('div', 'uc-desc', String(description)))\r\n const tags = el('div', 'uc-tags')\r\n const kind = plugin.kind === 'preset' ? 'preset' : plugin.kind === 'link' ? 'link' : 'npm'\r\n tags.append(el('span', 'uc-tag ' + kind, kind))\r\n if (plugin.bundled) tags.append(el('span', 'uc-tag', 'bundle'))\r\n if (plugin.upstream && String(plugin.upstream).includes('/')) {\r\n tags.append(externalLink(String(plugin.upstream), `https://github.com/${plugin.upstream}`))\r\n } else if (plugin.upstream) {\r\n tags.append(el('span', 'uc-meta', String(plugin.upstream)))\r\n }\r\n if (plugin.linkDir) tags.append(el('span', 'uc-meta uc-path', String(plugin.linkDir)))\r\n identity.append(tags)\r\n\r\n const status = el('div', 'uc-status')\r\n status.append(el('span', 'uc-meta', plugin.version ? `v${plugin.version}` : '版本未知'))\r\n const git = plugin.git ?? {}\r\n let updateAvailable = false\r\n let blocked = false\r\n if (plugin.disabled) {\r\n status.append(badge('已禁用', 'muted'))\r\n }\r\n if ((kind === 'link' || kind === 'preset') && git.dirty) {\r\n status.append(badge('有未提交改动', 'warn'))\r\n blocked = true\r\n } else if ((kind === 'link' || kind === 'preset') && checked && git.fetchOk === false) {\r\n status.append(badge('检查失败', 'err'))\r\n } else if ((kind === 'link' || kind === 'preset') && checked && Number(git.behind) > 0) {\r\n status.append(badge(`落后 ${git.behind}`, 'update'))\r\n updateAvailable = true\r\n } else if (kind === 'npm' && checked && plugin.latest && plugin.latest !== plugin.version) {\r\n status.append(badge(`可更新至 ${plugin.latest}`, 'update'))\r\n updateAvailable = true\r\n } else if (checked && ((kind === 'npm' && plugin.latest) || typeof git.behind === 'number')) {\r\n status.append(badge('已是最新', 'ok'))\r\n } else if (!plugin.disabled) {\r\n status.append(badge('未检查', 'muted'))\r\n }\r\n\r\n const actions = el('div', 'uc-actions')\r\n const updateButton = actionButton('更新')\r\n updateButton.disabled = !updateAvailable || blocked\r\n if (kind === 'npm') {\r\n bindAction(updateButton, '/update-npm', { name: plugin.name }, `后台更新 ${plugin.name} 到最新版,并核对实际安装版本。任务完成后再重启,是否继续?`, '正在创建后台更新任务…')\r\n } else {\r\n bindAction(updateButton, '/update-link', { name: plugin.name }, `后台更新本地插件 ${plugin.name};若只更新源码,会自动重新构建运行产物。是否继续?`, '正在创建后台更新任务…')\r\n }\r\n actions.append(updateButton)\r\n if (kind === 'npm') {\r\n const toggleButton = actionButton(plugin.disabled ? '启用' : '禁用', 'secondary')\r\n bindAction(toggleButton, plugin.disabled ? '/enable' : '/disable', { name: plugin.name },\r\n plugin.disabled ? `恢复启用 ${plugin.name}?重启 dsh web 后生效。` : `禁用 ${plugin.name}?只是写入配置不卸载,重启 dsh web 后生效。`,\r\n '正在更新配置…')\r\n actions.append(toggleButton)\r\n const removeButton = actionButton('卸载', 'danger')\r\n bindAction(removeButton, '/uninstall', { name: plugin.name }, `从 profile 卸载 ${plugin.name}(pnpm remove + 移出 bundles)。已禁用状态会一并清理。任务完成后再重启,是否继续?`, '正在创建后台卸载任务…')\r\n actions.append(removeButton)\r\n }\r\n item.append(identity, status, actions)\r\n pluginList.append(item)\r\n }\r\n }\r\n\r\n // ── 市场渲染 ──\r\n function renderCategorySelect(): void {\r\n const categories = marketData?.categories ?? {}\r\n const previous = marketCategory\r\n categorySelect.textContent = ''\r\n const all = el('option', undefined, '全部分类')\r\n all.value = ''\r\n categorySelect.append(all)\r\n for (const [key, label] of Object.entries<any>(categories)) {\r\n const option = el('option', undefined, String(label?.zh || label?.en || key))\r\n option.value = key\r\n categorySelect.append(option)\r\n }\r\n marketCategory = previous && [...categorySelect.options].some((o) => o.value === previous) ? previous : ''\r\n categorySelect.value = marketCategory\r\n }\r\n\r\n function renderMarket(): void {\r\n marketList.textContent = ''\r\n if (!marketData) {\r\n marketList.append(el('li', 'uc-empty', '清单尚未加载'))\r\n return\r\n }\r\n const plugins: any[] = Array.isArray(marketData.plugins) ? marketData.plugins : []\r\n const installedSet = new Set<string>(Array.isArray(marketData.installed) ? marketData.installed.map(String) : [])\r\n const query = marketQuery.trim().toLowerCase()\r\n const filtered = plugins.filter((entry) => {\r\n if (marketCategory && entry.category !== marketCategory) return false\r\n if (!query) return true\r\n const haystack = [entry.name, entry.owner, entry.npm, entry.description?.zh, entry.description?.en]\r\n .filter(Boolean).join(' ').toLowerCase()\r\n return haystack.includes(query)\r\n })\r\n // 排序:星标最多 / 最近添加;同值保持清单原顺序(sort 稳定)。\r\n if (marketSort === 'stars') {\r\n filtered.sort((a, b) => Number(b.stars ?? 0) - Number(a.stars ?? 0))\r\n } else if (marketSort === 'added') {\r\n filtered.sort((a, b) => (Date.parse(String(b.added ?? '')) || 0) - (Date.parse(String(a.added ?? '')) || 0))\r\n }\r\n const sourceLabel = { registry: '本仓库 plugins.json', github: 'GitHub topic:dsh-plugin', disk: '本地缓存', snapshot: '内置快照', network: '网络' }[String(marketData.source)] ?? marketData.source\r\n const visibleCount = Math.min(filtered.length, marketVisibleLimit)\r\n marketMeta.textContent = `来源:${sourceLabel} · 扫描于 ${String(marketData.updated || '未知')} · 共 ${plugins.length} 个,筛选出 ${filtered.length} 个 · 已显示 ${visibleCount} 个`\r\n if (!filtered.length) {\r\n marketList.append(el('li', 'uc-empty', '没有匹配的插件'))\r\n return\r\n }\r\n for (const entry of filtered.slice(0, marketVisibleLimit)) {\r\n const installed = installedSet.has(String(entry.name)) || (entry.npm && installedSet.has(String(entry.npm)))\r\n const item = el('li', 'uc-item')\r\n const identity = el('div')\r\n const nameRow = el('div', 'uc-name')\r\n if (entry.url) {\r\n nameRow.append(externalLink(String(entry.name), String(entry.url)))\r\n } else {\r\n nameRow.textContent = String(entry.name)\r\n }\r\n identity.append(nameRow)\r\n const description = entry.description?.zh || entry.description?.en || ''\r\n if (description) identity.append(el('div', 'uc-desc', String(description)))\r\n const tags = el('div', 'uc-tags')\r\n if (entry.category && marketData?.categories?.[entry.category]) {\r\n const catLabel = marketData.categories[entry.category]\r\n const catTag = el('button', 'uc-tag cat', String(catLabel?.zh || catLabel?.en || entry.category))\r\n catTag.type = 'button'\r\n catTag.title = '按此分类筛选'\r\n catTag.addEventListener('click', () => {\r\n marketCategory = String(entry.category)\r\n categorySelect.value = marketCategory\r\n renderMarket()\r\n })\r\n tags.append(catTag)\r\n }\r\n if (entry.owner) tags.append(el('span', 'uc-meta', String(entry.owner)))\r\n if (entry.installMode === 'manual') tags.append(el('span', 'uc-tag preset', '套装'))\r\n else if (entry.npm) tags.append(el('span', 'uc-tag npm', 'npm'))\r\n else tags.append(el('span', 'uc-tag', 'github'))\r\n identity.append(tags)\r\n\r\n const status = el('div', 'uc-status')\r\n const stars = Number(entry.stars ?? 0)\r\n status.append(el('span', 'uc-meta', stars > 0 ? `★ ${stars}` : '暂无星标'))\r\n const statusPlugin = (lastStatusData?.plugins ?? []).find((plugin: any) =>\r\n plugin.name === entry.npm || plugin.name === entry.name)\r\n const updatable = statusPlugin\r\n && ((statusPlugin.kind === 'npm' && statusPlugin.latest && statusPlugin.latest !== statusPlugin.version)\r\n || Number(statusPlugin.git?.behind) > 0)\r\n\r\n const actions = el('div', 'uc-actions')\r\n if (entry.installMode === 'manual') {\r\n status.append(badge('手动安装', 'muted'))\r\n const guideLink = el('a', 'uc-btn', '安装说明')\r\n guideLink.href = String(entry.url)\r\n guideLink.target = '_blank'\r\n guideLink.rel = 'noreferrer'\r\n actions.append(guideLink)\r\n } else if (installed) {\r\n status.append(updatable ? badge('可更新', 'update') : badge('已安装', 'ok'))\r\n const removeButton = actionButton('卸载', 'danger')\r\n bindAction(removeButton, '/uninstall', { name: entry.npm || entry.name }, `从 profile 卸载 ${entry.npm || entry.name}?任务完成后再重启,是否继续?`, '正在创建后台卸载任务…')\r\n actions.append(removeButton)\r\n } else {\r\n const installButton = actionButton('安装')\r\n bindAction(installButton, '/install', { name: entry.name }, `在后台安装 ${entry.name}(优先 npm,来源不一致时回退 GitHub)。安装完成后需要重启 dsh web,是否继续?`, '正在创建后台安装任务…')\r\n actions.append(installButton)\r\n }\r\n item.append(identity, status, actions)\r\n marketList.append(item)\r\n }\r\n if (filtered.length > marketVisibleLimit) {\r\n const remaining = filtered.length - marketVisibleLimit\r\n const loadMoreItem = el('li', 'uc-load-more')\r\n const loadMoreButton = el('button', 'uc-btn secondary', `显示更多(剩余 ${remaining} 个)`)\r\n loadMoreButton.type = 'button'\r\n loadMoreButton.addEventListener('click', () => {\r\n marketVisibleLimit += MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n loadMoreItem.append(loadMoreButton)\r\n marketList.append(loadMoreItem)\r\n }\r\n }\r\n\r\n async function loadMarket(force: boolean, silent: boolean): Promise<void> {\r\n if (force) setBusy(true, refreshButton, '刷新中…')\r\n if (!silent) say('正在加载插件市场清单…', 'info')\r\n try {\r\n // 刷新会触发服务端网络拉取并重写缓存(有副作用),与服务端一致走 POST\r\n const data = await fetchJson(force ? '/market/refresh' : '/market', force ? { method: 'POST' } : undefined)\r\n if (!data?.ok) throw new Error(data?.error || '清单加载失败')\r\n marketData = data\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderCategorySelect()\r\n renderMarket()\r\n if (lastStatusData) renderPlugins(lastStatusData.plugins ?? [])\r\n if (!silent) say('', 'info')\r\n } catch (error) {\r\n if (!silent) say('市场清单加载失败:' + String(error), 'err')\r\n } finally {\r\n if (force) setBusy(false, refreshButton)\r\n }\r\n }\r\n\r\n function switchTab(target: 'installed' | 'market'): void {\r\n const showMarket = target === 'market'\r\n installedTab.className = showMarket ? 'uc-tab' : 'uc-tab active'\r\n marketTab.className = showMarket ? 'uc-tab active' : 'uc-tab'\r\n installedView.style.display = showMarket ? 'none' : 'block'\r\n marketView.style.display = showMarket ? 'block' : 'none'\r\n if (showMarket && !marketData) void loadMarket(false, false)\r\n }\r\n\r\n function render(data: any): void {\r\n lastStatusData = data\r\n renderRepo(data?.repo)\r\n renderPlugins(Array.isArray(data?.plugins) ? data.plugins : [])\r\n updateSummary(data)\r\n // “全部更新”不依赖本地检查状态:服务端 /update-all 会先做一次完整检查再\r\n // 组批量任务,因此除了有后台任务在跑时都保持可点。\r\n const job = data?.job ?? {}\r\n const jobRunning = job.status === 'queued' || job.status === 'running'\r\n updateAllButton.disabled = jobRunning\r\n updateAllButton.title = jobRunning\r\n ? '有更新任务正在执行,请等待完成后再批量更新'\r\n : '先检查远端,再一键更新所有可更新的插件(不含 dsh 本体)'\r\n // 有更新任务执行时不建议重启(会中断后台任务),服务端同样拒绝\r\n restartButton.disabled = jobRunning\r\n restartButton.title = restartButton.disabled\r\n ? '有更新任务正在执行,请等待完成后再重启'\r\n : '更新完成后一键重启 dsh web(当前会话会中断)'\r\n }\r\n\r\n function refreshStatus(showJob = true, fresh = false): Promise<void> {\r\n return fetchJson(fresh ? '/status?fresh=1' : '/status')\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.error || '状态读取失败')\r\n // 已检查过时用检查数据补全远端信息(/status 不带 latest/behind),\r\n // 避免禁用/启用等轻量动作后丢失“可更新”徽章。\r\n render(checked && lastCheckData && !data.summary ? mergeStatusAfterJob(data, new Set()) : data)\r\n if (showJob) {\r\n resumeJob(data.job)\r\n if (data?.job?.status === 'completed') say(jobText(data.job), 'ok')\r\n if (data?.job?.status === 'failed') say(jobText(data.job), 'err')\r\n }\r\n })\r\n .catch((error) => say('状态读取失败:' + String(error), 'err'))\r\n }\r\n\r\n installedTab.addEventListener('click', () => switchTab('installed'))\r\n marketTab.addEventListener('click', () => switchTab('market'))\r\n searchInput.addEventListener('input', () => {\r\n marketQuery = searchInput.value\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n categorySelect.addEventListener('change', () => {\r\n marketCategory = categorySelect.value\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n sortSelect.addEventListener('change', () => {\r\n marketSort = sortSelect.value\r\n marketVisibleLimit = MARKET_PAGE_SIZE\r\n renderMarket()\r\n })\r\n refreshButton.addEventListener('click', () => void loadMarket(true, false))\r\n bindAction(updateAllButton, '/update-all', {}, '将先自动检查远端更新,再把所有可更新的插件(不含 dsh 本体)排成一个后台批量任务串行执行,单个失败不影响其余。检查可能需要十几秒。任务完成后再重启,是否继续?', '正在检查并创建批量更新任务,可能需要十几秒…')\r\n\r\n /** 重启下发后等待服务恢复:先看到请求失败(旧进程已停),再看到成功(新\r\n * 进程就绪),然后自动刷新页面。期间保持全部按钮禁用,避免把请求打进\r\n * 一个正在关闭/正在启动的服务。超时则恢复按钮并提示手动处理。 */\r\n function waitForRestart(): void {\r\n const deadline = Date.now() + 180_000\r\n let sawDown = false\r\n const tick = () => {\r\n if (!page.isConnected) return\r\n if (Date.now() > deadline) {\r\n setBusy(false, restartButton)\r\n say('等待 dsh 重启超时。请手动刷新页面;若一直打不开,可查看 ~/.dsh/update-center/dsh-web.stderr.log 或用 Start-DSH 启动并查看控制台输出。', 'err')\r\n return\r\n }\r\n fetchJson('/status')\r\n .then(() => {\r\n if (sawDown) {\r\n say('dsh 已重启完成,正在刷新页面…', 'ok')\r\n window.location.reload()\r\n return\r\n }\r\n // 旧进程还活着(重启指令的延迟窗口内),继续等它退出\r\n window.setTimeout(tick, 1000)\r\n })\r\n .catch(() => {\r\n sawDown = true\r\n window.setTimeout(tick, 2000)\r\n })\r\n }\r\n window.setTimeout(tick, 1500)\r\n }\r\n\r\n restartButton.addEventListener('click', () => {\r\n const job = lastStatusData?.job ?? {}\r\n const active = job.status === 'queued' || job.status === 'running'\r\n // 按钮在任务运行中已被禁用;这里兜底面板状态滞后的情形(服务端同样会拒绝)\r\n if (active) {\r\n say('有更新任务正在执行,请等待任务完成后再重启(重启会中断后台任务)。', 'err')\r\n return\r\n }\r\n if (!window.confirm('重启 dsh web?当前会话会中断,重启完成后页面会自动刷新。')) return\r\n setBusy(true, restartButton, '重启中…')\r\n say('正在下发重启指令…', 'info')\r\n fetchJson('/restart', { method: 'POST', body: '{}' })\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.result || data?.error || '重启失败')\r\n say('重启指令已下发,dsh 即将重启;恢复后面板会自动刷新。', 'info')\r\n waitForRestart()\r\n })\r\n .catch((error) => {\r\n setBusy(false, restartButton)\r\n say('重启请求失败:' + String(error), 'err')\r\n })\r\n })\r\n\r\n checkButton.addEventListener('click', () => {\r\n setBusy(true, checkButton, '检查中…')\r\n say('正在检查 dsh 和插件的远端状态…', 'info')\r\n fetchJson('/check', { method: 'POST', body: '{}' })\r\n .then((data) => {\r\n if (!data?.ok) throw new Error(data?.error || '检查失败')\r\n checked = true\r\n lastCheckData = data\r\n render(data)\r\n if (marketData) renderMarket()\r\n const total = Number(data?.summary?.totalUpdates ?? 0)\r\n const failed = Number(data?.summary?.failedChecks ?? 0)\r\n if (failed > 0) {\r\n say(`检查完成,发现 ${total} 项可更新,另有 ${failed} 项检查失败。`, 'err')\r\n } else {\r\n say(total > 0 ? `检查完成,发现 ${total} 项可更新。` : '检查完成,当前全部为最新。', total > 0 ? 'info' : 'ok')\r\n }\r\n })\r\n .catch((error) => say('检查失败:' + String(error), 'err'))\r\n .finally(() => setBusy(false, checkButton))\r\n })\r\n\r\n void refreshStatus()\r\n return page\r\n}\r\n\r\nfunction UpdateCenterPanel(): ReactNode {\r\n const hostRef = useRef<HTMLDivElement | null>(null)\r\n useEffect(() => {\r\n const host = hostRef.current\r\n if (!host) return\r\n const panel = buildPanel()\r\n host.appendChild(panel)\r\n return () => { panel.remove() }\r\n }, [])\r\n return createElement('div', { ref: hostRef })\r\n}\r\n\r\nexport function apply(ctx: ClientContext): void {\r\n ctx.effect(() => ctx.slots.inject('settings.section', () =>\r\n ctx.slots.register({\r\n name: 'settings.section',\r\n id: 'update-center',\r\n order: 60,\r\n label: () => '更新中心',\r\n }, UpdateCenterPanel),\r\n ), 'dsh-update-center: panel')\r\n}\r\n"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -18,7 +18,7 @@
18
18
  import { defineTool } from '@deepseek-ai/dsh-tools';
19
19
  import z from 'schemastery';
20
20
  import { spawn } from 'node:child_process';
21
- import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, writeFileSync } from 'node:fs';
21
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
22
22
  import { randomUUID } from 'node:crypto';
23
23
  import { dirname, isAbsolute, join, resolve } from 'node:path';
24
24
  import { homedir } from 'node:os';
@@ -150,6 +150,61 @@ export function apply(ctx, config) {
150
150
  return null;
151
151
  return readJob(join(jobsDir, `${id}.json`));
152
152
  }
153
+ /** 任务历史清理:jobs 目录只保留最近 20 个任务(文件名毫秒时间戳,字典序即
154
+ * 时间序),状态与 spec 文件一并删除。回退功能依赖最近一次 dsh 任务的
155
+ * beforeCommit,20 个历史绰绰有余,又不会无限增长。 */
156
+ function pruneJobHistory() {
157
+ const JOB_HISTORY_KEEP = 20;
158
+ try {
159
+ const states = readdirSync(jobsDir)
160
+ .filter((file) => /^\d{13}-[a-zA-Z0-9-]{8}\.json$/.test(file))
161
+ .sort();
162
+ for (const name of states.slice(0, Math.max(0, states.length - JOB_HISTORY_KEEP))) {
163
+ const id = name.replace(/\.json$/, '');
164
+ for (const file of [join(jobsDir, name), join(jobsDir, `${id}.spec.json`)]) {
165
+ try {
166
+ unlinkSync(file);
167
+ }
168
+ catch { /* 已被并发清理 */ }
169
+ }
170
+ }
171
+ }
172
+ catch { /* jobs 目录不存在则忽略 */ }
173
+ }
174
+ /** dsh 回退目标:最近一次 dsh 更新/回退任务记录的"更新前提交"。跳过没有
175
+ * 前进过(before==after)与目标等于当前 HEAD(已回退过)的记录。 */
176
+ async function findRollbackTarget() {
177
+ if (!repoDir)
178
+ return null;
179
+ const head = await execAsync('git', ['rev-parse', 'HEAD'], repoDir, 10_000);
180
+ const headCommit = head.ok ? head.out.trim() : '';
181
+ const jobFiles = [latestJobPath];
182
+ try {
183
+ jobFiles.push(...readdirSync(jobsDir)
184
+ .filter((file) => /^\d{13}-[a-zA-Z0-9-]{8}\.json$/.test(file))
185
+ .sort()
186
+ .reverse()
187
+ .map((file) => join(jobsDir, file)));
188
+ }
189
+ catch { /* jobs 目录不存在则只用 latest */ }
190
+ for (const file of jobFiles) {
191
+ const job = readJob(file);
192
+ if (!job || (job.action !== 'dsh' && job.action !== 'rollback-dsh'))
193
+ continue;
194
+ if (job.status !== 'completed')
195
+ continue;
196
+ const commit = typeof job.beforeCommit === 'string' ? job.beforeCommit : '';
197
+ if (!/^[0-9a-f]{4,40}$/i.test(commit))
198
+ continue;
199
+ const after = typeof job.afterCommit === 'string' ? job.afterCommit : '';
200
+ if (after && after === commit)
201
+ continue; // 那次任务没有前进(已是最新)
202
+ if (headCommit && commit === headCommit)
203
+ continue; // 已经回退到了这个提交
204
+ return commit;
205
+ }
206
+ return null;
207
+ }
153
208
  async function startJob(spec) {
154
209
  const active = latestJob();
155
210
  if (active && (active.status === 'queued' || active.status === 'running')) {
@@ -190,6 +245,7 @@ export function apply(ctx, config) {
190
245
  proxy,
191
246
  repoDir,
192
247
  });
248
+ pruneJobHistory();
193
249
  try {
194
250
  // spawn 参数注入防护:worker 两路径均为内部拼接的绝对路径,拒绝任何以 "-" 开头的值;
195
251
  // "--" 终止符确保 node 不会把后续参数解释为自己的选项。
@@ -1087,6 +1143,24 @@ export function apply(ctx, config) {
1087
1143
  branch,
1088
1144
  }));
1089
1145
  }
1146
+ if (path === '/rollback-dsh') {
1147
+ // 回退目标是最近一次 dsh 更新/回退任务记录的"更新前提交":
1148
+ // reset --hard 回去 + 重新 install/build,防新旧产物混跑。
1149
+ if (!repoDir) {
1150
+ return send(200, { ok: false, result: '未找到 dsh 仓库目录,无法回退。' });
1151
+ }
1152
+ const commit = await findRollbackTarget();
1153
+ if (!commit) {
1154
+ return send(200, { ok: false, result: '没有可回退的记录:需要先完成一次 dsh 更新,且当前已不处于可回退的位置。' });
1155
+ }
1156
+ return send(200, await startJob({
1157
+ action: 'rollback-dsh',
1158
+ target: 'dsh',
1159
+ commit,
1160
+ remote,
1161
+ branch,
1162
+ }));
1163
+ }
1090
1164
  if (path === '/update-npm') {
1091
1165
  const body = JSON.parse(await readBody(req));
1092
1166
  const packageName = String(body?.name ?? '').trim();
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-update-center",
3
- "version": "0.8.3",
3
+ "version": "0.9.0",
4
4
  "description": "dsh (DeepSeek Harness) 更新中心与插件市场:自托管 plugins.json 注册表(GitHub dsh-plugin 主题自动聚合 + npm 包名映射秒级安装),一键安装/更新/卸载/禁用插件与更新 dsh 本体。Update center & plugin marketplace for DeepSeek Harness.",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -113,9 +113,26 @@ function main() {
113
113
  stdio: ['ignore', outFd, errFd],
114
114
  windowsHide: true,
115
115
  })
116
- child.on('error', () => process.exit(1))
116
+ // 启动存活观察:spawn 成功不等于 dsh 真起来了——运行时崩溃(缺模块、
117
+ // 端口被占、补丁失效等)通常发生在头几秒。助手保留 15 秒观察期,期间
118
+ // 进程退出就把结论写进日志,避免"面板提示已重启、服务其实没起来"的
119
+ // 静默失败(重启助手之前是拉起即退出,无从得知)。
120
+ const startedAt = Date.now()
121
+ let exited = false
122
+ child.on('error', (error) => {
123
+ try {
124
+ appendFileSync(stderrLog, `[restart] 新进程拉起失败:${error}\n`)
125
+ } catch { /* 日志写失败无处报告 */ }
126
+ process.exit(1)
127
+ })
128
+ child.on('exit', (code, signal) => {
129
+ exited = true
130
+ try {
131
+ appendFileSync(stderrLog, `[restart] 新进程启动 ${Math.round((Date.now() - startedAt) / 1000)}s 后退出(code=${code ?? '-'} signal=${signal ?? '-'}),dsh 未成功重启。请查看本文件与 dsh-web.stdout.log 定位原因;可用 Start-DSH 手动拉起,或回退 dsh 后再试。\n`)
132
+ } catch { /* 日志写失败无处报告 */ }
133
+ })
117
134
  child.unref()
118
- process.exit(0)
135
+ setTimeout(() => process.exit(exited ? 1 : 0), 15_000)
119
136
  }, killWaitMs)
120
137
  }, delayMs)
121
138
  }
@@ -110,6 +110,40 @@ function singleReporter(spec, state) {
110
110
  }
111
111
  }
112
112
 
113
+ /** 查询 npm registry 某包当前 latest(更新竞态宽限用;失败返回 null)。 */
114
+ export function queryNpmLatest(spec, runner, networkEnv) {
115
+ const r = runner('npm', ['view', spec.packageName, 'version', '--json'], spec.profileDir, 30_000, networkEnv)
116
+ if (!r.ok) return null
117
+ try {
118
+ const v = JSON.parse(String(r.out).trim())
119
+ return typeof v === 'string' ? v : null
120
+ } catch {
121
+ return null
122
+ }
123
+ }
124
+
125
+ /** 把包回滚到更新前版本:已恢复原样返回 null(无需或已回滚),失败返回原因。
126
+ * 目标是"更新失败 = 保持更新前状态",不把半更新态留给用户。 */
127
+ function rollbackNpmUpdate(spec, runner, reporter, beforeVersion, networkEnv) {
128
+ if (!beforeVersion) return '更新前版本未知,无法自动回滚,请检查当前安装状态'
129
+ const current = readPackageVersion(spec.profileDir, spec.packageName)
130
+ if (!current || current === beforeVersion) return null
131
+ reporter.progress({ stage: 'rollback', message: `正在回滚 ${spec.packageName} 到 ${beforeVersion}` })
132
+ const rb = runner('pnpm', ['add', `${spec.packageName}@${beforeVersion}`], spec.profileDir, 600_000, networkEnv)
133
+ const restored = readPackageVersion(spec.profileDir, spec.packageName)
134
+ if (rb.ok && restored === beforeVersion) {
135
+ reporter.step(`已回滚到 ${beforeVersion},保持更新前状态`)
136
+ return null
137
+ }
138
+ return `自动回滚失败(当前 ${restored || '未安装'},期望 ${beforeVersion}):${commandFailure(rb)}`
139
+ }
140
+
141
+ /** 更新失败时先尝试回滚再抛错:回滚失败的原因并入任务错误,便于用户接手。 */
142
+ function throwAfterRollback(stage, baseMessage, spec, runner, reporter, beforeVersion, networkEnv) {
143
+ const rollbackError = rollbackNpmUpdate(spec, runner, reporter, beforeVersion, networkEnv)
144
+ throw new JobError(stage, rollbackError ? `${baseMessage}\n${rollbackError}` : baseMessage)
145
+ }
146
+
113
147
  async function performNpmUpdate(spec, runner, reporter) {
114
148
  const beforeVersion = readPackageVersion(spec.profileDir, spec.packageName)
115
149
  reporter.progress({
@@ -121,7 +155,9 @@ async function performNpmUpdate(spec, runner, reporter) {
121
155
  ? { HTTP_PROXY: spec.proxy, HTTPS_PROXY: spec.proxy, http_proxy: spec.proxy, https_proxy: spec.proxy }
122
156
  : undefined
123
157
  const result = runner('pnpm', ['update', spec.packageName, '--latest'], spec.profileDir, 600_000, networkEnv)
124
- if (!result.ok) throw new JobError('update', `pnpm update 失败\n${commandFailure(result)}`)
158
+ if (!result.ok) {
159
+ throwAfterRollback('update', `pnpm update 失败\n${commandFailure(result)}`, spec, runner, reporter, beforeVersion, networkEnv)
160
+ }
125
161
  reporter.step('pnpm update 执行完成')
126
162
  reporter.progress({ stage: 'verify', message: '正在核对实际安装版本' })
127
163
  const installed = readPackageVersion(spec.profileDir, spec.packageName)
@@ -130,8 +166,20 @@ async function performNpmUpdate(spec, runner, reporter) {
130
166
  expected: spec.expectedVersion,
131
167
  installed,
132
168
  })
133
- if (!verification.ok) throw new JobError('verify', verification.message)
134
- reporter.step(verification.message)
169
+ let effectiveVersion = installed
170
+ if (!verification.ok) {
171
+ // 竞态宽限:检查更新与执行之间上游可能又发了新版,pnpm --latest 会装上
172
+ // 比任务期望更新的一版。装上的若就是此刻的 npm latest,按实际版本放行;
173
+ // 否则才视为失败并回滚。
174
+ const freshLatest = queryNpmLatest(spec, runner, networkEnv)
175
+ if (installed && freshLatest && installed === freshLatest) {
176
+ reporter.step(`更新期间上游发布了 ${freshLatest},已按实际安装版本通过校验`)
177
+ effectiveVersion = freshLatest
178
+ } else {
179
+ throwAfterRollback('verify', verification.message, spec, runner, reporter, beforeVersion, networkEnv)
180
+ }
181
+ }
182
+ reporter.step(effectiveVersion === installed && verification.ok ? verification.message : `已安装 ${effectiveVersion}`)
135
183
  reporter.progress({ stage: 'reconcile', message: '正在同步 profile bundles' })
136
184
  const profileManifest = readPackage(spec.profileDir)
137
185
  const declares = bundleDeclared(spec.profileDir, spec.packageName)
@@ -150,7 +198,7 @@ async function performNpmUpdate(spec, runner, reporter) {
150
198
  status: 'completed',
151
199
  stage: 'completed',
152
200
  message: `${spec.packageName} 更新完成`,
153
- afterVersion: installed,
201
+ afterVersion: effectiveVersion,
154
202
  changed: verification.changed,
155
203
  restartRequired: true,
156
204
  finishedAt: new Date().toISOString(),
@@ -606,6 +654,55 @@ async function runDshJob(spec, state, runner) {
606
654
  })
607
655
  }
608
656
 
657
+ /** dsh 本体回退:reset --hard 到任务记录的"更新前提交"并完整重建。
658
+ * 源码回退了,lib/node_modules 等产物必须跟着重建,否则新旧混跑。 */
659
+ async function runDshRollbackJob(spec, state, runner) {
660
+ const dir = spec.repoDir
661
+ const networkEnv = spec.proxy
662
+ ? { HTTP_PROXY: spec.proxy, HTTPS_PROXY: spec.proxy, http_proxy: spec.proxy, https_proxy: spec.proxy }
663
+ : undefined
664
+ const commit = String(spec.commit ?? '')
665
+ if (!/^[0-9a-f]{4,40}$/i.test(commit)) {
666
+ throw new JobError('preflight', `回退目标提交号非法: ${commit}`)
667
+ }
668
+ const status = requireCommand(runner('git', ['status', '--porcelain'], dir, 10_000), 'preflight', '读取 dsh Git 状态')
669
+ if (status) throw new JobError('preflight', `dsh 存在未提交改动,为避免覆盖本地工作,已停止回退:\n${status}`)
670
+ const currentBranch = requireCommand(runner('git', ['rev-parse', '--abbrev-ref', 'HEAD'], dir, 10_000), 'preflight', '读取 dsh 分支')
671
+ if (spec.branch && currentBranch !== spec.branch) {
672
+ throw new JobError('preflight', `当前分支为 ${currentBranch},配置分支为 ${spec.branch}`)
673
+ }
674
+ const before = requireCommand(runner('git', ['rev-parse', 'HEAD'], dir, 10_000), 'preflight', '读取 dsh 当前提交')
675
+ if (before === commit) throw new JobError('preflight', 'dsh 已处于回退目标提交,无需回退')
676
+ requireCommand(runner('git', ['cat-file', '-e', `${commit}^{commit}`], dir, 10_000), 'preflight', '校验回退目标提交')
677
+ updateState(spec, state, {
678
+ stage: 'reset',
679
+ beforeCommit: before,
680
+ targetCommit: commit,
681
+ message: `正在回退 dsh 到 ${commit.slice(0, 10)}`,
682
+ })
683
+ requireCommand(runner('git', ['reset', '--hard', commit], dir, 60_000), 'reset', 'git reset ')
684
+ state.steps.push(`已回退:${before.slice(0, 10)} → ${commit.slice(0, 10)}(被回退的提交仍可用 git reflog 找回)`)
685
+ // 回退后的源码同样可能有上游删包残留,与正向更新共用清理逻辑
686
+ cleanupStaleResidualDirs(dir, state, runner)
687
+ updateState(spec, state, { stage: 'install', message: '正在安装 dsh 依赖' })
688
+ requireCommand(runner('pnpm', ['install'], dir, 600_000, networkEnv), 'install', 'pnpm install ')
689
+ state.steps.push('pnpm install 完成')
690
+ updateState(spec, state, { stage: 'build', message: '正在重新构建 dsh' })
691
+ requireCommand(runner('pnpm', ['run', 'build'], dir, 900_000, networkEnv), 'build', 'pnpm run build ')
692
+ state.steps.push('pnpm run build 完成')
693
+ const afterVersion = readPackage(dir)?.version ?? null
694
+ updateState(spec, state, {
695
+ status: 'completed',
696
+ stage: 'completed',
697
+ message: `dsh 已回退到 ${commit.slice(0, 10)},请重启 dsh web`,
698
+ afterCommit: commit,
699
+ afterVersion,
700
+ changed: true,
701
+ restartRequired: true,
702
+ finishedAt: new Date().toISOString(),
703
+ })
704
+ }
705
+
609
706
  export async function runWorker(specPath, dependencies = {}) {
610
707
  const spec = JSON.parse(readFileSync(specPath, 'utf8'))
611
708
  const runner = dependencies.runCommand ?? runCommand
@@ -635,6 +732,10 @@ export async function runWorker(specPath, dependencies = {}) {
635
732
  await runDshJob(spec, base, runner)
636
733
  return
637
734
  }
735
+ if (spec.action === 'rollback-dsh') {
736
+ await runDshRollbackJob(spec, base, runner)
737
+ return
738
+ }
638
739
  if (spec.action === 'batch') {
639
740
  await runBatchJob(spec, base, runner)
640
741
  return