Skip to content
dsh.fish
Bundle

dsh-right-drawer

Right-side drawer host for Web: every registered entry becomes a full-height drawer with its own edge tab (auto-stacked and group-centered), width resizable. Content plugins register via the dockPanels client registry. 右侧抽屉宿主:dockPanels 注册表、边缘标签堆叠、宽度拖拽。

Source
PastSheep
License
MIT
Updated
Updated 21 days ago

Readme

# @deepseek-ai/dsh-right-drawer

右侧抽屉宿主(DeepSeek Harness Web / `dsh` 宿主)。任何注册进 `dockPanels` 客户端注册表的条目都会成为一个**全高抽屉**:自带边缘竖排标签(按实际测量高度紧密堆叠、居中成组),宽度可拖拽调整。内容插件(`dsh-soln-panel`、`dsh-agent-shell`)通过 `dockPanels` 注册接入。

Right-side drawer host for DeepSeek Harness Web: every entry registered into the `dockPanels` client registry becomes a full-height drawer with its own edge tab (auto-stacked by measured height and group-centered), resizable width. Content plugins register via the `dockPanels` client registry.

## 功能 Features

- **dockPanels 注册表** — 客户端服务,内容插件用 `ctx.get('dockPanels').register({ id, label, order, render })` 接入,支持退订
- **标签自动堆叠** — 测量每个标签的真实高度,紧密排列为 50% 垂直居中成组;开合抽屉只改变 X 位置,不跳动
- **宽度拖拽** — 左缘手柄 280–900px(且不超过视口 80%),切换抽屉共享同一宽度
- **与方案面板协调** — 检测 `dsh-soln-panel` 的 `.soln-panel` 位置,打开的抽屉/剩余标签自动贴到其左缘,互不遮挡
- **免构建** — 手写 JS,`file:` 或 npm 安装均可直接使用

## 安装 Install

```sh
dsh plugin --profile web add @deepseek-ai/dsh-right-drawer
```

未发布时可用本地目录:

```sh
dsh plugin --profile web add file:C:/path/to/dsh-right-drawer
```

然后重启 DeepSeek Harness。安装后右侧出现竖排标签(如「Shell」),点击展开对应抽屉。

卸载:

```sh
dsh plugin --profile web remove @deepseek-ai/dsh-right-drawer
```

## 内容插件接入 Registering a content plugin

```js
// 在内容插件的 client 半(apply 内):
const dock = ctx.get('dockPanels')
if (dock !== undefined) {
  const dispose = dock.register({
    id: 'shell',
    label: 'Shell',
    order: 1,
    render: () => React.createElement(ShellContent, { connection }),
  })
}
```

注册表 API:`register(entry) → disposer`、`unregister(id)`、`subscribe(fn) → disposer`、`snapshot()`。

## 架构 Architecture

- 浏览器半(`lib/client.js`):提供 `dockPanels` 服务,通过 `slots.inject('shell.overlay')` 挂载 `DockHost`
- Node 半(`lib/index.js`):空实现,仅为让 bundle 行干净解析
- 内容插件通过 `dockPanels/available` / `dockPanels/unavailable` 事件或轮询自愈注册(宿主重载时注册表重建)

## License

MIT

Install

dsh plugin --profile web add github:PastSheep/dsh-right-drawer

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source