dsh-nav-tidy:在不禁用插件的前提下隐藏侧栏入口

前言

在 DSH Web 里,凡是注册了全局面板的已安装插件,都会在左侧边栏占一行。装到十来条以后,工作区和会话列表往往被顶下去。官方侧栏只能整列收成约 56px 的窄轨,而 More 菜单也不负责管理单条入口的显隐。若你不想卸掉插件、只希望侧栏干净一些,dsh-nav-tidy 做的是「只藏入口、插件照常加载」这一层。

这是什么

dsh-nav-tidy 是社区维护者 AD199-gif 发布的 DSH 客户端插件(当前包版本 0.3.0,MIT 许可)。它不改变插件是否启用,只控制侧栏里某条面板入口是否在 UI 上显示;背后插件仍会加载,面板仍可通过其它方式触达(若插件本身提供)。

核心功能

下面几项能力在 README 中有明确说明,安装后即可使用。

勾选面板

侧栏 More → 侧栏入口… 打开底部勾选面板。取消勾选某行即隐藏对应侧栏按钮;重新勾选可恢复。「全部显示」会清空隐藏列表。新装插件新注册的入口默认都会显示,是否隐藏由你决定,插件不会出厂就替你藏掉任何一项。

控制台 API

同一套隐藏状态可通过浏览器控制台脚本操作,全局对象为 dshNavTidy:

dshNavTidy.open()          // 打开勾选面板
dshNavTidy.list()          // 当前已隐藏的入口
dshNavTidy.hide('SSH')     // 隐藏标签包含 "SSH" 的行(子串、不区分大小写)
dshNavTidy.show('SSH')     // 恢复
dshNavTidy.reset()         // 恢复默认(全部显示)

匹配规则是子串、忽略大小写:例如 SSH 会同时命中 SSH tunnel;插件 也可能连带隐藏 插件市场。之后新安装的插件若注册了侧栏行,会自动出现在面板里,无需改本插件代码。

持久化

隐藏列表写在 localStorage 键 dsh-nav-tidy:hidden 下,重启 dsh 后仍生效。

实现要点(便于排错)

插件给侧栏根节点打 data-nav-tidy-scope,再注入样式规则,按 button 的 aria-label 子串隐藏对应行;用 MutationObserver 在 React 替换侧栏子树时重新挂上标记。勾选面板注册在 sidebar.panellist.actions 插槽(与官方 More 菜单同类位置),以普通 DOM 覆盖层渲染。不 patch dsh 源码,加载时不强制依赖 @deepseek-ai/*;菜单行可选使用 @deepseek-ai/dsh-client-ui-primitives,缺失时回退为普通按钮。

安装与启用

按你的 profile 名称替换下面的 desktop(若使用 dsh web,可改为 web 等)。

从 GitHub 安装:

dsh plugin --profile desktop add github:AD199-gif/dsh-nav-tidy

或使用发布页预构建包:

dsh plugin --profile desktop add https://github.com/AD199-gif/dsh-nav-tidy/releases/latest/download/dsh-nav-tidy.tgz

安装后需重启 dsh,客户端 bundle 才会被加载。

插件以当前 dsh 进程与 Web 端的权限运行。安装前建议在 GitHub 仓库 查看源码与 MIT 许可证,自行判断是否符合环境要求。

典型用法

  1. 安装并重启 dsh Web 或 Desktop。
  2. 侧栏打开 More → 侧栏入口…,对暂时不用的入口取消勾选。
  3. 若需批量或自动化,在开发者工具控制台调用 dshNavTidy.hide('某标签片段');用 dshNavTidy.list() 核对当前隐藏项。

要确认某条侧栏按钮实际暴露的标签,可在控制台执行:

[...document.querySelectorAll('nav button')].map(b => b.getAttribute('aria-label'))

没有 aria-label 的入口无法被本插件按标签命中。

环境与限制

要求: dsh Web(桌面应用或 dsh web profile),且存在 sidebar.panellist.actions 插槽——README 写明该插槽在 @deepseek-ai/dsh-client-ui-sidebar 0.2.2-rc.1 及附带 dsh-client-ui-entry-customization 的构建中可用;作者在 Windows 上于 DSH Desktop 0.2.2-rc.1 做过测试。

限制:

  • 仅视觉隐藏。 被藏入口对应的插件仍会加载并占用内存;若要释放资源,需在插件管理里禁用插件本身。官方整列折叠与本插件「按行管理」是两套能力。
  • 匹配依赖侧栏按钮的 aria-label;无法靶向无标签的行。
  • More 那一行本身不能隐藏,否则无法再回到勾选面板。

结尾

dsh-nav-tidy 适合侧栏插件较多、又不想为清爽界面逐个禁用插件的 DSH 用户:用勾选面板或 dshNavTidy API 管理入口显隐,状态落在本地 localStorage。

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

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

小夜