DSH Plugins Marketplace

DSH Plugins

Plugins

/

UI & Experience

/

dsh-pin-sessions

f

dsh-pin-sessions

Manifest valid★ 1

Pin and unpin sessions to the top of the Web sidebar with a dedicated pinned panel, archive section, and native three-dot menu integration.

UI (client)hasBundlePatch

DSH Pin-Sessions Plugin

A DeepSeek Harness (DSH) web plugin that lets users pin sessions to a dedicated sidebar section for quick access to recurring workflows, and provides an archive-sessions settings panel with batch delete, restore, workspace grouping, and pagination.

Features

  • Pin / Unpin sessions — Pin sessions to the top of the sidebar, hidden from their workspace browser
  • Archive panel — Settings panel for managing archived sessions with batch delete, per-row restore, workspace grouping, and 20-per-page pagination
  • Context menu integration — Right-click pin/unpin via @baihejiangnan/dsh-session-context-menu
  • Pin = Archive — Pinning archives the session from the workspace browser; unpinning restores it

Architecture

Standard DSH plugin split: host half (Cordis loader entry + TYPERT manifest) + client half (window.__ModuleLoader__.load wrapper).

Host Side

FileResponsibility
src/index.tsOpens pin_sessions storage domain, creates PinsStore + PinsRuntime
src/runtime.tsPinsRuntime extends TypertRemoteService — 8 TYPERT methods
src/typert.tsHost TYPERT manifest (must match client)
src/store.tsDurable pin store over the pin_sessions domain
src/domain.tspin_sessions domain declaration
src/schemas.tsZod schemas for pin records

TYPERT Methods

list, pin, unpin, toggle, isPinned, deleteSessions, listArchived, unarchiveSession

Key Design: Pin = Archive

Pinning calls workspaceRegistry.archiveSession(sessionId) to hide the session from the workspace browser. Unpinning calls unarchiveSession() which removes the ID from archivedSessionIds. This triggers domain/changed → host/archived-sessions-changed frame → client auto-updates.

Client Side

FileResponsibility
src/client/index.tsRegisters locale, mounts TYPERT_REMOTE, context-menu extensions, portals PinnedSection + ArchiveSection
src/client/PinPanel.tsxPinned section portaled to top of sidebar
src/client/ArchivePanel.tsxSettings panel with workspace grouping, pagination, batch delete, restore
src/client/styles.tsCSS mirroring native DSH classes
src/client/locales.tsi18n strings
src/client/remote.tsTYPERT remote interface
src/client/typert-remote.tsClient TYPERT manifest (must match host)

Build & Install

# Build
cd dsh-pin-sessions
pnpm install
pnpm run build        # tsc + tsdown + wrap-client.mjs

# Typecheck
pnpm run typecheck

# Install into DSH
dsh plugin --profile web add /path/to/dsh-pin-sessions
  • Host-side changes require DSH server restart
  • Client-side changes require browser refresh

Key Service Access Patterns

ServiceUsage
ctx.get("workspaceRegistry")archiveSession(), archivedSessionIds, list(), enqueueOperation(), setState()
ctx.get("sessionPersistence")list() returns headers with {id, cwd?, origin?}
ctx.get("sessions")get(id) returns live session or undefined
ctx.get("agents")get(id) returns agent with cancel() and whenIdle()
ctx.get("storageDomain")get("session_projcache") for projection cache
GlobalStandardPropsAuto-injects useSessions and useWorkspaces hooks

Context Menu Integration

@baihejiangnan/dsh-session-context-menu exposes a global registry at Symbol.for("dsh.session-context-menu.extensions") with .register(entry). The plugin may load after us, so we poll every 500ms until the registry appears.

Entries: {id, label, order?, visible?, run}. The context menu's isAction() checks for "会话"+"操作" or "session"+"action" in aria-label; titleFrom() extracts the quoted title.

License

MIT

Comments

Loading…

Similar plugins

dsh-plugin-pin-session

Adds Pin/Unpin to the sidebar session-row menu and a collapsible Pinned Sessions group above the session list, with host-side persistence, hover quick-unpin, collapse memory, and live running-state do

UI & ExperienceManifest valid

★ 0

dsh plugin --profile web add dsh-plugin-pin-session

by NattoCB

Adds a Workspaces / Recent-sessions switcher above the sidebar list, with a pinned-sessions group, a per-row menu (pin/unpin, copy session id), title filtering, and browser-local pin storage with a on

UI & ExperienceSessions & MessagesManifest valid

★ 1

MIT

JavaScript

Sep 10, 2026

dsh plugin --profile web add dsh-plugin-sidebar-views

by jackovibe

Codex 式会话置顶与归档风格的 DSH Web 插件(置顶=标记不是排序,宿主持久,零顺序改动)

UI & ExperienceTerminal & ClientsSessions & MessagesManifest valid

★ 1

MIT

JavaScript

Sep 23, 2026

dsh plugin --profile web add dsh-codex-pin

by TianYa-DAO

Keeps running, finished-but-unopened and currently open sessions at the top of the DSH Web sidebar workspace list.

Development & InfrastructureSessions & MessagesManifest valid

★ 1

MIT

JavaScript

Oct 20, 2026

dsh plugin --profile web add dsh-pinned-sessions

by AndreyTepaykin

Pinned-sessions block for the DeepSeek Harness sidebar: a collapsible pinned panel above the Settings row, hover pin buttons on session rows and a session-header toggle. Pins live in the plugin's own settings namespace.

Terminal & ClientsSessions & MessagesManifest valid

★ 0

MIT

JavaScript

Oct 1, 2026

dsh plugin --profile web add dsh-sidebar-pins

by 439436269-ctrl

DSH 插件:侧栏内联的「置顶」会话分组(原生度量 + 就地搜索)。A pinned-session group in the DeepSeek Harness sidebar.

UI & ExperienceTerminal & ClientsSessions & MessagesManifest valid

★ 0

MIT

JavaScript

Oct 7, 2026

dsh plugin --profile web add @vfvrpq/dsh-pinned-sessions