
Security News
vlt 1.5.0 Adds Agent Skills Management
vlt 1.5.0 links skills from JavaScript dependencies to coding agents, with lockfile versioning and Socket data to filter out known malicious packages.
dsh-fonttune
Advanced tools
Font plugin for the DeepSeek Harness Web GUI: the conversation gets its own font, size, line height and weight, the interface font and weight follow it, code keeps its own axis with ligature control, and whole setups save as presets.
English | 中文
DeepSeek Harness(DSH)字体插件:对话(会话 Markdown 正文)拥有完整的排印控制——字体族、字号、行高、字重、字距、词距、段距与首行缩进;界面(设置页、侧栏、工作区、按钮)提供字体与字重并默认跟随对话;代码独立成轴,另有连字与特性开关;整套配置可存为预设方案。配置入口是原生卡片(分区收起 + 摘要),改完即时生效:0.2 线在「插件」页的已安装栏目里(点开本插件的卡片),rc 线在 设置 → 插件 → 插件配置。
悬浮调参面板(左,含底部「当前生效」读数)与设置卡片里的文字排印部分(右):
| 悬浮面板 | 设置卡片 |
|---|---|
![]() | ![]() |
+n / -n 显示,范围按当前字体实测):偏移叠加在每个元素自身的字重上,标题仍按 DSH 的层级(h1body 与自带字重的元素表的规则:真机实测(活页面计算样式)它把界面的文本元素改到目标值、对话 markdown 里的元素一个都没动,所以改界面字重不会碰到对话。滑块按档计数:读数就是档数(例如 -1 0 +1),档数由字体决定——卡片会在页面里量出所选字体在正文处实际能渲染出几种粗细,一档取变化足够明显的那一档(不是最细的那一档),范围到正文再也换不到字形为止(加粗与标题到顶后停住),所以档数可能比之前少,但每挪一格都看得出来,数字也不会出现"几百几百";换字体会重新测量。文档里存的仍是字重偏移(旧值自动换算),换字体不会把设置改坏;字体只有常规与粗体两档时就只有 2 个档位,要连续可选用字重档位多的字体或可变字体=>、!= 这类连字),高级模式另有 font-feature-settings 特性值输入一份包同时支持三条宿主线——0.1.7-alpha.1 / alpha.2(下限)、0.1.7-rc.1 / rc.2、0.2.0-rc.1 / rc.2:安装方式与宿主线无关,三条线都验证过「设置卡片可用、样式真的作用到页面、卡片上的改动写得进去」。
| 插件版本 | 支持的 DSH 版本 |
|---|---|
| 0.7.x(最新,0.7.1) | 0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2、0.2.0-rc.1、0.2.0-rc.2、0.2.1-alpha.1、0.2.1-alpha.2、0.2.1-alpha.3、0.2.1-alpha.4、0.2.1-alpha.5、0.2.1-rc.1、0.2.1-rc.2 |
| 0.6.x(0.6.2) | 0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2、0.2.0-rc.1、0.2.0-rc.2、0.2.1-alpha.1、0.2.1-alpha.2、0.2.1-alpha.3、0.2.1-alpha.4、0.2.1-alpha.5、0.2.1-rc.1、0.2.1-rc.2 |
| 0.5.x(0.5.0) | 0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2、0.2.0-rc.1、0.2.0-rc.2、0.2.1-alpha.1、0.2.1-alpha.2 |
| 0.4.x(0.4.2) | 0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2、0.2.0-rc.1、0.2.0-rc.2、0.2.1-alpha.1、0.2.1-alpha.2 |
| 0.3.x(0.3.6) | 0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2、0.2.0-rc.1、0.2.0-rc.2 |
| 0.2.x(0.2.8) | 0.1.5-rc.3、0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2 |
每个大版本只列该系列最新的一个补丁版本(新功能引入的缺陷都在其后的补丁里修掉了,所以同一个大版本内直接用最新补丁即可;旧补丁仍可继续用,插件不破坏既有接口)。
通过 DSH CLI 安装:
dsh plugin --profile web add dsh-fonttune
也可以从 GitHub 安装:
dsh plugin --profile web add github:LyaxZ/dsh-fonttune
或以本地目录安装:
dsh plugin --profile web add <插件目录路径>
安装后重启一次 DSH 并打开 Web UI;之后改设置不需要重启。
-1 … +2),所以档数可能比之前少、但每挪一格都看得出变化,也不会出现"几百几百"的数字;换字体后档数会重新测量cordis.patch.yml,更早的版本是 settings.yaml),跟随 profile 走src/shared.cjs —— 纯函数核心:字体名消毒与解析、配置归一化、注入样式的生成src/index.mjs —— 宿主半:注册 dsh-fonttune 设置命名空间(schemastery schema,含长度与取值范围校验),并通过 webserver/index-inject 把一个打过标记的 <style> 随首页下发,首帧即是设置里的字体;那个元素随后由浏览器半认领并接管(页面里只有这一份样式表,规则可增可删)src/client.js —— 浏览器半:设置卡片、选字体面板、字体枚举与样式注入build.mjs —— 零依赖构建:内联共享核心、套上 window.__ModuleLoader__.load({id, factory}) 外壳、拷贝宿主半,并校验客户端 bundle 只 require shell 预注入的模块test/run.mjs —— 离线检查(自建 DOM / cordis / 设置面替身、真实 schemastery schema、CSS 生成与注入、消毒对抗用例、双语文案键一致性、选字体面板的分组规则、令牌轮询的省电闸门);test/render-card.mjs 用 mini React hooks 运行时真实渲染卡片组件(含强制展开态与强制状态,覆盖 0.1.0 那类发布阻断崩溃),把每个控件的回调都点一遍(未接线的回调只有真点下去才会暴露),并渲染第二次覆盖「状态变化后 hook 顺序改变」这一类崩溃;test/artifacts.mjs 校验 lib/ 与当前 src/ 逐字节一致(npm run verify 跑全部三套)。devDependency 钉的是最新的 schemastery(^3.18.4),也就是 alpha 那套方言——它带 .volatile(),解析出来的字段是引用而不是值,所以这几套检查都通过宿主半导出的 plainConfigValue 取值(和插件读配置同一条路);运行时用的是宿主自带的那份(rc.2/rc.3 是 3.18.2,没有该修饰符,那条形态由真机探针覆盖)npm run verify:browser -- "<带 token 的地址>"(先起一个受管实例:dsh web --port 0 --no-open,它会打印地址)。默认只跑只读的几支(browser-probe / ui-walk / host-line-probe / style-verify);加 --writers 再跑会写设置命名空间的几支(slider-walk / split-walk / split-verify / weight-verify,各自先快照用户层、退出前还原),--only a,b 挑子集;每支的退出码就是判定。test/set-user-layer.mjs <url> '<json>' 是在被中断的运行之后还原用户层的工具test/host-line-probe.mjs 是与宿主线无关的那一支:只断言两条线都必须成立的事——页面无报错、插件只维护一份样式表、设置真的作用到文档(DFP_EXPECT_FAMILY / DFP_EXPECT_WEIGHT 给了就顺带断言计算样式)、设置页里能找到并渲染出 .dfp-card(哪条线的座位都行)、以及从卡片上改一个值真的写进去。换宿主线(rc ↔ alpha)后先跑它;调试「alpha 上卡片写不进去」这类问题时设 DFP_PROBE=1,插件会往控制台打一行 [dfp-probe](服务了哪些命名空间、认领了哪个、座位当前是什么状态)test/weight-verify.mjs 在真实页面里量三条字重轴(界面 / 对话 / 代码)的独立性与「样式表只有一份、不刷新关掉跟随立即回落」,并逐级断言会话字重的阶梯(+180 与 −100 两个方向下 h2 > strong > 正文,且每组都等于自身基准 + 偏移);test/split-verify.mjs 量对话/代码两条字号轴的独立性、外加退役的界面字号轴什么都不动,并用一条 h1~h4 探针断言每个标题级别只吃一次偏移(±3 各验一遍,h1 > h2 > h3 ≥ h4);test/slider-walk.mjs 与 test/split-walk.mjs 驱动真实卡片(拖动不写、松手才写;简单模式两格与整条栈的往返);另有市场条目的维护脚本 test/market-pr.mjs(status / update / refresh / reopen / open / about)与诊断脚本 test/market-inspect.mjs(PR 状态、评论、CI 与分支差异)docs/ —— 0.2.0 的背景调研与功能规格(设计阶段的记录,含当时的取舍理由;与最终实现不同的地方以 README/CHANGELOG 为准,两份文件文首都有说明)。不在 npm files 清单内,不随包发布react、react/jsx-runtime、react-dom、@deepseek-ai/cordis、@deepseek-ai/dsh-client-* 等);dsh.client.inject 只是加载顺序声明,不是 require 许可node build.mjs(或 npm run watch)把 src/ 生成到 lib/,浏览器加载的是 lib/,只改 src/client.js 不构建的话页面看到的还是旧包;npm test 只检查功能,node test/artifacts.mjs(在 npm run verify 里)专门校验 lib/ 与当前 src/ 逐字节一致。改宿主半(src/index.mjs)或 cordis.patch.yml 需重启 DSHMIT © 2026 LyaxZ
FAQs
Font plugin for the DeepSeek Harness Web GUI: the conversation gets its own font, size, line height and weight, the interface font and weight follow it, code keeps its own axis with ligature control, and whole setups save as presets.
We found that dsh-fonttune demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
vlt 1.5.0 links skills from JavaScript dependencies to coding agents, with lockfile versioning and Socket data to filter out known malicious packages.

Security News
Rust 1.100 will add opt-in dependency cooldowns to Cargo, giving security scanners and maintainers time to catch malicious crate releases.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.