afterDDL/dsh-creator-shared-blueprint--packages-client-ui-sidebar ↗★ 0
@deepseek-ai/dsh-client-ui-sidebar
提供侧边栏外壳:会话树、搜索、分组、状态点与新建会话入口。 适合需要浏览和管理会话的用户,工作区视图由其他插件负责。
同名包的其他仓库
- 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 wordmark, New Session action, layout-owned collapse control, additive navigation sections, 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 into the layout-owned 56px rail remains presentation-local. Contract: the slot system standard.
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.
sidebar.navigation.section is an ordered, root-scoped list above the workspace browser. A client plugin can wait for its declaration through ctx.slots.inject and register a stable id plus optional order; multiple independent sections coexist instead of replacing the Workspace browser or the whole sidebar. Each entry receives SidebarNavigationSectionProps, including the shell-derived wide flag and an expandSidebar() callback that is effective only on the rail. The entry decides whether to render a rail control or nothing while narrow. Disposing its registration removes only that section.
SidebarRootComponentProps composes the layout owner share, the global useSessions and useWorkspaces hooks, the declared navigation, workspace, settings, and footer-action child slots, and injected startSession plus sidebar-toggle callbacks. There is no plugin store.
During a live collapse, the shell holds the expanded content at its current width while it fades out for 150ms. The four upper controls—the shell toggle and New Session plus add and search rendered through sidebar.workspaces—then share one 150ms fade and 49px leftward translation into the 56px rail, ending with the layout's 300ms column slide; every 36px control box follows the same path to the rail's 10px left inset. Navigation-section entries remain mounted and receive the settled wide value, so their own component controls whether and how they occupy the rail. The bottom-pinned sidebar.settings control shares the fade timing but has no horizontal translation. A page that starts collapsed renders the rail statically, and reduced-motion mode disables both transitions.
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.