Declutter the DSH settings nav: fold third-party plugin entries under collapsible group rows, with bookmark-style custom groups and a fold toggle in General settings.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-settings-nav-organizer
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:zhengjy01/dsh-settings-nav-organizer
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
English | 中文
Declutter the DeepSeek Harness settings panel: with more plugins installed, the settings sidebar grows one entry per plugin. This plugin folds every plugin/extension entry into a single collapsible Plugin entries group row, lets you organize entries into bookmark-style named groups, and adds a fold toggle in General settings.
Features
- One group row, right under the system settings —
通用设置 / Models / Plugins / Agent presetsstay flat; everything else (plugins, extensions, extra pages) folds underPlugin entries (N) ▾. - Fold toggle — a switch in Settings → General (
折叠第三方插件入口) turns the whole folding behavior on/off: off restores the plain native nav with every entry flat. - Bookmark-style custom groups — create named groups (like bookmark folders), move any settings entry into a group, and expand/collapse each group in the nav independently. A Groups page in the Settings panel manages everything: create, rename, delete groups, and move entries in/out.
- One-click expand/collapse — click a group row to unfold its entries below it; click again to fold them back. Ungrouped entries stay under the
Plugin entries (N) ▾row. - Persistent — group configuration and the fold toggle are stored in
localStorage(dsh.settingsNavFold.v1), survives restarts. - Auto-updating — counts and fold positions are recomputed from the live
settings.sectionledger, so entries appear/disappear as plugins register or unregister their settings pages. No configuration. - Current section never disappears — the active plugin page stays visible even while folded.
- Localized — follows the UI locale (中文 / English).
Install
# 方式一:npm 包(推荐,国内网络更稳定)
dsh plugin --profile web add dsh-settings-nav-organizer
# 方式二:GitHub 仓库
dsh plugin --profile web add github:zhengjy01/dsh-settings-nav-organizer
Restart dsh (the host half must load), then refresh the browser page. Open the Settings panel (gear icon at the sidebar foot).
Usage
Everything lives in the Settings panel (设置):
Fold toggle — open General (
通用设置), the first row is折叠第三方插件入口 / Fold third-party plugin entries. On (default): plugin entries fold under the group rows; off: the nav goes back to plain native with every entry flat. The switch state is remembered across restarts.Group rows in the nav — with the toggle on, the nav shows the core entries, then a
Plugin entries (N) ▾row (and any custom group rows). Click a row to expand/collapse its entries below it.Bookmark-style groups — open Groups (
分组管理) in the nav:- type a name and hit New group to create a group;
- in the Ungrouped section, pick a group from each entry's dropdown to move it in;
- inside a group card, use Rename / Delete / Remove to manage it (deleting a group moves its entries back to Ungrouped).
How it works
The settings nav list is rendered by the shipped panel and is not a slot, so the plugin:
- reads the
settings.sectionslot ledger (ctx.slots.entries) and sorts it exactly like the panel does; - injects the group rows into the nav list DOM right after the last core entry (idempotent — no DOM change when already placed);
- marks plugin buttons with
data-snav-plugin/data-snav-groupand drives visibility via a small stylesheet (the activearia-currentrow stays visible); - follows the ledger and panel re-renders with a scoped
MutationObserver(with a storm watchdog), so the group stays correct as plugins come and go; Everything is owned by the plugin fiber: styles, subscriptions, the observer, and the injected rows are removed when the plugin is stopped or uninstalled.
Uninstall
dsh plugin --profile web remove dsh-settings-nav-organizer
This stops the plugin, removes its row from cordis.patch.yml and its dependency from the profile package.json.
License
Links
More in this category
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 3319
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 1578
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 1499
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/dsh-at-file★ 261
Codex-style `@file` mentions: search workspace files in the composer and attach their contents to prompts.
huiliyi37/dsh-tianshu-tui★ 189
A terminal UI (TUI) for DeepSeek Harness.
Nagi-ovo/dsh-visualize★ 156
In-conversation generative UI: the model renders interactive HTML cards into the chat stream, with streaming preview and sandboxed rendering.