DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Client Ui Font Scale — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
C

dsh-client-ui-font-scale

Client Ui Font Scale

DeepSeek Harness Web UI 的对话字体大小控制:包括输入框行步进控件、键盘快捷键和 Ctrl+滚轮缩放,均通过主题服务的 setFontSize 写入

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:AprilCrystal/dsh-client-ui-font-scale#0e54353745c000e7b0e8bdd1a71472ab0b3f900f
README兼容性版本

兼容性与来源证明

Client Ui Font Scale 以 dsh-client-ui-font-scale 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/3

版本

0.1.0stable
2026/10/3

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。

README

dsh-client-ui-font-scale

A DeepSeek Harness client (browser) plugin that puts conversation font-size controls where you are already looking: a stepper in the composer tool row, keyboard shortcuts, and Ctrl+wheel zoom.

No build step. The lib/*.js files are authored directly in the shipped bundle format, so cloning the repository is enough.

Why this exists

DSH already ships a conversation font-size setting — Settings → General → 字号大小 / Font size, contributed by @deepseek-ai/dsh-client-ui-theme. Its copy is explicit that it "only affects conversation content", which is exactly the right scope.

This plugin does not replace or reimplement it. It adds the input surfaces that setting lacks:

  • reaching it takes four clicks, so it is easy to forget it exists;
  • there is no keyboard shortcut for it anywhere in the shipped shortcuts registry;
  • there is no wheel gesture for it.

Every control here writes through the same theme.setFontSize entry point the shipped row uses, so the two can never disagree.

What it does

SurfaceWhereBehaviour
Steppercomposer tool row, before the submit actionA− / readout / A+, clamping at the ends
Resetbeside the stepper↺ restores the default; greys out when already there
ShortcutsCtrl+= / Ctrl+- / Ctrl+0increase / decrease / restore default
ZoomCtrl+wheel over the pagewheel up enlarges, wheel down shrinks

Both the readout and the reset button render the live size from the theme snapshot, so a change made in the shipped settings row updates this control immediately, and vice versa.

Requirements

  • DeepSeek Harness with the Web client (the desktop profile, or any profile mounting @deepseek-ai/dsh-web-app).
  • A theme service that exposes setFontSize — i.e. @deepseek-ai/dsh-client-ui-theme, which ships in the default composition.
  • No build step and no runtime dependencies beyond the browser module table.

Install

This package is a dsh bundle: package.json declares dsh.bundle.patch, so dsh treats cordis.patch.yml as a composition layer and mounts it for you.

dsh plugin --profile <profile> add dsh-client-ui-font-scale

That installs the package into the profile and appends it to the profile's bundle list. The profile is watched, so dsh recomposes without a restart. Remove it with dsh plugin --profile <profile> remove dsh-client-ui-font-scale.

From a local checkout

dsh plugin --profile desktop add /absolute/path/to/dsh-client-ui-font-scale

Mounting by hand

Compose cordis.patch.yml into the profile's own patch file, and make the package resolvable from the profile directory:

pnpm add link:/absolute/path/to/dsh-client-ui-font-scale --dir "$DSH_HOME/profiles/desktop"
# $DSH_HOME/profiles/<profile>/cordis.patch.yml
- insert:
    - id: font-scale
      name: dsh-client-ui-font-scale

A patch insert row may also name a path instead of a package — dsh rewrites ./-relative and absolute names to file URLs anchored at the patch file — which needs no install at all.

After installing, reload the page: a client plugin's bundle is wired into the index at render time, so a page that was already open does not pick up a newly installed bundle.

Persistence

This plugin stores nothing, deliberately.

theme.setFontSize(px) writes through the ui-theme settings scope on the Host (this.host.set('fontSize', px)), and @deepseek-ai/dsh-client-ui-theme's Host half re-embeds that durable value into every index render as a boot script. The result:

  • the size survives a page reload;
  • the size survives an application restart;
  • it is applied before the shell mounts, so there is no flash of the default size.

A second store here would be a second source of truth for one number. If you want to change how the size persists, change it in dsh-client-ui-theme, not here.

Range

The accepted range is 10–22 px in whole steps, default 14. That range belongs to the theme service: setFontSize throws for a fractional or out-of-range value. Every control here clamps rather than bypassing it, so the shipped settings row and this plugin always agree.

If you need to go beyond 22 px, note that dsh-client-ui-layout writes the size as an unimportant inline --dsh-content-font-size on <body>, so a stylesheet rule with !important can override it. Doing that from a plugin means owning the resulting split-brain with the shipped setting, which is why this plugin does not.

How it works

ConcernMechanism
Seatctx.slots.register into conversation.input.right (a list slot, replaceRisk: none, empty in the default composition)
Readtheme.getTheme().fontSize, re-rendered on the theme/change event
Writetheme.setFontSize(px) — the only font-size write entry
Keysctx.shortcuts.register, so bindings appear on the Shortcuts settings page and stay user-rebindable
Localectx.locale.register + ctx.locale.bind; the readout and labels follow the active locale
Stylesone <style> element inserted in ctx.effect, removed on dispose

Two ordering details are load-bearing:

  • Services are resolved per call (ctx.get('theme')), not captured once in apply. A peer half may mount after this one, and a captured miss would silently disable a surface for the whole run.
  • Shortcuts and dictionaries register through ctx.inject, which waits for the service instead of racing it. Registering against a not-yet-mounted service is a no-op, not an error, so the failure would be silent.

Shortcut bindings declare regions: ['page', 'editable'], so they keep working while the composer has focus. On the desktop runtime no combination is reserved (bindingIssue returns early for desktop on Windows and macOS), so Ctrl+= / - / 0 register cleanly.

Development

node scripts/validate-plugin.mjs .
# or
npm run validate

The validator is read-only and asserts the contract this bundle depends on: the dsh.client manifest, the dsh.bundle.patch layer, apply() on the host half, the __ModuleLoader__.load wrapper with a factory id equal to the package name, require('react') beside createElement, CSS template-literal integrity, and locale-dictionary symmetry. It reads dictionary keys out of the object literals themselves, so labels reached through a variable still count.

Also worth running before a commit:

node --check lib/client.js && node --check lib/index.js

Repository layout

lib/index.js                host half (empty apply: the bundle owns no host capability)
lib/client.js               browser half: slots, shortcuts, wheel, styles
cordis.patch.yml            the bundle's composition layer
scripts/validate-plugin.mjs structural validation

Caveats

  • The control is a decoration in the composer row, not a settings replacement. The shipped Settings → General → Font size row remains the canonical place to see and set the value.
  • Ctrl+wheel calls preventDefault, which suppresses the Electron shell's own page zoom. That is intentional — the gesture should mean one thing — but it does mean Ctrl+wheel no longer zooms the whole page.
  • The wheel handler is attached to window, so the gesture works anywhere over the page, not only over the conversation column.

License

MIT © 2026 AprilCrystal