CLAUDE WATERMARK REMOVER · MARKDOWN TEST
Why did a second paragraph fall outside a Markdown list item?
Check the leading spaces on the second paragraph. Removing a hidden character between two spaces restored the indentation needed to keep our paragraph in the list item.
What changed in the preview
The fixture uses a dash and one space before the first paragraph, then a blank line. Before cleanup, only one uninterrupted space preceded the next paragraph; the parser closed the list before emitting it. After cleanup, two spaces preceded it and the parser placed both paragraphs inside a single `li` element.
What this test covers
Two spaces are sufficient for this exact bullet prefix. Other markers and indentation can require a different width. In a preview, inspect which list item contains the second paragraph, since the gap between paragraphs can look similar even when the document structure differs.
Measured source and preview
Original Markdown
- First paragraph. \u200B Second paragraph.
Cleaned Markdown
- First paragraph. Second paragraph.
The original source and its preview contain a literal U+200B, displayed below as \u200B. The HTML is shown as text.
Before cleanup
<ul> <li>First paragraph.</li> </ul> <p>\u200B Second paragraph.</p>
After cleanup
<ul> <li> <p>First paragraph.</p> <p>Second paragraph.</p> </li> </ul>
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.