packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
在高 DPI 显示器上手动缩放 Harness Web UI(75%–200%):设置行、Ctrl+滚轮与会话标题栏控件三种入口,让文字更清晰易读。
A DeepSeek Harness plugin that adds a manual interface-zoom preference, so the Web UI can be enlarged or shrunk on high-DPI displays and make its text easier to read.
English | 中文说明
Three entry points drive one zoom value (75 %–200 %, 5 % steps):
125 %), the display scale the window is
rendered at (e.g. 当前显示器:200%), and a Reset action back to 100 %.− 125 % + control in the Session header's top-right corner
(in the header utilities, after the shipped buttons). Click the percentage to
reset to 100 %.The preference is remembered (host-scoped cookie plus a same-origin
localStorage mirror), so it survives reloads and app restarts.
The Client half sets one CSS property on the document root:
html { zoom: 1.25; }
Chromium scales layout, text, and fixed/overlay surfaces together, so the whole
Web UI — dialogs, menus, toasts, and the settings panel itself — follows one
ratio, and text is re-rasterized at the larger size rather than stretched. The
settings row is registered in the host's own settings.general.item seat, the
header control in the Session header's additive
conversation.session.header.utilities seat, and both are styled with host theme
tokens, matching the surrounding controls in light and dark themes.
Windows display scaling changes physical size but not the app's logical density. On a large high-DPI monitor the UI can still be too small (or, for some users, too large) for comfortable reading. The operating-system setting also affects every application. This plugin zooms only the Harness Web UI, by a value you pick, and remembers it.
A CSS zoom on the document root makes Chromium report
getBoundingClientRect() and window.innerWidth/innerHeight in visual
(already zoomed) pixels, while position: fixed descendants are zoomed a
second time. The host UI positions its tooltips, hover cards and menus from
exactly those values, so they drifted away from their anchor by
(scale − 1) × distance from the top-left corner — the bug reported against
0.1.1. 0.1.2 installs a geometry-space shim that converts those reads back to
the layout pixels CSS uses (and, after a one-time auto-detection, pointer
clientX/clientY too), so the host's own positioning, drag and hit-test math
behaves exactly as it does at 100 %. The shim is the identity at 100 % and
unload restores the prototypes. React DevTools fixed the same browser behavior
in facebook/react#37519.
Escape hatch if you need to compare against the uncompensated behavior (browser DevTools console; takes effect after a reload):
localStorage.setItem('dsh-plugin-zoom:no-geometry-shim', '1');
// localStorage.removeItem('dsh-plugin-zoom:no-geometry-shim');
localStorage as a same-origin mirror.dsh-plugin-dpi-scale; a zoom already chosen
under that name is migrated automatically the first time this version loads.@deepseek-ai/dsh-base / Web profile).
Developed and verified against DSH desktop 0.2.1-rc.2.Install from npm through the DSH plugin manager:
plugin_manager action=install_bundle target=dsh-plugin-zoom@0.1.3
Or install from a local checkout (a directory install links the checkout, which is convenient while developing):
plugin_manager action=install_bundle target=D:\path\to\dsh-plugin-zoom
A new bundle is applied through HMR immediately; after changing the plugin's source, reload the page (or restart DSH) to load a fresh client module.
client.js — the whole feature: preference state, document zoom, the
Ctrl+wheel shortcut, the General row, and the Session-header control (plain
classic script registered on window.__ModuleLoader__).index.js — the Host half; intentionally empty.cordis.patch.yml — inserts the zoom Loader row.locale/*.json — Plugin Manager title/description (en, zh).Run npm run check before committing.
.github/workflows/publish.yml publishes through npm trusted publishing
(OIDC). Configure this repository (workflow publish.yml, environment
npm) as a trusted publisher on npmjs.com, then publish a GitHub release whose
tag equals the package.json version (for example v0.1.3). The workflow
checks that the tag matches, validates the packed files, and publishes with
provenance.
MIT. See LICENSE.