xiajiajun516 / dsh-settings-organizer

Listed

Low-intrusion Settings presentation layer for DeepSeek Harness (DSH): group plugins, hide settings, search and restore - additive client-slot + settings-namespace seams.

mainTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:xiajiajun516/dsh-settings-organizer

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit a8c0a49Synced Aug 18, 2026

🧰 DSH Settings Organizer

A low-intrusion Settings presentation layer for DeepSeek Harness (DSH): group, hide, search and restore your settings — without ever changing another plugin's configuration.

English · 简体中文

npm version license


✨ Highlights

IconFeatureIn one line
🗂️Group by pluginEvery plugin's settings render as one collapsible group
🎚️Collapse / expandPer-group, state persisted across restarts
🙈Hide anythingHide a single field or a whole plugin's settings
🔍SearchMatches label / key / path / plugin name / description; ignores collapsed state
↩️Manage HiddenRestore one field, one plugin, or everything in one click
🧹Zero side effectsNever edits other plugins; uninstall leaves no trace

🚀 Quick start (30 seconds)

1️⃣ Install the plugin (one command — see below)
2️⃣ Restart DSH
3️⃣ Open Settings → "Settings Overview"
4️⃣ Collapse groups you don't care about → search → hide noise → done

📥 Installation

dsh plugin --profile web add dsh-settings-organizer@latest --config.auto-install-peers=false

💡 --config.auto-install-peers=false skips a few DSH core packages that aren't on the public registry — the DSH runtime provides them.

🐛 @latest resolves an old version? That's pnpm 11's minimumReleaseAge supply-chain policy (versions younger than ~30 days are excluded from resolution). Install an exact version once — it auto-whitelists, then @latest works:

dsh plugin --profile web add dsh-settings-organizer@0.1.1 --config.auto-install-peers=false

Or disable the age gate entirely by adding minimumReleaseAge: 0 at the top of the profile's pnpm-workspace.yaml (PowerShell one-liner):

$f = "$env:USERPROFILE\.dsh\profiles\web\pnpm-workspace.yaml"
$c = Get-Content $f -Raw
if ($c -notmatch '(?m)^minimumReleaseAge:') {
  Set-Content -LiteralPath $f -Value ("minimumReleaseAge: 0`n" + $c) -Encoding utf8
  Write-Output "已添加 minimumReleaseAge: 0"
} else {
  Write-Output "已存在,无需修改"
}

🧩 What it does

Registered as a new, additive Settings section ("Settings Overview") plus a header "Manage Hidden" action:

  1. Plugin groups — each settings namespace (ns) from settings.describe() renders as one collapsible group.
  2. Collapse / expand — per-group, with the collapsed state persisted.
  3. Hide a single setting — removes one field from the overview (pure presentation).
  4. Hide a whole plugin — hides every field of a namespace group.
  5. Search — matches label / key / path / plugin name / description; search ignores collapsed state, and a hidden item that matches shows a "Hidden · Restore" hint — it is never auto-unhidden.
  6. Manage Hidden — a header action opening a modal that restores a single hidden field, a whole hidden plugin, or everything.

🛡️ Safety guarantees

  • Hiding ≠ disabling ≠ deleting. Hiding only edits our own persisted presentation lists — another plugin's config is never updated, replaced, or unregistered.
  • Removable with zero residue. Everything this plugin registers lives on its own cordis fiber; disabling/removing it restores DSH stock settings pages exactly.
  • No DSH Core surgery. No DOM monkey-patching, no fragile CSS selectors, no private-state manipulation — only the official settings, settingsScope and slots seams.
  • Robust to bad state. Invalid persisted data is sanitized before it reaches the view — it can't crash or miswrite.

🔄 Compatibility

  • DSH web profile with the settings domain (dsh-client-ui-settings / the -general shell), client runtime/slots and the locale plugin.
  • Peer packages: @deepseek-ai/dsh-client-* ^0.1.0-rc.6, @deepseek-ai/cordis ^4.0.1, react ^18.2.0.

❓ FAQ

Q: Does hiding a setting change its value? No. Hiding only edits this plugin's own presentation lists; the setting's value and its owning plugin's config stay untouched.

Q: Will uninstalling the plugin break my settings? No. Everything is registered on the plugin's own cordis fiber and disposed on removal — other plugins' pages return to DSH stock.

Q: Is the collapsed state saved? Yes — persisted in the shared settings document (~/.dsh/settings.yaml) under this plugin's own namespace.

Q: Can search unhide things? No. A hidden item is never auto-unhidden — you'll see a "Hidden · Restore" hint and restore deliberately.

Q: Does it work if I have a lot of plugins? Yes — groups are lazy-rendered by namespace; collapse hides the noise, search finds anything instantly.


📋 Known limitation

Hiding applies to the overview page only: DSH has no per-field renderer inside other plugins' own Settings pages, so a field hidden here still appears on its owner's page. Hiding outside the overview would need an optional Core extension point (see docs).


👩‍💻 For developers

  • DEVELOPERS.md — build / typecheck / the tag-triggered auto-publish pipeline (npm via OIDC trusted publishing + GitHub Release with auto notes).
  • Spec & architecture — docs/dsh-settings-tidy.md, docs/phase-a/architecture.md, docs/phase-a/rfc-option-c-section-filter.md (hard invariants, mounting & packaging, state model).

📄 License

MIT — see LICENSE.

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

DocumentationDetected

Repository information

Language
TypeScript
License
MIT
Latest release
v0.1.3
Last updated
Aug 16, 2026, 10:29 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.