DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Math Copy — DSH Plugin for DeepSeek Harness
← Plugins
M

dsh-math-copy

Math Copy

Copy rendered math in the DSH Web UI as its LaTeX source instead of KaTeX's glyph text.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:YizhouLouisLu/dsh-math-copy#581c1953a0fa566e76016e1cbada527ddc4494a8
READMECompatibilityVersions

Compatibility and provenance

Math Copy is published as dsh-math-copy and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/3/2026

Versions

0.1.0stable
10/3/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/3/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in ui-customization.

Whale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editinClient Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH skill center: browse loaded skills by source (bundled / project / user / custom / runtime), enable or disable, create and delete, in a web GUI panel.Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.

README

dsh-math-copy

Copying rendered math from the DSH Web UI puts the formula's LaTeX source on the clipboard, instead of KaTeX's visual glyph text (x2 for x^2).

What it does

The Web UI renders math with KaTeX, and KaTeX keeps the original TeX source in the formula's accessibility subtree:

<span class="katex">
  <span class="katex-mathml"><math>…<annotation encoding="application/x-tex">\frac{a}{b}</annotation>…</math></span>
  <span class="katex-html" aria-hidden="true">…glyphs…</span>
</span>

The browser's own selection copy walks the visible layout (and the clipped MathML arm), so it produces glyph text. This plugin listens for copy on the document; when the selection intersects at least one formula it marks those formulas, clones the selection, swaps each formula for its TeX wrapped in math delimiters, writes text/plain (and text/html) and cancels the default action. A copy whose selection holds no math is left completely alone.

Selecting half a formula still yields the whole formula's TeX.

Configuration

Three fields, editable in the Plugins page:

fielddefaultmeaning
Inline formula delimiter"$"wrapped around inline math (empty → bare TeX)
Display formula delimiter"$$"wrapped around display math (empty → bare TeX)
Also replace the rich-text flavortruesubstitute math in the text/html flavor too; off keeps the untouched selection markup for rich paste targets

How the form is wired

  • index.js declares the fields on export const Config and marks each one .volatile(). Only volatile fields are projected into a form: the settings service serves them under this entry's profile row id, math-copy.
  • client.js subscribes to that form through ctx.configForms.get("math-copy") (the same way the shipped ui-chat reads its preferences) and folds it over its own defaults, so the copy handler always reads the current values.
  • The panel is registered into the plugins.row.config slot with the key <package name>#<row id> (dsh-math-copy#math-copy). No shipped client renders settings forms automatically, so the plugin renders its own.

Find it at 插件 (Plugins) → dsh-math-copy → the math-copy row → its configuration block. Writes go through the settings transport and are persisted into the active profile's Cordis patch, so they survive restarts.

Changing the host half (index.js) needs a DSH restart: the host module generation is cached for the process lifetime, and the profile's HMR entry runs with root: [] (no source watching). Client-only edits (client.js) reach the page on a reload.

Install

# from a session with Full access:
# plugin_manager action=install_bundle target=<this directory>

Reload the Web UI page afterwards so the new client bundle enters the boot graph.

Restarting DSH after a host-half change is required — the host module generation is cached for the process lifetime.

Status

Developed and verified against dsh core 0.2.0-rc.2 (DSH Desktop 2.0.15-beta.1). No engines.dsh range is declared yet: the plugin uses long-standing client services (slots, locale, configForms, ctx.inject), but only this version has actually been run, and a range that admits prerelease builds has to name each major.minor.patch tuple explicitly. Declare one once another version has been tested.

Development

tools/asar-extract.mjs reads Electron's app.asar (list or extract by path substring) — used to read the shipped client code that renders markdown and math:

node tools/asar-extract.mjs "/Applications/DeepSeek Harness.app/Contents/Resources/app.asar" list katex
node tools/asar-extract.mjs "/Applications/DeepSeek Harness.app/Contents/Resources/app.asar" extract dsh-client-ui-primitives /tmp/dshx

index.js resolves @deepseek-ai/schemastery through the active profile when the direct specifier misses (a directory-installed bundle is linked into the profile, so Node resolves its imports from the workspace instead). Without the schema the plugin still copies with its built-in defaults; only the form is missing. A normally installed copy (npm or GitHub, which is what dshmarket performs) resolves the direct specifier and never reaches the fallback.

submission/ holds the one-file catalog entry for awesome-dsh-plugin; see the notes inside it.