Changelog
2.44.0 (2026-05-07)
Features
Bug Fixes
Bug Fixes
Features
Bug Fixes
Dependencies
- updated crates/panache-parser to v0.7.1 ## 2.42.1 (2026-05-05)
Bug Fixes
Features
- linter: add linting rule for bad HTML entities (
93aa280), closes #251 - wire new reference impl into salsa and CST (
3ba22c1) - add
parse_with_refdefsandUNRESOLVED_REFERENCE(e6c17fb) - cli: add
panache parse --to pandoc-astoutput mode (f0f9ace) - parser: expose pandoc-native projector as public API (
5b79b92) - editors: add
executableStrategy, deprecate old options (884a3c4) - editors: add log-level setting (
a6cf4c7) - editors: add restart server command (
ab5cfb0) - editors: register as default formatter for rmd & qmd (
889d640)
Bug Fixes
- parser: degrade unresolved bracket if inner emph leaks (
e1c291b), closes #250 - handle ambiguous markers and indented code block (
8d3db6d) - parser: allow drift tolerance for list parsing (
1836a7b), closes #246 - formatter: handle nexted list with same line marker (
8d0653a), closes #247 - parser: handle tilde-fences dispatch correctly (
519abd1), closes #248 - cli: link to correct reference page for rules (
c807d70), closes #245 - recursive into linst/blockquote/list (
175d78e) - handle lazy-continuation for blockquote + list (
4a490ff) - allow continuation list without blank line in definition (
daed645) - peek-ahead in blankline in blockquote (
74adea6) - handle pandoc-commonmark divergence on html comments (
ca301f9) - handle same-line block quote marker (
3c6c3dd) - parser: handle direct list-in-lis correctly (
5c6a4ae) - correctly handle definition inside footnote (
3a30b05) - correctly parse and format definition with bare list (
72c9a2b) - parse and format headings inside lists (
d7e714e) - parser: fix early-bail to not fire incor for strikeout (
f486309) - parser: require two spaces after roman marker (
8d7255f) - parser: allow unindented block to follow atx heading (
bf84aa1) - parser: fix byte-order breakage in tilde-fenced code (
18ca6c2), closes #249 - editors: update package lock file and get rid off uuid (
b02ef2c)
Performance Improvements
- lsp: share salsa-cached refdef set across LSP keystroke parses (
e1e2927)
Dependencies
- updated crates/panache-formatter to v0.4.2
- updated crates/panache-parser to v0.7.0 ## 2.41.1 (2026-05-01)
Bug Fixes
- formatter: extend block-token list (
d087729), closes #238 - parser: suppress nested links in Pandoc link text (
b8e1c9a), bugs #1 and #2 - parser: handle Pandoc emphasis on the IR path (
afa0ef5) - parser: finish milestone - full commonmark compliance (
33a88e8) - parser: implement IR algorithm (
bb91c85) - formatter,parser: handle setext in list (
86494b5) - parser: fix emphasis parsing for cmark (
de1b406) - parser: handle empty maker followed by indented content (
6a9b188) - parser: open inline blockquote for commonmark (
a2ad903) - parser: handle rule of 5 cols for commonmark (
dcb36e6) - parser: honor source-column tab stops (
15ebe05) - parser: make fenced code openers interrupt paragraphs (
f9a3b50) - parser: handle two tab cases in commonmark tests (
3bf2140) - parser: don’t allow links to contain links in cmark (
52eb5f2) - parser: handle last HTML block edge case (
3a13337) - parser: handle dialect-specific list item closing (
c61f93b) - parser: handle last refdef dialect mismatch (
245543b) - parser: handle last block quote discrepancy in cmark (
0fce82a) - parser: correctly handle non-uniform list indents (
f7750dd) - parser: handle continuation in block quote better (
2f209e5) - parser: implement better link scanning (
eaca3a1) - parser: don’t skip code spans in closer scan (
687e908) - parser: allow partial emphasis matching for commonmark (
e172b52) - parser: recurse inte same-line nested lists markers (
ac05e88) - parser: handle emphasis edge case (
1b13a73) - parser: improve cmark emphasis parsing (
95b2811) - parser: handle edge-cases for cmark emphasis (
be57d7d) - maintain list markers for commonmark (
084fc87) - parser: relax indented-code opener (
c0dcfb7) - parser: support multiline setext headings (
4b4e1a3) - parser: handle parser losslessnes from emphasis (
0104a7c) - parser: don’t let
]terminate a link inside code span (18e028d) - parser: fix parenthesis tracking (
d37ba7d) - parser: properly handle multilevel ref def (
50f28f4)
Performance Improvements
- parser: add IR-driven dispatch for Pandoc links/images (
1e4227e) - parser: add IR-driven dispatch for [text]{attrs} (
cf50ec5) - parser: add IR-driven dispatch for citations (
9e826db) - parser: add IR-driven dispatch for [^id] footnote refs (
614221e) - parser: add IR-driven dispatch for 1 and (
1b9e618) - parser: early-exit + scratch reuse (
c2c0387) - parser: add leading-byte gate (
c851afe) - parser: add byte-level blank-line check (
7530c25) - parser: add byte-level link-suffix whitespace skips (
89b31e4) - parser: skip exclusion-mask pass when no brackets (
92ec5db) - parser: byte-level is_blank_line on blank-check paths (
fab385e) - parser: leading-byte gate in collect_refdef_labels (
7058785) - parser: zero-alloc Roman numeral check (
ff4d3eb) - parser: leading-byte gates on hot block parsers (
57f9f69) - parser: memchr-based code-span scan + zero-alloc (
490d593) - parser: byte-level trim helpers on hot per-line paths (
a63a02a) - improve performance on the IR path (
44d6d5b)
Dependencies
- updated crates/panache-formatter to v0.4.1
- updated crates/panache-parser to v0.6.1 ## 2.41.0 (2026-04-29)
Features
Bug Fixes
- parser: respect escapes inside reference definitions (
2ec4025) - parser: allow fancy lists in core cmark, improve logic (
191f636) - parser: don’t allow ref defs to break paragraphs (
b05e3f3) - parser: allow breaks in reference links (
7da4875) - parser: for cmark, cap digits for lists at 1-9 (
39ba64b) - parser: correctly handle empty list items (
1143607) - parser: properly handle fenced code inside list items (
6b6ccdd) - parser: make blanklines inside list item a loose list (
23d7a90) - parser: handle ruler as only list item (
a1004e6) - parser: handle thematic breaks and setext headings (
a02c3d5) - parser: handle autolinks and blockquotes for cmark (
b1cedd4) - parser: handle HTML blocks for pandoc/commonmark (
227648e) - parser: handle pandoc/cmark difference in fenced code (
b370edd) - parser: handle backslash escapes, autolinks, empty code (
317b150) - parser: allow space after atx and any length setext (
647d274) - parser: enable
all_symbols_escapablefor commonmark (04c52d7) - formatter: ensure blankline before header in commonmark (
fd96f2a) - handle thematic breaks in commonmark correctly (
f98fca0) - parser: fix image link handling in commonmark (
cac6004) - parser: preserve entity references in cmark (
0ae7579) - parser: handle ATX headings in commonmark correctly (
8c09c19) - parser: add extensions to commonmark flavor (
59166ab) - parser: don’t emit synthethic token (
a137fc4), closes #235
Dependencies
- updated crates/panache-formatter to v0.4.0
- updated crates/panache-parser to v0.6.0 ## 2.40.0 (2026-04-27)
Features
Bug Fixes
Dependencies
- updated crates/panache-parser to v0.5.1 ## 2.39.0 (2026-04-27)
Features
Bug Fixes
Dependencies
- updated crates/panache-formatter to v0.3.0
- updated crates/panache-parser to v0.5.0 ## 2.38.0 (2026-04-24)
Features
Bug Fixes
- formatter: don’t break display math inside emphasis (
d2eee34), closes #214 - formatter: handle nested lists with continuation (
185fa02), closes #212 - parser: don’t let definition list adopt trailing list (
b2fba48) - properly parse and format blockquote markers in deflist (
b27eeb7), closes #209 - lsp: only complete real
@-type references (0419b45) - formatter: strip whitespace from code in list (
b1b60c0) - parser: allow Rcpp as known language in hahspipe parse (
0fd5979) - lsp: don’t lowercase bib entries (
2ee14d9) - formatter: allow
Rcppas language for clang-format (521e087) - linter: correctly normalize bookdown equation label (
dd7b736) - lsp: harden go-to-definition/reference triggers (
16a9364) - linter: don’t mix references with chunk labels (
077db86) - handle UTF-8 boundary bug in table parsing (
2c4e20f), closes #211 - parser: correctly emit blanklines in tables/captions (
0465f45), closes #210 ## 2.37.0 (2026-04-22)
Features
Bug Fixes
- parser: don’t parse caption as definition (
e542c1f) - greedily consume table captions (
58afc1c) - parser: handle empty lines in hashpipe normalizer (
51e6146), closes #201 - parser: don’t drop adjacent table caption (
9144d63), closes #200 - lsp: handle nagivation URI correctly on windows (
63f317e) - formatter: correctly handle blanklines in blockquote (
834757c), fixes #199 - formatter: handle blank line before fenced code (
e7337fd), closes #198 - formatter: strip trailing whitespace in hashpipe flow (
9757c2f), fixes #194 - parser: correctly parse deep list in blockquote (
51484ac), closes #195 - formatter: quote ambiguous labels in hashpipe conversion (
e473944), closes #192 - avoid wrapping on fancy markers in unsafe contexts (
4de13dd), closes #193 - formatter: handle citation spacing correctly (
543aa46), ref #193 - formatter: don’t collapse whitespace in hashpipe yaml (
5d4b5d2), closes #185 - parser: handle varying indentation for blockquotes (
cdd3eec), closes #186 - formatter: add list markers to unsafe wrappers (
a7f1ed5), closes #187 - formatter: normalize scalars to avoid idempotency issue (
da9e3a0), closes #189 - parser: accept empty headings (
d081dd7) - parser: properly handle adjacent tables (
6206623) - parser: don’t treat
:table caption as def list (a287631) - parser: handle bare URI in gfm flavor properly (
2559a99), closes #197 - parser: fix logic around
blank_before_header(c8f48c9) - parser: handle bare
#|comments (1a7d009), fixes #188 and #190 ## 2.36.0 (2026-04-19)
Features
Bug Fixes
- avoid special normalization of yaml and hashpipe items (
d8bfb76) - formatter: handle list-in-blockquote idempotency issue (
3d20ce4), closes #177 - handle idempotency in hashpipe yaml reconstruction (
b28d675), closes #172 - parser: parse display math over paragraph boundary (
b5c9be2), closes #176 - parser: handle utf-8 slicing in inline spans (
8ccfe5c), closes #175 - parser: flush list-item inline buffer (
a49179b), closes #174 - parser: enable
inline_linkfor GFM flavor (8059792), closes #171 - update cargo lock file (
3fc4d9b)
2.35.0 (2026-04-16)
Features
- add info-level debugging logs for external formatters (
6228b55)
Bug Fixes
- switch back to
v*tagging for main program (9adc923) - parser: handle utf-8 properly (
92da1cd), closes #164 - lsp: remove extra space in tasklist-bullet list action (
6cc80b3) - lsp: convert to actual task list (
233f47c) - parser: handle utf-8 properly (
92da1cd), closes #164 - switch back to
v*tagging for main program (9adc923) - switch back to
v*tagging for main program (9adc923)
2.34.0 (2026-04-14)
Features
Dependencies
- The following workspace dependencies were updated
- dependencies
- panache-parser bumped from 0.2.1 to 0.3.0
- dependencies
2.33.1 (2026-04-14)
Bug Fixes
- formatter: avoid reflow-induced reparsing (388b288), closes #134
- formatter: prevent reinterpreting parse avoiding wrap (fbf7733)
- parser: handle deep indentation and roman nos in list (04b80f5), closes #143
- parser: handle deep roman list and quotation (b7aac81), closes #137
- scripts: correctly resolve tag in installation scripts (5b474fc)
Reverts
- “chore: don’t include component in tag for root release” (eb9e15f)
Dependencies
- The following workspace dependencies were updated
- dependencies
- panache-parser bumped from 0.2.0 to 0.2.1
- dependencies
2.33.0 (2026-04-13)
Features
Bug Fixes
- cli: change
RUFF_CACHE_DIRtoPANACHE_CACHE_DIR(644480b) - formatter: don’t allow
([@sec](https://github.com/sec))to wrap to new line (215a9c1), closes #138 - formatter: fix block quote marker leakage into emphasis (b5deeb3)
- formatter: improve citation and hashpipe handling (768c741)
- formatters: use proper extensions for external format (9fd9ab9)
- parser: fix continuation detection in indented context (4f1e51d), closes #139
- parser: fix losslessness bug in grid table parsing (28f47dd), closes #132
- parser: fix missing whitespace in nested fenced code (426aa87)
- parser: mitigate infinite recursion in line block (612dc80)
- parser: mitigate UTF-8 panic in hashpipe path (26c702d), closes #135
- parser: preserve nonbreaking spaces in parser (8c1756b)
- parser: properly handle blandlines inside display math (1e37724), closes #130
Performance Improvements
- parser: move inline math tracking into container stack (5df8308)
Reverts
Dependencies
- The following workspace dependencies were updated
- dependencies
- panache-parser bumped from 0.1.0 to 0.2.0
- dependencies
2.32.0 (2026-04-09)
Features
- config: more presets and add metadata (8623393)
- editors: add Zed extension (c87e45d), closes #102
- formatter: contextual abbreviaton rules for wrapping (1cf1a57)
- formatter: indent tables by two spaces (864cc25), closes #89
- formatter: presets for sqlfmt, alejandra, etc (75f3df3)
- formatter: reinstate wrapping in footnotes (6bc8be1)
- formatter: wrap table captions (84a7fd1)
- implement caching for linting and formatting (db37713)
Bug Fixes
- cli: unify missing linters/formatters (20c06c7)
- formatter: fix idempotency issue with lists and images (9a4c5ae)
- formatter: handle idempotency issues in YAML, divs (100f94c)
- formatter: handle inline footnote newline wrapping (b65a1f2)
- formatter: setup proper rules for sentence wrapping (4227f3a), closes #113
- formatter: treat code as non-breakable in sentence wrap (482fe61)
- formatter: use pandoc blankline normalization in divs (8491e97)
- formatting: slacken non-breaking code logic (131bc56)
- linter: pass explicit shell dialect for shellsheck (2d8c065)
- parser: handle complex fenced div case (34e6e8c)
- workaround ambiguous fenced div idempotency (19409ce)
2.31.0 (2026-04-02)
Features
- linter: add ruff as external linter (a0506b6)
- linter: add support for eslint external linter (4d51e97)
- linter: attach notes to external lints (954dbd9)
- linter: restrict external linters by language (92a812c)
- linters: support shellsheck as external linter (6875102)
- linter: support clippy as external linter (db3340f)
- linter: support shellsheck as external linter (e84c323)
- linter: support staticcheck as external linter (d665b04)
- lsp: add source action for linting (01722b3)
- lsp: use exact mappings for code action on ext linter (5b905ef)
Bug Fixes
2.30.0 (2026-04-01)
Features
Bug Fixes
2.29.0 (2026-03-28)
Features
- formatter: separate top-level lists with blankline (777e090)
- lsp,config: add suppor for
gfm-auto-identifiers(31736da) - lsp: add file renaming for linked documents (8a7d08a)
- lsp: add hover support for for heading references (3ca2b24)
- lsp: add hover support for linked markdown files (4d88705)
- lsp: add hover support for reference definitions (16bdd6f)
- lsp: add rename handler for footnote ids (42be81d)
- lsp: code action for converting bullet/ordered lists (d620006)
- lsp: code action for converting list to task list (f04e91e)
- lsp: extend file rename to shortcodes and nav elements (492877f)
- lsp: support go-to-definition for example lists (b7fbc19)
- lsp: support renaming for example references (15f6267)
- parser: parse yaml comments (8b8e731)
- support
mmd-header-identifiersextension (ffe7834) - support
mmd-link-attributesextension (5b44f9e) - support
mmd-title-blockextension (276e31c)
Bug Fixes
- formatter: handle idempotency failure with AUTO_LINK (94c6c95)
- formatter: mitigate idempotency growth in hashpipe yaml (82a3da1)
- lsp,linter: correctly resolve cross-reference to header (c3a42cd)
- parser: actually enable
hard-line-breaksextension (70c9201) - parser: add missing code block extensions for gfm flavor (1058df6)
2.28.0 (2026-03-25)
Features
Bug Fixes
- formatter: wrap and space blockquote in deflist (22409e9)
- lsp: don’t allow slugs in implicit links (e7926fa)
- lsp: resolve go-to-headin for implicit links (13fb0c4)
- parser: emit list item buffer in nested def list (9342463)
- parser: handle nested lazy lists in definition lists (7b32604)
- wasm: clean up and fix some warnings (1261e92)
2.27.0 (2026-03-24)
Features
- cli: don’t error when running on glob or dir (99e0440)
- formatter: format definition lists like pandoc (8d96a40)
- formatter: format nested headings (75a74b3)
- formatter: normalize loose and compact definitions (21b3c87)
- lsp: filter headings in document symbols (c6af6bb)
- lsp: introduce incremental parsing as experimental opt (5be6df6)
Bug Fixes
- check LINK_REF first (91ee195)
- config: match includes/excludes relative to config root (db2f95d)
- parser: encapsulate multiple definition list items (e28fda6)
- parser: handle list as first lement in definition (5871252)
- parser: parse headings in definition list items (3aa9686)
- parser: parse headings in list items (55e5632)
- pre-commit: remove pandoc submodule (5baed02), closes #92
Performance Improvements
2.26.0 (2026-03-21)
Features
Bug Fixes
2.25.0 (2026-03-20)
Features
Bug Fixes
- formatter: don’t interpret ````markdown as fenced code (9e17ebc)
- formatter: preserve markers in headerless table (62ec59a)
- formatter: recover lost indentation in code block (2f94707)
- formatter: restrict yaml frontmatter replacement (7e9bf72)
- lsp: correctly handle renaiming (b5c0b5b)
- lsp: limit highlight of definition to actual label (e377024)
- parser,formatter: fix regression in definition list (10a2cd7)
- parser: don’t treat continuation as code block (927efeb)
- parser: fix losslessness bug in empty definition (4ede2f8)
- parser: match pandoc’s rules for list item identation (c15688d)
2.24.1 (2026-03-19)
Bug Fixes
2.24.0 (2026-03-19)
Features
2.23.0 (2026-03-18)
Features
Bug Fixes
2.22.0 (2026-03-17)
Features
Bug Fixes
2.21.0 (2026-03-16)
Features
- build binaries for linux musl too (d6ada87)
- build binaries for windows arm too (05f8c46)
- cli: add
--message-format <fmt>for linter (2eafc8c) - config: add
[format]as replacement for[style](c86ef90) - config: add include, exclude, extend-include/exclude (0d3a05e), closes #71
- config: expose
auto-identifiersextension (bdf0081) - config: move rules to
[lint.rules]category (6fc9ade) - formatter: drop blanklines at start of document (e784c3d)
- formatter: remove code block config options (3dd5846)
- linter: add contextual hint for heading hierarchy lint (1ce7a18)
- linter: improve lint display (bd74591)
- lsp: adapt project graphs to
project.rendersettings (be63ee9) - parser,linter: add support for github emojis
:smile:(116fad2)
Bug Fixes
Performance Improvements
- editors: bundle vsix extension and use esbuild (815635c)
2.20.0 (2026-03-13)
Features
- linter: add linting rule for missing code chunk labels (a8f4709), closes #68
- linter: add rule for duplicate chunk labels (50806ba)
- lsp: add find-references support for crossrefs (475bd94)
- lsp: add go-to-def, rename for exec chunk labels (5f4367d)
- lsp: extend find-references to citations (ec2d328)
- parser: parse in-comment execution options (35c772d)
Bug Fixes
- parser: handle unicode properly (5886d05)
2.19.0 (2026-03-12)
Features
Bug Fixes
2.18.0 (2026-03-12)
Features
Bug Fixes
2.17.0 (2026-03-11)
Features
Performance Improvements
- formatter: use built-in greedy wrapper (ac73a3a)
2.16.0 (2026-03-11)
Features
Bug Fixes
2.15.0 (2026-03-10)
Features
- formatter: normalize indented tables (c4b394f)
Bug Fixes
- formatter: fix idempotency around table caption (aad08f6)
- formatter: fix idempotency failure with display math (d7e2b47)
- formatter: fix idempotency issue in hard break in list (1b46852)
- formatter: fix idempotency issue with display math (f47edc9)
- formatter: handle footer and multirow grid tables (821e54f)
- formatter: handle idempotency in code span formatting (188d10f)
- formatter: handle idempotency with blockquote marker (854b5fe)
- formatter: handle tex blocks properly in formatter (04ad902)
- formatter: preserve malformed display math with dollars (78e2907)
- formatter: protect inline math spaces (d6470b6)
- parser,formatter: handle consecutive tables (f1a4c08)
- parser,formatter: harden grid table parsing (05bdab9)
- parser: don’t hardcode emphasis markers (ce7125e)
- parser: parse whitespace after code block starter (3d28e74)
2.14.1 (2026-03-10)
Bug Fixes
- formatter: correct list idempotency (3b0db0e)
- formatter: fix idempotency failure in atx headings (6a61caf)
- formatter: handle div in loose list (6514e58)
- formatter: handle escaped char inside table (130df6f)
- formatter: handle horizontal before setext heading (225d7b2)
- formatter: handle non-ASCI able content (4ea70f4)
- formatter: handle underscore emphasis with nested asterisks (71f41b0)
- formatter: subdue blockquote marker after hard break (e3b53c9)
- parser,formatter: tighten code fence logic (9c1ffcc)
- parser: allow fenced blocks to interrupt paragraphs (0e521b5)
- parser: allow references with leading spaces (9051331)
- parser: avoid stealing captions as definition items (22855d0)
- parser: cater to spanning-style rows (57e3ab3)
- parser: don’t interpret continuation line as list (af73bd4)
- parser: emit leading spaces before rule (8d58381)
- parser: emit original line block marker (0866449)
- parser: fix backtick-parsing in attributes (5f82e22)
- parser: handle table with complex layout (47fd1a3)
- parser: honor
blank-before-headerextension (c1f3571) - parser: preserve leading whitespace before fences (7f12c62)
- parser: relax fence block detection (6cc356d)
2.14.0 (2026-03-09)
Features
Bug Fixes
- formatter: apply block code formatting inline (5d76bea)
- formatter: don’t line break after initials (3030451)
- formatter: fix idempotency in fancy list formatting (f5c6509)
- formatter: handle crossref in blockquote (2b4e729)
- formatter: handle empty cells in grid tables (ecc7515)
- formatter: harden external formatting (2946761)
- formatter: require blankline before line block (0589776)
- parser: correctly parse trailing
#(942c1fa) - parser: don’t drop trailing whitespace in fenced div (7bd2d31)
- parser: don’t require blankline before fenced div (f17c3aa)
- parser: don’t trim trailing space in definition (edeae6f)
- parser: handle line block inside grid table (100ebed)
- parser: handle list inside blockquote (e20e756)
- parser: handle rows exceeding separator width (4a42c63)
- parser: handle shortcode in heading (200bfd8)
- parser: handle spaces in indented code block (cdbf952)
- parser: handle table after div close (a4c2940)
- parser: handle trailing whitespace in grid table (0677abb)
- parser: handle unicode in shortcode (7f603dc)
- parser: parse indented block in block quote losslessly (bbd2f86)
- paser: don’t trim trailing whitespace after marker (32e9734)
Performance Improvements
- lsp: add lazy definition and hover handling (69f7cce)
- lsp: add LRU tuning (7a5d439)
- lsp: derive lint and metadata diagnostics through salsa (4ede8cb)
- lsp: introduce durability macros into graph (b74248e)
- lsp: unify lint pipeline to avoid duplicate parse (070e7f5)
- lsp: use
salsa::internedfor project graph intternally (996be36)
2.13.0 (2026-03-07)
Features
Bug Fixes
- formatter: fix wrapping for definition lists (4dd084b)
- formatter: omit quarto/knitr comments from formatting (36ceccb)
- formatter: use correct ruff args (408d330), closes #46
- linter: mitigate spurious warning for quarto crossrefs (a0e0769)
- lsp,linter: correct bib file found range, deduplicate (9d5dfbb)
- parser,formatter: align with pandoc’s fenced div parse (1982972)
- parser: fix infinite recursiong bug in tex cmd parse (1f71833)
- parser: handle tab stops gracefully (9f8aa96)
- parser: only accept four spaces-indented def lists (11fb109)
Performance Improvements
2.12.0 (2026-03-05)
Features
Bug Fixes
- fix compilation error (194858a)
- formatter: handle indentation in indented code blocks (9112856)
- handle code block on first line of definition item (4bb42f5)
- lsp: expand selection for edit range to top-level block (0a39399)
- lsp: improve expansion handling for range formatting (11c4d51)
- lsp: replace correct segment when using range format (5968b6a)
- parser, formatter: correctly handle blocks in deflist (4ffc8bc)
- parser,formatter: handle loose/compact definitions (063f9f3), closes #45
- parser: don’t treat indented lists and code blocks (7b14077)
- parser: require blankline before list in definition (ac971c0)
- resolve bibliography paths relative to metadata files (3a878bc), closes #44
2.11.0 (2026-03-04)
Features
- add support for implicit header references (d9fe4a3)
- formatter: add preset for clang-format (d3f2a60)
- formatter: add preset for shfmt (83143a2)
- formatter: add preset for taplo TOML formatter (d5b83e5)
- lsp,linter: add support for inline YAML references (08c141d)
- lsp,linter: enable bookdown project integration (315bc50)
- lsp,linter: support diagnostics and more for includes (15b61fc)
- lsp,linter: use project and metadata files (3ed27fb)
- lsp: add go-to-def handler for crossrefs (35c2a06)
- lsp: add renaming support for bibliography entries (7bb30d0)
- lsp: handle quarto cross-references separately (086e6ed)
- lsp: maintain project-wide state (6ea5356)
- parser: support bookdown crossref syntax (45ef2eb)
Bug Fixes
- formatter: handle equation attributes with line after (eecf1a5)
- lsp,linter: deduplicate bibliography entries (6602569)
- lsp: fix duplicate bibliography issue (7f85ff7)
- lsp: show correct lines for bib diagnostics (30177ae)
- lsp: use platform-independent file Uris (658c3a4)
- lsp: use platform-independent URIs (2aecf8e)
- parser, formatter: don’t wrap latex commands (619dea5)
2.10.0 (2026-03-03)
Features
Bug Fixes
2.9.0 (2026-03-02)
Features
- formatter: normalize links to match pandoc (3b5fdce)
Bug Fixes
2.8.0 (2026-03-02)
Features
Bug Fixes
2.8.0 (2026-03-02)
Features
Bug Fixes
2.7.0 (2026-03-01)
Features
Bug Fixes
Performance Improvements
- lsp: add incremental parsing (b804ee9)
2.6.3 (2026-02-27)
Performance Improvements
2.6.2 (2026-02-27)
Bug Fixes
2.6.1 (2026-02-25)
Bug Fixes
- parser: handle complex emphasis cases (f7fe514)
2.6.0 (2026-02-20)
Features
- config: add
[style]section, deprecate old version (2b83231) - config: add
append_argsandprepend_args(56cb4c1) - config: allow partial overrides (d53e1d0)
- config: flavor-independent code block styling (5c14f2f)
- config: remove pointless
min_fence_length(4204ed5) - config: remove unused
normalize_indented(da087e4) - config: use
[formatters.<formatter]style (7d91023) - formatter: don’t assume
#|for unknown language (b50f3ab) - formatter: format simple tables (5d048c6)
- formatter: support ojs, mermaid, dot in hashpipe conversion (8695ae2)
- formatter: trim trailing blanklines (6e7cd61)
- linter: add rule for duplicate references (97fbc8a)
- lsp: add convert to loose/compact list code action (a63c104)
- lsp: convert between footnote styles (2fe5030)
- lsp: enable footnote preview on hover (d25c74a)
- parser: drop
ROOTnode from AST tree (6c9bd8f) - parser: parse
](in links and images (73a8da0) - update wasm build (ff6acd9)
Bug Fixes
- config: override code block flavor defaults (4023e29)
- formatter: concatenate successive blanklines (5e1c06a)
- formatter: correct alignment in multline tables (04c9ad6)
- formatter: fix idempotency issue in table formatting (fe4af95)
- formatter: handle attributes correctly in code blocks (6228182)
- parser: avoid parsing expressions (69bea2b)
- parser: correctly parse multiline captions before table (c8389d4)
- parser: don’t parse links in
CODE_INFO(2f10b8b) - wasm: guard yaml formatter behind wasm flag (063143c)
2.5.1 (2026-02-18)
Bug Fixes
2.5.0 (2026-02-17)
Features
Bug Fixes
- config: override flavor defaults (8fe291b)
- formatter: strip newline for external yaml format (3d54b3e)
- parser: correctly parse lists with different markers (273ba39)
- parser: handle lazy lists with blanklines (9d82a92)
- parser: parse blanklines away from plain nodes (e7972ee)
- parser: parse display math if begin/ends on delim line (ef16594)
2.4.0 (2026-02-15)
Features
Bug Fixes
- formatter: wrap first lines in definition lists (3ad7576)
2.3.0 (2026-02-14)
Features
- cli: add support for external linters (c1937de), closes #23
- formatter: add support for formatting grid tables (ef47bac)
- lsp: add go to definition for links, images, footnotes (d749424)
- lsp: add support for external linters (just jarl for r now) (5162096)
- lsp: implement
textDocment/foldingRange(7ce6ce2) - parser: parse code block language as token (c29016e)
- parser: preseve LF and CRLF line endings (a470713)
Bug Fixes
- formatter: handle unicode in table formatting (44f4bcf)
- formatter: honor “line-ending” configuration option (248e2f2)
- lsp: correctly detect flavor in document symbols (60af5b4)
- parser: consistently handly CRLF line endings (6b43c9c)
- parser: correctly parse captions before tables (2cb9e2d)
- wasm: fix wasm build by fixing command invocation (a9a29a7)
2.2.0 (2026-02-13)
Features
Bug Fixes
2.1.0 (2026-02-12)
Features
- lsp: add initial support for document symbols (81a7ef9)
Bug Fixes
2.0.0 (2026-02-12)
⚠ BREAKING CHANGES
- change external formatting to be opt-in
Features
- add presets for external formatters (70b297a)
- add range formatting (902cb95)
- change external formatting to be opt-in (8d91753)
- formatter: standardize unordered lists to
-marker (33ae608) - implement a linter (4af0d5e)
- implement wrapping for links and images (929f993)
- lsp: integrate linter with LSP server (f0ae3e9)
Bug Fixes
- correctly deal with nested lists in definitions (5f00893)
- correctly delegate non-stdin formatters (869d473)
- correctly praser backslash-escaped math (c28cdc5)
- don’t use defunct
--writeflag (bbe3291) - fix bug in flavor deserialization (3e40177)
- fix clippy problems (5996d90)
- fix erroneous handling of blanklines in indented code (d058b61)
- fix some linting issues (11fc9a7)
- handle code blocks nested in lists (761737d)
- lsp: correctly compute range to replace (056f5cc)
- properly emit table blanklines into AST (c48fc9e)
- properly handle code blocks in lists (42930e0)
- refactor parser to capture lossless tree (9bbfd9f)
- use async formatter in LSP formatting (8efbb1a)
1.0.0 (2026-02-11)
⚠ BREAKING CHANGES
- force subcommand use, add config to parse
- use block parser in formatter
- rename WrapMode options
- change second argument in
format()toConfig
Features
- add
blank_linesoption (c1080a4) - add
CodeSpanto syntax (4e63609) - add
parse()function (18b85ac) - add a block parser (200965d)
- add a LSP (5befe3d)
- add automatic flavor detection and configuration settings (bf96aee)
- add basic formatter (de69b6c)
- add blank line after headings (ee6f3e9)
- add completion (7b74ed3)
- add emphasis (c348dd2)
- add formatter playground (2cd7148)
- add line ending normalization and detection (2e06143)
- add parse subcommand (f220fb3)
- add placeholder for inline parser (891883d)
- add support for footnote references (cdbd4f8)
- add support for link attributes (8ee3d98)
- add support for using remporary files with extformat (b7f68a1)
- break math blocks onto separate lines (7727bba)
- change second argument in
format()toConfig(3f993e8) - corectly parse inline math (085081c)
- create custom paragraph wrapper (15a1203)
- enable bracketed spans and native spans by default (788009c)
- enable configurable backlash math support (a207b1f)
- force subcommand use, add config to parse (0fe779f)
- handle headerless simple tables (e346cf1)
- handle labels after equations (826b61b)
- implement backslash escape sequences (8140e7f)
- implement code fences in block parser (0c04bce)
- implement config system for extensions (8b3c02b)
- implement inline code span parsing (00ed086)
- implement inline math parsing (3fa4ca0)
- implement line blocks (56e285d)
- improve handling of frontmatter in lexer and parser (a4f0821)
- make block parser recursive (60b0438)
- normalize emphasis (6ba2061)
- package as flake (b24730b)
- parse
BlankLinein lexer (d727494) - parse and format headings (cc4f95c)
- parse div blocks (df2e717)
- parse horizontal rules (9b48280)
- parse inline math as part of syntax (d8ce545)
- partially implement reference links (93fa82d)
- properly format code blocks (9e8e256)
- rename package to panache (e64efb4)
- rename WrapMode options (f6a6b55)
- show nice diffs with
--checkargument (807428c) - suppor bracketed spans (55668d3)
- support citations (4d30e28)
- support definition lists (3c64756)
- support display math (88a2d4a)
- support example lists (84a5ed6)
- support external formatting (10aed07)
- support fancy lists (4b41828)
- support fenced divs (cf2bafa)
- support formatting for pipe tables (ce4378f)
- support grid tables (642a8a3)
- support header attributes (daa3fca)
- support horizontal rules (362357a)
- support image attributes (f67f682)
- support images (3b76a50)
- support indented code blocks (097239b)
- support inline code attributes (0feac47)
- support inline footnotes (c54bd3b)
- support inline footnotes (e379f65)
- support inline latex (81d7ee0)
- support inline links (9d052dd)
- support inline raw attributes (189ded7)
- support latex blocks (e211119)
- support lazy block quotes (6fa9e53)
- support lists (e650b12)
- support metadata blocks (7e4d320)
- support multiline tables (0ecdf67)
- support native spans (f57bdf2)
- support pipe tables (a9730cc)
- support raw blocks (c17761e)
- support raw html (1839481)
- support reference images and links (0a5389d)
- support simple tables (7f808ca)
- support simple tables (dba5cbf)
- support single and double backslash math (9a72c6a)
- support strikethrough (5e4cb3b)
- support sub- and superscript (e313a81)
- support table captions (22240c5)
- use
rmarkdownnotr-markdown(235363f) - use block parser in formatter (60cb5b4)
Bug Fixes
- add basic handling of comments (578f72f)
- add missing stdin field (4e27a82)
- add support for tex commands (21c2f9b)
- allow multiple frontmatter blocks (6e81a0d)
- config: avoid panic when unwrapping non-existent config (752a72f)
- correctly align and format right-aligned lists (d15e8d8)
- correctly catch horizontal rule with
*(7ae1e37) - correctly extract language from blocks (548d7c3)
- correctly handle lazy continuation in definition lists (47cbcc6)
- correctly parse bracketed spans in headings (772656e)
- correctly parse commend end (88a612c)
- correctly parse headerless simple tables (325b2c4)
- correctly parse html comments without preceding space (e7180fd)
- correctly parse hyphens in text as non-list markers (3eaa872)
- correctly sparse task list checkboxes (037db65)
- correctly wrap flat lists (afed9e3)
- correctly wrap in lists (c06a73c)
- correctly wrap list items (038b57a)
- don’t wrap math (4e876c1)
- enforce Pandoc spec rules for inline math parsing (2612ae5)
- fix clippy lints (a5c646f)
- fix continuation bug (9e24a23)
- fix failing test due to formatting (96b4ec4)
- fix handling of block quotes (7a421af)
- fix handling of fenced code blocks (7a45752)
- fix infinite loops (62365e9)
- fix lint errors (1326251)
- fix linter warning (9ad69a9)
- fix list indentation issue (674c0b0)
- fix missing quote markers (0685219)
- fix pandoc defaults (62f6eb7)
- fix some clippy issues (c36caa7)
- fix word wrapping (5cf939d)
- format syntax (f00cc8a)
- handle headerless simple tables (202858d)
- handle lazy block quotes (d92a732)
- handle links and images as children of a paragraph (5f13634)
- handle links properly (50b8475)
- handle nested block quotes (7b92701)
- handle nested lists (198a811)
- handle tex environments (f952861)
- handle wrapping around punctuation correctly (ed79abc)
- improve list continuation parsing (2f5bc99)
- initalize logger conditionally inside
format()(15b9be3) - lexer: correctly parse
$$$as block math (59446d7) - make block quote parsing more robust (c361bcf)
- normalize line endings to unix style (88c000f)
- omit block quote markers from wrapped paragraph (d067268)
- pandoc has raw_tex by default (3e83ccb)
- parse dollar signs as text (2503bed)
- parse inline math as part of paragraph (2e42843)
- properly handle attributes (75f5d43)
- properly handle fenced divs (eed54f8)
- properly handle lazy continuation (5bd232b)
- remove clippy warnings (d8819c3)
- remove unchanged variable (199b77a)
- support numbered lists (5435b5f)
- use a for loop instead of while (8c99913)
Performance Improvements
- add
byte_offsetto avoid recomputing each time (bc97d3b) - disable
debug!andtrace!in release builds (b40d27c) - move assertion into debug profile (fa73acd)
- preallocate string size (d989e26)
- reduce allocations in wrap_text (3ccda66)
- simplify paragraph wrapper (8235242)
- switch to trace logging (e4a0beb)
Footnotes
note↩︎