CLAUDE WATERMARK REMOVER · MARKDOWN TEST
Why was the rest of my Markdown preview inside the code block?
A zero width space interrupted the closing fence; removing it lets the following paragraph render outside the code block.
What changed in the preview
The fixture opens a tilde fence and places U+200B between the second and third tilde of the intended closer. The parser originally includes both that damaged line and Back to prose in the code payload. The cleaner removes one code point. In the second render the result line remains in code and Back to prose becomes a separate paragraph. Check the closing delimiter first when the preview swallows prose after a paste. Compare where the code block ends rather than relying on the apparent length of the fence on screen.
What this test covers
Only a three-tilde fence and a single interrupted closer were measured. This does not repair an absent fence or infer where pasted code should end.
Measured HTML
The first preview contains a literal U+200B, displayed below as \u200B. The HTML is shown as text.
Before cleanup
<pre><code class="language-text">result ~~\u200B~ Back to prose </code></pre>
After cleanup
<pre><code class="language-text">result </code></pre> <p>Back to prose</p>
Reproduce locally
Save reproduce.cjs and tested-app.js together. Run npm install --no-save commonmark@0.31.2, then node reproduce.cjs. Compare with the recorded input, output and HTML. The test uses the homepage callback with a minimal DOM. It does not use Claude output or test statistical watermark detection.
See the CommonMark specification and another measured Markdown case.