dsh-plugin-rightbar-divider
Manifest validRestores the DSH right sidebar divider drag after whole-interface zoom shifts the host handle off it, and widens the hit area to 12px with a hover affordance.
dsh-plugin-rightbar-divider
中文 | English
DSH's right sidebar already has a drag handle. This plugin fixes the case where it stops working after whole-interface zoom: the handle is still rendered, but it is positioned with the visual viewport width instead of layout pixels, so at zoom: 1.2 it sits ~320px inside the panel instead of on the divider.
The plugin:
- measures the panel's real left edge with
offsetLeft(layout pixels, unaffected byzoomand slide transforms) and moves the host handle back onto it through a CSS variable; - widens the hit area from 8px to 12px and draws a 2px hover/drag line;
- leaves width limits, persistence, and drag behavior to the host's
setRightbar.
At 100% zoom it is effectively a wider hit area with a hover affordance.
Install
From the DSH plugin market or npm:
dsh plugin --profile desktop add dsh-plugin-rightbar-divider
Then open Plugins → Add plugin and install dsh-plugin-rightbar-divider, or use the in-app plugin page. Open the right sidebar and hover the divider between chat and the sidebar: the cursor becomes col-resize and a thin line appears.
Why it happens
AppFrame positions the two handles like this:
{ side: 'sidebar', left: cols.sidebar }
{ side: 'rightbar', left: viewport - normal.rightbar }
viewport is frame.getBoundingClientRect().width (visual pixels) while left is layout pixels. With html { zoom } the two diverge; the left handle uses layout pixels on both sides and stays aligned, the right one drifts by viewport × (zoom − 1).
Known limits
- Depends on private host attributes (
[data-side="rightbar"],[data-rightbar-col],[data-sidebar-right-open]). If a future DSH renames them, the plugin quietly deactivates instead of breaking the layout. - Under zoom, the host still changes width from visual pointer deltas, so dragging is slightly faster than the cursor (120% → 120px per 100px). The plugin does not take over pointer events.
- Fullscreen panels have no outer width handle by design; nothing is invented.
Verify
node test.mjs
Covers layout-pixel math, re-measure on width change, deactivation when the handle disappears, the rect/zoom fallback, and cleanup on dispose.
A proper upstream fix
In AppFrame, use frame.offsetWidth / clientWidth for viewportWidth, or derive the right handle's left from the panel's offsetLeft. That fixes every geometry that depends on viewportWidth, not just the handle.
License
MIT
Comments
Loading…
Similar plugins
by garrisonz
Control the Web UI left sidebar width: lower the 264px drag minimum and optionally tune the drag maximum and the expanded default width, applied by a startup patch of the ui-layout bundle.
★ 0
MIT
JavaScript
Sep 11, 2026
dsh plugin --profile web add dsh-sidebar-widthAdds the right sidebar's expand trigger on pages with no conversation, matching the product's own control.
★ 0
MIT
JavaScript
dsh plugin --profile web add dsh-hero-rightbarby Han-1413141
UI butler for every plugin UI: official/plugin categories, per-widget toggles, drag move/resize, collision avoidance and one-click auto arrange.
★ 4
MIT
JavaScript
Oct 2, 2026
dsh plugin --profile web add dsh-ui-hubWindow-like controls for every Web UI modal: drag by title bar, eight-way resize, pin against outside clicks, maximize to the full viewport, removable backdrop blur, and per-dialog persistent state.
★ 0
dsh plugin --profile web add dsh-modal-enhancerMakes the DSH Settings dialog resizable from its edges and corners and movable by its top strip, remembering the chosen size across opens.
★ 0
dsh plugin --profile web add dsh-resizable-settingsby sjrslh
Ctrl+wheel page zoom (60–180%, remembered) for the whole DSH UI, plus a bottom-right Settings entry that opens the host settings panel, with Ctrl+0 to reset.
★ 0
MIT
JavaScript
Oct 22, 2026
dsh plugin --profile web add dsh-ui-zoom