xwtaidev/dsh-app--packages-client-ui-sidebar ↗★ 1

@deepseek-ai/dsh-client-ui-sidebar

Sidebar plugin: session multi-level tree, search, grouping, state dots 适合需要侧边栏外壳与折叠布局的用户;会话浏览由工作区插件负责。

Package
@deepseek-ai/dsh-client-ui-sidebar
Compatibility
Unverified
Harness peer range
workspace:^
Cordis peer range
workspace:^
Version
0.1.0-rc.5
License
MIT
Last updated
Sep 10, 2026

Other repositories with this package name

Install

This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗

@deepseek-ai/dsh-client-ui-sidebar

English | 中文

Sidebar shell plugin: the wordmark, 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. A collapsed sidebar is a zero-width column — no rail — and the shell floats only the expand control at the frame's top-left. 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.

SidebarRootComponentProps composes the layout owner share, the global useSessions and useWorkspaces hooks, the declared sidebar.workspaces and sidebar.settings 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, then the wide-only chrome unmounts and the column slides to zero width over the layout's 300ms track transition; the only control left is the floating expand control, which keeps the exact position and size of the collapse control — at the sidebar's former right edge in the browser, right of the macOS traffic lights in the shell. The region and foot stay mounted through the fold (clipped by the zero-width column) so the workspace browser keeps its state. A page that starts collapsed renders the expand control 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 the bottom-pinned layout slot and shares its column state (wide); ui-settings registers the trigger row and settings panel there. Beside the trigger sits the shell's own theme quick-switch — a 34px icon button that flips the resolved light/dark scheme (the theme service stays ui-theme's; the shell mirrors the active scheme through a declared store).

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.