A high-performance Markdown linter, written in Rust.
ensure consistency and best practices in your Markdown files.
2026-04-13 18:08:25 by pin | Files touched by this commit (3) |  |
Log message:
textproc/rumdl: update to 0.1.71
v0.1.71
Added
config: support bare rule name in rumdl config get (8369fb1)
Fixed
config: move test module to end of flavor.rs to satisfy clippy \
items_after_test_module (e30714d)
config: load user config alongside discovered markdownlint project config \
(c0f79c1)
config: display global.flavor as lowercase quoted string in rumdl config \
output (b162295)
v0.1.70
Fixed
MD044: do not flag proper names inside bare-domain link text (56a45df)
v0.1.69
Fixed
MD055,MD056: emit per-row fixes to preserve inline-disabled rows (099443f)
MD073: make should_skip case-insensitive to match detect_toc_region (3d5ad7b)
MD050: use skip-context-aware detection for consistent mode target style \
(a82362d)
MD044: use byte-based Fix range to handle multi-byte content on line (e85e032)
apply_warning_fixes returns content unchanged when no fixes present (a892a90)
md013: reflow overlong single-line normalize content (cfa6954)
MD055: preserve trailing newline in check() Fix replacement for \
end-of-document tables (7cebfcb)
|
2026-04-09 19:20:14 by pin | Files touched by this commit (3) |  |
Log message:
textproc/rumdl: update to 0.1.68
This is an update over 26 releases.
Check upstream changelog, https://github.com/rvben/rumdl/blob/main/CHANGELOG.md
|
| 2026-03-12 18:19:30 by pin | Files touched by this commit (1) |
Log message:
textproc/rumdl: correct first version that requires 1.94
|
| 2026-03-10 20:37:51 by pin | Files touched by this commit (1) |
Log message:
textproc/rumdl: Add note on MSRV
|
2026-03-06 09:17:28 by pin | Files touched by this commit (2) |  |
Log message:
textproc/rumdl: update to 0.1.42
## [0.1.42] - 2026-03-05
### Fixed
- **MD013**: Disable code block line length checking for Rust doc comments.
Code blocks in doc comments contain Rust code formatted by rustfmt
(default `max_width = 100`), not prose governed by markdown line limits.
Prose lines are still checked
([#486](https://github.com/rvben/rumdl/issues/486), reported by @sorairolake)
## [0.1.41] - 2026-03-05
### Fixed
- **MD013**: Skip PyMdown block content during reflow, preventing false
semantic-line-breaks diagnostics on `/// details` blocks and their content
([#495](https://github.com/rvben/rumdl/issues/495), reported by @tahv)
- **MD013**: Flavor-gate attribute list detection in reflow engine so that
`{#id .class}` syntax is only treated as atomic in MkDocs/Kramdown flavors,
preventing incorrect wrapping behavior in standard markdown
([#494](https://github.com/rvben/rumdl/issues/494), reported by @sisp)
- **MD013**: Treat MkDocs attribute lists as atomic units during text reflow
so they are never split across lines
- **MD013**: Check inline config directives across the full line range of a
warning, fixing cases where `<!-- rumdl-disable -->` inside indented list
items was ignored
([#493](https://github.com/rvben/rumdl/issues/493), reported by @sisp)
- **MD054**: Remove `BrokenLinkCallback` to fix false positives on bracket
text like `[0]`, `[i]`, and `[key]` that are not actual markdown links
([#488](https://github.com/rvben/rumdl/issues/488), reported by @eread)
- **MD050**: Replace regex with pulldown-cmark parser to fix false positives
on sequences of underscores or asterisks that are not emphasis markers
([#489](https://github.com/rvben/rumdl/issues/489), reported by @eread)
- **LSP**: Fix zero-length fix ranges in MD050 LSP code actions and clean up
dead code
([#490](https://github.com/rvben/rumdl/issues/490), reported by @eread)
- **MD044**: Use proper byte range for LSP fix to replace flagged text instead
of prepending to it
([#490](https://github.com/rvben/rumdl/issues/490), reported by @eread)
- **MD054**: Replace regex with pulldown-cmark to fix false positive on
brackets in code spans
- **MD054**: Fix `should_skip` for autolink-only documents and nested link text
- **MD007**: Skip GFM table rows during Setext heading detection to prevent
false negatives
- **MD007**: Adjust expected indent for MkDocs ordered list continuation lines
## [0.1.40] - 2026-03-04
### Fixed
- **MkDocs**: Support multi-line code spans inside MkDocs containers
(admonitions, content tabs, markdown HTML) — pulldown-cmark missed these
because it treats 4-space-indented container content as indented code blocks.
Replaced the per-line backtick scanner with a dedent-and-reparse approach
that handles all CommonMark edge cases including nested containers
([#487](https://github.com/rvben/rumdl/issues/487), reported by @stefanvanburen)
- **MD034**: Fix code span filter to use byte offsets instead of single-line
column checks, preventing false positives for URLs and emails inside
multi-line code spans
- **MD052**: Fix code span filter to use byte offsets, preventing false
positives for reference links inside multi-line code spans
## [0.1.39] - 2026-03-04
### Fixed
- **Rustdoc**: Skip MD033, MD040, MD051, and MD054 for doc comment blocks to
eliminate false positives — HTML warning blocks (`<div \
class="warning">`),
unlabeled code blocks (default to Rust), rustdoc anchors (`#method.bar`),
and shortcut intra-doc links (`[crate::module]`) are all valid rustdoc syntax
([#438](https://github.com/rvben/rumdl/issues/438), reported by @sorairolake)
- **Config**: Fix `include` patterns in `.rumdl.toml` not discovering `.rs`
files — config-based include now correctly expands the file type filter to
include Rust files alongside markdown
([#438](https://github.com/rvben/rumdl/issues/438), reported by @sorairolake)
|
2026-03-04 15:55:53 by pin | Files touched by this commit (3) |  |
Log message:
textproc/rumdl: update to 0.1.38
## [0.1.38] - 2026-03-04
### Fixed
- **MD013**: Fixed reflow corrupting code blocks inside MkDocs admonitions
within list items — closing fences were merged with subsequent paragraph
text ([#485](https://github.com/rvben/rumdl/issues/485), reported by @sisp)
## [0.1.37] - 2026-03-04
### Fixed
- **MD013**: Resolve false positive for MkDocs 2-space list continuation
indents when using `semantic-line-breaks` reflow mode. Continuation lines
at the minimum indent were incorrectly flagged as needing reflow
([#484](https://github.com/rvben/rumdl/issues/484))
- **MD013**: Detect actual indent of text content for reflow output instead
of trimming and re-indenting, which produced incorrect indentation for
code blocks and nested structures
- **MD013**: Use correct indent threshold for code block detection, fixing
cases where indented code blocks inside list items were incorrectly
treated as text for reflow
- **MD028**: Make blank-line scanning functions skip-context-aware (HTML
comments, frontmatter, code blocks) to prevent false positives on
blockquote separators
- **MD050**: Resolve check/fix divergence for strong emphasis markers inside
inline code in table cells
- **MD050**: Add line-level code span detection fallback for inline code
markers in tables
- **MD051**: Handle escaped backticks correctly in `mask_pipes_in_inline_code`
for table cell parsing
- **MD051**: Preserve underscores in code spans during GitHub anchor
generation
- **MD054**: Skip alert/callout syntax (e.g., `[!NOTE]`) in shortcut link
detection to avoid false positives
- **MD056**: Remove duplicate `split_row_into_cells` function, consolidate
table cell parsing
- **Rules**: Correct CommonMark compliance and close audit gaps across
multiple rules
### Changed
- **Dependencies**: Update all dependencies including major bumps:
`toml` 0.9 → 1.0, `toml_edit` 0.24 → 0.25, `jsonschema` 0.37 → 0.44.
Remove unused `rand` dev-dependency. ~80 crates updated to latest
compatible versions
- **CI**: Update ryl-pre-commit to v0.4.0
## [0.1.36] - 2026-03-02
### Added
- **Lint**: Rust doc comment linting — `rumdl check` and `rumdl check --fix`
now lint markdown inside `///` and `//!` doc comments in `.rs` files.
Rules that don't apply to doc comments (MD041, MD047) are automatically
skipped. Column numbers are remapped to the original source positions
([#438](https://github.com/rvben/rumdl/issues/438))
### Fixed
- **WASM**: Enable opt-in rules (like MD060) via per-rule `enabled = true`
and `extend-enable` in WASM/Obsidian plugin configuration
([obsidian-rumdl#15](https://github.com/rvben/obsidian-rumdl/issues/15))
- **WASM**: Add `fixable`/`unfixable` config fields so fix scope restrictions
work in WASM builds
- **WASM**: Set `enable_is_explicit` when `enable` is present, matching CLI
behavior where `enable = []` means "no rules"
- **WASM**: Use canonical `MarkdownFlavor::from_str()` for flavor parsing so
all aliases (`qmd`, `rmd`, `gfm`, `commonmark`, etc.) work in WASM
## [0.1.35] - 2026-03-02
### Added
- **LSP**: Hover preview for markdown links — hovering over a link shows a
preview of the destination file or heading section with up to 15 lines of
content ([#477](https://github.com/rvben/rumdl/issues/477))
### Fixed
- **MD077**: Flag and fix all continuation lines in multiline loose list
paragraphs, not just the first line after the blank
([#474](https://github.com/rvben/rumdl/issues/474))
(thanks @jlgrimes in [#475](https://github.com/rvben/rumdl/pull/475))
- **LSP**: Return incoming cross-file references when find-references is
invoked from a target file with cursor not on a heading or link
([#476](https://github.com/rvben/rumdl/issues/476))
(thanks @jlgrimes in [#478](https://github.com/rvben/rumdl/pull/478))
- **CI**: Only dispatch downstream notifications when publish steps succeed
## [0.1.34] - 2026-03-01
### Added
- **Config**: Support top-level global keys in `rumdl.toml` without requiring a
`[global]` section header, matching \
[ruff.toml](https://docs.astral.sh/ruff/settings/)
conventions. Keys like `line-length`, `disable`, `exclude`, and `respect-gitignore`
now work at the top level. If both top-level and `[global]` keys exist, `[global]`
takes precedence
### Fixed
- **Config**: Resolve rule name aliases in `fixable` config lists (was only resolving
aliases for `unfixable`). Users can now write `fixable = \
["trailing-spaces"]`
instead of needing `fixable = ["MD009"]`
- **CLI**: Correct include/exclude precedence to match industry standard — \
`exclude`
always wins over `include` in discovery mode, consistent with ruff, eslint, and
markdownlint-cli
|
2026-03-01 10:33:54 by pin | Files touched by this commit (2) |  |
Log message:
textproc/rumdl: update to 0.1.33
[0.1.33] - 2026-02-28
Added
CLI: Add --fixable and --unfixable flags to control which rules are allowed \
to auto-fix. --fixable acts as an allowlist (only listed rules can fix), \
--unfixable acts as a blocklist (takes precedence). Both accept comma-separated \
rule names or aliases (#472)
Fixed
CLI: Resolve rule name aliases in fixable/unfixable config lists so that \
aliases like commands-show-output correctly match canonical names like MD014
Rules: Detect links and images inside MkDocs admonitions, content tabs, and \
markdown HTML blocks
Docs: Fix incorrect MD014 documentation that claimed the rule cannot be \
auto-fixed — it removes $ prompts from commands without output, matching \
markdownlint-cli behavior (#473)
Changed
Docs: Add feature comparison matrix and cold start benchmarks for all 8 \
comparison tools
[0.1.32] - 2026-02-27
Fixed
MD013: Respect MkDocs 4-space list continuation indent during reflow. For \
markers shorter than 4 characters (e.g., 1., -), continuation lines are now \
indented to 4 spaces in MkDocs flavor, matching Python-Markdown requirements. \
This fixes an MD077/MD013 conflict loop where reflow produced invalid MkDocs \
markdown (#471)
LSP: Apply per-file-ignores configuration during LSP linting
CI: Move mise tool install into retry loops for reliability
Changed
MD046: Expanded documentation with examples and details for unclosed code \
block detection (thanks @eread in #470)
[0.1.31] - 2026-02-27
Fixed
MD013: Handle MkDocs admonitions inside list items during reflow. Admonition \
headers and body content are now preserved and reflowed correctly instead of \
being treated as plain paragraph text. Body indent is derived from actual \
content lines rather than hardcoded, supporting nested admonitions (#469)
[0.1.30] - 2026-02-26
Added
CLI: rumdl init now supports --preset flag with default, google, and relaxed \
variants, and --output flag for custom file paths. The Google preset follows \
Google's developer documentation style guide; the relaxed preset disables noisy \
rules and uses consistent style detection (#468)
Fixed
MD076: Blank lines required by MD031 (blanks-around-fences) or MD058 \
(blanks-around-tables) inside list items are now classified as structural and \
excluded from the loose/tight consistency calculation. Previously, indented code \
blocks inside loose lists triggered false "Missing blank line between list \
items" warnings (#461)
MD020: Fix byte-offset vs character-position handling for column reporting \
with Unicode content
MD038: Fix panic on CJK text by converting character positions to byte \
offsets before slicing
MD054: Correct column indexing for code span detection and match range \
calculation
MD057: Fix image URL byte offset calculation that used character-based \
offset as byte offset
MD060: Use Unicode width for table alignment detection so CJK-heavy tables \
are recognized correctly
MD063: Use sentinel value for unfound word positions to prevent false \
canonical form matches at byte offset 0
MD010: Restore distinction between fenced code blocks (skip) and indented \
code blocks (flag tabs) that was lost when switching to LintContext
MD035: Skip HR-style checking inside MkDocs HTML markdown blocks where --- \
separators are used for grid cards
MD052: Replace manual fenced-code-block tracking with LintContext's \
pre-computed in_code_block field
MD009: Remove dead branch in fix replacement that could never execute
MD011: Rewrite fix mode to reuse check results instead of maintaining a \
parallel implementation
MD025: Use whole-word matching for section indicators to prevent false \
positives (e.g., "Indexing" matching the "index" indicator)
MD029: Include ) in quick-check early return so parenthesis-style ordered \
lists are not silently skipped
MD040: Use 1-indexed line/column for config error warnings instead of \
invalid (0,0)
MD041: Compute actual fix replacements in check mode instead of emitting \
empty-string placeholders that would delete content if applied
MD050: Delegate HTML tag boundary check to shared method so check and fix \
use identical logic
MD064: Fix leading_spaces calculation in reference link detection to use \
original line, not already-trimmed string
MD072: Track in_string state when counting JSON braces/brackets so braces \
inside string values don't break nesting depth calculation
MD073: Replace regex-based code span stripping with correct parser handling \
multi-backtick spans and CommonMark space-stripping rules; rewrite TOC \
validation to use count-based duplicate anchor comparison
MD074: Add content-hash cache invalidation so changed mkdocs.yml files are \
re-validated
Config: Preserve Option fields in schema so nullable keys are not flagged as \
unknown (#467)
[0.1.29] - 2026-02-25
Added
MD077: New list-continuation-indent rule that checks list item continuation \
lines use the correct indentation (content-aligned rather than tab-stop-aligned)
LSP: Go-to-definition and find-references for markdown links, enabling \
navigation between link references and their definitions
LSP: Surface code-block-tools diagnostics in server mode so \
language-specific linting errors appear in the editor
MD044: Honor backtick-delimited code in HTML comments when checking proper names
Fixed
MD013: Exempt link reference definitions and standalone link/image lines \
from reflow line-length checks inside list items. Previously, these exempt lines \
were joined with other content, producing incorrect combined lengths (e.g., 160 \
instead of the actual line length) (#466)
MD013: Normalize reflow mode now checks each paragraph independently instead \
of joining all content across paragraph boundaries. Exempt paragraphs (link ref \
defs, standalone links) are preserved verbatim during reflow output
LSP: Close 4 navigation gaps in go-to-definition and find-references
LSP: Count fixable warnings document-wide for source.fixAll and clear config \
cache on change
LSP: Create source.fixAll action for single-issue files
LSP: Skip external code-block-tools on keystroke events to reduce latency
LSP: Detect stale global-fallback entries in config cache so newly created \
.rumdl.toml files are picked up without restarting the language server
Docs: Fix multi-paragraph list item indentation (thanks @sisp in #465)
Changed
LSP: source.fixAll code action now respects MD007 indent configuration
|
2026-02-25 12:44:13 by pin | Files touched by this commit (3) |  |
Log message:
textproc/rumdl: update to 0.1.28
[0.1.28] - 2026-02-24
Added
Import: rumdl import now preserves original rule aliases (e.g., no-hard-tabs \
instead of MD010) in the generated config file (#460)
Code Block Tools: Per-language configs now support an enabled field to \
disable linting/formatting for specific languages while keeping the \
configuration (#458)
Fixed
MD044: Vale (<!-- vale ... -->) and remark-lint (<!-- lint ... \
-->) inline configuration directives are now skipped when checking proper \
names (#456)
[0.1.27] - 2026-02-24
Fixed
MD013: CRLF line endings are now preserved during semantic-line-breaks \
reflow, fixing false positive warnings in the LSP when editors send \
Windows-style line endings (#459)
MD041: Fix mode now correctly passes the file path to LintContext, enabling \
filename-derived title insertion (InsertDerived). Index and README files now \
derive their title from the parent directory name instead of "Index" \
or "README"
MD044: YAML frontmatter values are now checked as prose while keys, \
delimiters, comments, and flow constructs are skipped. TOML frontmatter keys are \
also correctly skipped (#448)
MD044: Angle-bracket autolinks (<https://...>) inside HTML comments \
are no longer flagged for proper name violations. Uses CommonMark autolink \
pattern matching for all valid URI schemes (#457)
MD076: Blank lines required by MD031 (blanks-around-fences) and MD058 \
(blanks-around-tables) inside list items are now recognized as structural rather \
than inter-item separators, preventing false positives in tight lists with code \
blocks, tables, or HTML blocks (#455)
Changed
Removed unused itertools dependency
[0.1.26] - 2026-02-23
Added
MD076: New rule for list item spacing — enforces consistent use of blank \
lines between list items
LSP: Markdown link target completion — autocomplete file paths and \
headings when typing link destinations (#434)
MD041: Extended fix support for HTML block preamble, plain text titles, and \
directive-only documents (#398)
Fixed
MD001: Empty ATX headings (e.g., # with no text) are now preserved during \
heading level conversion instead of being deleted, fixing non-idempotent fix \
behavior
MD012: Excess blank lines around headings are now flagged using MD022's \
configured limits, preventing conflicts between the two rules (#429, #449)
MD013: Lines whose only content is a link or image (including in list items, \
blockquotes, and with emphasis wrappers) are now exempt from line length checks \
in non-strict mode, since they cannot be shortened (#452)
MD013: URLs with balanced parentheses (e.g., Wikipedia links like \
Rust_(programming_language)) are now correctly recognized as standalone links
MD013: Ordered list task checkboxes (1. [x] [link](url)) are now correctly \
detected in standalone link exemption and text reflow
MD025: Frontmatter title field is now counted as the first H1 when checking \
for single title (#450)
MD044: HTML comments are now checked for proper names by default (previously \
skipped due to config default mismatch) (#446)
MD044: Inline config directives (<!-- rumdl-disable -->, <!-- \
markdownlint-enable -->) are no longer flagged when the directive keyword \
matches a configured proper name
MD044: YAML frontmatter keys are no longer flagged as improperly capitalized \
proper names (#448)
MD052: Added missing default_config_section for config validation (#451)
MD063: Precomposed Unicode characters (e.g., Greek ῷ) are no longer \
decomposed during case conversion, fixing non-idempotent fix behavior
Changed
MD063: Removed dependency on external titlecase crate; title case logic is \
now fully handled by the built-in implementation
MD013: Refactored standalone link detection to reuse shared \
extract_list_marker_and_content utility, also fixing ordered list task checkbox \
handling in text reflow
|