Skip to content

mdrefine 0.1.0-beta.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Sep 19:14
Immutable release. Only release title and notes can be modified.
274f9c3

mdrefine 0.1.0-beta.2

Second public beta of Markdown Tools. npm package: mdrefine; executable:
mdtools. Requires Node.js 22.12 or newer. Upgrade with:

npm install --save-dev --save-exact mdrefine@0.1.0-beta.2

Correctness fixes

  • Measure protected Markdown markers together with their preceding word before
    wrapping, avoiding preventable line-width overflow.
  • Prefer exact Obsidian workspace-root targets before suffix matches, respect
    explicit relative paths, and verify target identity before rewriting links.
  • Preserve compliant literal destination spelling, including ? and %, and
    escape literal percent/hash characters correctly when generating paths.
  • Recognize existing directory targets instead of reporting them as missing.
    Obsidian receives a directory-specific diagnostic; CommonMark/GitHub links can
    resolve to directories. Directories are not rewritten to README files.
  • Compare code-span line endings using their rendered space value while keeping
    other code whitespace significant, allowing safe inline-code formatting.
  • Fix parsing of inline Obsidian comments spanning several physical lines.

New controls

  • Opt-in style/inline-code joins multiline code spans without changing their
    parsed content, including spans in lists and blockquotes.
  • style/wrap.measure: "codepoints" counts Unicode scalar values instead of
    display columns. Display columns remain the default.
  • style/wrap.reportUnreflowed and reportUnbreakable optionally explain
    protected paragraphs and remaining unbreakable overflow without changing
    formatting safety or check-mode semantics.
  • resolve.gitIgnored and resolve.nestedRepositories opt into additional link
    targets independently of files selected for linting or writing.
  • Repeatable --exclude <path> omits literal files or directory subtrees from
    processing while preserving them in the link index. Filesystem aliases are
    canonicalized consistently, including Windows short paths.
  • Opt-in structure/initial-heading checks for an initial level-1 heading after
    optional YAML/TOML front matter. It never edits content.

See
configuration
and CLI workflows
for options, defaults, and examples.

Performance and library API

Workspace indexing is path-only until a target's headings or block IDs are
needed. Fragment parsing, suffix lookups, and built-in schema validation reuse
cached work within their documented lifetimes; custom schema IDs stay isolated
between calls. A synthetic benchmark is available in scripts/benchmark.mjs in
the source checkout. Validation on the original large workspace remains pending
in #23; no
persistent index cache or worker pool is included.

createWorkspace accepts lazy Markdown source loaders and explicit directory
entries. Exhaustive consumers of LinkResolution.status must handle the new
"directory" result. Consumers constructing ResolvedConfig directly must
provide resolve (use {} for the defaults); resolveConfig() provides it for
normal callers. See the
library API.

Compatibility and project scope

Beta.1 configurations remain supported. The CLI name and Node.js minimum are
unchanged; new formatting and structural controls are opt-in.

For users of intermediate source checkouts, these additions were removed before
this release: style/wrap.keepLabelWithAtom, --changed, --staged,
structure/title-matches-filename, structure/metadata-line, and
style/accidental-marker. Remove those settings and implement consumer-specific
policies in plugins or wrappers. Git callers can supply explicit paths while
retaining workspace resolution; skip the CLI invocation for an empty selection.
These removals do not remove any published beta.1 feature.

Modified-date mutation remains consumer-owned. Semantic guards, conservative
handling of unsupported constructs, and Obsidian's verified strict-line-break
requirement remain in force. The plugin API and configuration are provisional.

Repository maintenance now includes explicit issue-scope review and a documented
label taxonomy. Full CI runs on Linux/Node.js 24, with compatibility and
installed-package checks on Linux/Node.js 22 and Windows/Node.js 24.

🤖 Generated with GPT-6 via Codex