Parent: corpus
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.