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.

Plugin Pin Session — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
P

dsh-plugin-pin-session

Plugin Pin Session

Pin sessions: adds Pin/Unpin to the sidebar session-row ... menu and a collapsible Pinned Sessions group above the session list.

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

npx -y @deepseek-ai/dsh plugin --profile web add github:NattoCB/dsh-plugin-pin-session#fad6d8f771e2706845737ef5dfdc41064a1aa73d
READMECompatibilityVersions

Compatibility and provenance

Plugin Pin Session is published as dsh-plugin-pin-session 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
8/24/2026

Versions

0.1.10stable
8/24/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
★ 0
Weekly downloads
0
Last push
8/24/2026
View source ↗
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 ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsRemote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rClient Ui Git Graph@linxin666/dsh-client-ui-git-graphExternal dsh web GUI plugin: a blank-session git branch selector + Git graph, with real host-side git operations and guards, as a dsh profile bundle

README

dsh-plugin-pin-session

Pin any DSH session to the top of your sidebar — one click, host-side persistence.





JSON API — GET /pin-session/pins · POST /pin-session/pin · POST /pin-session/unpin

A DeepSeek Harness web plugin that pins sessions: a collapsible Pinned Sessions group above the sidebar session list, plus Pin / Unpin entries in every session row's ... menu. Pure client+host bundle — zero changes to DSH core, pin order stored host-side so it follows you across browsers and origins.

✨ Features

  • 📌 Pin / Unpin in the row ... menu — one entry per row, label reflects current state.
  • 🗂️ Collapsible Pinned Sessions group directly above the session list:
    • click a pinned row to open that session (sessions.open);
    • hover reveals an × quick-unpin;
    • header toggles collapse (persisted per browser via localStorage);
    • sessions no longer present in the list render dimmed and are not clickable.
  • 💾 Host-side storage at $DSH_HOME/storages/pin-session.json — pin order is oldest-first and consistent across browsers and origins.
  • 🧩 Zero core surgery — pinned sessions stay in the chronological list; the shipped WorkspaceBrowser is left untouched.

🚀 Install

dsh plugin --profile web add github:NattoCB/dsh-plugin-pin-session

Then add "dsh-plugin-pin-session" to dsh.profile.bundles in the profile's package.json. A DSH restart is required — new client bundles join the boot graph only at process start.

Local checkout instead? dsh plugin --profile web add file:/absolute/path/to/dsh-plugin-pin-session

⚙️ How it works

HalfMechanism
HostwebServer.register({ kind: 'prefix', path: '/pin-session' }) JSON API over an atomic JSON file store
Row menuThe shipped session-row menu portals a role="menu" element to document.body; a MutationObserver matches each menu to its row via React fibers (props.node.id) and appends one Pin/Unpin item styled with the menu's own classes, closed by an outside pointerdown
SectionA React root planted before the [role="tree"] session list renders each pinned row's own real primitives.Menu, anchored at that row's ... button and wired to the same live callbacks (onRename(id, title) / onFork(id) / onArchive(id)) resolved from the row's fiber

The shell freezes every vendor module it serves (Object.isFrozen(primitives) === true), so shared components cannot be monkey-patched — but they can be called. The section menu therefore opens at the pinned row (not wherever the original row is scrolled) while rename/fork/archive stay single-sourced in the shipped browser; the ... affordance hides while the real row is not rendered (collapsed group / filtered list).

No pin icon ships in the primitives set, so the menu item embeds its own pushpin SVG.

✅ Verify after refresh

  1. Sidebar shows Pinned Sessions above the list once at least one session is pinned.
  2. Hover a session row → ... → Rename / Fork / Archive + a pushpin-iconed Pin.
  3. Click Pin → row appears under Pinned Sessions; menu flips to Unpin.
  4. The pinned row's own ... opens right at that row with the same actions.
  5. Click a pinned row → that session opens; Unpin removes it.
  6. Collapse the group → reload page → collapsed state survives (localStorage).
  7. cat ~/.dsh/storages/pin-session.json shows the id list.

🔌 API

GET  /pin-session/pins                 -> { pins: [{ id, title?, pinnedAt }] }
POST /pin-session/pin    {id, title?}  -> { pins }
POST /pin-session/unpin  {id}          -> { pins }

🧪 Test

npm test   # node --test — 11 cases across store + HTTP router

License

MIT — see LICENSE.