# dsh-toomuch-plugins
**Makes room in the DSH Web sidebar.** · *Too many plugins, too little room.*
[](https://github.com/rivenshanghai/dsh-toomuch-plugins/blob/main/LICENSE)
[](https://www.npmjs.com/package/dsh-toomuch-plugins)
[](https://nodejs.org)
[](https://github.com/rivenshanghai/dsh-toomuch-plugins)
[](https://github.com/topics/dsh-plugin)
[English](README.md) | [简体中文](README.zh-CN.md)
---
A small plugin set that gives the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
(DSH) Web sidebar some breathing room.
It ships one plugin today:
| Plugin | What it does |
| --- | --- |
| Sidebar panel collapse | Collapses the "global panels" column above the workspace into one toggle in the sidebar footer, plus a display settings page |
## Why
The DSH Web sidebar stacks, from top to bottom: brand row → new session → **global
panel entries** → workspace → settings.
Every plugin that adds a sidebar entry adds a row to that column: plugins, plugin
market, schedules, MCP studio, context, skill manager, system monitor… Seven rows
are roughly 280px, which squeezes the workspace region down to a few sessions.
This plugin does exactly one thing: **collapse that column of global panel
entries**, and bring it back when you need it.
## Highlights
- **Collapsed by default** — the workspace gets ~280px back as soon as the plugin
is installed.
- **One toggle** in the sidebar footer, right above "settings".
- **Remembered** in `localStorage`; survives reloads and restarts.
- **Nothing else is touched** — no panel, no workspace, no host behaviour; only
the display of the list element the sidebar already renders.
- **Themed** with `--dsw-alias-*` tokens only, so it follows the DSH theme.
- **Rail-friendly** — in the narrow 56px rail the toggle becomes a round icon button.
- **Grid display** — in Settings → Built-in plugins, switch the entry list to icons
only (panel names become hover tooltips) with 2–4 icons per row. Bundles that skip
the panel-list slot and inject their own sidebar buttons (the `data-dsh-*-entry`
convention, e.g. 今日值得读 / 全局搜索 / 容器) are adopted into the grid too, and
put back in place when the grid turns off.
- **Keep some entries while collapsed** — list mode keeps the first 0–5 entries
visible while the panels are collapsed; grid mode keeps the first 0–3 rows
(rows × icons). Default 0, i.e. everything collapsed.
- **Plugin display order** — pick panels one by one from a dropdown on the
settings page; the list order is the sidebar order (lossless CSS `order`
overrides). Capped at 20, duplicates dropped on save. The dropdown also
lists slot-skipping sidebar entries (今日值得读 / 全局搜索 / 容器 and other
`data-dsh-*-entry` followers); listed ones are adopted into the list so the
order really applies, and released when the order is cleared.
- **Click counting** — panel clicks accumulate into
`~/.dsh/plugins/dsh-toomuch-plugins/click-counts.json`, (silently skipped when the remote is unavailable).
- **Icon size** — pick small (12px), medium (the sidebar's own size, the
default) or large (24px); the list and grid icons scale right away and the
choice survives reloads.
- **Off by default** — grid mode is opt-in; the preference lives in `localStorage`
alongside the collapse state and survives reloads.
## Screenshots
Grid display — icons only, panel names as hover tooltips, 2–4 icons per row:

The "Sidebar panel display" settings page (Settings → Built-in plugins) — grid
mode, icons per row, and how many rows stay visible while collapsed:

## Install
The plugin is a repository-root package: it declares the `dsh.bundle` manifest, so
DSH can install it straight from npm or GitHub.
```sh
# from npm (prebuilt — no build approval step)
dsh plugin --profile web add dsh-toomuch-plugins
# from GitHub
dsh plugin --profile web add github:rivenshanghai/dsh-toomuch-plugins
# or from a local clone
git clone https://github.com/rivenshanghai/dsh-toomuch-plugins.git
dsh plugin --profile web add /path/to/dsh-toomuch-plugins
```
`dsh plugin` forwards to `pnpm` inside the profile. After the install, **enable the
plugin** in DSH's plugin settings (it is written into the profile's
`dsh.profile.bundles`), then refresh the page.
From the plugin market, once listed: open **Settings → Plugin Market** in DSH and
search for `dsh-toomuch-plugins`.
**Verify:** the sidebar footer gains a "Collapse global panels / Expand global
panels" row above "settings", and the global panel column is gone. Settings →
Built-in plugins gains a "Sidebar panel display" page for grid mode,
icons-per-row, how many entries (list) or rows (grid) stay visible while
collapsed, the custom plugin display order (up to 20 entries), and the icon
size (small / medium / large).
Requirements: DSH (DeepSeek Harness) with a `web` profile; Node.js ≥ 20.
## How it works
`src/client.js` does the following:
1. registers a toggle into the sidebar footer slot `sidebar.footer.action` (the
row next to "settings");
2. walks up from its own root node to find the sidebar root's direct `