Gathers custom plugin settings pages and cards into draggable top tabs under a unified Plugin settings navigation row.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:jiangyinluwei/dsh-plugInOne
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 — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Renamed from
dsh-settings-hub; the RPC namespacesettingsHuband legacy data migration paths stay compatible.
English | 中文

A pure relay plugin for DSH that adds one Plugin settings nav row to the settings dialog and gathers every custom plugin's settings content into draggable top tabs, persisting the tab order to a JSON file.
The plugin never modifies any plugin's registration, component, or settings document. It only:
- Detects custom-plugin settings contributions from the live slot ledger:
settings.sectionpages that are not DSH builtin sections (general / models / plugins / agent-presets) — e.g. dsh-at-file, dsh-market, dsh-status-rotator, dsh-notification, dsh-better-sidebar;settings.general.itemrows contributed by plugins (e.g. dsh-peak-indicator);settings.plugin.itemcards contributed by plugins (e.g. dsh-peak-indicator, dsh-client-auto-continue, dshmarket).
- Adds one Plugin settings nav row whose page renders a horizontal tab
strip. Tabs are manually draggable; the order is saved by the host half to
data/order.jsoninside the deployed plugin folder and restored on the next load. - Renders each plugin's original settings content inside its tab through a
faithful port of the runtime slot-render composition (standard kit,
tlocale seat, inject business face, store seat, childrenderSlotrecursion) with per-entry error boundaries — semantically identical to the settings shell. - Hides the collected content from its old seats by filtering the runtime
views: the settings nav projection is filtered via a service prototype
patch, and the renderer host (
slots._host) is wrapped in a Proxy that filtersentriesOf/entriesOfSlot. Plugin section rows disappear from the settings nav, plugin general rows from the General page, and plugin cards from the Plugins page — while the registrations themselves stay intact.
Layout
dsh-plugInOne/
├── package.json # dsh.client.platform: web + dsh.bundle.patch
├── cordis.patch.yml # loader insertion
├── dsh.plugin.json
├── lib/index.js # host half: settingsHub/loadOrder + saveOrder (JSON file)
└── lib/client.js # client bundle (hand-written, no build step)
Install (web profile)
node <DSH_HOME>/profiles/node_modules/@deepseek-ai/dsh/lib/bin.js plugin --profile web add "file:<repo path>"
Restart DSH afterwards (the plugin roster is loaded at boot), then hard-refresh the page (Ctrl+R).
If pnpm rejects the install because of its supply-chain policy (
minimumReleaseAge), run pnpm directly inside the profile with the policy relaxed and add the plugin todsh.profile.bundlesmanually:pnpm add "file:<repo path>" --config.minimum-release-age=0
Verification after restart
- Open Settings from the sidebar foot → the left nav should contain only the builtin rows plus Plugin settings.
- Click Plugin settings → top tabs list each plugin; drag a tab to
reorder; the order is saved to
<plugin folder>\data\order.json(e.g.~\.dsh\profiles\web\node_modules\dsh-plugInOne\data\order.json). - Each tab shows that plugin's original settings content.
- The General page no longer shows plugin rows (e.g. peak-indicator), and the Plugins page no longer shows external plugin cards.
Notes / constraints
- Requires the current settings slots (
settings.section,settings.general.item,settings.plugin.item) and the slot renderer host — DSH ≥ 0.1.1-rc.2. - The builtin/core whitelists live at the top of
lib/client.js:BUILTIN_SETTINGS_SECTION_IDS,CORE_GENERAL_ITEM_IDS,CORE_PLUGIN_CARD_KEYS. If the deployment adds another builtin page, keep them in sync. - If a plugin's section id and its plugin-card key differ, it shows as two
tabs (e.g. dshmarket's
marketvsdsh-market); add an alias if you want them merged. - Degradation path: if a future runtime drops the
hostFace/_hoststructure, the plugin loses hiding and aggregation but the aggregation row still shows content and the original seats remain untouched — it cannot break the page. - The client bundle hot-reloads (client-hmr polls), but the
slots._hostProxy and the prototype patch only take effect on a fresh page load, so hard-refresh after editing.
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8670
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8670
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.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4631
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
ccch1mneyyy/dsh-TUI★ 4484
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 4133
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1453
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.