dsh-hide-update-badge: Hide the "New Version" Badge in DSH Desktop

前言

用 DSH Desktop 做日常开发时,一旦官方发布新的桌面构建,账号按钮旁会出现一颗带下载箭头的「新版本」小胶囊。更新检查本身是有用的,但壳层没有提供「只关掉角标、保留检查更新菜单」的用户开关——角标由内置组件 DesktopUpdateIndicator 在 wide && !hidden && phase !== 'idle' 时直接画在界面上。若你只想少一颗常驻提示、又不想动更新逻辑,社区插件 dsh-hide-update-badge(维护者 Da0Mine,分类:趣味换装)只做表现层隐藏:纯 CSS 与基于无障碍标签的 DOM 处理,不改宿主更新行为。

这是什么

dsh-hide-update-badge 面向 DSH 桌面版(desktop profile),隐藏壳自带的更新角标(账号按钮右侧的「下载箭头 + 新版本」胶囊)。它只藏这一颗角标:后台更新检查照旧,菜单里的「检查更新 / Check for updates」照旧可用,不会偷偷下载或安装,也没有关闭任何功能。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅介绍该社区包的能力与用法。

为什么需要插件而不是设置项

角标由宿主包 @deepseek-ai/dsh-client-ui-settings-general 中的 DesktopUpdateIndicator 渲染,样式见同路径下的 DesktopUpdateIndicator.module.css。壳没有面向用户的「关闭角标」选项(只有菜单里的手动检查入口),插件能动的只有前端呈现层,因此用 Cordis patch + 客户端脚本做定向隐藏。

核心功能与实现要点

下面介绍插件如何在不碰更新逻辑的前提下藏角标。

两层隐藏策略

层 机制 抗 DSH 升级
① CSS 隐藏当前构建 CSS Module 类名(如 VUhOWa_indicator,折叠侧栏圆点 VUhOWa_badge) 否:哈希随构建变化
② DOM 按 aria-label 识别更新态文案(新版本、正在检查更新、正在校验更新、正在安装更新、更新失败、重试、NN%),配合 rAF 节流的 MutationObserver 与 4 秒兜底扫描 是:不依赖类名哈希

第 ② 层刻意收窄范围,避免误伤其它按钮:元素必须是带白名单内 aria-label 的 <button>,且位于设置触发行(*_triggerRow)内或 class 含 indicator;设置、打开设置、重新连接 等在保护名单内。

明确不做什么

  • 不关闭或改写更新检查流程。
  • 不隐藏、不修改「检查更新」菜单项。
  • 不在后台代为下载或安装桌面包。

安装与启用

安装前建议浏览 GitHub 源码与 MIT 许可证;插件在当前 DSH 进程权限下运行,与任何社区插件一样,安装前应自行评估信任边界。

插件声明的 DSH 引擎范围(来自 package.json):

dsh >=0.2.1-rc.1 <0.3.0-0

在 desktop profile 下执行官方 README 给出的安装命令:

dsh plugin --profile desktop add dsh-hide-update-badge

安装后按 DSH 惯例重启或重载宿主,使 patch 与客户端脚本生效。本包无额外配置字段;启用即按上述两层策略工作。

典型用法

本插件无独立 CLI 子命令或配置文件,典型用法就是:desktop profile 安装 → 重启宿主 → 角标不再显示,需要更新时仍可从菜单手动检查。

若你习惯在插件页管理扩展,也可在 DSH 插件界面启用/关闭本包,效果与 profile bundles 一致。

升级 DSH 之后

跨大版本时,官方若改文案或 DOM 结构,角标可能重新出现。README 建议的自维护步骤如下:

  1. F12 打开 DevTools,右键角标 →「检查」;
  2. 记录其 aria-label 与 class(形如 <哈希>_indicator);
  3. 将新哈希写入 client.js 的 HASH_SELECTORS,或将新文案写入 UPDATE_LABELS;
  4. 重启宿主。

这是面向 fork 或本地改包的场景;普通用户若未改源码,可等待作者发新版或自行提 Issue。

卸载

任选其一即可:

  • 在 DSH 插件页关闭本插件;或
  • 从 profile 的 dsh.profile.bundles 移除本包,并从 profile 的 package.json 删除对应依赖;

然后重启宿主。

适用场景与注意

适合:长期开 DSH Desktop、已习惯手动「检查更新」,只希望界面少一颗「新版本」胶囊的开发者。

注意:

  • 仅针对桌面壳上的那颗角标;Web 或其它 profile 行为以实际注入范围为准(包内 dsh.client.platform 为 web,通过 desktop profile 安装挂载)。
  • CSS 层随官方构建哈希失效属预期;DOM 层更稳,但仍可能因结构大改而需维护。
  • 隐藏角标不等于「没有新版本」;仍应偶尔通过菜单检查更新。

结尾

dsh-hide-update-badge 用最小改动解决「有更新提示、无关闭开关」的界面问题:更新能力保留,只去掉账号旁的「新版本」 pill。需要详情与 Issue 请见 GitHub 仓库,社区索引见 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye