199f4d5b96
Element (feature_latex_maths) typesets <div|span data-mx-maths="TEX"> elements at display time, but the outbound HTML sanitizer allowlists tags and attributes, so data-mx-maths markup sent by the gateway never reaches Element intact - messages containing $...$ render as raw dollars. Convert $...$ (inline) and $$...$$ (display) to opaque sentinel tokens before Markdown conversion and expand them to data-mx-maths markup after sanitization. Tokens are printable text with no HTML/Markdown meaning, so neither the converter nor the sanitizer touches the TeX. Unpaired dollars (prices, literals) are untouched, and adversarial text colliding with the sentinel format passes through verbatim (index-checked expansion). (cherry picked from commit eb73aafe0e08502c54e63dbd03e99796c3b7fee3)