Tools & Capabilities

dsh-plugin-organizer

inspireason/dsh-plugin-organizer · ★ 2

inspireason

A DSH Web plugin that groups the Settings plugin list into collapsible official and third-party sections, with official plugins collapsed and third-party plugins expanded by default.

License
MIT
Added
2026-08-23
Maintenance
active
Install kind
github

No manifest check is available; listing does not imply compatibility or security review.

安装

dsh plugin --profile web add github:inspireason/dsh-plugin-organizer

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. ✨ Features
  2. 🚀 Install (from GitHub / npm)
  3. 📁 Project structure
  4. 🔧 How it works
  5. 💻 Development
  6. License

A DSH web plugin that turns the plugin inventory in Settings → Plugins into an Official / Third-party grouped view, where each group can be expanded / collapsed (like a storage box). Official plugins are collapsed by default (there are simply too many of them), third-party plugins start expanded.

⭐ If this plugin helped you, please give it a Star! Your support keeps me improving it 🙏 ⭐ 如果这个插件帮到了你,欢迎点个 Star 支持一下! 你的 Star 是我持续维护的动力 🙏

✨ Features

  • Adds a new Official / 3rd-party tab to the Settings → Plugins section (ordered between "Plugin configuration" and "Plugin list")
  • Same data source as the official plugin list (pluginInventory Remote) — display only, no behavior changes
  • Official detection: module names starting with @deepseek-ai/ or cordis: (root include and other framework built-ins)
  • Two groups: Official plugins collapsed by default, Third-party plugins expanded by default
  • Third-party plugins get purpose subcategories: auto-grouped by name keywords into "UI / workspace · Agent collaboration · Permission / security · Vision / images · Obsidian · Management / tools · Other"; reassign any plugin manually (persisted in localStorage)
  • Group headers show the group name + plugin count; click a header to expand / collapse; subcategories collapse independently
  • Expand all / Collapse all / Reset to auto toolbar buttons
  • Search box filters across both groups; searching auto-expands both groups
  • Per-plugin cards identical to the official list: title, status dot, enabled/disabled tag; click a card to reveal entryId / configuration / Cordis status

🚀 Install (from GitHub / npm)

Prerequisites: DSH installed (dsh web runs), Node.js ≥ 20, pnpm ≥ 10.

# Install from the GitHub repository (auto-mounts, no manual config edits)
dsh plugin --profile web add Inspireason/dsh-plugin-organizer

# Or install from npm
dsh plugin --profile web add dsh-plugin-organizer

After installing, restart DSH and hard-refresh (Cmd/Ctrl+Shift+R) to see the new Official / 3rd-party tab.

Note: the package declares dsh.bundle.patch (cordis.patch.yml), so dsh plugin add registers it into dsh.profile.bundles automatically. If your profile previously mounted this plugin manually (a row with id: plugin-organizer in its cordis.patch.yml), remove that row first to avoid double-mounting (two plugin tabs).

📁 Project structure

dsh-plugin-organizer/
├── package.json          # dsh.bundle.patch + dsh.client declarations
├── cordis.patch.yml      # bundle mount layer (inserts the plugin row)
├── lib/
│   ├── index.js          # host half (empty apply)
│   ├── invariant.js      # invariant companion
│   └── client.js         # browser half: the grouped inventory tab
└── README.md / README_EN.md

🔧 How it works

  • Client-only plugin: lib/index.js is an empty host half, lib/client.js is the browser half
  • Registers a new tab into the settings.plugins.tab slot (id grouped, order 5)
  • Reads the same data as the official list via ctx.remote.pluginInventory.list()
  • Ships as an independent package referenced by the profile — DSH source is never modified

💻 Development

For local development, add the plugin as a dependency of the web profile and mount it in the profile's cordis.patch.yml:

- insert:
    - id: plugin-organizer
      name: 'dsh-plugin-organizer'

The profile's user patch layer is hot-reloaded by a running DSH — edit lib/client.js and refresh the browser to see the change.

License

MIT