Releases: selimacerbas/markdown-preview.nvim
v1.5.3
v1.5.2
- Add task list checkbox rendering (
- [ ]/- [x]) via markdown-it-task-lists
v1.5.1
- Remove heading anchor permalink symbols (#) from preview for cleaner readability
v1.5.0
- Add takeover instance mode (default): single browser tab shared across Neovim instances via lock file coordination
- Add multi instance mode: independent server and browser tab per instance (port 0)
- Add lock file and remote event modules for cross-instance coordination
- Secondary instances get scroll sync via HTTP event injection
v1.4.0
What's new
LaTeX math rendering
Added support for LaTeX math via KaTeX and markdown-it-texmath.
- Inline math:
$E = mc^2$ - Display math:
$$\int_0^\infty e^{-x^2} dx$$ - LaTeX environments:
\begin{equation}...\end{equation}
All loaded from CDN, zero extra dependencies. Just update and it works.
Closes #6
v1.3.0
What's new
Line-based scroll sync
Rewrote scroll sync from heading-based to line-based interpolation, inspired by peek.nvim and iamcco/markdown-preview.nvim.
Before: Only headings were tracked (5-15 anchor points), scrolling up was inconsistent, files without headings had no sync at all.
After: Every block element (paragraphs, headings, lists, tables, blockquotes, code blocks) is tagged with its source line number. The browser interpolates between the nearest elements for sub-element precision. Scrolling is instant (no animation fighting) and works in both directions consistently.
Fixes:
- Scrolling up no longer fights with itself
- Files with no headings now scroll correctly
- Layout shifts (images loading) re-apply scroll position automatically
v1.2.1
Fixed
- Scroll sync heading detection was broken due to Lua pattern
{n,m}quantifier not being supported (treated as literal text). Headings are now correctly matched. - Removed debug logging left from development.
- Updated README with scroll sync documentation and fixed stale keymap references in troubleshooting.
v1.2.0
New
Heading-based scroll sync
As you move your cursor between sections in Neovim, the browser preview smoothly scrolls to the corresponding heading. No configuration needed — enabled by default.
- Tracks the nearest heading above the cursor via
CursorMovedautocmd - Sends a lightweight SSE event only when the heading changes (no unnecessary traffic)
- Browser uses
scrollIntoView({ behavior: 'smooth' })for a polished experience - Disable with
scroll_sync = falsein setup if not wanted
Requires live-server.nvim v1.1.0+ (for send_event API).
Closes #5
v1.1.1
v1.1.0
New Features
Optional Rust-powered mermaid rendering
Pre-render mermaid diagrams on the Neovim side via the mmdr CLI — roughly 400x faster than browser-side mermaid.js.
require("markdown_preview").setup({
mermaid_renderer = "rust", -- default: "js"
})- Install:
cargo install mermaid-rs-renderer - Failed blocks fall back to browser-side rendering automatically (per-block)
- Default remains
"js"— zero external dependencies preserved - Expand/zoom/pan/export all work on pre-rendered diagrams
Colored heading borders
Headings (h1–h6) now have a colored left border for improved readability and visual hierarchy:
| Level | Color |
|---|---|
| h1 | Blue |
| h2 | Purple |
| h3 | Green |
| h4 | Teal |
| h5 | Amber |
| h6 | Gray |
Colors adapt to dark/light theme and match the existing callout/admonition palette.
Other Improvements
- Polished browser tab lifecycle — graceful reconnect when tab is closed and reopened
- Improved Markdown visual handling (better spacing, typography)