Introduction

When handling a large number of automated tasks in DeepSeek Harness, the native sidebar session list can easily become cluttered. The plugin helps developers distinguish manual sessions from automated tasks by introducing dual view switching and a pinned-session mechanism, improving sidebar readability.

Plugin Overview

This is a client-side plugin maintained by NattoCB that adds dual view switching and pinned-session grouping to the sidebar of the DSH Web interface. It is integrated through pure client-side injection, relies on the window.__ModuleLoader__ bundle, and stores state in localStorage. The plugin declares dsh.bundle.patch and dsh.client(web).

Core Features

  • Dual view switcher: Provides two tabs above the list: “Workspaces” and “Session History”. Workspaces displays the native groups, while Session History flattens all sessions sorted by recency, including relative timestamps, running-status indicators, and the owning workspace label.
  • Pinned-session group: Both views display pinned sessions at the top of the list, with real-time counts and collapsible support. Deleted sessions remain visible as grayed-out rows instead of disappearing.
  • Session History grouping: In the Session History view, sessions are divided into two groups: “Workspaces” and “External Calls”. “External Calls” refers to headless sessions without a workspace (e.g., created directly), collapsed by default with a real-time count displayed. Grouping logic is based on workspace membership; if registration lags, it falls back to the current working directory path prefix.
  • Row-level menu and filtering: Each row provides actions such as “Copy Session ID”. The Session History view includes a built-in title filter. The native workspace menu adds an “Open in Finder” action.
  • Performance optimization: Implemented with pure DOM, without React or portals. It uses DocumentFragment for batch insertion and applies content-visibility to out-of-viewport groups to skip layout repaints, supporting millisecond-level rendering for lists with 2400+ rows.
  • Smooth migration from the old plugin: When the old plugin dsh-plugin-pin-session is detected, the pinned list is merged once at startup. Dual-writes are supported during the transition, and removing the old plugin does not affect the current plugin.

Installation and Enablement

  1. Ensure that DeepSeek Harness is installed and that you can run dsh web.
  2. Run the installation command:
    dsh plugin --profile web add github:NattoCB/dsh-plugin-sidebar-views
  1. After installation, restart dsh web. The view switcher appears automatically above the sidebar list without additional configuration.

Usage Notes

  • The state for view switching, pinned sessions, and collapsed groups is stored in the browser’s localStorage (keys: dsx2-pins, dsx2-groups), so the state is preserved after refreshing the page.

Cautions and Uninstallation

  • State persistence: Pin and group state is stored in the browser’s localStorage. Pinned relationships follow the browser profile, not the DSH host.
  • Safe uninstallation: When uninstalling, remove the entries from both dependencies and dsh.profile.bundles in the profile’s package.json, then restart DSH. Deleting only node_modules without updating the configuration file causes the boot graph to request a non-existent client.js, resulting in a fatal error and preventing the GUI from mounting.

References

  • Repository: https://github.com/NattoCB/dsh-plugin-sidebar-views
  • License: MIT
  • Ecosystem catalog: https://www.skillhub.cn/plugins/NattoCB/dsh-plugin-sidebar-views