dsh-nav-tidy:在不禁用插件的前提下隱藏側欄入口

前言

在 DSH Web 裏,凡是註冊了全局面板的已安裝插件,都會在左側邊欄佔一行。裝到十來條以後,工作區和會話列表往往被頂下去。官方側欄只能整列收成約 56px 的窄軌,而 More 菜單也不負責管理單條入口的顯隱。若你不想卸掉插件、只希望側欄干淨一些,dsh-nav-tidy 做的是「只藏入口、插件照常加載」這一層。

這是什麼

dsh-nav-tidy 是社區維護者 AD199-gif 發佈的 DSH 客戶端插件(當前包版本 0.3.0,MIT 許可)。它不改變插件是否啓用,只控制側欄裏某條面板入口是否在 UI 上顯示;背後插件仍會加載,面板仍可通過其它方式觸達(若插件本身提供)。

核心功能

下面幾項能力在 README 中有明確說明,安裝後即可使用。

勾選面板

側欄 More → 側欄入口… 打開底部勾選面板。取消勾選某行即隱藏對應側欄按鈕;重新勾選可恢復。「全部顯示」會清空隱藏列表。新裝插件新註冊的入口默認都會顯示,是否隱藏由你決定,插件不會出廠就替你藏掉任何一項。

控制台 API

同一套隱藏狀態可通過瀏覽器控制台腳本操作,全局對象爲 dshNavTidy:

dshNavTidy.open()          // 打開勾選面板
dshNavTidy.list()          // 當前已隱藏的入口
dshNavTidy.hide('SSH')     // 隱藏標籤包含 "SSH" 的行(子串、不區分大小寫)
dshNavTidy.show('SSH')     // 恢復
dshNavTidy.reset()         // 恢復默認(全部顯示)

匹配規則是子串、忽略大小寫:例如 SSH 會同時命中 SSH tunnel;插件 也可能連帶隱藏 插件市場。之後新安裝的插件若註冊了側欄行,會自動出現在面板裏,無需改本插件代碼。

持久化

隱藏列表寫在 localStorage 鍵 dsh-nav-tidy:hidden 下,重啓 dsh 後仍生效。

實現要點(便於排錯)

插件給側欄根節點打 data-nav-tidy-scope,再注入樣式規則,按 button 的 aria-label 子串隱藏對應行;用 MutationObserver 在 React 替換側欄子樹時重新掛上標記。勾選面板註冊在 sidebar.panellist.actions 插槽(與官方 More 菜單同類位置),以普通 DOM 覆蓋層渲染。不 patch dsh 源碼,加載時不強制依賴 @deepseek-ai/*;菜單行可選使用 @deepseek-ai/dsh-client-ui-primitives,缺失時回退爲普通按鈕。

安裝與啓用

按你的 profile 名稱替換下面的 desktop(若使用 dsh web,可改爲 web 等)。

從 GitHub 安裝:

dsh plugin --profile desktop add github:AD199-gif/dsh-nav-tidy

或使用發佈頁預構建包:

dsh plugin --profile desktop add https://github.com/AD199-gif/dsh-nav-tidy/releases/latest/download/dsh-nav-tidy.tgz

安裝後需重啓 dsh,客戶端 bundle 纔會被加載。

插件以當前 dsh 進程與 Web 端的權限運行。安裝前建議在 GitHub 倉庫 查看源碼與 MIT 許可證,自行判斷是否符合環境要求。

典型用法

  1. 安裝並重啓 dsh Web 或 Desktop。
  2. 側欄打開 More → 側欄入口…,對暫時不用的入口取消勾選。
  3. 若需批量或自動化,在開發者工具控制台調用 dshNavTidy.hide('某標籤片段');用 dshNavTidy.list() 覈對當前隱藏項。

要確認某條側欄按鈕實際暴露的標籤,可在控制台執行:

[...document.querySelectorAll('nav button')].map(b => b.getAttribute('aria-label'))

沒有 aria-label 的入口無法被本插件按標籤命中。

環境與限制

要求: dsh Web(桌面應用或 dsh web profile),且存在 sidebar.panellist.actions 插槽——README 寫明該插槽在 @deepseek-ai/dsh-client-ui-sidebar 0.2.2-rc.1 及附帶 dsh-client-ui-entry-customization 的構建中可用;作者在 Windows 上於 DSH Desktop 0.2.2-rc.1 做過測試。

限制:

  • 僅視覺隱藏。 被藏入口對應的插件仍會加載並佔用內存;若要釋放資源,需在插件管理裏禁用插件本身。官方整列摺疊與本插件「按行管理」是兩套能力。
  • 匹配依賴側欄按鈕的 aria-label;無法靶向無標籤的行。
  • More 那一行本身不能隱藏,否則無法再回到勾選面板。

結尾

dsh-nav-tidy 適合側欄插件較多、又不想爲清爽界面逐個禁用插件的 DSH 用戶:用勾選面板或 dshNavTidy API 管理入口顯隱,狀態落在本地 localStorage。

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

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

小夜