Before filing
Closest existing issue
none found
Split from the same session as a second, independent display bug: when $$ / fenced math do parse, a garbled plaintext copy still appears. Filed separately.
What's broken
Chat markdown does not render TeX-style \(...\) / \[...\] or single-dollar $...$ as math. Those stay literal (and \( / \[ lose the backslash). Double-dollar and fenced math do parse; that path has a separate display bug.
Steps to reproduce
- Launch Berd 0.6.2.
- New chat. Goose, Grok 4.6 via xAI (
xai_oauth). No prior history needed; this is renderer behavior.
- Have the assistant emit (or otherwise display) these in one message:
- Compare to
$$\Omega$$, a $$ display block, and a fenced math block in the same message.
What you expected to happen
\(...\), \[...\], and $...$ render as math, the way common model output is written (Anthropic/TeX vs OpenAI-style delimiters).
What actually happened
From a screenshot of the live bubble:
\( \Omega \) rendered as ( Ω ) — backslash eaten, not math.
\[ ... \] rendered as [ Ω = \sum_{n=1}^{\infty} \frac{1}{n^2} ] — same, not math.
$ \Omega $ stayed literal $ Ω $.
$\Omega$ stayed literal $\Omega$.
$$\Omega$$, a $$ display block, and fenced math did become KaTeX (those still show a garbled duplicate; separate issue).
How often does it happen?
Every time — reliably reproducible
Berd version
0.6.2
Operating system
macOS (Apple Silicon)
Model and provider
Grok 4.6 via xAI (Goose / xai_oauth). Renderer-side; any model that emits these delimiters should hit it.
Relevant log output
Looked at ~/Library/Logs/xyz.block.berd/berd.log around the turn. Nothing about KaTeX / math / Streamdown.
Screenshots, recordings, or other context
Screenshot of this session’s live delimiter matrix (same capture as the companion issue):

Before filing
Closest existing issue
none found
Split from the same session as a second, independent display bug: when
$$/ fencedmathdo parse, a garbled plaintext copy still appears. Filed separately.What's broken
Chat markdown does not render TeX-style
\(...\)/\[...\]or single-dollar$...$as math. Those stay literal (and\(/\[lose the backslash). Double-dollar and fencedmathdo parse; that path has a separate display bug.Steps to reproduce
xai_oauth). No prior history needed; this is renderer behavior.inline TeX:
\( \Omega \)display TeX:
spaced single-dollar:
$ \Omega $tight single-dollar:
$\Omega$$$\Omega$$, a$$display block, and a fencedmathblock in the same message.What you expected to happen
\(...\),\[...\], and$...$render as math, the way common model output is written (Anthropic/TeX vs OpenAI-style delimiters).What actually happened
From a screenshot of the live bubble:
\( \Omega \)rendered as( Ω )— backslash eaten, not math.\[ ... \]rendered as[ Ω = \sum_{n=1}^{\infty} \frac{1}{n^2} ]— same, not math.$ \Omega $stayed literal$ Ω $.$\Omega$stayed literal$\Omega$.$$\Omega$$, a$$display block, and fencedmathdid become KaTeX (those still show a garbled duplicate; separate issue).How often does it happen?
Every time — reliably reproducible
Berd version
0.6.2
Operating system
macOS (Apple Silicon)
Model and provider
Grok 4.6 via xAI (Goose /
xai_oauth). Renderer-side; any model that emits these delimiters should hit it.Relevant log output
Looked at
~/Library/Logs/xyz.block.berd/berd.logaround the turn. Nothing about KaTeX / math / Streamdown.Screenshots, recordings, or other context
Screenshot of this session’s live delimiter matrix (same capture as the companion issue):