Skip to content

What's new in 0.7 ​

mdrefine 0.7 carries more of an existing workspace's configuration into its fallback and written conversion. It reads legacy markdownlint ignore files, keeps supported EditorConfig intersection branches, and recognizes an initial byte-order mark in imported ignore files. Follow the upgrading steps before updating a workspace that relies on converted settings; the changelog lists every change.

Highlights ​

  • Legacy .markdownlintignore exclusions participate with standalone markdownlint settings.
  • An unsupported EditorConfig intersection branch no longer discards the supported branches alongside it.
  • A UTF-8 byte-order mark no longer hides the first ignore pattern.

Legacy markdownlint ignore files ​

Without an mdrefine configuration, a workspace with a .markdownlint.json and this .markdownlintignore now leaves generated/notes.md out of lint and format:

text
/generated/

Previously, mdrefine reported the file as unused and checked the documents it excluded. config convert --write now carries supported patterns into the written configuration too. When Prettier ignore patterns also participate, their exclusions combine.

An ignore file alone does not activate the fallback. markdownlint-cli2 does not read this legacy file, so a workspace with CLI2 configuration keeps CLI2's selection. Negated entries still require manual migration: the fallback applies none of that ignore file's patterns, and written conversion reports the exceptions it cannot represent. Conversion also reports unsupported patterns and differences in case matching; see the conversion limits.

Supported EditorConfig intersections survive ​

When converting Prettier settings, mdrefine also reads EditorConfig. Consider this file in a workspace with a Prettier configuration:

text
root = true

[**/*.md]
indent_style = space
indent_size = 3

[a/*.{md,m?}]
tab_width = 8

The exact md branch now retains three-space indentation for a/notes.md, even though the m? intersection cannot be carried over exactly. Previously, one unsupported branch discarded the supported intersections alongside it. mdrefine still reports the unsupported remainder for manual migration; it does not broaden its scope to make it fit.

Ignore files with a byte-order mark ​

Some editors put a UTF-8 byte-order mark at the start of a file. A .prettierignore with that marker before /generated/ now excludes generated/notes.md, just as the same file without the marker does. The same correction applies to .markdownlintignore, including its first comment or negated pattern. Other pattern characters stay intact.

In 0.7.1 ​

Tables immediately below a callout's single-line title now format without needing an extra blank quote line:

markdown
> [!NOTE] Title
> | a | b |
> |---|---|
> | 1 | 2 |

A table starting a nested list item directly below its parent's text also receives the configured padding and pipes:

markdown
- parent
  - | a | b |
    |---|---|
    | 1 | 2 |

Both layouts keep the same reading in Obsidian's Live Preview and Reading view. Tables continuing ordinary paragraph text retain their protections. A table whose quote prefix contains a Tab still stays as written because Reading view can show its literal rows as code.