blanit/dsh-session-dashboard ↗★ 0
dsh-session-dashboard
Always-visible Session status card in the DeepSeek Harness Web GUI left sidebar: recent Sessions, Needs you / Running filters, and one-click navigation. 适合需要快速查看近期会话状态、过滤待办并一键跳转的用户。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:blanit/dsh-session-dashboardREADME
Read the full README ↗dsh-session-dashboard
A DeepSeek Harness Web GUI plugin: an always-visible session status card in the left sidebar (above Settings), so recent session activity is visible without opening a page.
English | 中文
Features
- Persistent card in the left sidebar; when the sidebar collapses to its 56px rail it becomes an icon button with a "Needs you" badge
- One row per session: status glyph, title, current activity (Waiting for approval / Working / Completed unread / Idle) and relative time
- Filters All / Needs you / Running / Done with live counts; the card keeps the same height when switching filters
- Click a row to open that session;
+starts a new session - Click the card header (disclosure caret) to collapse or expand it; the collapsed header keeps the current status counts, and the state is remembered in this browser
- 5 rows by default, expandable to 10
- Settings → Sessions card section: card language (English / 中文) and default row count
- Needs-you, running and unread-completed sessions are listed first; running rows have a sweep animation

Session titles in the screenshot are sample data.
Verified on DSH 0.2.1-rc.2 (Web profile) and 0.2.1-rc.3 (Desktop profile): installed with the official dsh plugin command, --dump-config shows the # == dsh-session-dashboard layer, client-modules serves the bundle, card placement/filters/navigation/new-session/rail badge all work, and the console reports no plugin errors.
Official plugin form
This is a standard DSH bundle, not a private extension of the host:
| Official requirement | This package |
|---|---|
dsh.bundle.patch points at the config layer | ./cordis.patch.yml inserts the package into the Loader by name |
dsh.client.platform: "web" + exports["./client"] | points at client/client.js (prebuilt __ModuleLoader__ factory) |
engines.dsh compatibility range | `>=0.2.0 |
produces dsh-session-dashboard-.tgz
### 2. Desktop profile
The `desktop` profile belongs to the Electron app and the global npm CLI refuses to manage it; use the command runtime bundled with the desktop app:
```powershell
$dsh = "\resources\runtime\cli\bin\dsh.cmd"
& $dsh plugin --profile desktop add \dsh-session-dashboard-.tgz
& $dsh plugin --profile desktop --dump-config # optional: should show "# == dsh-session-dashboard"
Installation records the artifact under the profile's dependencies (file:...tgz) and appends the bundle to dsh.profile.bundles; pnpm materializes it into node_modules. Keep the tarball: the profile dependency points at it, and moving or deleting it requires another add.
Upgrade: bump version → pnpm pack again → run add with the new tarball. Uninstall:
& $dsh plugin --profile desktop remove dsh-session-dashboard
Reload the desktop window (Ctrl+R) or restart the app; a live patch reload only needs a page refresh.
3. Web profile
dsh plugin --profile web add
dsh --profile web --dump-config
dsh plugin --profile web remove dsh-session-dashboard
dsh plugin resolves the local package as a pnpm link: dependency and appends the bundle automatically; restart dsh web (or refresh the page) to apply.
Data sources
The card requests nothing from the Host and stores no session state. It occupies the root-scoped sidebar footer seat and reads the standard seats the slot system provides to every root slot:
| Seat / data | Used for |
|---|---|
useSessions | session catalog, displayTitle, updatedAt, blank/origin, projectionsBySession |
useSessionStatus | running, pendingInteraction (approval / plan-review / question), completionUnread |
useWorkspaces | archivedSessionIds (archived sessions are hidden by default) |
projectionsBySession[*].values | todos (current todo), turnOutline (current prompt and turn count), sessionStats |
Opening a session uses ctx.uiWorkspace.openSession(id), starting one uses ctx.uiWorkspace.startSession(), and the collapsed-rail icon uses ctx.layout.toggleSidebar().
Structure
package.json # dsh.bundle.patch + dsh.client (platform: web) + engines.dsh
cordis.patch.yml # inserts this package as a Loader entry in the profile
lib/index.js # empty Host-half plugin (keeps a Loader fiber so client-modules serves the browser half)
client/client.js # the whole UI: __ModuleLoader__ factory + React card + themed CSS
icon.svg # icon shown by the plugin manager
LICENSE # MIT
docs/sidebar-card.png # screenshot (sample data)
docs/limitations.md # known limitations
docs/limitations.zh.md # known limitations (Chinese)
client/client.js is a hand-written CJS-in-loader factory (window.__ModuleLoader__.load({ id, factory })) and needs no build: edit it and refresh. Its only runtime dependency is react from the platform baseline; styling uses the host's --dsw-alias-* theme tokens, so light and dark themes both work.
Known limitations: docs/limitations.md.