dsh-pwa-ui:讓 DSH Web 應用用自身界面當窗口標題欄

前言

DeepSeek Harness(dsh)的 web profile 通過瀏覽器訪問時,界面通常仍帶着瀏覽器或系統默認的標題欄區域:要麼多佔一條 chrome,要麼標題欄樣式與側邊欄、會話 header 脫節。若把 dsh web 安裝成 PWA,Window Controls Overlay(WCO)可以把系統窗口按鈕疊在網頁頂部,但還要改 manifest、預留控件條帶、指定哪些區域可拖動窗口——這些往往要動前端和路由。

下面介紹社區插件 dsh-pwa-ui(npm 包名 @liuzw/dsh-pwa-ui,維護者 liuzwZYW):在 已安裝 的 Web 應用裏啓用 WCO,且不額外畫一條假標題欄,讓應用自身的 logo 行與會話 header 承擔窗口標題欄職責。

這是什麼

dsh-pwa-ui 是面向 DSH web profile 的插件,基於 Window Controls Overlay API。主機側接管 /manifest.webmanifest 並在返回的 manifest 中把 display_override: ["window-controls-overlay"] 放在首位;瀏覽器側在 overlay 可見時注入樣式與 DOM 標記,複用 shell 已有的 data-window-drag 等鉤子,使拖拽與讓位行爲與桌面版思路一致。

桌面/Electron 窗口自帶的 data-platform="darwin" / data-windows-titlebar chrome 不受此插件影響。

核心功能

清單與路由(主機:index.js)

插件接管精確路由 /manifest.webmanifest。在 @deepseek-ai/dsh-web-frontend/dist/manifest.webmanifest 可讀時,除在 display_override 中優先加入 window-controls-overlay 外,name、short_name、start_url、scope、display、icons 等字段原樣透傳;讀不到時才用內置副本兜底。display: "fullscreen" 仍作爲回退,不支持 overlay 的平臺行爲不變。

瀏覽器側樣式(客戶端:client.js)

當 WCO 可見時,在 <html> 上設置 data-dsh-wco 並注入樣式表;卸載時回收。普通瀏覽器標籤頁裏 navigator.windowControlsOverlay.visible 爲假且 env(titlebar-area-height) 爲 0px 時,不畫 overlay、不預留空間,佈局與未裝插件時相同。

標題欄即應用界面

插件不另造 chrome,而是:

  1. 將 html[data-dsh-wco] [data-window-drag] 設爲 app-region: drag,側邊欄品牌行與會話 header 可拖動窗口。
  2. 通過既有 no-drag 名單(如 button、a、[role=tab])及 data-window-drag-recall 保持控件可點。
  3. 用 CSS 變量 --dsh-wco-controls-start / --dsh-wco-controls-end 量測系統窗口按鈕佔用的條帶(Windows 在右、macOS 在左),讓應用控件讓開;併發布 --dsh-frame-leading-clearance、--dsh-frame-overlay-top 等,供 frame 標題行與浮層避讓。

包內爲零依賴原生 ES 模塊,無構建步驟;peerDependencies 要求 @deepseek-ai/dsh 版本 >=0.2.0-rc.2 <0.3.0-0,Node >=22。當前 npm 版本爲 1.0.2,許可證 MIT。

安裝與啓用

在已配置 DSH web profile 的環境中執行:

dsh plugin --profile web add @liuzw/dsh-pwa-ui

安裝後需重啓 dsh web(清單路由在啓動時接管)。在 Edge 或 Chrome 中打開界面,通過地址欄 安裝 將應用安裝到本地;從已安裝應用窗口打開後,logo 行與會話 header 即作爲標題欄區域。

插件以當前 dsh 進程權限運行,安裝前建議閱讀 GitHub 倉庫 源碼並確認 MIT 許可是否符合你的合規要求。

典型用法與預覽

正式效果:完成上述安裝與 PWA 安裝後,在 Windows/macOS 上支持 WCO 的 Edge 或 Chrome 中,從已安裝應用入口啓動即可。

不安裝 PWA 先看佈局:Microsoft Edge DevTools → 應用程序 → 窗口控件疊加(Window Controls Overlay)可模擬 overlay。即使頁面上仍看不到 navigator.windowControlsOverlay API,插件也會把 DevTools 模擬出的 env() 幾何當作已啓用 overlay 處理,便於調試樣式。

適用場景與注意

適合誰:長期在 web profile 下把 dsh web 當桌面應用用、且使用 Edge/Chrome 安裝 PWA 的開發者;希望在標題欄區域與 DSH 自身 UI(品牌行、會話 header)統一,而不是系統默認標題條。

環境要求:

  • 僅 DSH web profile;非已安裝 PWA 的標籤頁不會啓用 overlay 相關佈局。
  • 支持 Window Controls Overlay 的瀏覽器,且必須是安裝後的應用窗口。

已知耦合與限制(來自上游 README):

  • 標題欄 chrome 背景在刷新時可能短暫與頁面不一致;插件已寫入 ::window-controls-overlay { background: transparent } 規則,待提案在瀏覽器落地後生效;此前主要受 manifest 的 theme_color 影響。
  • 實現依賴 @deepseek-ai/dsh-web-frontend 的 data-window-drag、右側欄屬性名及部分 CSS-module 尺寸;前端大改時插件可能需要同步更新。
  • macOS 讓位邏輯已實現,維護者註明尚未在真實 macOS 窗口上驗證。

DeepSeek Harness 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區收錄,與 DeepSeek / 幻方無官方從屬關係。

鏈接

若你的日常入口是已安裝的 dsh web PWA,dsh-pwa-ui 用一條官方安裝命令加上 manifest 與客戶端補丁,把窗口標題欄收進應用自身界面,並複用 shell 已有拖拽標記,避免爲 WCO 單獨再造一層 chrome。

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

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

小夜