a653903dba
Two export bugs reported against v0.4.0: 1. A heading whose text is a keyword (`== TODO ==`) rendered as an inline `<span class="todo">` badge with an *empty* id, instead of a styled header. Root causes: `inline_text` dropped Keyword nodes (so the heading id/anchor came out empty, or `My TODO list` → `My list`), and the keyword span was emitted inside the heading. Fix: `inline_text` now includes the keyword's literal text (via new `Keyword::label()`), and heading content renders keywords as plain text (flatten_keywords) so a keyword title looks like a header. Keyword badges still render in body text as before. 2. A `]` inside a wikilink description (e.g. `[[page|Task [B-1]]]`) closed the link at the first `]]`, truncating the description and leaking a stray `]`. The close-scan is now bracket-aware (find_wikilink_close): inner `[ ]` pairs are balanced so the link closes at the correct `]]`. Added regression tests for both. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>