Preface¶
In DSH’s client GUI, the left column contains two parts stacked together: one is the global panel list (Plugins, Plugin market, Automation, MCP connectors, Learn, Remotion, More), which doesn’t scroll and consumes about 396 px in a 1234 px high window; the other is the workspace / session area below, leaving only about 120–140 px, which is the height of two rows of sessions.
The shell does not provide a way to trade height back and forth between the top and bottom parts, so if the session list is long, it gets clipped, and the item you want to click is completely unclickable. The plugin introduced here turns this trade-off into a draggable handle.
What is this plugin¶
dsh-sidebar-flex, repository yuyu121704/dsh-sidebar-flex, maintainer yuyu121704, category “Client”. It is a client bundle plugin that does exactly one thing: adds a 10 px divider below the global panel list, allowing you to compress the height of the panel list and leave the freed vertical space for the truly important session list.
It only changes height, not sidebar width.
Core Features¶
Drag the divider. Drag up or down, and the panel list shrinks or grows accordingly, giving the freed height to the workspace + session area.
Double-click or right-click the divider. The panel list returns to its natural height.
Keyboard fine-tuning. With the divider focused, press ↑ / ↓ to adjust by 24 px each time.
Height memory. On reload, restart, or next launch, it restores from localStorage["dsh-sidebar-flex:nav-height"].
Has a lower limit, content not lost. The panel list is at least 54 px (one row). When below natural height, the list itself becomes scrollable; content isn’t clipped, just reallocated.
Width unchanged. Sidebar width is managed by the shell itself, maintaining the 264–420 px clamp and the shell’s built-in edge handle. Earlier attempts to take over width are left in lib/client.js controlled by ENABLE_WIDTH, default false, currently off.
Scope of changes. The plugin only changes the height of the panel list and does not touch the session content column.
Installation and Activation¶
Installation does not go through a package manager; it requires manually putting the package into the profile. The profile is located at <DSH data dir>/profiles/<profile>, e.g., C:\Users\<you>\.dsh\profiles\desktop; the client bundle must be a package in the profile’s node_modules and registered in the profile manifest.
On Windows, create a junction from a checkout of this repo:
# Windows, from a checkout of this repo
New-Item -ItemType Junction `
-Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-sidebar-flex" `
-Target (Resolve-Path .)
Then add the package name to dsh.profile.bundles in that profile’s package.json:
{
"dsh": {
"profile": {
"bundles": ["...", "dsh-sidebar-flex"]
}
}
}
Save the file. @deepseek-ai/dsh-hmr will watch the profile manifest, rebuild the profile, and push a new client graph via SSE, so the divider appears without needing to restart the app; if not, reload the window once.
Here, the package is intentionally not registered in dependencies: the plugin manager’s reconcile() will discard bundles that “were dependencies but are no longer”, so leaving the bundle in an unmanaged state is actually more stable.
Typical Usage¶
After installation, no extra configuration is needed; the divider is right below the panel list.
- If the panel list is too high and only two rows of sessions remain, hold the divider and drag down until enough visible rows appear in the session list.
- If you dragged too much and want to go back to the original state, double-click or right-click the divider.
- If you only want to fine-tune by 24 px, Tab to the divider and use the arrow keys.
- Close and reopen the window, and the height remains at the last dragged position.
Applicable Scenarios and Notes¶
Suitable for people with a long session list who want to browse sessions directly in the sidebar, as well as those who want every session row visible without repeatedly scrolling.
A few things to know:
- This is a client plugin, running with the permissions of the current DSH process. Before installing, read the source code and license (MIT © 2026 yuyu121704) once, and only put it in
node_modulesof the profile after confirming the source is trustworthy. - The client-side implementation polls the sidebar column, finds the global panel list inside, writes an inline
heightand adds a class to make it scrollable. Since React re-renders and overwrites inline styles every time,MutationObserveris used to re-apply the height after re-rendering; if the shell replaces the list node, the handle is re-attached to the parent node. No client service, no React state, so startup issues are unlikely. - Selectors use substring matching like
[class*='panelList']/[class*='sidebarCol']because DSH hashes its own CSS-module class names. - The host side (
lib/index.js) is deliberately kept lazy; layout is rendered entirely in the browser, so there is no host service and no restart overhead. - Compatibility boundary:
peerDependencies: @deepseek-ai/dsh >=0.2.0-rc.2 <0.3.0-0. The author built and verified with 0.2.2 client bundles of@deepseek-ai/dsh-client-ui-layout,-ui-sidebar, and-ui-workspace. - Version 0.2.2, the community directory page shows 0 stars, it’s a small utility in the early stages, verify it yourself before using.
- Uninstall: Remove
"dsh-sidebar-flex"fromdsh.profile.bundles, deletenode_modules/dsh-sidebar-flex(junction or copy), optionally clearlocalStorage["dsh-sidebar-flex:nav-height"]. - The directory page is an independent community site with no official affiliation to DeepSeek / Huafang; don’t treat it as an official app store.
Conclusion¶
dsh-sidebar-flex does a very narrow thing: adds a draggable, memory-remembered divider to the global panel list in the DSH sidebar, giving vertical space from the panel list to the session list, leaving width and session content untouched. DSH’s philosophy is “everything is a plugin,” and this small plugin that only changes layout on the client side fits this model perfectly. The directory page and source code are at https://www.skillhub.cn/plugins/yuyu121704/dsh-sidebar-flex and https://github.com/yuyu121704/dsh-sidebar-flex respectively.