dsh-aionui-layout:在 DSH Web 上恢复 AionUi 式右侧两栏

前言

DSH 0.1.7 起,右侧栏由宿主的 ui-sidebar-right 接管:一格一个 tab,最多两格。dsh-better-sidebar 只往里面注册 tab 类型,不再自绘整栏;从 v0.14.0 起默认「文件打开方式」也改成了「独立」,v0.19.0 又退役了自绘右栏。结果是:右栏不会自动再出现「预览 + 文件列表」并排、旁边再挂「文件变动」那套老习惯布局。

更早的 @linxin666/dsh-client-ui-aionui-panel 曾在 Web UI 里自绘 Explorer + Preview,但该插件自 npm 0.3.6 起已停止支持,最后一个可用版本面向的旧 runtime 在 DSH 0.1.7 里已不存在,装回新版 DSH 也激活不了。

下面介绍 dsh-aionui-layout(维护者 tenyding,分类:客户端):不重画任何面板,只在会话右栏布局为空时,用 better-sidebar 自带的 editor(合并模式)与 git 两个 tab 摆出两格,把 AionUi 那套右侧面板形态补回来,且 better-sidebar 的新特性一个不丢。

这是什么

dsh-aionui-layout 是纯排版插件:监听会话右栏挂载,若该会话在 localStorage 里持久化的布局没有任何 tab,就自动打开「文件(预览 + 停靠文件树)」与「文件变动」两格;内容 100% 来自 dsh-better-sidebar,不 monkey patch DSH 或 better-sidebar 源码。

仓库已提交手写 bundle 的 lib/client.js,无构建步骤,用 github: 安装即可直接加载。

布局示意(默认宽度比约 0.62 / 0.38,可拖分隔条调整):

┌──────────┬───────────────┬────────────────────────────┬──────────────────┐
│ 会话列表 │    对话框      │  文件(预览 + 停靠文件树)   │     文件变动      │
│  (DSH)   │    (DSH)      │  better-sidebar editor     │ better-sidebar git│
└──────────┴───────────────┴────────────────────────────┴──────────────────┘

核心功能

自动播种空右栏

每个「右侧栏布局为空」的会话在装插件并刷新后,会按序:openTab('editor') → split() → 在新格 openTab('git') → 关闭 kind 为 guide 的开始页 → focus 预览格。已有 tab 的布局一律不动。

交互对齐 AionUi 习惯

合并模式下,在文件树里点文件,左侧预览原地换路径,文件树不消失;聊天或工具行里的文件链接会落到预览格(排版时左格为活动格,DSH openResource 默认进活动格)。两格宽度由 DSH dock 拖拽;「文件变动」格仍可用宿主「分栏」再拆合,或拖 tab 合并。

边界与降级

情况 行为
editor 未注册(未装/停用 better-sidebar) 跳过,不报错
git 在 tabsEnabled 里关闭 只开一格「文件」,不拆栏
split() 因栏宽不足失败 只保留预览格
座席未就绪导致 openTab 抛错 最多重试 8 次,间隔 250ms

可调常量

改 lib/client.js 顶部常量后刷新即可(无需构建):PREVIEW_SIZE(默认 0.62)、FIRST_DELAY_MS(120)、MAX_ATTEMPTS(8)、RETRY_DELAY_MS(250)。要改左右格内容或顺序,可调整 seedLayout() 里 openTab / split() 的调用顺序。

前置条件

要求 说明
DSH 0.1.7-rc.1 及以上
dsh-better-sidebar >= 0.19(README 实测 0.21.1)
文件打开方式 必须「合并」;「独立」下无路径的 editor 只有文件树,没有预览列
tab editor、git 在 tabsEnabled 中保持启用

profile 示例(~/.dsh/profiles/<profile>/cordis.patch.yml):

- id: better-sidebar
  name: dsh-better-sidebar
  config:
    editorExplorer: true
    tabsEnabled:
      editor: true
      git: true

图形界面:设置 → 侧边卡片 → 「文件」卡片 → 文件打开方式 → 合并。

安装与启用

先做 profile 为 web 时的推荐安装(命令来自仓库 README):

dsh plugin --profile web add github:tenyding/dsh-aionui-layout

装完后 刷新页面;若 profile 无 patchReload: live + HMR,需重启 dsh web。

开发时可从本地目录 link(需已有仓库副本):

dsh plugin --profile web add link:$PWD/dsh-aionui-layout

CLI 会把包写入 profile 的 package.json,并把包名追加到 dsh.profile.bundles(包声明了 dsh.bundle.patch)。

安全说明:插件在 当前 DSH 进程权限 下作为客户端 bundle 运行;安装前请自行查看 GitHub 源码 与 MIT 许可证(见 package.json),确认符合你的环境策略。社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

日常使用

  1. 确认 better-sidebar 已装且「合并」模式、editor/git tab 已开。
  2. 执行上述 dsh plugin --profile web add github:tenyding/dsh-aionui-layout。
  3. 刷新 Web GUI;新建或右栏仍为空的会话会自动两栏。

已有布局的老会话想立刻改成两栏

插件故意不改已有布局。若需强制播种,把仓库 snippet/seed-layout.js 整段贴进 DevTools 控制台执行,马上刷新(否则内存 store 会写回旧布局)。或删除 localStorage['dsh.sidebar-right.v1.<sessionId>'] 后刷新,让空布局再次触发自动排版。

行为自测(仓库内)

node test/seeding.test.mjs

纯 Node、零依赖,驱动真实 bundle 覆盖 8 种 seeding 情形。

排障要点

现象 处理
右栏无变化 硬刷新;仍无效则重启 dsh web
只有「文件」一格 检查 tabsEnabled.git 或拖宽右栏后再分栏
「文件」只有树、无预览 editorExplorer 未生效,仍为「独立」模式
某会话从不排版 该会话已有布局;用 snippet 或清对应 localStorage 键

结尾

dsh-aionui-layout 在 DSH「一切皆插件」的前提下,用最小排版逻辑把 better-sidebar 的 editor + git 固定成 AionUi 式右栏,适合仍习惯「预览与文件树同格、变更在旁」、且已跟上游 better-sidebar 能力线的 Web 用户。

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

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

小夜