github vale-cli/vale v3.18.0

3 hours ago

v3.18.0 is the largest expansion of Vale's format support since v3.0.0.

MDX is now parsed natively — mdx2vast is no longer required. This release also adds support for four new markup formats: Typst (through the new typst2vast program), Quarto, MyST, and QDoc. R Markdown now works out of the box, and comment extraction now covers Lua, PHP, Haskell, R, Perl, and SCSS.

Beyond formats, there's a new meta scope for a document's machine-readable content, a --plain-progress flag, and per-package logging for vale sync in CI — plus a long list of fixes that make alert positions and scoping more accurate across every format.

✨ Sponsor Spotlight

Special thanks to Promptless — Vale's newest sponsor and the latest to receive a Spotlight page. Promptless suggests doc updates when your product changes; you review, edit, and ship.

Changelog

  • 6c382ec fix: stop element-scoped rules from matching sentence fragments (#1150)
  • 9b9594d fix: don't treat a word before a code span as inline markup (#1147)
  • 2b159ab fix: stop corrupting suggestions containing 'PIPE'
  • 390dda6 fix: compile glob patterns once at construction (#1145)
  • fcf0740 fix(ls-metrics): prevent panic on empty directory (#1144)
  • dd09d42 fix(core): resolve Lang and Transform in section order, not map order (#1143)
  • 85ee608 fix(dita): report dita's own error output instead of just the exit status (#1141)
  • fd8c2e0 refactor: satisfy revive's empty-block
  • 2f65b83 fix: close display math on any line ending with $$ (#1148)
  • e587329 fix(lint): treat an HTML comment as a text boundary outside inline elements (#1140)
  • 4691bd3 docs: add new spotlight
  • 37cb109 feat: add --plain-progress
  • 12fbbd7 feat: log each package when sync isn't writing to a terminal
  • 9a1a16c fix: mark a QDoc image that has no alt text, and publish inline ones
  • c154ac2 Keep the extracted text one line per source line (#1135)
  • 8fe9804 refactor: CLI clean up and subcommand help
  • ae6d749 feat: add vale test
  • e5a0286 fix: read a shebang as a POSIX path
  • eec2f59 fix: read a .qdocinc as the include it is, and keep meta out of prose
  • 7618d04 fix: only hand the Docutils source to a Python interpreter
  • b596b0d fix: stop a string run's helper processes the way a file run does
  • f3f3402 fix: keep vale off working when QDoc prose is escaped
  • 54efd3b fix: escape QDoc markup
  • 5666297 fix: treat a snippet marker inside a QDoc comment as markup
  • c2d1a55 feat: add a meta scope for a document's machine-readable content
  • 33e4012 fix: close QDoc's code blocks on the right command, and scope its divs
  • 5ae4867 fix: read only /*! as QDoc, and cover commands
  • e60b5bc fix: keep a rule's level in the section that set it
  • c1e2fa0 fix: honor IgnoredScopes when a markup format is mapped onto source
  • 85c1343 fix: place a match inside a block that inline markup rewrote
  • b47ccb0 fix: don't mask an autolink's URL twice
  • 65f5687 fix: skip $…$ inline math
  • b3bade4 fix: lint a tight list item's own text as its own block
  • 4a6b7cf Don't lint a shebang as a comment (#1134)
  • 77179c0 fix: report spans against the file's actual bytes
  • 7f429e3 test: pin issue 1007's frontmatter and blockquote scenarios
  • b049e35 feat: support the .scss extension
  • b678b8d test: add QML case
  • e82432d feat: extract Lua, PHP, Haskell, R, and Perl comments with tree-sitter
  • 0e2f8bf eat: support QML sources via qml = qdoc
  • cc710aa fix: treat only block comments as QDoc documentation
  • bd1f33a ci: install typst2vast, drop mdx2vast
  • 9708be6 feat: support Typst
  • 15115bf fix: place a rewritten block by its longest word, not its last
  • 5c91639 fix: skip a repeated match's prior occurrences by count, not by masking
  • db8c83c feat: support QDoc
  • fca7b79 feat: support Quarto
  • 286fc59 feat: parse MDX natively, dropping mdx2vast
  • fedaf20 feat: support MyST
  • eec788d fix: read the character actually beside a match for inline code
  • 590278e feat: lint R Markdown out of the box
  • 4d8e228 fix: strip tab indentation from block comments (#1131)
  • 02fb654 fix: switch on what every term of a chained scope needs
  • f011cb0 fix: keep 'scope: paragraph' out of headings, tables, lists, and blockquotes

Don't miss a new vale release

NewReleases is sending notifications on new releases.