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

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

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

패키지
@deepseek-ai/dsh-client-ui-sidebar
호환성
미검증
Harness peer 범위
workspace:^
Cordis peer 범위
workspace:^
버전
0.1.0-rc.5
라이선스
MIT
최근 업데이트
2026. 9. 10.

같은 패키지 이름의 다른 저장소

설치

검증된 bundle이 없거나 호환성 검사에 실패했습니다. 먼저 저장소 설명을 읽어 주세요. 전체 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.