The viewer for AI-generated Markdown — re-renders as Claude, ChatGPT, or Cursor write. No vault. No setup. Double-click a
.mdfile and read it.
Landing page · Releases · MIT
Lightweight cross-platform Markdown viewer/editor built with Tauri 2 + Rust + Svelte 5. Targets the gap that existing tools don't fill: a fast, focused reader for the long Markdown your AI just wrote, on Windows / macOS / Linux, without the setup overhead of a PKM tool.
data-sourcepos from comrak to map line changes to DOM
nodes. Brief flash highlights what just changed.| Shortcut | Action |
|---|---|
Ctrl+T / Ctrl+O |
Open file in new tab |
Ctrl+W |
Close active tab |
Ctrl+Tab / Ctrl+Shift+Tab |
Cycle tabs |
Ctrl+E |
Toggle View ↔ Split |
Ctrl+S |
Save (edit/split mode) |
Ctrl+F |
Find in document |
Ctrl+, |
Settings |
Ctrl+B |
Toggle files panel |
Ctrl++ / Ctrl+- / Ctrl+0 |
Zoom |
Ctrl+] / Ctrl+[ |
Wider / narrower content column |
Ctrl+\ |
Toggle full-window content width |
F12 |
Open DevTools (dev only) |
Esc |
Close find / settings / file menu |
Requirements:
webkit2gtk-4.1, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-devgit clone https://github.com/kumaradarsh1993/md-reader
cd md-reader
npm install
npm run tauri dev # dev mode with HMR
npm run tauri build # produces installer in src-tauri/target/release/bundle/
Frontend-only (no Rust required):
npm run dev # Vite dev server on :1420
npm run check # svelte-check
src-tauri/ Rust backend (Tauri 2)
src/markdown.rs comrak + syntect → HTML, with data-sourcepos
src/watcher.rs notify-debouncer-full, watches parent dir
src/commands.rs IPC commands (file ops, list_dir, spawn_window)
src/lib.rs plugins, CLI args, single-instance
examples/inspect.rs diagnostic harness — dump rendered HTML
src/ SvelteKit frontend (Svelte 5 runes)
routes/+page.svelte app shell
lib/Viewer.svelte rendered output + live-follow
lib/Editor.svelte CodeMirror 6 (lazy)
lib/TabBar.svelte tabs with drag-tear-out
lib/LeftPanel.svelte Lightroom-style resizable panel
lib/FileBrowser.svelte single-level dir tree
lib/Toc.svelte document outline
lib/Find.svelte Ctrl+F search
lib/Settings.svelte settings panel
lib/post-render.ts heading id assignment + lazy KaTeX/Mermaid
lib/tabs-store.svelte.ts tabs state (open/close/reorder/persist)
lib/settings-store.svelte.ts persisted settings via tauri-plugin-store
docs/ GitHub Pages landing site (static)
Research surfaced three convergent gaps:
MIT