dsh-chat-collapse: One-Click Collapse Plugin for DSH Web GUI Chat Components

DSH 采用“一切皆插件”的架构,允许在不修改核心代码的情况下扩展功能。在 DSH Web GUI 中,聊天组件是交互核心,但常驻的输入框和工具条会占用大量垂直空间,导致对话内容被压缩。dsh-chat-collapse 插件提供了一种非侵入式的解决方案:通过在输入框工具行增加一个收缩按钮,将组件隐藏,并从角落唤出恢复球,从而释放空间。

插件定位

这是一个由 cx2002302-lang 维护的 DSH Web GUI 插件。它运行在纯浏览器侧,不 patch 本体、不注入 bundle、不起宿主服务,完全符合 DSH 的插件化理念。

核心功能

  1. 一键收缩与恢复
    点击输入框工具行最右侧的按钮,聊天组件会收起,释放纵向空间。收起后,视口角落会浮出一个恢复球,点击即可还原组件。组件收起时,草稿、贴的图、光标位置全部保留。

  2. 目标切换
    默认只收缩输入框区域。通过右键点击恢复球,可以在「输入框」和「整个对话区」之间切换收缩目标。

  3. 快捷键与持久化
    支持按 Alt+H 键盘快捷键切换收起/展开状态。状态通过 localStorage['dsh.chatCollapse.v1'] 持久化,刷新页面后保持。

  4. 隐私与安全
    插件无网络请求、无遥测、无宿主服务。唯一的落盘操作是本地存储的状态数据,不接触会话内容,不读取草稿文本。

安装与启用

安装前请确保 DSH 版本不低于 0.1.2-rc.1。

  1. 安装插件:
    dsh plugin --profile web add github:cx2002302-lang/dsh-chat-collapse
  1. 安装完成后,需要重启 DSH Web 服务以加载新插件(根据 README 示例):
    systemctl --user restart dsh-web.service
  1. 重启并刷新页面后,输入框工具行最右侧会出现收缩按钮。

典型用法

  • 收起组件:点击输入框工具行最右侧的按钮。
  • 恢复组件:点击角落浮出的恢复球。
  • 键盘切换:按 Alt+H。
  • 切换收缩目标:在组件收起状态下,右键点击恢复球,选择目标。

技术细节

  • 依赖钩子:插件依赖官方源码中的字面量属性钩子,包括 [data-composer-card]、[data-composer-seat] 和 [data-conversation-scroll]。
  • 实现方式:通过在 <html> 上设置 data-dsh-cc 和 data-dsh-cc-target 属性,配合 CSS 选择器驱动显隐。这种方式避免了使用 class 名称,防止 React 重渲染时样式丢失。

卸载

如果需要移除插件:

dsh plugin --profile web remove dsh-chat-collapse

卸载时会自动清理注入的样式、按钮、恢复球及 HTML 属性,不留残留。

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

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

Xiaoye