Latest Results
⨠feat(markdown): render Obsidian syntax as HTML and harden the native parser
Obsidian syntax in HTML output
- Render wikilinks as `<a class="internal-link">`, embeds as img, audio,
video, embed or a link by extension, and callouts as `div.callout` or
`details.callout` with the classes Obsidian uses.
Robustness and performance
- Cap inline nesting at 128 levels and report deeper MDX elements as an
error, so deeply nested input no longer overflows the stack.
- Match emphasis in linear time with a delimiter stack and a linked list,
stop scanning for `]]` at the first bracket or line ending, and cap
reference labels at 999 characters.
- Stop opening containers on a line at the depth limit and decide thematic
breaks in constant time from per-line precomputed offsets. Lines of
repeated list markers no longer take minutes.
Fixes
- Keep a dashed rule apart from the paragraph text above it, so it is not
read back as a setext heading.
- Update the known GFM round trip failures: 16 of them now pass.
Types
- Add `ListMarker` and `HorizontalRuleMarker` in place of `char` markers.
Their JSON form is unchanged. `ListMarker::Continuation` replaces the
NUL sentinel used to render the rest of an item after nested items.
Tests cover the limits, the Obsidian HTML, the markers and the rules.feat/native-markdown-parser Latest Branches
0%
fix/mq-check-false-positives -10%
feat/native-markdown-parser 0%
fix/interpolation-error-location Ā© 2026 CodSpeed Technology