dsh-sidebar-tab-actions:给右侧栏标签菜单补上常用操作

前言

在 dsh 的 Web GUI 里,右侧栏标签的右键菜单默认只有一条「关闭」。要完成「关闭其他」「关闭左侧/右侧/全部」这些常见操作,只能靠手动逐个关闭,效率较低。这个插件用官方提供的菜单扩展位,把右侧栏标签菜单补齐为包含固定、关闭其他、关闭右侧、关闭左侧、关闭全部的一组操作。

是什么

dsh-sidebar-tab-actions 是一个为 dsh Web GUI 设计的客户端插件,维护者为 zhaoruizhe81。它通过 dsh 的 sidebar.right.tab.menu.item 扩展位,往右侧栏标签的右键菜单里注入一组操作项,包括固定标签、关闭其他/右侧/左侧/全部标签。插件只在浏览器端运行,host 端为空。

核心功能

安装后,右侧栏标签的右键菜单会变成:

关闭              ← 套件自带的
────────────────
📌 固定
关闭其他
关闭右侧
关闭左侧
关闭全部          ← 危险色

插件提供五个菜单项,各自的行为如下:

  • 固定 / 取消固定:切换当前标签的固定状态,按会话持久化。固定的标签在标题左侧会显示一枚图钉。
  • 关闭其他:同分栏里除自己以外的全部标签。
  • 关闭右侧:同分栏里排在当前标签右边的全部标签。
  • 关闭左侧:同分栏里排在当前标签左边的全部标签。
  • 关闭全部:同分栏的全部标签,包括自己。

固定标签具有以下特性:

  1. 固定标签不会被任何批量关闭操作关闭。
  2. 目标为空的项不出现。例如,右键第一个标签时不会出现「关闭左侧」,整个分栏只剩一个标签时四个关闭项都不会出现。
  3. 菜单项顺序与屏幕上标签的显示顺序一致。
  4. 唯一停靠的引导页不算可关闭,与 dsh 自身的隐藏关闭按钮规则一致。
  5. 固定状态按会话持久化,键为 dsh.sidebar-tab-actions.pins.v1.<sessionId>,刷新页面和重启应用后仍然存在。

已知限制:

  • 固定标签仍然可以通过 chip 上的 × 或套件自带的「关闭」单独关闭。插件的固定语义是「不被批量关闭」,与 VS Code、Chrome 的固定标签行为一致。
  • 批量关闭会产生多条撤销记录,每关闭一个标签就是一步撤销。
  • 关闭分栏最后一个标签会让整列收起,这是 dsh 自身规则,「关闭全部」因此可能把右栏收起,固定一个标签可避免。
  • 固定按标签 id 记录,不按内容。关掉再重新打开同一个文件,固定会丢失。
  • 图钉是 DOM 装饰,插件会在 chip 上写入自己拥有的 data-dsh-tab-pinned 属性并注入样式表,随插件一起回收。如不需要,可通过配置关闭。

安装与启用

在终端中执行以下命令:

git clone https://github.com/zhaoruizhe81/dsh-sidebar-tab-actions.git
cd dsh-sidebar-tab-actions

# 先退出 DeepSeek Harness,profile 的 package.json 有文件锁
"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop add link:"$PWD"

安装完成后重新打开 App。dsh 会把包名写入 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles,包里的 cordis.patch.yml 作为 bundle 层把插件行插入到 roster 中。如果遇到 cli/bin/dsh 权限问题,可用 sh 调用;如果遇到 ERR_PNPM_IGNORED_BUILDS 导致退出码非零,dsh 会跳过自动写入 dsh.profile.bundles,此时需手动把 "dsh-sidebar-tab-actions" 添加到 dsh.profile.bundles 数组末尾。

卸载命令:

"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop remove dsh-sidebar-tab-actions

也可以在「设置 → 插件」中直接停用该 bundle。

配置

在 profile 的 cordis.patch.yml 中,用与插件相同的 id 覆盖配置:

- id: sidebar-tab-actions
  name: dsh-sidebar-tab-actions
  config:
    badge: false        # 关掉固定标签的 chip 图钉

将 badge 设为 false 即可移除固定标签左侧的图钉装饰。

改代码

插件的产物在 lib/client.js,没有构建步骤,按 dsh 客户端模块系统的闭包工厂形状手写,只引入必要的基线模块(React、dsh-client-store、dsh-client-ui-primitives)。修改后保存即可生效,无需刷新、重启或停用再启用。

插件利用 host 侧的 dsh-client-hmr 定期轮询 client.js 的修改时间,一旦变化就更新 revision 并通过 SSE 推给页面重新 import,实现秒级热更新。修改 package.json 的 dsh.client 或 cordis.patch.yml,或更新 profile 的 dsh.profile.bundles,同样会触发热更新。

适用场景与注意

  • 适合在 dsh 0.2.0-rc.2 及之后的版本中使用。
  • 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证。
  • 固定标签仅能避免被批量关闭,不能阻止单独关闭。
  • 批量关闭会生成多条撤销记录,与手动逐个关闭一致。

结语

dsh-sidebar-tab-actions 为 dsh Web GUI 的右侧栏标签菜单补上了固定、关闭其他/右侧/左侧/全部等常用操作,通过官方扩展位实现,不需要重启或刷新即可生效。适合需要频繁管理右侧栏标签的用户使用。

  • 目录页:https://www.skillhub.cn/plugins/zhaoruizhe81/dsh-sidebar-tab-actions
  • GitHub:https://github.com/zhaoruizhe81/dsh-sidebar-tab-actions
羽毛球分组比赛记分
小程序二维码

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

小夜