yth1120/deepseek-harness--packages-client-ui-sidebar ↗★ 1
@deepseek-ai/dsh-client-ui-sidebar
Sidebar plugin: session multi-level tree, search, grouping, state dots 适合需要会话导航侧边栏的用户,工作区浏览由其他包负责。
同名パッケージの別リポジトリ
- fufankeji/deepseek-harness-studio--packages-client-ui-sidebar
- op7418/pilot-harness--packages-client-ui-sidebar
- peiyuwang54/deepseek-harness-cli--packages-client-ui-sidebar
- KaichenCurry/dsh-design-mode--packages-client-ui-sidebar
- ayuanwong/dsh-ux--packages-client-ui-sidebar
- luxiu666/OmniOps--packages-client-ui-sidebar
インストール
検証済み bundle がないか、互換性チェックに失敗しています。先にリポジトリの説明を読んでください。 README 全文を読む ↗
ドキュメント
README 全文を読む ↗@deepseek-ai/dsh-client-ui-sidebar
English | 中文
Sidebar shell plugin: the brand row, New Session action, layout-owned collapse control, scroll-aware region seat, and bottom-pinned Settings seat. ui-workspace owns the Workspace and Session browser rendered into sidebar.workspaces; this package neither derives its rows nor owns its view preferences. Collapse is off-canvas: the layout resolves a closed sidebar to zero width, so the whole column slides out of view and the shell stays mounted (clipped) rather than rendering a compact rail. While composed, this package also contributes a two-button capsule group — sidebar toggle and New session — to the far-left leading seat of the floating session header (conversation.session.header.leading), giving the off-canvas sidebar a visible re-entry point at the conversation surface's top-left corner. Contract: the slot system standard.
The expanded brand row renders sidebar.brand.mark and sidebar.brand.name as independent single slots. Without occupants, the shell uses the fish mark and a DSH Local Build label carrying the build's 7-character DSH_CLIENT_COMMIT_HASH badge. A deployment package can replace either value without replacing the New Session control; declaration-aware slots.inject() lets such a package activate before or after the sidebar.
New Session starts the runtime's page-local frontend Session Intent. The runtime targets the explicit Workspace used by a scoped action, otherwise the current Session's Workspace, otherwise the most recently active Workspace; when none exists it clears into the blank New Session page. Workspace-specific controls and the shared picker belong to ui-workspace.
SidebarRootComponentProps composes the layout owner share, the global useSessions and useWorkspaces hooks, the declared brand, sidebar.workspaces, and sidebar.settings child slots, and injected startSession plus sidebar-toggle callbacks. There is no plugin store.
Collapse keeps the shell mounted at zero width (clipped off-canvas) so browsing state survives, and re-expanding restores the stored width. The leading group renders at the conversation surface's top-left corner in both the new-session hero (which keeps a leading-only header) and active sessions — but only while the sidebar is off-canvas: an expanded sidebar owns the same brand and actions itself, so the floating copy hides under the frame's data-sidebar-collapsed marker. The group is a fish logo followed by one pill capsule holding three 34px icon-only buttons — sidebar toggle, search, and New session — where search expands the sidebar with its session search pre-opened.
Scrollbars in the column are a pointer affordance: the shell rebinds ui-theme's scrollbar indirection to transparent whenever the pointer is outside it, and keeps the thumb drawn for 2s after the pointer leaves, so a list nobody is pointing at carries no bar. The reservation that keeps rows from moving belongs to the scrolling region (ui-workspace), so revealing a thumb never reflows.
The foot is the sidebar.settings seat: the sidebar renders only the bottom-pinned layout slot and shares its column state (wide); ui-settings registers the trigger row and settings panel there.
The /client exports are the plugin body (apply/inject) plus the contract types only; SidebarRoot, the row components, and the tree derivation remain package-internal behind the slot registration.
Model Experience
None, as the sidebar renders the browser session list; nothing here reaches a model request.
KV Cache effect
None; this package neither assembles nor sends a provider request.
Known Limitations and Deferred Work
- Session state-dot rendering is owned by ui-workspace — no done/error notification sources are available.
- Workspace browser behavior is composition-owned — grouping, ordering, search, and row state belong to ui-workspace, not this shell.
- "New task completed" unread marking is local viewing state — completion-time > last-seen never reaches the host.