Overview
dsh-desktop-ui
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
**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.
