READMESource: main@b14b390f
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
No comments yet. Be the first to write one.