packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
修复整页缩放后右侧栏拖拽手柄偏移、分割线拖不动的问题,把命中区加宽到 12px 并显示悬停提示线。
中文 | 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:
offsetLeft (layout pixels, unaffected by zoom and slide transforms) and moves the host handle back onto it through a CSS variable;setRightbar.At 100% zoom it is effectively a wider hit area with a hover affordance.
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.
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).
[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.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.
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.
MIT