← Back to home@felixpu

dsh-sidebar-tab-actions

DSH Web 右侧栏标签页右键批量关闭:关闭左侧 / 关闭右侧 / 关闭全部

Stars
0
Language
JavaScript
Created
Oct 21, 2026
Updated
Oct 21, 2026

Introduction

dsh-sidebar-tab-actions

给 DSH(DeepSeek Harness)网页版右侧栏的标签页右键菜单加批量关闭:在官方自带的「关闭」之外,增加

  • 关闭左侧 — 关掉右键那个标签页左边(同一窗格内)的所有标签
  • 关闭右侧 — 关掉右边(同一窗格内)的所有标签
  • 关闭全部 — 关掉该窗格内的所有标签

功能

  • 作用范围严格限定在右键所在的窗格(pane),不会牵连其它窗格或浮动窗口
  • 无可关标签时对应项自动置灰;左右都没有可关标签时本插件不往菜单里塞任何东西(只剩官方「关闭」)
  • 遵守平台规则:guide 占位页作为唯一停靠标签时不可关闭,批量关闭会自动跳过它
  • 关闭走官方 closeIn 通道,因此插件注册的关闭钩子(资源清理等)照常执行
  • 中英双语文案跟随 DSH 界面语言实时切换

安装

dsh plugin --profile web add github:felixpu/dsh-sidebar-tab-actions

装完后刷新页面即可生效(客户端插件,无需重启宿主)。

也可从 npm 安装:

dsh plugin --profile web add dsh-sidebar-tab-actions

使用

在右侧栏标签页上点右键,菜单底部多出一组分隔线之后的三个动作:

菜单项行为
关闭左侧关闭该标签页左侧的、同一窗格内的全部标签
关闭右侧关闭该标签页右侧的、同一窗格内的全部标签
关闭全部关闭该窗格内的全部标签(含右键的那个)

边界行为

场景表现
窗格只有一个标签不显示本插件的菜单项(官方「关闭」已覆盖)
右键的是第一个标签「关闭左侧」置灰
右键的是最后一个标签「关闭右侧」置灰
窗格里有 guide 占位页且它是唯一停靠标签相关项跳过它,不会被关闭
窗格被拆分成多个 pane只操作右键所在 pane,不跨 pane
浮动(float)窗口浮动窗口只有一个标签且没有标签条,不参与本插件

实现说明

纯客户端插件,宿主半身是空的 apply()。

  • 扩展点:sidebar.right.tab.menu.item(@deepseek-ai/dsh-client-ui-sidebar-right 拥有的 list 槽), 每个条目收到 { tab, dismiss } 外加标准 session 注入(sessionId、t 等)。
  • 菜单本体(定位、Esc、点外部关闭)归 dockkit 所有,本插件只渲染 button[role="menuitem"], 并在动作执行前调用 dismiss()。
  • 标签顺序来自 sidebarRight 控制器按会话持有的 layout(pane.tabs 数组); 公开的 tabsIn() 会把所有窗格的标签拍平、且按对象键序排列,拿不到条带顺序。
  • 关闭走 sidebarRight.closeIn(sessionId, tabId):它先跑该标签类型的清理钩子再提交删除, 并且平台在每次动作后会自动收掉被关空的窗格、必要时补一个默认页 —— 所以逐条关闭是安全的。
  • 样式类名统一加 dsta- 前缀,颜色只用 --dsw-alias-* 主题 token,随明暗主题切换; 不 require 任何 Harness Client 包(官方规范禁止),改为复制平台菜单项的样式规则。

兼容性

  • DSH ≥ 0.2.1-rc.2(实证版本)
  • 平台 Web 客户端
  • 依赖服务:slots、locale、sidebarRight(不存在时静默降级为「菜单里没有额外项」)

许可证

MIT