rendering engines

Updated · View the entry on sijie.xyz ↗

StandMeet's markdown pipeline renders rich content across chat answers, wiki/output pages, and writings (app/src/components/page/markdown.tsx): remark-gfm + remark-math + rehype-katex + a MermaidBlock code-block override + rehype-sanitize. Added in commit 51ab1c2, extended to writings in 9c36802. The code-block override has since grown into a fenced-language lookup table (BLOCK_RENDERERS, markdown.tsx:58): mermaid / tikz / standmeet-widget / standmeet-html, each lazy-loaded; callouts come from remarkCallouts.

What we're really after: symmetry

The point of every engine choice here is symmetry between authoring and display — the same engine on both ends, so content written or drawn in Obsidian renders identically in StandMeet, with no surprises on import. The design rule that falls out: write to the intersection of both engines, never to either one's full feature set.

concern Obsidian (author) StandMeet (render) engine
math MathJax KaTeX katex
diagrams built-in mermaid MermaidBlock mermaid
precise figures TikZJax plugin TikZBlock (shipped 2026-07-06, 632ef6b4b; app/src/components/page/TikZBlock.tsx) tikzjax

Symmetry is why we don't chase a "best" renderer — we chase the shared one.

Related notes