dsh-chat-collapse:DSH Web GUI 聊天組件一鍵收縮插件

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 屬性,不留殘留。

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

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

小夜