Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ These repository benchmarks bundle representative browser entry points from pinn
| commonmark.js | 48.1 KB | 39.8 KB |
| markdown-it | 52.7 KB | 44.0 KB |

The comparison does not represent equivalent feature sets. It shows the cost of each measured path for this repository’s rendering benchmark. See the generated [size report](../reports/sizes.md) for exact bytes and versions.
The comparison does not represent equivalent feature sets. It shows the cost of each measured path for this repository’s rendering benchmark. See the generated [size report](https://github.com/TanStack/markdown/blob/main/reports/sizes.md) for exact bytes and versions.

## Compatibility accounting

The generated [compatibility report](../reports/conformance.md) tracks matches against all 652 CommonMark 0.31.2 examples after serializer normalization. Every established match is protected individually by the regression suite. The count is accounting, not a conformance claim or a target to maximize. Selected official GFM examples separately cover tables, task lists, and strikethrough.
The generated [compatibility report](https://github.com/TanStack/markdown/blob/main/reports/conformance.md) tracks matches against all 652 CommonMark 0.31.2 examples after serializer normalization. Every established match is protected individually by the regression suite. The count is accounting, not a conformance claim or a target to maximize. Selected official GFM examples separately cover tables, task lists, and strikethrough.

Use [commonmark.js](https://github.com/commonmark/commonmark.js), micromark, or a unified pipeline when exact specification behavior is a requirement. Use TanStack Markdown when your corpus fits the [documented profile](core-concepts/syntax-profile) and the smaller, controlled renderer is the better product tradeoff.

Expand Down
2 changes: 1 addition & 1 deletion docs/core-concepts/parsing.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ The second callback argument is the zero-based normalized parser line index. It

## Definitions and footnotes

Link definitions are collected before block parsing and resolved case-insensitively. Footnotes are emitted in first-reference order, with collision-safe IDs and back-reference counts.
Link definitions are collected before block parsing. Reference labels are matched case-insensitively with whitespace collapsed, and the first definition wins when labels repeat. Footnotes are emitted in first-reference order, with collision-safe IDs and back-reference counts.

The `references`, `footnotes`, `footnoteOrder`, and `footnoteCounts` fields in `ParseOptions` carry parser state through nested parsing. Most consumers should leave them unset.

Expand Down
2 changes: 1 addition & 1 deletion docs/core-concepts/rendering.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Renderer-specific boundaries are excluded from this guarantee:

## Lists

Tight lists render paragraph content directly under `<li>`. Loose lists preserve `<p>` wrappers. Task-list checkboxes stay inline with their labels in either form.
Tight lists render paragraph content directly under `<li>`. Loose lists preserve `<p>` wrappers. Task-list checkboxes stay inline with their labels in either form. A loose nested list does not make its parent list loose, and ordered lists preserve a starting value of zero.

## Code blocks

Expand Down
8 changes: 4 additions & 4 deletions docs/core-concepts/syntax-profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ TanStack Markdown implements a documented subset aimed at repository-authored bl
| Fenced code blocks | Yes | Backtick and tilde fences, language and docs metadata |
| Blockquotes | Yes | Nested parsing with a bounded depth |
| Unordered lists | Yes | Tight, loose, nested, and task items |
| Ordered lists | Yes | `.` and `)` markers, custom starts, tight and loose items |
| Tables | Yes | Header delimiter and left/center/right alignment |
| Ordered lists | Yes | `.` and `)` markers, custom starts including zero, tight and loose items |
| Tables | Yes | Header delimiter, alignment, and escaped pipes in cells |
| Thematic breaks | Yes | Hyphen, asterisk, and underscore forms |
| Frontmatter extraction | Yes | Leading `---` block, enabled by default |
| Footnotes | Yes | Definition order follows first reference |
Expand All @@ -30,9 +30,9 @@ TanStack Markdown implements a documented subset aimed at repository-authored bl
| --- | :---: | --- |
| Emphasis and strong | Yes | Natural prose patterns; not every pathological delimiter case |
| Strikethrough | Yes | GFM `~~text~~` and legacy TanStack `~text~`; numeric approximations stay literal |
| Inline code | Yes | Backtick spans |
| Inline code | Yes | Matching backtick runs; internal spaces and tabs are preserved |
| Inline links and images | Yes | Unsafe URL protocols are removed |
| Reference links and images | Yes | Full and collapsed forms used by the maintained corpus |
| Reference links and images | Yes | Full, collapsed, and shortcut forms; normalized reference labels |
| Hard breaks | Yes | Backslash before a newline |
| Raw inline HTML | Opt-in | Requires `allowHtml: true` |
| Autolink literals | No | Write an explicit link |
Expand Down
4 changes: 2 additions & 2 deletions docs/guides/performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ The generated browser bundle report records:
| docs preset | 2.3 KB | 2.1 KB |
| callouts extension | 0.3 KB | 0.3 KB |

Framework runtimes are externalized from their adapters, and the highlighter measurement uses only a callback stub. Exact generated bytes live in the [size report](../../reports/sizes.md).
Framework runtimes are externalized from their adapters, and the highlighter measurement uses only a callback stub. Exact generated bytes live in the [size report](https://github.com/TanStack/markdown/blob/main/reports/sizes.md).

The maintained benchmark records parse, pre-parsed rendering, parse-and-render, external-highlighter, and progressive AI-response paths against pinned comparison packages. Timings vary by runtime, CPU, fixture shape, and dependency version, so the generated [benchmark report](../../reports/benchmarks.md) is the only source of current CPU results.
The maintained benchmark records parse, pre-parsed rendering, parse-and-render, external-highlighter, and progressive AI-response paths against pinned comparison packages. Timings vary by runtime, CPU, fixture shape, and dependency version, so the generated [benchmark report](https://github.com/TanStack/markdown/blob/main/reports/benchmarks.md) is the only source of current CPU results.

## Use the narrow entry point

Expand Down
6 changes: 3 additions & 3 deletions docs/guides/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ Both audits parse every Markdown file twice with the docs profile, verify determ

The external audit runs in CI and fails on parser errors, nondeterminism, or any unexplained target-profile content difference. The local TanStack audit enforces the same rule when the sibling repositories are available.

- [TanStack repository corpus](../../reports/tanstack-corpus.md)
- [External docs and blogs corpus](../../reports/external-corpus.md)
- [TanStack repository corpus](https://github.com/TanStack/markdown/blob/main/reports/tanstack-corpus.md)
- [External docs and blogs corpus](https://github.com/TanStack/markdown/blob/main/reports/external-corpus.md)

### Triage policy

Expand All @@ -56,7 +56,7 @@ A syntax rule enters the profile only when real target content needs it, the beh
pnpm run conformance
```

The command compares output against CommonMark 0.31.2 examples, preserves every established match as a regression baseline, and updates [the generated report](../../reports/conformance.md). It is not a claim of full conformance.
The command compares output against CommonMark 0.31.2 examples, preserves every established match as a regression baseline, and updates [the generated report](https://github.com/TanStack/markdown/blob/main/reports/conformance.md). It is not a claim of full conformance.

Selected official GFM examples separately cover tables, task lists, and strikethrough in the supported profile.

Expand Down
2 changes: 1 addition & 1 deletion docs/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ TanStack Markdown spends its complexity budget on that path. It deliberately doe

### Small entry points

Current minified browser bundles are 4.9 KB gzip for the parser and 6.7 KB for HTML rendering or either UI adapter with its framework runtime externalized. The generated [bundle report](../reports/sizes.md) is the source of truth.
Current minified browser bundles are 4.9 KB gzip for the parser, 6.7 KB for HTML rendering, and 6.6 KB for either UI adapter with its framework runtime externalized. The generated [bundle report](https://github.com/TanStack/markdown/blob/main/reports/sizes.md) is the source of truth.

### Parse once, render many

Expand Down
2 changes: 1 addition & 1 deletion docs/project/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ title: FAQ

## Is TanStack Markdown CommonMark compliant?

No. It continuously measures CommonMark behavior and preserves established matches, but full conformance is not the product goal. The current generated report matches 348 of 652 CommonMark 0.31.2 examples after output normalization.
No. It continuously measures CommonMark behavior and preserves established matches, but full conformance is not the product goal. The [generated compatibility report](https://github.com/TanStack/markdown/blob/main/reports/conformance.md) records 403 of 652 CommonMark 0.31.2 examples matching after output normalization in v0.0.14.

## Is it GFM compliant?

Expand Down
Loading