All plugins

DSH / BUNDLE / CLIENT-UI

@citisen/dsh-font

v0.2.0citisen / dsh-font59cddfab79

InstallableBundlesUI & client pluginsCommunity · Topic auto-analysisWeb UI

Overview

@citisen/dsh-font

DeepSeek Harness plugin: customize the Web GUI fonts (interface family, code family, and three font-size axes) from Settings

README / EN

Package documentation

Registry summary

DeepSeek Harness plugin: customize the Web GUI fonts (interface family, code family, and three font-size axes) from Settings

dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.

Read the full README on GitHub

LIMITATIONS

Known limitations

- **Hard-coded sizes only.** The interface scale only moves text that a shipped stylesheet fixes in px. It deliberately leaves display-size text and decorative glyph sizes alone, so a scale of 150% is not a uniform 1.5× of the whole UI. - **The conversation size overrides `ui-theme`'s font-size row.** Both write `--dsh-content-font-size`; last write wins, and this plugin always writes on a settings change. Use one or the other. - **Fonts are not installed.** A family name is only used if the browser or OS can resolve it; the plugin does not bundle or download webfonts, so a typo falls back silently to the generic family at the end of the list. - **Per-element stamping is proportional to the DOM.** The scale pass measures each element once and caches the result, and re-stamps on mutation, so it is bounded — but it is not free on a very large transcript. - **The code weight is not a per-surface choice.** It applies to every code surface at once, and where it lands on `pre`, `code`, and any element with `code` in its class name — so a `font-weight` a component sets inside a code block (syntax highlighting, a bold diff line) is overridden too. The interface weight is the mirror image: only text that *inherits* its weight moves, and a label or button whose weight the design system fixes keeps it. A weight the family lacks is still synthesized by the browser; the closed list and the "no such face on this machine" warning only keep it out of reach. - **The query language is a convention, not CSS.** It lives only in this row's two font fields; what is stored is still a valid CSS `font-family` list plus a numeric `font-weight`, so disabling the plugin leaves nothing behind. Whether a trailing word is a weight or part of the name is decided by the loaded catalogue, so a family whose real name ends in a weight word (`Book Antiqua`, `Franklin Gothic Medium`) is left intact only when that exact name was discovered — both are curated, so this normally holds, but a name outside the probe list can be split when the Local Font Access prompt is declined. Quoting settles it: `"Book Antiqua"` is always the name. - **The heading shift is one formula, not a redesign.** Each step becomes `shipped + (interface weight - 400)`, clamped at 900 — so an interface weight of 900 flattens the ladder against that ceiling. - **The box is not a copy of the setting.** What is stored is the plugin's serialization of the query (quoted, weight word after the first family); what the box shows is your text, kept verbatim for as long as the row lives. A reload rebuilds the box from the two stored values, so a weight word you deleted can reappear there, and it may be spelled differently from what you typed. - **The settings row is English/Chinese only**, matching the shipped locale pair.