dsh-visible-action-row:每条消息的操作栏不再需要悬停

前言

DSH 的对话界面里,每条消息气泡下方有一条操作栏,放着复制、点赞、点踩、分支等按钮、时间戳,以及其他插件塞进这一行的按钮和信息。原生实现只在最新一轮消息上常显这条操作栏,历史消息要鼠标悬停才会出现。

排查历史消息、回看上文时,悬停是个多余的动作:你得一条一条点过去才能看到时间或复制按钮。dsh-visible-action-row 把这个行为改成所有消息的常显,不改内容、不改位置。

这是什么

DSH(桌面版 / Web 版)插件,维护者 Bobnemimimmi,MIT 许可,当前包版本 0.2.0。社区目录将其归在「客户端」分类下。

它做一件事:用一条 scoped CSS 可见性覆盖,把每条消息(用户消息和 DSH 消息)的操作栏都保持成最新一轮那样的常显状态。原生渲染、原生位置、原生内容全部复用,不新增任何可见 UI。

核心能力

  • Always visible:用户与 DSH 消息的操作栏全部常显,含历史消息;悬停前后一致。
  • Native content:按钮、时间与第三方插件塞进该行的内容原样显示,不重新生成、不改格式。
  • Zero config:无设置项、无开关、无存储、无后端、无网络请求,安装即生效。
  • Clean uninstall:卸载后恢复原生「仅最新一轮常显」行为,不残留 DOM / CSS / 配置。
  • Minimal & safe:不扫描 DOM、无 MutationObserver、无轮询;仅调整 opacity,按钮行为与悬停效果不变。

为什么能这么小:它不走 DOM 注入,只是把操作栏根节点原本依赖悬停才置为可见的 opacity 覆盖掉。

安装与启用

官方给出四种安装路径,优先用 npm。

通过 npm 安装

dsh plugin --profile web add dsh-visible-action-row

npm 安装拿到的是发布时构建好的成品,无需任何构建授权。

通过 DSH Desktop 安装

  1. 打开侧栏 插件(Plugins)页;
  2. 点击 添加插件(Add plugin)旁的箭头,选择 安装第三方插件(Install a third-party plugin);
  3. 输入 dsh-visible-action-row 安装,安装完毕后点击 立即启用。

从 GitHub 安装

dsh plugin --profile web add github:Bobnemimimmi/dsh-visible-action-row

注意这条路径会运行本包的 prepare 自构建。pnpm ≥ 10 首次 add 会拒绝并要求授权,按提示把打印的 allowBuilds 键加入 profile 的 pnpm-workspace.yaml 后重跑。

本地目录 / tarball

dsh plugin --profile web add ./dsh-visible-action-row

启用

命令行安装后重启 DSH 即生效:桌面版重启应用,Web 版重启 dsh web。桌面版的 profile 名是 desktop,把上面命令里的 --profile web 换成 --profile desktop 即可。

卸载与迁移

卸载:

dsh plugin --profile web remove dsh-visible-action-row

重启后恢复原生行为。

如果你之前用的是旧包 dsh-always-status-bar,建议先移除再装新包——旧包只覆盖时间戳,且其锚点在 DSH 0.2.x 中已变更,在新版里实际是空转:

dsh plugin --profile web remove dsh-always-status-bar
dsh plugin --profile web add dsh-visible-action-row

适用场景与注意

适合:希望在长对话里直接看到每条消息的时间和操作按钮,或者依赖操作栏上的第三方插件按钮的开发者。

不适合:希望操作栏只在最新一轮出现以减少视觉噪音的场景。这个插件没有开关,装上就是全局常显。

环境要求:DSH 桌面版或 dsh web(二进制安装 / 源码启动均可),需要 dsh CLI(或按 DSH 文档以源码方式运行 pnpm dsh)。README 中写明的已验证环境是桌面版 0.2.1-rc.5(Windows 11)与源码启动的 Web 0.2.2-alpha.2(Windows 11),两者加载同一套前端产物;macOS / Linux 未单独实测,但同一份 client bundle 不含平台分支。

版本兼容风险:插件依赖三个前端锚点来定位操作栏。若升级 DSH 后操作栏不再常显,请核对以下锚点是否仍存在于 packages/client/ui-chat/src/client/chat/:

  • MessageIconActions.tsx → 操作栏根节点的 data-clock
  • TurnTailNodeView.tsx → data-actions-reveal
  • ChatNodeSeat.tsx → data-chat-flow-kind

另外两点使用前应确认:插件以当前 dsh 进程权限运行,安装前应检查其源码与 MIT 许可证;仓库目前的关注度不高(GitHub 2 stars、1 forks),升级 DSH 前最好先看一眼 Issue 区。

结尾

这个插件的价值很窄:把一个由悬停触发的可见性改成常显,代价是一条 scoped CSS,没有配置面、没有后端、没有卸载残留。如果你觉得历史消息的操作栏探不到是痛点,它是最小改动的那一种解法。

目录页:https://www.skillhub.cn/plugins/Bobnemimimmi/dsh-visible-action-row
仓库:https://github.com/Bobnemimimmi/dsh-visible-action-row

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

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

小夜