head	1.30;
access;
symbols
	pkgsrc-2026Q1:1.19.0.2
	pkgsrc-2026Q1-base:1.19;
locks; strict;
comment	@# @;


1.30
date	2026.05.08.08.09.09;	author pin;	state Exp;
branches;
next	1.29;
commitid	cM7A3dxPJHUU9ZEG;

1.29
date	2026.05.05.10.12.40;	author pin;	state Exp;
branches;
next	1.28;
commitid	1kOFaRUeCtUfWBEG;

1.28
date	2026.05.03.15.55.54;	author wiz;	state Exp;
branches;
next	1.27;
commitid	4919HV3CQHFRTnEG;

1.27
date	2026.04.30.11.52.32;	author pin;	state Exp;
branches;
next	1.26;
commitid	wJvPhH38WjbuEYDG;

1.26
date	2026.04.27.07.59.26;	author pin;	state Exp;
branches;
next	1.25;
commitid	aS23aSGN54jvszDG;

1.25
date	2026.04.26.12.18.38;	author wiz;	state Exp;
branches;
next	1.24;
commitid	sDSAUtPGXBvqVsDG;

1.24
date	2026.04.25.19.07.00;	author pin;	state Exp;
branches;
next	1.23;
commitid	1h6bjQaSljGvdnDG;

1.23
date	2026.04.23.13.15.24;	author pin;	state Exp;
branches;
next	1.22;
commitid	Oh5IxWxqhMRRk5DG;

1.22
date	2026.04.16.11.35.02;	author pin;	state Exp;
branches;
next	1.21;
commitid	UA0gYra98FPn0bCG;

1.21
date	2026.04.13.16.08.25;	author pin;	state Exp;
branches;
next	1.20;
commitid	P0gue88jKQR9COBG;

1.20
date	2026.04.09.17.20.14;	author pin;	state Exp;
branches;
next	1.19;
commitid	fl5vwpe0tYCL8jBG;

1.19
date	2026.03.12.17.19.30;	author pin;	state Exp;
branches;
next	1.18;
commitid	cLOYgIBuIIWb2IxG;

1.18
date	2026.03.10.19.37.51;	author pin;	state Exp;
branches;
next	1.17;
commitid	qJAeM1YzxMhERsxG;

1.17
date	2026.03.06.08.17.28;	author pin;	state Exp;
branches;
next	1.16;
commitid	GLgKYXxptvVjeTwG;

1.16
date	2026.03.04.14.55.53;	author pin;	state Exp;
branches;
next	1.15;
commitid	a2rGB35QXe4ZuFwG;

1.15
date	2026.03.01.09.33.54;	author pin;	state Exp;
branches;
next	1.14;
commitid	664iAEPywfjvOfwG;

1.14
date	2026.02.25.11.44.13;	author pin;	state Exp;
branches;
next	1.13;
commitid	rjHfBlMKF4obFKvG;

1.13
date	2026.02.21.15.13.38;	author pin;	state Exp;
branches;
next	1.12;
commitid	aJxPAGxKX830XfvG;

1.12
date	2026.02.19.08.19.55;	author pin;	state Exp;
branches;
next	1.11;
commitid	iypNWg4GePQ2JXuG;

1.11
date	2026.02.16.19.43.57;	author pin;	state Exp;
branches;
next	1.10;
commitid	pTB9Tt9mlatHBDuG;

1.10
date	2026.02.16.12.40.49;	author wiz;	state Exp;
branches;
next	1.9;
commitid	Q8WWeZb4HbHvgBuG;

1.9
date	2026.02.08.22.29.21;	author wiz;	state Exp;
branches;
next	1.8;
commitid	xscDfrsWAfTkMCtG;

1.8
date	2026.02.01.14.00.20;	author pin;	state Exp;
branches;
next	1.7;
commitid	smgdpv1zJ5UHbGsG;

1.7
date	2026.01.29.14.21.13;	author pin;	state Exp;
branches;
next	1.6;
commitid	kh1qXag1cs5RoisG;

1.6
date	2026.01.28.09.21.52;	author pin;	state Exp;
branches;
next	1.5;
commitid	4bXav4nyb0a9M8sG;

1.5
date	2026.01.26.10.40.58;	author pin;	state Exp;
branches;
next	1.4;
commitid	ePSkJHHqQrchhTrG;

1.4
date	2026.01.23.08.31.13;	author pin;	state Exp;
branches;
next	1.3;
commitid	HHtbMX4xdrYJEurG;

1.3
date	2026.01.21.14.48.51;	author pin;	state Exp;
branches;
next	1.2;
commitid	s4qY3U8tXvphOgrG;

1.2
date	2026.01.17.20.59.28;	author pin;	state Exp;
branches;
next	1.1;
commitid	0N1vM3cwZJ1oZMqG;

1.1
date	2026.01.15.13.26.02;	author wiz;	state Exp;
branches;
next	;
commitid	j73t5m5zQdlQxuqG;


desc
@@


1.30
log
@textproc/rumdl: update to 0.1.91

0.1.91 - 2026-05-07
Fixed

    cache: stabilize hash_config across identical config loads, eliminating spurious "configuration hash changed" cache misses caused by HashMap iteration order (#622, fixes #621) (f46be05) — thanks @@mattiasgronlund
    ci: branch off upstream master in sync-schemastore (787a7ea)

0.1.90 - 2026-05-06
Added

    cache: add structured cache miss reasons for verbose mode (#618) (5c4f418)

Fixed

    cli: allow --profile output in --silent mode (#619) (d9cde4d)

Performance

    cache: warm cache profiling path with concurrent-safe writes (#616) (5c2a00b)
    discovery: precompile exclude matchers and reuse walker file types (#617) (49a1de2)

0.1.89 - 2026-05-06
Added

    md031: enforce blank lines around Azure DevOps colon code fences (488a157)
    lint_context: wire Azure DevOps colon fence detection and extend code_blocks (a9dc0cd)
    lint_context: add colon fence detection for Azure DevOps flavor (b2a742b)
    flavor: add AzureDevOps flavor variant with colon code fence support (59592e5)

Fixed

    md046: replace index loop with iterator to satisfy clippy needless_range_loop (605c3da)
    md048: skip colon fence lines in style detection for Azure DevOps flavor (b4833fa)
    md046: skip colon fence lines in style detection for Azure DevOps flavor (386330c)
    md055: normalize style config to snake_case so kebab-case values are applied (8d4dfd2)
@
text
@# $NetBSD: Makefile,v 1.29 2026/05/05 10:12:40 pin Exp $

DISTNAME=	rumdl-0.1.91
CATEGORIES=	textproc
MASTER_SITES=	${MASTER_SITE_GITHUB:=rvben/}
GITHUB_TAG=	v${PKGVERSION_NOREV}

MAINTAINER=	pkgsrc-users@@NetBSD.org
HOMEPAGE=	https://github.com/rvben/rumdl/
COMMENT=	Markdown Linter
LICENSE=	mit

RUST_REQ=	1.94.0
USE_LANGUAGES+=	c c++
USE_TOOLS+=	gmake

.include "cargo-depends.mk"
.include "../../lang/rust/cargo.mk"
.include "../../mk/bsd.pkg.mk"
@


1.29
log
@textproc/rumdl: update to 0.1.88

Added

    md051,md052: handle Pandoc implicit header refs and divergent slugs (8805001)
    md042: document parser-level exclusion of Pandoc inline footnotes, example refs, and implicit header refs (6e4f7d8)
    md040: accept Pandoc {=format} raw blocks; keep {r}/{python} Quarto-only (f4e446f)
    md038: skip Pandoc inline code attribute syntax (db18bba)
    md037: skip Pandoc sub/superscripts and bracketed spans (80a2be6)
    md034: skip URLs inside Pandoc line blocks and metadata (24469fc)
    md029: skip Pandoc example-list markers under Pandoc-compatible flavor (2421618)
    pandoc: add is_pandoc_raw_block_lang helper (60fb48f)
    pandoc: detect multi-line tables (52c242a)
    pandoc: detect grid tables (f331d65)
    pandoc: detect multi-block YAML metadata (0869d66)
    pandoc: detect pipe-table captions (44a20aa)
    pandoc: detect line blocks (8f9590a)
    pandoc: detect bracketed spans (0023c4a)
    pandoc: detect inline code attribute syntax (0cced5f)
    pandoc: detect subscripts and superscripts (d015748)
    pandoc: detect example lists and references (ae9aeba)
    pandoc: detect implicit header references (f290047)
    pandoc: detect inline footnotes ^[note] (b021786)
    rules: re-gate Pandoc-syntax skips on is_pandoc_compatible() (b9748c2)
    lint_context: gate Pandoc pre-pass on is_pandoc_compatible() (c342c93)
    cli: accept --flavor pandoc (5c83805)
    flavor: add is_pandoc_compatible() helper (7c5964c)
    flavor: add Pandoc variant to MarkdownFlavor (af7b6d3)

Fixed

    server: resolve clap --config arg collision causing panic (deb93ef)
    md051: emit Pandoc auto_identifiers suffix slugs for duplicate headings (33c858e)
    md040: accept Pandoc {.class} code attributes as language declaration (10a5a8e)
    pandoc: exclude link labels from citation detection (186533b)
    pandoc: require citation @@ to sit at a citation boundary (f4df478)
    md038: keep checking inner whitespace on attributed code spans (1bc9bef)
    md063: keep numeric ordinals lower-cased in title case (ef3d881)
    MD009: allow br_spaces on paragraph lines in strict mode (526ec41)
    MD013: preserve wildcard asterisks during reflow (#604) (012c477)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.28 2026/05/03 15:55:54 wiz Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.88
@


1.28
log
@rumdl: update to 0.1.87.

1.87

Added

    config: fall back to ~/.rumdl.toml and ~/rumdl.toml as user config (8557089)

Fixed

    code-block-tools: use yamlfmt lint mode for YAML (#606) (0296f86)
    MD038: preserve spaces around nested backticks (#605) (a9552c6)
    MD013: keep closing quote with parenthetical splits (#601) (9a47b99)

1.86

Added

    cli: support inline TOML overrides via --config (ae5461f)

1.85

Added

    md051: add ignore-case and ignored-pattern for markdownlint parity (4535a2b)
    md013: add heading-line-length, code-block-line-length, stern (6c22f82)
    md033: add table-allowed-elements option for markdownlint parity (10bdc18)
    md027: add list-items option for opt-in markdownlint parity (2589aad)
    md060: add aligned-delimiter option for markdownlint parity (ce6eaac)

Fixed

    md051: unify ignore-case and ignored-pattern across same-doc and cross-file paths (3c295bc)
    config: initialize canonical_project_root_cache in From impl (306777d)
    md013: require GFM table evidence before classifying list-item line (a04f742)
    config: log when normalize_match_path falls back to raw absolute path (6a6ceed)
    md013: preserve tables nested inside list items during reflow (fc3f89d)
    config: fall back to cwd when normalizing per-file glob paths (360bde1)
    md054: include trailing [] in collapsed link span (caa3acc)

Performance

    config: cache canonical project_root and harden silent-fallback diagnostic (d4ea4ea)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.27 2026/04/30 11:52:32 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.87
@


1.27
log
@textproc/rumdl: update to 0.1.84

Added

    md054: atomic ref-emit fixes via Fix.additional_edits (d1b757c)

Fixed

    md054,lsp: exact EOL counting and UTF-16 LSP positions (b8488b5)
    fix_utils: preserve source order for same-offset zero-width inserts (06b786c)
    md064: skip column-aligned list blocks (0175b7c)
    md046: recognize list-internal indented code blocks (476c8d8)
    md036: default fix=true to match advertised FullyFixable capability (3faac50)
    md076: prefer tight on Consistent style ties (8ed1e30)
    lsp: canonicalize rule-name lists at Config boundaries (51932d9)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.26 2026/04/27 07:59:26 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.84
@


1.26
log
@textproc/rumdl: update to 0.1.83

Fixed

    lsp: respect --config flag in server mode (40f2a9d)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.25 2026/04/26 12:18:38 wiz Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.83
@


1.25
log
@rumdl: update to 0.1.82.

md057: fall back to project root when resolving absolute links (3df4ed0)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.24 2026/04/25 19:07:00 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.82
@


1.24
log
@textproc/rumdl: update to 0.1.81

Added

    md057: add relative_to_roots option for absolute link validation (e911919)
    md024: treat headings with different {#custom-id} anchors as distinct (0b4dadb)

Fixed

    md013: don't warn on under-limit list items in normalize mode (3e08094)
    fmt: honor
    opt-in across all flavors (4c9c8dc)
    docs: restore grid-cards formatting on landing page (5acba85)
    md005,md032: preserve nesting under tight continuation followed by sub-list (993c0f5)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.23 2026/04/23 13:15:24 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.81
@


1.23
log
@textproc/rumdl: update to 0.1.80

72## [0.1.80](https://github.com/rvben/rumdl/compare/v0.1.79...v0.1.80) - 2026-04-22

### Added

- **wasm**: validate rule-config value types at parse time ([ab3d3d5](https://github.com/rvben/rumdl/commit/ab3d3d547eb58ac093f52a5678b65d59e6602541))
- **wasm**: honor exclude patterns via path-aware check() and fix() ([e578308](https://github.com/rvben/rumdl/commit/e578308978f04e582acedf014ff75b4890ceca44))

## [0.1.79](https://github.com/rvben/rumdl/compare/v0.1.78...v0.1.79) - 2026-04-22

### Fixed

- **md051**: strip HTML comments from heading anchors ([e4e3c4b](https://github.com/rvben/rumdl/commit/e4e3c4b79126b7d8a90357edcba044ed7d473404))
- **md077**: accept task-item post-checkbox column to break MD013 reflow cycle ([1c3cbef](https://github.com/rvben/rumdl/commit/1c3cbef4cb2a5e0c9ff9c810c5012018f9ee3e18))
- **lint-context**: honor CommonMark Type-1 HTML blocks ([6f37e49](https://github.com/rvben/rumdl/commit/6f37e49cf9f54bf56c20bb88309cf7e9a052946a))

## [0.1.78](https://github.com/rvben/rumdl/compare/v0.1.77...v0.1.78) - 2026-04-21

### Fixed

- **lsp**: discover .config/rumdl.toml when walking up from a file ([9d32fa7](https://github.com/rvben/rumdl/commit/9d32fa76b8d6baac3387ce588758a3bec6a3390a))

## [0.1.77](https://github.com/rvben/rumdl/compare/v0.1.76...v0.1.77) - 2026-04-21

### Fixed

- **md046**: ignore container content when detecting code-block style ([2685388](https://github.com/rvben/rumdl/commit/2685388a223764504d6a994118605d1a2890aadd))

## [0.1.76](https://github.com/rvben/rumdl/compare/v0.1.75...v0.1.76) - 2026-04-19

### Fixed

- **cli**: error when --config path does not exist ([c328c11](https://github.com/rvben/rumdl/commit/c328c110b8ae538d040875d142d4bd130e2cb83e))

## [0.1.75](https://github.com/rvben/rumdl/compare/v0.1.74...v0.1.75) - 2026-04-19

### Added

- **cli**: add -c short alias for --config ([3aaaca4](https://github.com/rvben/rumdl/commit/3aaaca431bb649567b99c887b4d29d241b34b891))

## [0.1.74](https://github.com/rvben/rumdl/compare/v0.1.73...v0.1.74) - 2026-04-18

### Fixed

- **md077**: emit atomic compound fix for under-indented fences in lists ([455822c](https://github.com/rvben/rumdl/commit/455822c55ca947ea9065edf09e4303a596a471f7))
- **doctests**: correct rotted imports and blockquote indent assertions ([0238728](https://github.com/rvben/rumdl/commit/0238728025b2a4676b01d060b8380538972c4376))

## [0.1.73](https://github.com/rvben/rumdl/compare/v0.1.72...v0.1.73) - 2026-04-17

### Fixed

- **test**: make test_performance_md051 actually exercise MD051 ([c550ef6](https://github.com/rvben/rumdl/commit/c550ef68738a623e040e512db722fe7235a36242))
- **md013,bench**: enforce CommonMark 3-space indent on thematic breaks; hoist LintContext out of bench loop ([1aafb9a](https://github.com/rvben/rumdl/commit/1aafb9a7997a0e04a4d98963ec446847ee7cd3f8))
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.22 2026/04/16 11:35:02 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.80
@


1.22
log
@textproc/rumdl: update to 0.1.72

Added

    config: resolve rule aliases in config get command (69058cd)
    import: support JSONC comments in markdownlint config files (26ae457)
    cli: introduce FmtArgs with formatter-appropriate interface (dce2b40)

Fixed

    md034: detect code spans inside MDX JSX component bodies (d881713)
    md025: cascade level adjustment to subordinate headings when demoting duplicate title (2399dca)
    formatter: inline format args to satisfy clippy (250a194)
    commands: resolve rule aliases in explain and rule commands (5d04351)
    use verified fix counts in summaries and correct dry-run label (cd55dc1)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.21 2026/04/13 16:08:25 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.72
@


1.21
log
@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)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.20 2026/04/09 17:20:14 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.71
@


1.20
log
@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
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.19 2026/03/12 17:19:30 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.68
@


1.19
log
@textproc/rumdl: correct first version that requires 1.94
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.18 2026/03/10 19:37:51 pin Exp $
d3 1
a3 2
DISTNAME=	rumdl-0.1.42
# rumdl >= v0.1.43 requires Rust >= 1.94
d13 1
a13 1
RUST_REQ=	1.91.0
@


1.18
log
@textproc/rumdl: Add note on MSRV
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.17 2026/03/06 08:17:28 pin Exp $
d4 1
a4 1
# rumdl >= v0.1.45 requires Rust >= 1.94
@


1.17
log
@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)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.16 2026/03/04 14:55:53 pin Exp $
d4 1
@


1.16
log
@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
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.15 2026/03/01 09:33:54 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.38
@


1.15
log
@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
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.14 2026/02/25 11:44:13 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.33
@


1.14
log
@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
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.13 2026/02/21 15:13:38 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.28
@


1.13
log
@textproc/rumdl: update to 0.1.25

[0.1.25] - 2026-02-21
Fixed

    MD044: proper names inside HTML tag attribute values (e.g. src="...", href="...", title="...") are no longer flagged as incorrectly capitalized. Text content between tags continues to be checked as usual (#443)

[0.1.24] - 2026-02-20
Fixed

    MD013: GitHub Flavored Markdown alert markers (> [!NOTE], > [!WARNING], etc.) are now preserved as non-wrappable boundaries during blockquote reflow — previously the alert type was merged with the following content line, corrupting the alert block
    MD013: Reflow now wraps blockquote paragraphs (including lazy continuation lines) in fmt/check --fix, with deterministic style preservation and LSP manual reflow parity (#437)
    MD013: Italic and bold paragraphs that exceed the configured line length are now reflowed correctly; previously only plain text paragraphs were wrapped (#441)
    MD013: GFM task list checkboxes ([ ], [x], [X]) are now preserved as non-wrappable marker prefix during reflow, preventing - [ ] [long url](...) from being corrupted to - []\n  [long url](...) (#436)
    MD013: List continuation lines are now normalized to the canonical marker-length indent during reflow instead of inheriting any over-indentation from the source (#439)
    MD013: Reflow no longer introduces double blank lines when an HTML block (e.g. <details>) captures a trailing blank line — previously this caused MD012 violations in large documentation repos
    MD030: Byte offset computation for ordered list markers inside blockquotes was incorrect, causing fixes to insert spaces at the wrong position and be non-idempotent
    MD044: Names configured in names are no longer falsely flagged inside HTML attribute values when the name appears adjacent to underscores (e.g. test_image) (#443)
    MD048: Fence-length disambiguation when converting between backtick and tilde styles now correctly handles blocks where an interior same-style sequence would otherwise close the outer block early under CommonMark rules; the 0–3 space indent limit is enforced for fence markers per CommonMark §4.5
    CLI: --flavor gfm, --flavor github, --flavor commonmark, --flavor qmd, --flavor rmd, and --flavor rmarkdown are now accepted (previously rejected by the argument parser despite being valid in config files) (#440)
    stdin: Inline config directives (<!-- rumdl-disable-next-line -->, <!-- rumdl-disable --> / <!-- rumdl-enable -->, <!-- markdownlint-disable -->, etc.) are now respected when reading from stdin (rumdl check -); previously all such directives were silently ignored, causing false positives in editor integrations such as nvim-lint that pipe content via stdin (#445)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.12 2026/02/19 08:19:55 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.25
@


1.12
log
@textproc/rumdl: update to 0.1.23

Added

    MD033: Relaxed fix mode that converts HTML tags with extra attributes (e.g. target, rel, width, height) by dropping non-essential attributes during conversion. Event handler attributes (on*) are never dropped. Enable via config.
    (#397)

Fixed

    Fix mode: Rules depending on ctx.source_file (MD057, MD074) no longer silently skip validation during re-lint, preventing false "no issues found" results and exit code 0 when violations remained
    (#435)
    Fix coordinator: Non-convergence now reports the conflicting rules, observed cycle path, and concrete remediation steps (unfixable/disable/config options)
    MD012: Blank line sequences adjacent to ATX or Setext headings are now skipped, preventing conflicts with MD022's lines-above/lines-below settings
    (#429)
    MD063: Proper-name preservation now uses unicode-safe case-folding with title/sentence/all-caps handling and link text coverage
    (#431)
    Import: Generated TOML output no longer has a trailing blank line
    (#433)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.11 2026/02/16 19:43:57 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.23
@


1.11
log
@textproc/rumdl: update to 0.1.22

Added

    Config: Per-directory configuration resolution — place .rumdl.toml in
    subdirectories to override settings for specific paths
    MD075: New rule to detect orphaned table rows and headerless pipe content
    (#426)

Fixed

    MD041: Support TOML (+++) and JSON ({}) front-matter formats alongside
    YAML when checking for title field
    (#427, thanks @@Nathan-Furnal)
    MD054: Match warning message with rule configuration option
    (thanks @@eread in #421)
    Style config: All style configuration values now use kebab-case as the
    canonical format and accept snake_case, kebab-case, and uppercase variants.
    Affected rules: MD003, MD046, MD048, MD049, MD050, MD055, MD060, MD063
    (#428, thanks @@eread)
    Config: Fix root detection and cross-file rule resolution for
    per-directory configs
    MD075: Harden orphaned-table detection edge cases
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.10 2026/02/16 12:40:49 wiz Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.22
@


1.10
log
@rumdl: update to 0.1.21.

## [0.1.21] - 2026-02-14

### Added

- **CLI**: New `full` output format with ruff-style source line display showing
  offending lines with caret underlines
  ([#425](https://github.com/rvben/rumdl/issues/425))
- **GitHub Action**: Add generic `args` input for passing extra CLI flags like
  `--output-format json`
  ([#406](https://github.com/rvben/rumdl/issues/406))
- **MD060**: `loose-last-column` now caps last column width at header text width —
  body cells shorter than header are padded, longer cells extend beyond
  ([#424](https://github.com/rvben/rumdl/issues/424))

### Changed

- **CLI**: `--output-format` help text now documents all available formats with
  descriptions ([#425](https://github.com/rvben/rumdl/issues/425))

### Fixed

- **CI**: SchemaStore sync workflow now formats schema with Prettier before
  committing

## [0.1.20] - 2026-02-13

### Added

- **Config**: Add `extends` key for config file inheritance — config files can
  declare a base config to inherit from, with child settings merging on top.
  Supports relative paths, absolute paths, `~/` expansion, recursive chains
  (up to 10 levels), and circular reference detection. Works in both
  `.rumdl.toml` and `pyproject.toml` ([#390](https://github.com/rvben/rumdl/issues/390))
- **Code block tools**: Detect fenced code blocks inside MkDocs admonitions
  and tab containers ([#423](https://github.com/rvben/rumdl/issues/423))

### Fixed

- **MD013**: Detect mkdocstrings autodoc blocks regardless of flavor setting
  ([#396](https://github.com/rvben/rumdl/issues/396))
- **MD013**: Enforce strict line-length limit in semantic-line-breaks merge
  ([#414](https://github.com/rvben/rumdl/issues/414))
- **MD060**: Detect misaligned content in center/right-aligned table columns
  ([#426](https://github.com/rvben/rumdl/issues/426))

### Changed

- **Config**: `disable` now uses replace semantics (matching Ruff's `ignore`),
  giving `extend-disable` a distinct purpose as the additive variant that
  survives CLI overrides. Document the rule selection model with
  `extend-enable` / `extend-disable` in global settings

## [0.1.19] - 2026-02-13

### Added

- **Kramdown flavor**: Add kramdown/Jekyll markdown flavor support with block
  IAL (`{:.class}`, `{:#id}`), span IAL, and extension block
  (`{::comment}`, `{::nomarkdown}`, `{::options}`) detection. Enable with
  `flavor = "kramdown"` or `flavor = "jekyll"`. MD041 skips IALs and
  extension blocks as preamble; MD051 defaults to kramdown anchor style
- **Config**: Add `extend-enable` and `extend-disable` global config keys
  for additive rule activation, following Ruff's extend-select pattern.
  Five rules are now opt-in by default: MD060, MD063, MD072, MD073, MD074.
  Use `extend-enable = ["MD060"]` to enable individual opt-in rules without
  overriding the full `enable` list

### Fixed

- **MD013**: Prevent reflow from splitting autolinks (`<https://...>`) at the
  colon in URL schemes by treating them as atomic elements
  ([#416](https://github.com/rvben/rumdl/issues/416),
  [#417](https://github.com/rvben/rumdl/issues/417))
- **MD013**: Prevent reflow from splitting inside markdown link text, code
  spans, and HTML tag attributes by tracking element byte spans during
  word-wrap fallback
  ([#412](https://github.com/rvben/rumdl/issues/412),
  [#413](https://github.com/rvben/rumdl/issues/413))
- **MD013**: Thread `length-mode` (chars/visual/bytes) through all reflow
  length calculations so CJK and other wide characters are measured correctly
  ([#414](https://github.com/rvben/rumdl/issues/414))
- **MD013**: Abbreviations like `e.g.` and `i.e.` inside parentheses no longer
  trigger false sentence boundary detection in `sentence-per-line` mode
  ([#422](https://github.com/rvben/rumdl/issues/422))
- **MkDocs**: Track fenced code blocks inside admonitions to prevent false
  `in_code_block` overrides that caused reflow corruption
  ([#415](https://github.com/rvben/rumdl/issues/415))
- **MD060**: Fix table formatter idempotency bug where ATX headings containing
  pipe characters were misidentified as table rows and reformatted
- **Kramdown**: Fix self-closing extension blocks (`{::options ... /}`)
  incorrectly disabling linting for all subsequent lines
- **Kramdown**: Fix extension fence leakage causing MD022 false positives

### Changed

- **Kramdown**: Add three-layer architectural filtering for extension blocks
  (LineInfo sanitization, collection filtering, warning pipeline safety net)
  so rules automatically skip kramdown extension blocks without per-rule
  opt-in

## [0.1.18] - 2026-02-10

### Added

- **Config**: `enable = ["ALL"]` keyword to explicitly enable all rules
  (equivalent to omitting `enable`), with `disable` still applied on top
- **MD013**: In non-strict mode, suppress line-length warnings when the excess
  comes entirely from inline link/image URLs — if replacing `[text](url)` with
  `[text]` would bring the line within the limit, the warning is not raised
  ([#393](https://github.com/rvben/rumdl/issues/393))
- **MD057**: `compact-paths` config option to warn about unnecessary path
  traversal in wiki links (e.g., `../sibling` when `sibling` suffices)
  ([#391](https://github.com/rvben/rumdl/issues/391))

### Changed

- **Config**: `enable = []` now means "no rules enabled" (was incorrectly
  treated as "use defaults"). Omitting `enable` still enables all rules.
  Use `enable = ["ALL"]` to explicitly enable all rules.

### Fixed

- **MD013**: Skip mkdocstrings autodoc blocks (`::: module.Class` with indented
  YAML options) during paragraph reflow
  ([#396](https://github.com/rvben/rumdl/issues/396))
- **MD013**: Implement trailing-word replacement for non-strict mode — reflow
  now correctly handles lines where the last word pushes past the limit
- **MD044**: Skip proper name checking when link text is itself a URL (starts
  with `http://`, `https://`, or `www.`), matching markdownlint behavior
  ([#395](https://github.com/rvben/rumdl/issues/395))

## [0.1.17] - 2026-02-09

### Fixed

- **Config**: `enable = []` is now correctly treated as "use defaults" (all rules
  enabled) instead of acting as an empty allowlist that disabled all rules
- **MD013**: Preserve MkDocs admonition markers (`!!!`, `???`, `???+`) during text
  reflow instead of stripping them from continuation lines
- **MD033**: Escape regex special characters in `allowed-elements` config values —
  square brackets and other metacharacters were being interpreted as regex patterns
- **MD036**: Only flag emphasis as heading-like when it forms a standalone paragraph
  (surrounded by blank lines), matching markdownlint behavior

### Changed

- **MD045**: Made diagnostic-only — auto-fix removed because meaningful alt text
  requires human judgment. Automated placeholders derived from filenames (e.g.,
  "User Profile image") are harmful for accessibility. The rule now reports missing
  alt text without offering to fix it.
- **CI**: Pass version in pre-commit dispatch payload

## [0.1.16] - 2026-02-09

### Added

- **MD013**: `semantic-line-breaks` reflow mode (preview) — breaks lines at semantic
  boundaries using a cascading strategy: sentence boundaries first, then clause
  punctuation (`,` `;` `:` `—`), then English break-words (`and`, `or`, `but`,
  `which`, `that`, `because`, etc.), then word wrap as fallback
  ([#388](https://github.com/rvben/rumdl/issues/388))

### Fixed

- **MD013**: Fix panic on multi-byte characters (smart quotes, em dashes) in
  semantic line break sentence boundary detection
- **MD013**: Preserve element adjacency during reflow — text directly adjacent
  to shortcodes, code spans, or links (e.g., `v{{< shortcode >}}`) is no longer
  split across lines
- **MD013**: Use actual line length instead of URL-stripped length for line-length
  checks — lines were incorrectly passing when long URLs inflated the real length
- **MD013**: Preserve Quarto/Pandoc div markers (`::: {.class}`) during text reflow
  instead of reflowing them into surrounding paragraphs
- **MD001**: Track fixed heading level in `check()` for idempotent fixes — repeated
  `--fix` runs no longer produce different output for multi-level heading violations
- **MD032**: Idempotent fix for ordered non-1 list followed by unordered list
- **MD032**: Use `fix()` method in proptest and allow convergence within 3 passes
- **MD062**: Bail out when unmatched angle bracket masks closing paren, preventing
  false positive warnings on valid link syntax
- **MD009**: Strip all trailing Unicode whitespace in a single pass instead of
  handling each whitespace character separately
- **GitHub Action**: Support multiple space-separated file paths in `path` input
- **docs**: Fix YAML typo, indentation, and `--no-exclude` descriptions
  (thanks @@JonathanWillitts in [#385](https://github.com/rvben/rumdl/pull/385))
- **config**: Handle markdownlint `default` key and boolean rule semantics in
  `.markdownlint.json` compatibility
  ([#389](https://github.com/rvben/rumdl/issues/389))

### Changed

- **reflow**: Extract block boundary helpers to deduplicate paragraph detection logic
- **MD001**: Extract `compute_heading_fix()` to unify check() and fix() code paths
- **docs**: Add Helix editor formatter configuration and note about built-in support
- **docs**: Add link and nav validation guide, fix MD051 cross-file documentation
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.9 2026/02/08 22:29:21 wiz Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.21
@


1.9
log
@rumdl: update to 0.1.15.

## [0.1.15] - 2026-02-07

### Added

- **MD057: `relative-to-docs` option** - New config option for validating absolute
  link paths relative to a documentation root directory

### Performance

- **2.5x faster on real-world repositories** - Comprehensive performance audit and
  optimization across the core pipeline, rule implementations, and infrastructure.
  Validated against ripgrep, ruff, and rust repositories (1,832 files, 276K lines)
  with zero regressions.

  Key optimizations:
  - Switch release profile from size optimization (`opt-level = "z"`) to speed (`opt-level = 3`)
  - Zero-allocation line ending normalization for LF-only files (common case)
  - Replace `chars().nth()` O(n) calls with O(1) byte indexing for ASCII checks
  - Promote MD034 regex patterns to `LazyLock` statics (eliminated ~160K mutex cycles per 10K-line file)
  - Reduce `LineInfo` memory 79% by boxing rare struct variants (3.4MB → 720KB for 10K-line files)
  - Eliminate redundant `Vec<char>` allocation in horizontal rule detection
  - Cache debug environment variable lookups in list parser
  - Move `ListBlock` by value instead of cloning
  - Fix MD044 O(n×m) boundary checks and full-document regex scans
  - Fix MD052 repeated full-document HTML comment scans
  - Replace per-line `HashMap` cloning in `InlineConfig` with state-transition storage
  - Deduplicate `content.lines().collect()` across 48 call sites in 27 rules
  - Compute content lines once in `LintContext`, share via `ctx.raw_lines()`
  - Unify code block detection into a single pass shared with `LineIndex`
  - Eliminate redundant `InlineConfig` parsing (parse once in `LintContext`)
  - Deduplicate line offset and front matter computation during context construction
  - Add O(1) line access via pre-computed line starts in `LineIndex`
  - Lazy-initialize rule registry with `LazyLock` (eliminated 5+ redundant `all_rules()` calls)
  - Remove unused mmap code path from file reading

### Changed

- **`explain` command completeness** - Now uses the full rule registry instead of
  a manually maintained list, ensuring all rules (including MD069-MD074) are included

## [0.1.14] - 2026-02-06

### Added

- **MD074: MkDocs nav validation** - Validate that `mkdocs.yml` navigation entries
  point to existing files (requires `flavor = "mkdocs"`)
  - `not-found = "warn"` (default): Report nav entries pointing to non-existent files
  - `omitted-files = "ignore"` (default): Optionally report markdown files not in nav
  - `absolute-links = "ignore"` (default): Optionally warn about absolute paths
  - Smart handling of directory nav entries, `docs_dir` setting, and session caching

- **MD057: Absolute links configuration** - New `absolute-links` config option
  for controlling how absolute link paths are handled

- **MkDocs flavor: Extension-aware support** - Recognize Python-Markdown and
  pymdown-extensions syntax to prevent false positives
  - Python-Markdown anchor style (`{#custom-id}` header attributes)
  - Unified PyMdown markup detection with span-based architecture

### Fixed

- **Tables in list items lose indentation** ([#383](https://github.com/rvben/rumdl/issues/383))
  - `rumdl fmt` now preserves indentation for tables on list continuation lines
  - Stack-based list context tracking handles nested lists, mixed ordered/unordered,
    and respects CommonMark code block boundaries

- **MD065: Fix idempotency for consecutive horizontal rules** - Running `--fix`
  twice on consecutive `---` rules no longer produces different output

- **MD032: Fix idempotency for ordered-non-1 items with code fences** - Fix mode
  no longer produces different output on repeated runs for this edge case

### Changed

- **Codebase modularization** - Major internal restructuring for maintainability
  - LSP server extracted into configuration, completion, and linting submodules
  - File processor extracted into module directory with 3 submodules
  - Config extracted into module directory with 8 submodules
  - CLI extracted into commands directory with separate command handlers
  - LintContext extracted into module directory with 8 submodules

## [0.1.13] - 2026-02-05

### Added

- **LSP: Code block language completion** - Autocomplete fenced code block languages
  - Type ` ``` ` and press Ctrl+Space for language suggestions
  - Includes 100+ languages from GitHub Linguist
  - Added documentation in [docs/lsp.md](docs/lsp.md)

- **MD041: Opt-in auto-fix** - Add missing first-line heading with `--fix`
  - Disabled by default to prevent unwanted changes
  - Enable with `fix = true` in MD041 config
  - Uses document title or filename as heading text

- **MD040: GitHub Linguist integration** - Normalize code block languages
  - Recognizes language aliases (e.g., `py` → `python`)
  - Uses GitHub Linguist database for accurate normalization

- **Code Block Tools: Additional built-in tools**
  - Added djlint (Jinja/HTML), beautysh (bash), tombi (TOML), oxfmt (Jinja)
  - 35 total built-in tool definitions

- **Code Block Tools: Configurable missing tool handling**
  - `on-missing-language-definition`: What to do when language has no tools (`skip`, `warn`, `fail`)
  - `on-missing-tool-binary`: What to do when tool binary not found (`skip`, `warn`, `fail`)

- **MkDocs: PyMdown Blocks support** - Recognize PyMdown extension syntax
  - Supports `/// note`, `/// warning`, `/// details` and other block types

- **npm: CLI distribution** - Install via npm/npx
  - `npx rumdl check .` - Run without global install
  - Platform-specific packages for macOS, Linux, Windows

### Fixed

- **Code Block Tools: Embedded markdown linting is now opt-in** ([#380](https://github.com/rvben/rumdl/issues/380))
  - Linting markdown inside code blocks was unexpectedly enabled by default
  - Now requires explicit `[code-block-tools.languages.md]` configuration

- **MD040: Skip disabled lines when computing preferred labels**
  - Fixed incorrect suggestions when some code blocks are disabled

- **Schema: Use standard integer type for timeout field** ([#374](https://github.com/rvben/rumdl/issues/374))
  - Fixed JSON Schema validation in editors

## [0.1.12] - 2026-02-04

### Added

- **Code Block Tools [preview]** - Run external linters and formatters on fenced code blocks ([#331](https://github.com/rvben/rumdl/issues/331))
  - `rumdl check`: Run configured linters (ruff, shellcheck, eslint, etc.) on code blocks
  - `rumdl check --fix`: Run configured formatters (ruff, prettier, shfmt, etc.) to auto-format code blocks
  - 31 built-in tool definitions with support for custom tools
  - Language resolution via GitHub Linguist aliases (e.g., `py` → `python`, `bash` → `shell`)
  - Configurable error handling per language (`fail`, `warn`, `skip`)
  - See [docs/code-block-tools.md](docs/code-block-tools.md) for configuration guide

- **MD018: Per-rule magiclink configuration** - Control whether `magiclink` syntax is recognized per rule
  - Add `magiclink = true` to MD018 config to skip email-like syntax

- **MD033: Auto-fix for `<a>` and `<img>` tags** - Convert simple HTML links and images to Markdown
  - `<a href="url">text</a>` → `[text](url)`
  - `<img src="url" alt="text">` → `![text](url)`
  - Requires `fix = true` in MD033 config (disabled by default)

- **MkDocs: Support for markdown-enabled HTML blocks** - Properly handle `<div markdown>` grid cards and similar patterns
  - Supports 10 HTML5 sectioning elements (div, section, article, aside, details, figure, footer, header, main, nav)
  - MD030 and MD035 now skip content inside markdown-enabled HTML blocks
  - Added `skip_mkdocs_html_markdown()` filter to filtered_lines API

### Fixed

- **MD013: Prevent infinite loop in MkDocs admonition reflow** - Fixed edge case causing reflow to hang on certain admonition content

- **Config: Remove deprecated MD002 from example** - `rumdl.toml.example` no longer includes deprecated rules

### Changed

- **Config: Compact inline table syntax in example** - `rumdl.toml.example` now uses more readable inline tables for code-block-tools

## [0.1.11] - 2026-02-03

### Added

- **CI: Automated SchemaStore sync workflow** - Schema updates are now automatically synced to SchemaStore on release

### Fixed

- **MD044: Check proper names in link text, image alt text, and WikiLinks** ([#369](https://github.com/rvben/rumdl/issues/369))
  - Previously only checked regular text and YAML front matter
  - Now also checks `[link text](url)`, `![alt text](url)`, and `[[WikiLinks]]`

- **Schema: Remove non-standard 'uint' format** ([#368](https://github.com/rvben/rumdl/issues/368))
  - Fixed JSON Schema validation errors in editors when using `flavor = "obsidian"`
  - Schema now uses standard `integer` with `minimum: 0` instead of non-standard `uint` format

## [0.1.10] - 2026-02-02

### Added

- **Obsidian flavor support** - New markdown flavor for Obsidian-specific syntax
  - Tags (`#my-tag`) - Not flagged as missing heading space (MD018)
  - Callouts (`> [!NOTE]`) - Recognized as valid blockquotes
  - Highlights (`==text==`) - Not flagged as spacing issues
  - Comments (`%%comment%%`) - Content inside is skipped by all rules
  - Extended checkboxes (`- [/]`, `- [-]`, `- [>]`) - Recognized as valid task items
  - Dataview fields (`field:: value`) - Not flagged as consecutive spaces
  - Templater syntax (`<% code %>`) - Recognized as template syntax
  - Block references (`^block-id`) - Not flagged

- **WASM: Obsidian flavor support** - Use `flavor: 'obsidian'` in Linter config
  - Enables Obsidian-specific syntax recognition in browser/plugin contexts

- **WASM: Rule-specific configuration** - Pass rule configs to Linter constructor
  - Example: `new Linter({ 'MD013': { 'line-length': 120 } })`

### Fixed

- **MD041: Skip MkDocs anchor lines** - Lines starting with `[](){#id}` are now skipped when checking for first-line heading

## [0.1.9] - 2026-02-01

### Fixed

- **MD033: Don't remove HTML tags that can't be converted to Markdown**
  - Previously, auto-fix would destructively remove tags like `<img>`, `<span>`, and `<div>`
  - Now only safe fixable tags (`em`, `i`, `strong`, `b`, `code`, `br`, `hr`) are converted
  - All other HTML tags are left unchanged as expected

- **Fix mode: Respect per-file-flavor configuration**
  - `rumdl check --fix` now correctly uses per-file flavor settings from `[per-file-flavor]`
  - Previously used global flavor instead of file-specific flavor during fix coordination
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.8 2026/02/01 14:00:20 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.15
@


1.8
log
@textproc/rumdl: update to 0.1.8

[0.1.8] - 2026-01-31
Added

    Inline config: Automatic support for all rules (#364)
        All rules now automatically support inline configuration via <!-- rumdl-configure-file --> comments
        Engine-level implementation ensures consistent behavior across rules
        Added get_effective_config helper for inline config support

    MD033: Opt-in auto-fix for inline HTML conversion
        New fix = true option enables auto-fix (disabled by default)
        Converts simple inline HTML to Markdown equivalents
        Conservative approach: only fixes clear-cut cases

    MD036: Opt-in auto-fix for emphasis-as-heading
        New fix = true option enables auto-fix (disabled by default)
        Converts emphasis-only paragraphs to proper headings

    Test: Comprehensive MkDocs extension regression tests
        Added 197 tests across 20 modules for MkDocs flavor
        Covers admonitions, content tabs, mkdocstrings, keys, snippets, math, and more
        Tests edge cases, cross-flavor comparison, fix preservation, and malformed syntax

Fixed

    MD013: Preserve MkDocs admonition and tab content during reflow (#361)
        Reflow now preserves required indentation inside MkDocs containers
        Admonition content no longer incorrectly converted to fenced code blocks
        Content tabs (=== "Tab") properly handled during line wrapping

    MD013: Prevent whitespace accumulation in sentence-per-line reflow (#360)
        Fixed infinite loop causing "failed to converge after 100 iterations" error
        Sentence-per-line mode now produces stable, idempotent output

    MD064: Support inline configure-file comments (#364)
        allow-sentence-double-space now works with inline HTML config comments
        Sentences ending with markup (`code`.) now correctly recognized

[0.1.7] - 2026-01-30
Added

    MD060: Loose last column option (#356)
        loose-last-column = true skips padding the last column in body rows
        Keeps tables compact while maintaining alignment for other columns
        Useful for tables with variable-length description columns
        (thanks @@Ravlen for the suggestion)

    MD060: Separate header/body alignment (#348)
        column-align-header controls alignment for the header row only
        column-align-body controls alignment for body rows only
        Existing column-align remains as fallback for both
        (thanks @@pygarap for the suggestion)

    MD018: MagicLink support in MkDocs flavor (#355)
        When using flavor = "mkdocs", MD018 skips PyMdown MagicLink-style issue references
        #10 and #123 at the start of lines are not flagged as malformed headings
        Non-numeric patterns like #Summary are still flagged correctly
        (thanks @@kattni for the suggestion)

Changed

    Docs: Add MD073 to opt-in rules table
        MD073 (TOC validation) now listed in the opt-in rules section of docs/RULES.md

    Release: Add SchemaStore update reminder
        verify-release-ready.sh now warns when rumdl.schema.json has changed
        Reminds to submit a PR to SchemaStore after releasing

    Release: Add opt-in rules documentation check
        verify-release-ready.sh verifies all opt-in rules are documented in docs/RULES.md
        Prevents forgetting to document new opt-in rules

    Release: Add config validation check
        verify-release-ready.sh now tests all rule config options for validation warnings
        Catches schema bugs where valid options show "Unknown option" warnings

Fixed

    MD060: Fix config validation warnings for optional alignment options
        column-align-header and column-align-body no longer show "Unknown option" warnings
        Schema now explicitly includes all valid config keys

    MD073: Add missing indent option to config schema
        indent option was accepted but not in the validation schema

    CLI: Remove noisy hints from completions command
        Shell completion output is now cleaner without installation hints in the generated script

[0.1.6] - 2026-01-29
Added

    CLI: Shell completions subcommand (#327)
        rumdl completions <shell> generates shell completions for bash, zsh, fish, powershell, and elvish
        Auto-detects current shell and provides installation hints
        (thanks @@tpoliaw in #333)

    CLI: Static rules.json for tooling integration (#351)
        Rule metadata now available at https://raw.githubusercontent.com/rvben/rumdl/main/rules.json
        Enables external tools (Alfred workflows, etc.) to access rule data without installing rumdl
        Release verification ensures rules.json stays in sync

Fixed

    MD073: Read indent config from MD007 by default (#353)
        TOC indentation now respects MD007's indent setting automatically
        Can be overridden with explicit [MD073] indent = N

[0.1.5] - 2026-01-29
Added

    CLI: JSON output for rule metadata (#351)
        rumdl rule -o json exports all rule data as JSON
        rumdl rule -o json-lines for streaming/piping (one JSON object per line)
        Filter options: --fixable (-f), --category (-c)
        --list-categories shows available categories with rule counts
        --explain includes full documentation in output
        JSON includes: code, name, aliases, summary, category, fix_availability, url

Fixed

    MD073: Validate TOC entry indentation matches heading levels (#353)
        TOC entries must now have correct indentation relative to heading depth
        Example: H2 entries need 2-space indent, H3 entries need 4-space indent

    CLI: Correctly count fixable issues (#349)
        "Run rumdl fmt to fix N issues" message now uses capability-based counting
        Previously could show fixable count for rules that don't actually auto-fix

    CLI: Correctly count files modified by fmt (#347)
        Summary now shows actual number of modified files, not just files with issues

Changed

    Docs: Update all documentation URLs to rumdl.dev (#352)
        LSP code actions now link to rumdl.dev instead of GitHub
        Rule URLs in JSON output point to rumdl.dev
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.7 2026/01/29 14:21:13 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.8
@


1.7
log
@textproc/rumdl: update to 0.1.4

## [0.1.4] - 2026-01-28

### Changed

- **MD073: Simplified to marker-based TOC detection only** ([#332](https://github.com/rvben/rumdl/issues/332))
  - Removed heading-based TOC detection (~200 lines of code)
  - Now only supports `<!-- toc -->...<!-- tocstop -->` markers
  - Ensures consistent detect/fix behavior - only validates TOCs users explicitly mark
  - Rule is now opt-in: disabled by default, enable with `[MD073] enabled = true`

### Fixed

- **Rules: Call should_skip() in linting engine for opt-in rules**
  - Opt-in rules (like MD073) now correctly skip when disabled
  - Previously, rules had to check skip internally which caused inconsistent behavior
  - Architectural fix affects all rules with opt-in behavior

- **MD073: Fix HTML anchor handling in heading ID generation**
  - Headings with `<a name="..."></a>` anchors now correctly extract the anchor ID
  - Centralized fix in `header_id_utils.rs` benefits all anchor-related functionality

- **MD032: Fix should_skip() to detect ordered lists**
  - `likely_has_lists()` only checked for unordered markers (`*`, `-`, `+`)
  - Ordered lists (e.g., `1. item`) were incorrectly skipped
  - Now uses pre-computed `list_blocks` which includes all list types

## [0.1.3] - 2026-01-28

### Added

- **MD073: Table of Contents validation rule**
  - Validates TOC entries match actual document headings
  - Detects missing, extra, misordered, and misnamed TOC entries
  - Supports multiple anchor styles: GitHub, GitLab, Markdownlint, VSCode
  - Configurable: `toc-heading`, `anchor-style`, `case-sensitive`

### Fixed

- **MD064: Recognize sentence endings after markdown inline elements** ([#345](https://github.com/rvben/rumdl/issues/345))
  - `allow-sentence-double-space` now works with sentences ending in inline code, emphasis, bold, strikethrough, and other markdown elements
  - Example: `` `code`.  Next sentence `` no longer flags a false positive
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.6 2026/01/28 09:21:52 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.4
@


1.6
log
@textproc/rumdl: update to 0.1.2

[0.1.2] - 2026-01-27
Fixed

    LSP: Only auto-fix on manual saves, not autosave (#340)
        Prevents unwanted fixes when VS Code autosaves in the background
        Auto-fix now only triggers on explicit Cmd+S / Ctrl+S saves

    MD032: Add auto-fix for lazy continuation lines (#342)
        When allow-lazy-continuation = false, lazy continuation lines now get proper indentation
        Detects all inline formatting at line start (emphasis, strong, strikethrough, links, images, code)
        Handles nested lists, blockquotes, and nested blockquotes correctly

    MD037: Fix range calculation for emphasis spacing (#343) (thanks @@kachick)
        Fix ranges are now stored as absolute positions, preventing double-adjustment in fix mode

Added

    Test: Smoke test profile for package managers (#341) (thanks @@kachick)
        make test-smoke runs stable tests excluding flaky proptest/stress tests
        Useful for Nix and other package managers requiring deterministic test runs

[0.1.1] - 2026-01-26
Fixed

    MD013: Preserve MkDocs snippet delimiters during reflow (#338)
        -8<- and --8<-- delimiters now stay on their own lines when reflowing list items
        Prevents MkDocs Snippets extension syntax from being corrupted

    MD013: Detect same-line closing tags for script/style elements (#339)
        Self-closing tags like <script src="..."></script> no longer cause subsequent lines to be skipped
        Lines after inline script/style tags are now properly checked for line length

    MD013: Improve reflow handling for config and MkDocs syntax (#335, #337)
        Recognize abbreviations config option (was showing "unknown option" error)
        Preserve attrlist syntax {: .class } on its own line during reflow

    MD013: Require space after period for numbered list detection (#336)
        Prevents "failed to converge after 100 iterations" error on certain inputs
        Version numbers like 1.2.3 no longer mistakenly detected as list items

    MD013: Handle email autolinks correctly
        Email addresses in angle brackets (e.g., <user@@example.com>) no longer break HTML tag extraction

    MD005/MD030: Use blockquote-aware indent calculation
        List continuation detection now correctly handles blockquote prefixes
        Multi-line list item detection accounts for blockquote nesting

Changed

    Shared blockquote utilities for indent calculation
        Centralized logic for calculating indentation within blockquotes
        Improves consistency across MD005, MD030, and MD032 rules
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.5 2026/01/26 10:40:58 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.2
@


1.5
log
@textproc/rumdl: update to 0.1.0

🎉 First Stable Release

rumdl reaches production-ready status after validation against 99,291 markdown files
across 51 popular repositories (kubernetes, react, vscode, rust-lang, tensorflow, and more)
with zero false positives detected.
Added

    CLI: fmt --check flag for CI usage
        Returns non-zero exit code if files would be modified
        Enables dry-run formatting checks in CI pipelines

    Fuzz testing infrastructure
        Fix idempotency fuzzer verifies fixes don't oscillate
        Run with make fuzz (requires nightly Rust)

Fixed

    MD032: Single-pass idempotency for list blank lines
        Fixes edge case where multiple fix passes could produce different results

    MD050: Correct byte range for fix replacement
        Fixes auto-fix for strong emphasis style in certain edge cases

Changed

    README: Added "Used By" section with notable projects using rumdl
    README: Updated SchemaStore section to reflect current status
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.4 2026/01/23 08:31:13 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.1.0
@


1.4
log
@textproc/rumdl: update to 0.0.224

## [0.0.224] - 2026-01-22

### Added

- **GitHub Action: `fail-on-error` and `output-file` inputs** ([#324](https://github.com/rvben/rumdl/issues/324), [#325](https://github.com/rvben/rumdl/issues/325))
  - `fail-on-error`: Control whether the workflow fails on violations (default: `true`)
  - `output-file`: Write lint results to a file for use in subsequent steps

- **LSP: `source.fixAll.rumdl` code action for fix-on-save**
  - Enables VS Code's "Fix All on Save" feature for rumdl
  - Configure with `editor.codeActionsOnSave: { "source.fixAll.rumdl": "explicit" }`

## [0.0.223] - 2026-01-21

### Added

- **MD060: `column-align` option for table cell text alignment** ([#317](https://github.com/rvben/rumdl/issues/317))
  - Options: `left`, `center`, `right` to force alignment for all columns
  - Complements existing table formatting rules

- **Documentation site** ([rumdl.dev](https://rumdl.dev))
  - Rule documentation with examples and configuration guides

### Fixed

- **Embedded markdown respects per-file-ignores and inline config**
  - Both `rumdl check` and `rumdl fmt` now honor `<!-- rumdl-disable -->` comments
  - Per-file-ignores configuration applies to embedded markdown blocks

- **Fix mode re-lint uses filtered rules** ([#319](https://github.com/rvben/rumdl/issues/319))
  - After applying fixes, re-linting respects per-file-ignores and inline config

- **MD030: Auto-fix applies custom spacing config** ([#318](https://github.com/rvben/rumdl/issues/318))
  - Custom `ul_single`, `ol_single`, etc. values now applied during fix

### Changed

- **Documentation improvements**
  - Fixed MD051 location in RULES.md tables (thanks @@Ravlen in #315)
  - Added Flavors section to README (closes #316)
  - Added Discord server link to issue templates (thanks @@pygarap in #321)
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.3 2026/01/21 14:48:51 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.0.224
@


1.3
log
@textproc/rumdl: update to 0.0.222

## [0.0.222] - 2026-01-20

### Fixed

- **MD018: Comprehensive false positive fixes** ([#314](https://github.com/rvben/rumdl/issues/314))
  - Skip content inside HTML comments (e.g., Jupyter cell markers `#%%`)
  - Skip indented patterns to match markdownlint behavior
  - Skip YAML comments inside frontmatter
  - Flag all malformed headings at line start

- **Tables inside list items** ([#314](https://github.com/rvben/rumdl/issues/314))
  - Tables embedded in list items are now detected, linted, and formatted correctly
  - Validate delimiter indentation for list-table detection

- **MD009: Correct 1-indexed column in ASCII path**
  - Column numbers in diagnostics now match editor positions

- **Schema: Include all flavor aliases** ([#312](https://github.com/rvben/rumdl/issues/312))
  - Added `gfm`, `github`, `commonmark`, `qmd`, `rmd`, `rmarkdown` to schema
  - JSON schema now matches documentation

- **CLI: Prevent duplicate config and use canonical rule list**
  - Fixes edge case where config could be loaded multiple times

### Performance

- **Optimize code detection and cache hash computation**
  - Faster detection of code blocks and spans

- **Cache per-file globsets**
  - Significant speedup for rules using file-specific patterns

## [0.0.221] - 2026-01-18

### Added

- **Embedded markdown linting in fenced code blocks**
  - Lint markdown content inside ` ```markdown ` code blocks
  - Provides lint warnings for markdown examples in documentation
  - Auto-fix support formats embedded markdown preserving code fence indentation

### Fixed

- **MD064: Remove `max-consecutive-spaces` config, improve sentence detection**
  - Removed conceptually inconsistent `max-consecutive-spaces` option
  - Share sentence detection logic with text reflow (DRY)
  - Add proper abbreviation detection (Dr., Prof., e.g., i.e., Mr., Mrs.)
  - Add CJK sentence-ending punctuation support (。, ！, ？)
  - Fix UTF-8 byte boundary handling for multi-byte characters

- **MD055/MD056: Handle tables inside blockquotes in fix mode**
  - Tables within blockquotes now preserve `> ` prefix when fixed
  - Pipe style and column count fixes work correctly in nested contexts

- **MD060: Improve alignment detection for CJK and delimiter styles**
  - Better handling of CJK character widths in table alignment
  - Improved delimiter row style detection

- **MD069: Respect inline disable comments in fix mode**
  - `<!-- markdownlint-disable MD069 -->` now properly prevents fixes
  - Exposed inline config checks for rule disable detection

- **MD058/MD065: Recognize blockquote continuation lines as blank**
  - Lines with only `>` are now treated as blank for table separation rules
  - Fixes false positives in blockquoted content

- **Text reflow: Recognize sentence boundaries with quotation marks**
  - Sentences ending with closing quotes (`.\"`, `!\"`, `?\"`) now detected correctly
  - Supports both straight and curly quotation marks

### Changed

- **Refactored sentence detection into shared module**
  - New `sentence_utils` module provides reusable sentence boundary detection
  - Used by both MD064 (consecutive spaces) and text reflow (MD013)
  - Reduces code duplication by ~100 lines
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.2 2026/01/17 20:59:28 pin Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.0.222
@


1.2
log
@textproc/rumdl: update to 0.0.220

## [0.0.220] - 2026-01-17

### Added

- **`RUMDL_OUTPUT_FORMAT` environment variable** ([#297](https://github.com/rvben/rumdl/issues/297))
  - Override output format in CI/CD without modifying config files
  - Precedence: CLI flag → env var → config → default
  - Example: `RUMDL_OUTPUT_FORMAT=github rumdl check .`

### Fixed

- **MD050: Skip math blocks to avoid false positives in Quarto**
  - LaTeX subscripts (`x_1`) and exponentiation (`a**b`) were incorrectly flagged as strong emphasis
  - Now correctly skips content inside `$$...$$` math blocks

### Changed

- **Documentation: Clarify CommonMark 0.31.2 spec version** ([#298](https://github.com/rvben/rumdl/issues/298))
  - Explicitly document that rumdl uses CommonMark 0.31.2 via pulldown-cmark
  - Clarify that `standard` flavor includes GFM extensions (tables, task lists, strikethrough, autolinks)
  - Document `commonmark` as alias for `standard`, `github` as alias for `gfm`
  - Add `output-format` setting documentation with all 12 available formats

## [0.0.219] - 2026-01-17

### Added

- **Comprehensive markdown flavor support**
  - **GFM flavor**: Security-sensitive HTML tag detection in MD033, extended autolinks including `xmpp:` protocol in MD034
  - **MkDocs flavor**: mkdocstrings block support, extended markdown syntax (keys `[[Ctrl]]`, caret `^^sup^^`, mark `==highlight==`, ins `++inserted++`, tilde `~sub~`)
  - **MDX flavor**: JSX attribute detection (`className`, `htmlFor`, `onClick`, etc.), JSX expression handling, ESM import/export support
  - **Quarto flavor**: Pandoc citation syntax (`@@ref`, `[@@ref]`), shortcode detection (`{{< >}}`), div blocks and callouts (`::: {.callout-*}`), math block handling for emphasis rules

- **Comprehensive UTF-8 stress tests**
  - Systematic testing of all rules against 11 scripts (Bengali, Arabic, Chinese, Japanese, Korean, Thai, Hindi, Russian, Greek, Emoji, ZWJ sequences)
  - Tests for check(), fix(), and fix range character boundaries
  - Catches UTF-8 panics before they reach production

### Fixed

- **MD034: UTF-8 panic with multi-byte text before emails**
  - Fixed crash when email follows Bengali, Chinese, Arabic, or other multi-byte UTF-8 text
  - The `xmpp:` prefix check was slicing at invalid character boundaries
  - Discovered during testing against kubernetes/website

- **MD031: Blank line detection after MkDocs admonition blocks**
  - Corrected blank line requirements after admonition content

- **MkDocs: Nested admonition handling**
  - Implemented stack-based detection for properly nested admonitions

### Changed

- **Documentation: Split flavor docs into separate files**
  - `docs/flavors.md` is now a concise overview with links
  - Each flavor has its own file: `docs/flavors/standard.md`, `gfm.md`, `mkdocs.md`, `mdx.md`, `quarto.md`
  - Easier to find, reference, and maintain flavor-specific documentation

## [0.0.218] - 2026-01-15

### Added

- **Style Guide Preset examples**
  - Google Markdown style guide config (`examples/google-style.toml`)
  - Prettier-compatible markdown config (`examples/prettier-style.toml`)

### Fixed

- **MD032: Eliminate false positives on real-world repos**
  - Tested against Rust Book (478 files) and MDN Content (14,100 files) with zero false positives
  - Treat HTML comments as transparent for blank line checks
  - Skip blank line warning when exiting blockquotes (boundary provides separation)
  - Handle prose numbered items like "Chapter 19." (sentence continuation detection)
  - Fix lazy continuation for code span continuations and nested sublists
  - Remove incorrect uppercase heuristic that was closing lists prematurely

- **Config: Correct rule alias mappings**
  - Add `descriptive-link-text` alias for MD059
  - Fix `table-cell-alignment` alias to map to MD060 (was incorrectly MD059)

- **Config: Warn on per-file-ignores patterns with commas**
  - Detects when patterns contain commas without braces
  - Suggests correct glob syntax: `{*.md,*.txt}` instead of `*.md,*.txt`
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.1 2026/01/15 13:26:02 wiz Exp $
d3 1
a3 1
DISTNAME=	rumdl-0.0.220
@


1.1
log
@textproc/rumdl: import rumdl-0.0.217

Packaged in wip by pin@@ and myself.

A high-performance Markdown linter, written in Rust.

rumdl is a high-performance Markdown linter and formatter that helps
ensure consistency and best practices in your Markdown files.
Inspired by ruff 's approach to Python linting, rumdl brings similar
speed and developer experience improvements to the Markdown ecosystem.
@
text
@d1 1
a1 1
# $NetBSD$
d3 1
a3 1
DISTNAME=	rumdl-0.0.217
@

