- Início
- Plugins
- Melhorias de UI
- dsh-settings-resizer
dsh-settings-resizer
dreamxjy/dsh-settings-resizer
Makes the DeepSeek Harness settings window resizable and configurable in size, with presets, drag resizing, and sizes saved to the profile config.
Instalar
dsh plugin --profile web add github:dreamxjy/dsh-settings-resizerREADME
Settings resizer
一个独立的 Harness 插件,让「设置」窗口变成可配置、可拖动调整大小, 专门解决固定 800 × 800 布局导致部分插件设置页内容拥挤的问题。
它做什么
- 注入一段只作用于
div[data-shortcut-modal="settings"][role="dialog"]的 CSS, 用可配置的宽/高覆盖设置外壳固定的800px尺寸(不修改 DSH 本体)。 - 默认采用
1100 × 820的「宽松」预设,直接缓解拥挤;也可选择800 × 800(原始)、800 × 600(紧凑)、1280 × 860(超宽)或自定义尺寸。 - 提供「允许拖动右下角」开关:开启后面板右下角出现原生 resize 手柄, 拖动即自由调整。
- 提供「记住拖动后的尺寸」开关(默认开启):决定拖动结果是否写入 profile 配置永久保留,还是只在本次会话有效。
- 在设置里新增一个「窗口大小」分区用于配置。
尺寸记忆写入 profile 配置
尺寸不再存浏览器 localStorage(DSH Web 端口每次启动可能变化,按 origin
隔离的 localStorage 会丢失)。改为走 Host 官方 settings 域:
- Host
index.js用@deepseek-ai/schemastery声明Config,五个字段width / height / resize / rememberDrag / preset都标.volatile(),并在apply中通过ctx.inject(['settings'], ...)注册settings.configure({auto:false}, ctx.fiber)。 - 命名空间 id =
cordis.patch.yml行的id,即settings-resizer。 - Client 用
configForms.get('settings-resizer')读快照、订阅变化, 用form.mutate([...5 字段])一次原子写入。Host 把值持久化到当前 profile 的cordis.patch.yml中- id: settings-resizer行的config:。 - 因此重启、端口漂移、换浏览器后尺寸都保留;配置随 profile 走。
- 软获取
ctx.get('configForms'):服务短暂不可用时插件仍激活, CSS 的var(--dshr-width, 1100px)兜底保证窗口保持 1100 × 820。
「记住拖动后的尺寸」开关
状态分两层,互不污染:
saved:与 profile 配置完全一致的值,重启存活。sessionDrag:仅在「记住 = 关」时产生的临时尺寸,永不写入saved/ profile。current是二者合并后的有效状态,驱动 CSS 变量与界面。
行为:
- 记住 = 开(默认):每次拖动都写回 profile 配置,永久保留;预设、 自定义「应用」、恢复 800 × 800、各开关本身也一律写入配置。
- 记住 = 关:拖动只改变本次会话显示,重启 DSH 后恢复已保存
尺寸,不会覆盖预设或自定义值(同一会话内关闭再打开设置面板仍保持
临时尺寸,因为 CSS 变量挂在
documentElement上)。之后切回 「记住 = 开」时,会把当前屏幕上的临时尺寸一并采纳为要记住的值 (所见即所得)。 - 单纯切换这个开关不会把之前的临时拖动尺寸泄漏进 profile:只有一次
显式改变宽 / 高才会清空
sessionDrag。
实现约束
- 通过官方插槽
settings.section注册配置页,用ctx.effect管理<style>与事件监听并返回 cleanup。 - 样式只引用
--dsw-alias-*/--dsw-static-*/--dsw-radius-*主题令牌; 不require任何 Harness Client 包,不写document.body,不动#root。 - 开关轨道用品牌蓝
--dsw-alias-state-business-primary(亮色#4176e6/ 暗色#7aaaff)+ 白色旋钮;OFF 用实心灰槽--dsw-alias-bg-overlay。 不用--dsw-alias-brand-primary(本版是纯黑白)与--dsw-alias-bg-l1/bg-l2(本版未定义),避免在两种主题下都看不清。 - 仅在
@media (min-width: 768px)生效,移动端铺满视口的原有逻辑保持不变。 - 若未来宿主不再带
data-shortcut-modal="settings",CSS 自然失效且无害。 - Host
index.js用@deepseek-ai/schemastery声明Config,该依赖已在package.json的dependencies中固定为3.18.4。从 GitHub 源码安装 (dsh plugin --profile <name> add github:dreamxjy/dsh-settings-resizer)时, pnpm 会把这个依赖装进插件自己的node_modules,Host 即可解析。 - 只有用
link:(本地目录软链)方式安装时,Node ESM 按 realpath 解析会 绕过 profile 的node_modules树,才需要目录内的node_modules/@deepseek-ai软链(见下)。
安装
用预构建的 release tarball 安装(推荐,体积最小、无需构建):
dsh plugin --profile <name> add "https://github.com/dreamxjy/dsh-settings-resizer/releases/download/v1.2.4/dsh-settings-resizer-1.2.4.tgz"
也可以从 GitHub 源码安装(依赖会自动解析):
dsh plugin --profile <name> add github:dreamxjy/dsh-settings-resizer
或通过 plugin_manager 的 install_bundle 安装本目录(绝对路径)。
安装/更新后可能需要完全重启 DeepSeek Harness 才会加载新的 Host 模块。
从本仓库全新 clone 后,若以
link:(本地目录软链)方式安装,Node ESM 会按 realpath 从仓库目录解析@deepseek-ai/schemastery,而该目录不在 profile 的node_modules树内,Host 会报ERR_MODULE_NOT_FOUND。此时在仓库目录补一个 指向 profile 作用域的软链即可(该软链已在.gitignore中排除):mkdir -p node_modules ln -s "$HOME/.dsh/profiles/desktop/node_modules/@deepseek-ai" node_modules/@deepseek-ai若改用以 tarball/npm 包形式安装(依赖被打进包内),则无需这一步。
Plugins relacionados
dsh-web (dsh-task-board)
zhu1090093659/dsh-web
dsh-web (dsh-web-all)
zhu1090093659/dsh-web
dsh-TUI
ccch1mneyyy/dsh-tui
dsh-web-ui (dsh-task-board)
zhu1090093659/dsh-web-ui