Render block LaTeX inside Paseo assistant replies, with source viewing and copying. Experimental beta for Paseo 0.8.0.
From the plugin's README
$...$ and \(...\) remain source, not inline math layout.paseo plugin add geoqiao/paseo-stuff --ref main --path plugins/math-rendererSecurity status covers commit a93d753422ec. This command tracks main. Refresh the listing before installing if the branch changed.
From the plugin's README
Plugins run as trusted, unsandboxed code. Review the source, choose the target daemon, and enable plugins in Paseo before installing:
paseo plugin add geoqiao/paseo-stuff:plugins/math-renderer --ref math-renderer-v0.1.0-beta.1 --host <host:port>
paseo plugin ls --host <host:port>
The manifest ID is math-renderer. This directory is independently installable;
it does not import any sibling plugin or depend on root-installed packages.
If you used the earlier local prototype alias paseo-math-renderer-prototype, keep
that installation's ID for reload/disable. Do not enable a second copy alongside it.
Likewise, avoid overlapping assistant-message replacement plugins.
README
Render block LaTeX inside assistant reply bodies, with one muted English action row per formula: Show LaTeX and Copy LaTeX. No extra panel or duplicate message toolbar.
Experimental beta — 0.1.0-beta.1. Requires Paseo app and daemon 0.8.0. Inline math is not typeset. Native iOS/Android acceptance and complete native Markdown parity are not finished. Read the limitations before enabling this trusted plugin.
Synthetic React Native Web component preview, not a native mobile or live Paseo screenshot. Light preview · Compact preview
Plugins run as trusted, unsandboxed code. Review the source, choose the target daemon, and enable plugins in Paseo before installing:
paseo plugin add geoqiao/paseo-stuff:plugins/math-renderer --ref math-renderer-v0.1.0-beta.1 --host <host:port>
paseo plugin ls --host <host:port>
The manifest ID is math-renderer. This directory is independently installable;
it does not import any sibling plugin or depend on root-installed packages.
If you used the earlier local prototype alias paseo-math-renderer-prototype, keep
that installation's ID for reload/disable. Do not enable a second copy alongside it.
Likewise, avoid overlapping assistant-message replacement plugins.
$$...$$ and \[...\], with delimiters occupying their own lines
or the entire block on one line.math blocks, including one redundant outer display-delimiter pair.Example prompt for a model:
Explain the quadratic formula in English. Mix normal Markdown paragraphs, a list and
a quotation with display formulas. Put display delimiters on their own lines. Include
a Gaussian integral, a matrix in a math fence, and an aligned three-line derivation.
Include a Python code block with the string "$$not_math$$". End with a valid formula
after a deliberately invalid \badUnknownCommand{1} display formula. Do not use tools
or wrap the entire reply in a code fence.
$...$ and \(...\) remain source, not inline math layout.Formula text goes through the existing Paseo plugin RPC to MathJax on the daemon machine. MathJax produces self-contained SVG glyph paths; bundled resvg WASM rasterizes them into PNG data URIs. The client renders ordinary React Native images, text and scroll views.
No external math service, font URL, system-font scan, runtime filesystem access, shell process or extra HTTP listener is used by the renderer. This is not a promise that Paseo's trusted plugin environment is a security sandbox.
Limits include 96,000 characters / 32 formulas per source row, 4,096 characters per formula, bounded TeX commands/nesting/rows, 2,400×800 logical pixels / 4 million raster pixels, 1 MB SVG/PNG, 128 cache entries / 8 MB of image URIs, and at most 16 pending renders. These are not a hard CPU timeout or a strict memory sandbox. Use trusted inputs; adversarial/high-concurrency load remains a beta risk.
Cleanup unregisters contributions, clears the cache and releases MathJax resources. The host terminates the plugin subprocess to reclaim its WASM memory. MathJax 3 is deliberately pinned for self-contained, synchronous glyph output; migration to MathJax 4 is a separate maintenance task.
From this directory:
npm ci --ignore-scripts --legacy-peer-deps --no-audit --no-fund
npm run prepare:wasm
npm run check
prepare:wasm embeds the unmodified npm resvg WASM artifact into ignored
server/generated/wasm.ts. The manifest runs these build steps during installation.
Do not commit that generated file, dependencies or compiled bundles.
Typecheck before reloading the exact installed ID on the intended host. Do not restart the daemon or auto-enable a disabled installation.
See verification details and the repository's CI results.
Plugin-authored code is MIT. Third-party code, glyphs, WASM and pinned host fixtures
retain their licenses. See THIRD_PARTY.md, third-party/, and the fixture LICENSE.
Scanned 12 Sep 2026, 20:35 UTC from geoqiao/paseo-stuff/plugins/math-renderer.