DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

@yiliang114/dsh-session-deck

Session Deck

Codex-inspired activity and session management for DeepSeek Harness: track running, waiting, and unread sessions across workspaces.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:yiliang114/dsh-session-deck#701c86b3eeb2c0f07aa59205fea49c0cee9b44fb
READMECompatibilityVersions

Compatibility and provenance

Session Deck is published as @yiliang114/dsh-session-deck and currently resolves to version 0.1.10. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
11/4/2026

Versions

0.1.10stable
10/25/2026
0.1.9stable
10/25/2026
0.1.8stable
10/24/2026
Show 7 more versionsCollapse versions
0.1.7stable
10/24/2026
0.1.6stable
10/23/2026
0.1.5stable
10/23/2026
0.1.4stable
10/23/2026
0.1.3stable
10/23/2026
0.1.2stable
10/23/2026
0.1.1stable
10/23/2026

Related plugins

Loading related plugins…

Latest
0.1.10
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 3
Weekly downloads
343
Last push
10/25/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in productivity-workflow.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseExperimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundleOptional bundle that adds Schedule, its task page, and time context to the Web compositionClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / pet / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

DSH Session Deck — Session Management for DeepSeek Harness

简体中文 · npm · Latest release · Release CI

A Codex-inspired activity view for DeepSeek Harness. Session Deck adds Activity and Favorites views to the native DSH sidebar. Track running, waiting, and unread sessions across workspaces, reply to sessions that need your attention, and keep important conversations close with Favorites.

The activity-view interaction is inspired by Codex and adapted to DSH's workspaces, session states, and native pinned sessions. Session Deck is an independent community plugin for DSH.

A community plugin with an English interface, no extra npm dependencies, and no telemetry. Licensed under MIT.

Three views, one sidebar

ViewWhat it helps you do
ActivityFollow running, waiting, unread, and recent sessions across all workspaces.
FavoritesKeep important sessions close using DSH's native pinned sessions.
WorkspacesReturn to the native workspace tree, its management tools, and other plugins' menus.

Switching views keeps your current conversation open. Session rows show the title, workspace, time, and status; their menus provide favorite, rename, fork, archive, and copy-ID actions.

Use More → Show archived to find archived sessions across workspaces. Search by title, workspace, path, or session ID, then click the row’s Restore button to restore and open the original conversation. Clicking the title or row does not restore it. Restoration keeps its recorded workspace position; it does not restart stopped tasks or restore a former pin. Failed restorations stay in the dialog with an error so you can retry.

When a session finishes while you are elsewhere, Session Deck plays a short two-note cue and marks the result unread. Each navigation tab has its own small blue dot: Workspaces and Activity reflect all unread sessions, while Favorites reflects only unread pinned sessions. Selecting a tab does not clear these indicators. Each workspace group carries its own unread dot. The browser tab also adds a blue dot to its favicon and prefixes the title with (N) until those sessions have been viewed. If the page is hidden or unfocused and browser notifications are already permitted, it also sends one silent system notification; clicking it opens that conversation. Opening a session clears only that session, and a dot disappears when its last unread member is viewed. Expanding or collapsing a group or changing views does not mark the group read.

Screenshots captured from a local DSH installation in English; session titles and workspace names anonymized.

ActivityFavoritesWorkspaces
Follow active work and unread results.Return to native pinned sessions.Keep the complete workspace controls.
English Activity viewEnglish Favorites viewEnglish native Workspaces view

Screenshots show the switcher above the workspace region without host patches, below global panels. The interface and anonymized session titles are English; browser menus, tabs, and the address bar are excluded.

Install from npm

Install the latest release from npm. As historical validation, the initial 0.1.2 release tarball was installed in isolation, its SHA512 integrity verified, and its host, client, and patch files checked against the source; this does not establish verification of later releases.

Requirements:

  • Node.js 22 or newer.
  • DSH Web GUI 0.2.1-rc.2. This is the exact supported host version; other versions are unverified.
  • DSH's native sidebar, session, and workspace plugins enabled.

Before installing, check the CLI versions and use the same profile as your running Web GUI:

node --version
dsh --version

Expect Node.js v22 or newer and DSH 0.2.1-rc.2. These instructions assume you already have a working DSH Web GUI; if dsh is not found, install and start the supported DSH host first. If you launch DSH with a custom DSH_HOME, use that same value for plugin commands.

Migrating from an earlier installation: disable and remove the old plugin instance in DSH's plugin manager before installing from npm, to avoid two instances controlling the sidebar. You can keep its browser storage.

dsh plugin --profile web add @yiliang114/dsh-session-deck@latest --ignore-scripts

Replace web if you use another profile. Refresh your existing DSH GUI, then choose Workspaces / Activity / Favorites above the workspace region, below global panels. On the supported DSH 0.2.1-rc.2 layout, the plugin places the switcher there automatically without patching installed DSH files. The native workspace browser remains available in Workspaces. Refresh after client changes too; hot reload is not assumed.

The plugin's own labels are English. To make the rest of DSH English too, use More → Settings → General → Language → English. Session titles remain in the language you wrote them.

First-run check (about two minutes)

  1. Finish or close DSH's first-run dialogs. In Plugins, confirm that @yiliang114/dsh-session-deck is installed and enabled, then refresh the page.
  2. Choose Activity and open an existing conversation that has started at least one turn. Newly created empty sessions are intentionally hidden, even if pinned; an empty list on a fresh profile is expected.
  3. Hover over that session, open its actions menu, and choose Add to favorites (pin). It should appear in Favorites and show a native pin in Workspaces.
  4. Switch between the three views: the current conversation should stay open. Refresh again: Favorites should still contain the pinned session.

If the switcher is missing, check that the plugin was installed into the Web GUI's profile and DSH_HOME, is enabled, and that the host version matches. The native sidebar, session, and workspace plugins must also be enabled. Look near the sidebar footer too: that is the fallback position when the supported workspace boundary cannot be found. See Compatibility.

On 2026-10-25, version 0.1.8 passed this installation, navigation, favorites, archive/restore, GUI uninstall, and reinstall check in an isolated profile on DSH 0.2.1-rc.2 with Node 22.20.0. Session checks used local synthetic records without model calls; this does not verify live model-state transitions, OS notification delivery, or physical audio output, nor does it certify later versions.

Alternative: link a local checkout

git clone https://github.com/yiliang114/dsh-session-deck.git
cd dsh-session-deck
npm run verify
dsh plugin --profile web add "link:$PWD" --offline --ignore-scripts

There are no dependencies to install. The repository includes the client bundle; build checks JavaScript syntax rather than generating it. Keep the checkout in place while using a linked installation.

You can also install through Plugins → Add plugin → Install a third-party plugin: enter link:/absolute/path/to/dsh-session-deck, choose Install, then Enable now, and refresh the page.

Alternative: install from a tarball

To distribute the plugin without npm, run from the checkout:

npm run verify
npm pack --ignore-scripts

Copy the generated archive to the target machine, then install using its absolute path. Replace VERSION with the version in the filename produced by npm pack:

dsh plugin --profile web add /absolute/path/yiliang114-dsh-session-deck-VERSION.tgz --ignore-scripts

Refresh the GUI. A tarball installation does not depend on the original checkout. Both linked and tarball installations place the switcher above the workspace region automatically on the supported rc.2 layout; neither needs a host patch.

Custom plugin market

The market index lists registry-verified npm releases. Add the following raw JSON URL as a source in DSH's custom plugin market:

https://raw.githubusercontent.com/yiliang114/dsh-session-deck/main/market-index.json

This is a user-added custom market source, not an official DSH listing. Publishing to npm does not automatically add the plugin to an official DSH market.

Maintainers: pushing to main queues an automatic patch release (for example, 0.1.2 → 0.1.3). Rapid pushes can be combined: stale queued runs skip, and the latest eligible run includes the accumulated changes. To choose a minor version, run npm version minor --no-git-tag-version, then commit and push normally; an explicit greater stable version such as 0.2.0 is preserved, and the following release becomes 0.2.1. The workflow runs verification, creates the version commit and tag, publishes with provenance, and updates the market index and GitHub Release. See the release guide for authentication prerequisites and recovery.

How session status works

  • Activity keeps all running, waiting, and unread sessions, plus at most 20 ordinary recent sessions, sorted by DSH's updatedAt rather than last-opened time. Favorites has no 20-session limit.
  • Favorites are native DSH pins, shared with the workspace tree. Activity and Favorites omit archived, subagent, and empty sessions; ordinary forks remain visible. Show archived lists all known archived sessions, including archived empty sessions and subagents, with no 20-session limit.
  • Status priority is waiting for a reply → running → unread. A parent remains running while any known subagent descendant is running; ordinary forks do not propagate status to their source.
  • Aggregation covers only descendants known to DSH's session directory. Independent background shell jobs are not tracked: an idle session does not mean every process it launched has exited.
  • A session becomes unread when it and its known descendants finish while you are viewing something else. Opening it clears the marker; starting another active cycle also clears the previous result’s unread marker. Native Workspaces navigation acknowledges the visible session before queued completion observation. Persisted observations can recover completions across a refresh, but cannot reconstruct work that started and finished while every page was closed or was never observed.
  • One observed finish produces at most one plugin cue and, when permitted in the background, one silent system notification. Reloads, restored unread state, and subagent-only finishes do not replay a completion alert. Waiting for user interaction is not completion. Stops initiated by Session Deck’s archive action are suppressed; a native/external archive whose stop reaches the client before archive membership may still appear as a manual stop. A second complete run is still new. Same-origin tabs use Web Locks when available to serialize completion observation and delivery; without working shared storage or lock support, duplicate prevention is best-effort, not guaranteed.
  • Confirmed archive membership clears the session’s known old running/unread baseline once per locally observed archive episode, even if it is absent from the current directory. Unchanged archive membership does not clear later shared records, which may represent newer activity in another tab. These handled records then participate in normal bounded cleanup; directory absence alone never deletes unread data. Restoring an idle session does not replay its old completion. If the first restored snapshot still says running, it is treated as uncertain until an idle-to-running transition is observed, so a run already active at restoration may finish silently. Archive/restore cycles never observed by the page cannot be inferred.
  • Opening an Activity/Favorites row reports navigation failures in an error dialog and preserves unread state. Close the dialog and retry the row or menu action. switches views only after navigation succeeds.

DSH compatibility and switcher position

This plugin declares an exact engines.dsh match of 0.2.1-rc.2. Automatic top placement uses a DOM compatibility adapter for that release, not an official DSH extension API.

DSH sidebarPlacement mechanismSession Deck support
Official 0.2.1-rc.2, without patchesNo official sidebar.workspaces.before slot; the adapter places the switcher above the workspace region by default.Supported target, with a precise rc.2 DOM structure guard.
0.2.1-rc.2 with the legacy local patchReuses the existing sidebar.workspaces.before slot below global panels.Compatible; the patch is no longer needed.
Official 0.2.1-rc.3The published client and slot contract still lack the before-slot.Not supported: full compatibility is unverified and the exact engine declaration excludes it.

On the recognized rc.2 layout, the adapter renders a React portal into its own DOM host immediately before the workspace region, below global panels such as Automation tasks. It does not write installed DSH files or replace the native workspace browser. An unknown DOM layout falls back to the footer. Disabling the plugin removes its scoped observer and DOM host.

The More menu also lacks an item extension slot in rc.2. Session Deck inserts its own portal after Settings only when the native account trigger and menu match that version's layout. Native Settings, Feedback, account actions, and keyboard navigation remain available. Unknown or ambiguous layouts use a Show archived footer button instead. Disabling the plugin removes its menu container and observers.

Workspace group headers likewise have no decoration slot in rc.2. The unread dot is added by a narrowly guarded adapter that recognizes native project rows and their real workspace:<id> key. It owns only its 6px marker, removes markers copied into animated exit rows, and does not identify groups by title or path. Unknown layouts leave the native tree untouched; Activity, sound, and session delivery continue to work. The always-mounted completion observer uses the official shell.overlay slot.

The rc.3 published files were inspected on 2026-10-23; that inspection does not establish plugin compatibility. Supporting another host version requires validating its session, workspace, slot, and UI APIs and DOM layout before widening engines.dsh.

Legacy sidebar patch rollback

The sidebar patch script is retained for rollback and backward compatibility. New installations do not need it. If you previously installed its local before-slot patch, the plugin can reuse that slot, or you can restore the original sidebar.

Locate the @deepseek-ai/dsh-client-ui-sidebar package actually used by your running DSH. From this repository, replace the placeholder with that package's directory, not the DSH root or this plugin directory:

node scripts/patch-sidebar-before.mjs /path/to/dsh-client-ui-sidebar --rollback

Rollback requires the original adjacent .dsa-before.backup files and refuses to overwrite unrelated changes. Refresh the GUI after rollback: the new plugin still places the switcher above the workspace region on the supported unpatched rc.2 layout. If rolling back a DSH source checkout, rebuild the affected client artifacts as well.

Privacy and local storage

Session Deck uses DSH's session and workspace APIs. It makes no model calls, sends no telemetry, and has no external upload endpoint.

Browser localStorage retains the original keys for compatibility:

KeyStored data
dsh-session-activity.mode.v1Selected view.
dsh-session-activity.pending.v1Session IDs, observed running state, and completion/unread metadata.
dsh-session-activity.notified.v1Last notification revision delivered per session, used to avoid duplicate notices across same-origin tabs.
dsh-session-activity.sound.v1Whether the completion cue is enabled.

No conversation bodies are stored by the plugin. Favorites remain in DSH's native pinned data. View and unread state sync between tabs on the same origin, not across devices. If storage is unavailable, state stays in memory. Clearing browser storage resets this metadata; processed records are capped at 1,000, while running and unread records are retained.

Disable or uninstall

Use Plugins → @yiliang114/dsh-session-deck. Turn off the enable switch to disable it, or choose Uninstall and confirm to remove the package. Then refresh the GUI: the native workspace tree should remain, and Activity, Favorites, and the plugin's More menu entries should be gone. Disabling also removes the adapter's observer and DOM host.

Your conversations and native pinned data remain. Uninstalling does not clear the browser metadata listed above or undo a legacy host patch; use the rollback command separately if needed.

If you prefer the CLI, use the same profile and DSH_HOME as your Web GUI:

dsh plugin --profile web remove @yiliang114/dsh-session-deck

After CLI removal, restart that DSH Web instance and refresh the page. In the rc.2 acceptance check, the running host retained the plugin after CLI removal until restart; GUI uninstallation unloaded it immediately. Do not add --ignore-scripts to remove: the bundled pnpm does not accept that option for removal.

Development

npm run verify

This runs syntax checks, Node.js tests for session selection and state handling, and a dry-run package-content check. CI runs it on Node.js 22 and 24. There is no separate lint or TypeScript check, and automated checks do not replace testing the real DSH GUI.

The client lives in lib/client.js, with a minimal host entry and Cordis configuration. Report bugs with your DSH version, installation method, and reproduction steps in GitHub Issues.

License

MIT. Independently maintained; not an official built-in DSH component.

Open in workspace for all actions
  • The brief cue is deliberately neutral rather than claiming success: the client status stream does not distinguish success, failure, or a manual stop. Sound is synthesized locally and defaults on. Use More → Enable and test sound in your own browser to enable the cue and preview it with a user gesture; the result confirms playback started, not physical speaker audibility. The plugin plays its cue in foreground and background alike; system notifications are silent to avoid duplicate sounds. Browser autoplay restrictions may require a pointer or keyboard interaction first. A browser notification is sent only when permission was already granted in site settings; the plugin does not request external push access or track individual chat messages.
  • Workspaces, Activity, and the browser tab reflect all eligible unread sessions (not individual chat messages); Favorites reflects the pinned subset; the page title shows the full count. Workspace dots aggregate the same sessions from the complete workspace membership, not from rendered or truncated rows. They cover direct workspace membership in flat and tree views; a collapsed tree ancestor does not roll up unread descendants. A hidden page or an open global panel does not count as viewing a session.
  • Archiving an active session requires a Stop and archive confirmation. There is no permanent-delete action. Switch to Workspaces for the complete native menus, including actions from other plugins.