← Back to home@maxwell234smith

dsh-desktop-update-entry

DSH 桌面版插件:在侧栏常驻一个「检查更新」入口(官方指示器只在有更新时才出现)

Stars
0
Language
JavaScript
Created
Oct 4, 2026
Updated
Oct 4, 2026
GitHub repo

Introduction

dsh-desktop-update-entry

给 DSH 桌面版在侧栏底部加一个常驻的「检查更新」入口。

为什么需要它

DSH 桌面版自带的更新指示器只在有更新活动时才渲染 (dsh-client-ui-settings-general 的 DesktopUpdateIndicator:phase === 'idle' 时直接 return null), 所以「已经是最新版」的时候,侧栏里没有任何手动检查更新的入口—— 设置 → 通用 里的「当前版本」只是一行文字,托盘菜单只有「打开应用 / 退出」。

本插件补上这个入口:无论有没有更新,侧栏底部始终有一个可点的状态位。

显示什么

壳的相位展开侧栏收起侧栏点击后
空闲(已是最新)「检查更新」状态点打开官方更新弹窗(壳会做一次检查)
checking让位给官方指示器转圈—
available让位(官方显示「新版本 x.y.z」)状态点—
downloading让位转圈—
verifying / installing让位转圈—
ready让位(官方显示「安装并重启」)状态点—
error让位(官方显示「重试更新」)状态点—

两条规则:

  1. 展开侧栏时互补:有更新/出错时官方指示器本来就会出现(就在右侧设置行里), 本入口此时返回 null 让位,避免两个一模一样的按钮并排;空闲时官方不渲染,由本入口补上。
  2. 收起侧栏时兜底:官方指示器在窄状态(wide: false)不渲染,所以本入口始终保留一个状态点。

入口出现在 sidebar.footer.action 席位(order: 1000,紧挨着右侧的「设置 / 更多」按钮), 与官方的 cordis 角标并列,不覆盖任何自带 UI。

它怎么工作

桌面壳在页面里注入了 globalThis.dshDesktop.updates(协议版本 1):

bridge.status()            // Promise<presentation>  → { phase, percent?, version? }
bridge.subscribe(listener) // 壳每次推送新相位都会回调
bridge.open()              // Promise<void>          → 打开官方更新弹窗

插件只做三件事:订阅这个桥、把状态渲染成一个按钮、点击时转发给 bridge.open()—— 更新的检查、下载、校验、安装全部仍由官方壳执行,插件不碰任何文件、不发任何网络请求。

在普通浏览器(没有这个全局量)里插件完全静默,不注册任何 UI。

安装

# 从 GitHub 安装(推荐锁到 tag 或某个提交,见仓库 Releases)
dsh plugin --profile desktop add github:maxwell234smith/dsh-desktop-update-entry#v0.1.0

# 本地开发:直接链接源码目录
dsh plugin --profile desktop add link:D:\path\to\dsh-desktop-update-entry

也可以在 DSH 网页版 侧边栏 → 插件 → 安装 bundle 里填 github:maxwell234smith/dsh-desktop-update-entry。 装完刷新一次页面。零运行时依赖、零构建步骤。

测试

node --test

用 node:vm 把 lib/client.js 装进带假 window/document/react 的环境, 验证导出与席位注册、无桥时静默、八个相位的文案与可点状态、点击转发、以及订阅推送。

License

MIT