概览
dsh-desktop-ui
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
**Requires DSH `>=0.2.0-rc.2 <0.3.0`.** Tested on DSH 0.2.0-rc.2 with Node 24. This is an **internal integration**, not a stable public DSH API. It plugs into: | Seam | Use | |---|---| | `main` keyed slot, key `dsh-desktop-ui` | the desktop canvas and taskbar, selected with `ctx.layout.selectPanel` | | `main.conversation` entry | each window renders the stock conversation entry's own component with its own render rights, captured when DSH first renders it, so every plugin contribution appears inside windows too (falls back to the `conversation.content` factory if unavailable) | | `dsh-desktop-ui.window` (session-scoped child slot) | one window body per session, under that session's scope | | `plugins.bundle.config` (key `dsh-desktop-ui`) | the plugin's settings on its own Plugins page (the hover opt-out) | | `sidebar.footer.action` (order −100) | the Desktop mode switch, sorted first; the footer row is stacked vertically while it is present | | `conversation.header.leading` (popout pages only) | the **Pop back in** button in a popped-out window's header | | `BroadcastChannel('dsh-desktop-ui.v1')` | same-origin messages between the canvas and popout windows (`popped`, `pop-in-request`, `pop-in`, `closed`); session ids only | | `configForms` (`dsh-desktop-ui` namespace) | Host-backed `layout` field (volatile plugin config) for restart-proof restore | | `ctx.sessions.retain(id, { source: 'desktopWindow' })` | each window owns an independent session reference, released on close | | `ctx.uiWorkspace.openSession` / `startSession` | keeps the sidebar selection in sync and creates new sessions | While Desktop mode is on, navigation that would normally reveal the conversation (sidebar clicks, New Session, shortcuts) is captured: the session opens as a window and the desktop stays visible. Known limitations: - Later DSH versions may change these internal seams; the plugin may need an update. - The right sidebar (files, terminal, browser) still belongs to the main session, not to individual windows. - Window positions are stored per browser, not per account or device. - Window scaling uses CSS `zoom` (Chrome/Edge/Safari and Firefox 126+). - Popout uses `window.open`; if the browser blocks popups for the DSH page, allow them for that address. Popout URLs carry only `#dsh-desktop-ui-popout=<session id>` in the hash (never the launch token); the window authenticates with the existing DSH browser cookie. Popped-out state is not saved — after a full restart sessions come back docked on the canvas. - The sidebar highlight finds rows by DSH's `data-row-key` attributes and opens folders by clicking their own folder control, so DSH's sidebar keeps owning its state. A future sidebar redesign may need an update. - Reusing the stock conversation entry wraps it at runtime (the same technique `dsh-workspace-sorter` uses for the sidebar). It is restored when the plugin unloads. - The UI strings are English only. - Not yet tested: two tabs at once, a live model turn streaming inside a window, and coexistence with other sidebar plugins.
