# Missing Features / Limitations
* [X] **Heading varieties** : No support for Setext headings (`===`/`---` underlines), optional closing `#`, heading IDs with duplicate handling, nor preservation of a top-level `h1` (current logic drops the first `#` heading unconditionally).
* [X] **Paragraph semantics** : Paragraph building treats every non-empty line as a `
` and inserts `
` between, breaking standard markdown rules about blank lines, lazy continuation lines, and container blocks (lists, blockquotes).
* [X] **List handling** : Regex conversion expects isolated list lines and wraps each `
` in its own ``/``, so multi-line items, nested lists, tight/loose spacing, ordered list numbering, and bullet-marker variations (`+`, `-`, `*`) are all mis-rendered. Task list logic converts any single line but cannot coexist with proper list structure.
* [ ] **Blockquotes** : Generic blockquote replacement only grabs one line after `>`, losing nested content, lazy continuations, and mixed blocks (e.g., lists inside blockquotes).
* [ ] **Emphasis rules** : Simple replacements for `*`/`**`/`~~` ignore underscores, intraword emphasis rules, nesting, escaping, or edge cases like `***bold and italic***`.
* [ ] **Inline code spans** : Handles only single-line ``code`` sequences and does not honor backtick escapes, trim rules, or multiple backtick fences.
* [ ] **Links & images** : Only processes inline destination syntax with absolute URLs. Missing relative path support, reference-style links (`[ref][]`), angle-bracket autolinks ``, image titles without URL, and no differentiation between external and internal links beyond scheme check.
* [ ] **Reference definitions** : No parsing for link/image reference definitions at block level (`[id]: URL "title"`), so references cannot resolve.
* [ ] **Footnotes & definitions** : Lacks footnote syntax (`[^1]`) and corresponding rendering.
* [ ] **Tables (GFM extensions)** : Only pipe tables supported. Missing support for inline markdown within cells, row spans, or text alignment fallback when separators are malformed.
* [ ] **Code blocks** : Indented code blocks (4 spaces) not detected; fenced blocks limited to triple backticks, no tilde fences (`~~~`), info string handling is case-sensitive, and language fallback doesn’t respect GFM spec (e.g., unrecognized language should leave raw text).
* [ ] **HTML blocks/inlines** : Raw HTML either stripped or double-escaped; there’s no logic to allow HTML blocks or disallowed raw HTML rules from GFM.
* [ ] **Escaping** : Backslash escapes for punctuation, entity references, and escaping special characters are unsupported;
escapeHtml() only runs on select segments.
* [ ] **Hard/soft line breaks** : Treats every newline as `
`, ignoring two-space hard break convention and soft break behavior.
* [ ] **Math/LaTeX** : `$$…$$` replaced with a static placeholder; inline math `$…$`, `\(` `\)` not handled.
* [ ] **Frontmatter** : YAML frontmatter stripping not present; if notes contain `---` blocks at top they flow into paragraph logic.
* [ ] **Metadata parsing** : No support for Obsidian wiki-links `[[Note]]` (only attachments) or block references (`^block-id`), tags inside frontmatter, or embedded queries.
* [ ] **Performance/robustness** : Repeated global regex replacements can introduce double-wrapping, miss overlapping patterns, and make escaping fragile. Lacking overall markdown parsing state leads to conflicts (e.g., `#hashtag` inside code blocks already removed via placeholder but inline code restoration may still break hashtags).
* [ ] **Internationalization** : slugify() strips non-word characters, removing accents rather than transliterating; may produce empty IDs for non-Latin headings.