Two more features from the deferred menu:
Daily-note template gallery:
- src/main/DailyNotesTemplates.js — pure module: listTemplates() /
saveTemplate() / deleteTemplate() / labelFor() with injectable IO.
- src/main/DailyNotes.js — openOrCreate() now accepts seedContent so a
non-default template can seed a NEW note (existing notes never get
clobbered).
- src/main.js — IPC channels daily-templates:list / save / delete /
apply. apply renders the chosen template (with {date}/{weekday}
substitution) and pipes through DailyNotes.openOrCreate.
- src/sidebar/daily-templates-panel.js — gallery UI: list, +New
(prompt for name + content), Use (applies to today's note),
delete (refuses to remove the last template so the default survives).
- src/renderer.js — registers the panel.
- src/index.html — icon (already added).
Pluggable DocQA engine (semantic search hook):
- src/main/SemanticEngine.js — engine interface with defaultEngine() (TF-idF,
always available) and neuralEngine() (lazy @xenova/transformers,
falls back gracefully when the dep is missing). getEngine(name)
resolves either.
- src/main/DocQA.js — ask() is now async and accepts an engine arg.
TF-idF path unchanged; neural path calls engine.rank(question, chunks)
directly. The chunk corpus is built up front regardless of engine so
ranking is consistent.
- src/main.js — doc-qa:ask IPC resolves the engine via SemanticEngine.getEngine(name)
before calling DocQA.ask. The renderer can pass {engine: 'transformers'}
to opt in once @xenova/transformers is installed.
Tests (51 new across this batch):
- tests/main/DailyNotesTemplates.test.js (18): labelFor separators /
edge cases / non-string safety, listTemplates empty / present / sort,
saveTemplate nested dir + .md extension + validation + null content,
deleteTemplate success / missing / validation.
- tests/daily-templates-panel.test.js (12): mount + empty state + list +
XSS safety, Use button (apply + error path), Delete button (success +
last-template guard), New template (save + cancel), refresh.
- tests/main/SemanticEngine.test.js (8): default engine shape + rank
matches WorkspaceSearch, getEngine for tf-idf / unknown / transformers
(graceful fallback when @xenova/transformers missing), parity check.
- DocQA: 5 new tests for engine arg (custom engine.rank called, default
fallback, neural hit shape translation); existing tests updated to
await the now-async ask().
Full suite: 76 suites, 914 tests, lint+format clean.
Activation for the neural engine:
npm install @xenova/transformers
(heavy; ~50 MiB with deps) — then 'transformers' is selectable in
doc-qa:ask. Until then, all calls use TF-idF transparently.
Amit Haridas
MarkdownConverter
A powerful cross-platform Markdown editor and document converter powered by Pandoc, built with Electron. 100% open-source with no proprietary dependencies.
Features
Markdown Editor
PDF Viewer & Editor
- Built-in PDF viewer - Open and view PDF files directly in the app
- Page navigation - Navigate pages with keyboard or buttons
- Zoom controls - Zoom in/out, fit to width, fit to page
- Rotation - Rotate pages left or right
- PDF Editor tools:
- Merge multiple PDFs
- Split PDFs by page range
- Compress PDFs
- Rotate pages
- Delete pages
- Reorder pages
- Add watermarks
- Password protection
- Remove passwords
- Set permissions
Export Options
- PDF - Export to PDF with customizable page sizes and orientation
- DOCX - Standard and Enhanced (template-based) Word export
- ODT - OpenDocument format
- HTML - Web-ready HTML export
- PowerPoint - PPTX presentation export
- EPUB - E-book format
- LaTeX - Academic document format
- RTF - Rich Text Format
- Export themes - Five visual styles (Modern, Classic, Sepia, Minimal, Elegant) for PDF and Word exports — recolored headings, links, and fonts
Advanced Features
- Custom headers & footers - Add headers/footers to exports with dynamic fields
- Page size configuration - A3, A4, A5, B4, B5, Letter, Legal, Tabloid, or custom sizes
- Batch conversion - Convert entire folders of markdown files
- ASCII Art Generator - Create text banners and diagrams
- Word templates - Use custom Word templates for enhanced exports
- Import documents - Import from 30+ formats (DOCX, PDF, HTML, etc.)
- MarkItDown import - Any file → Markdown via Microsoft MarkItDown: PDF, DOCX, PPTX, XLSX, Outlook .msg, EPUB, images, ZIP (audio/OCR with the
[all]extras) - Excel export - Markdown tables to native .xlsx workbooks (one sheet per table)
- AI Assistant - Multi-provider AI help (OpenAI/Anthropic/Ollama/LM Studio): chat panel, summarize/improve/translate commands, grammar proofreading
- Inline comments - Anchor-based document comments in
.comments/sidecars with F8 navigation - Wiki-links & Backlinks -
[[Note]]links with click-to-create and a "what links here?" panel (local knowledge base) - Crash recovery - Session restore of open tabs and unsaved buffers after a crash
- Version history - Automatic pre-save snapshots with restore/diff/delete from the History panel
- Vim mode & snippet expansion - Vim keybindings toggle; Tab expands saved snippets
- Quick Note - Global scratchpad (Ctrl+Alt+Q) that appends to
notes/quick-notes.md - Real PDF encryption - Password protection, removal, and permissions actually work
- Offline math & diagrams - KaTeX bundled locally; PlantUML renders locally when the CLI is installed
Installation
Prerequisites
- Node.js (v16 or later)
- Pandoc (required for export functionality)
- Optional: MarkItDown (
pip install "markitdown[all]") for any-file → Markdown import
Install Dependencies
npm install
Run the Application
npm start
Build for Distribution
# Windows
npm run build:win
# macOS
npm run build:mac
# Linux
npm run build:linux
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| New File | Ctrl+N |
| Open File | Ctrl+O |
| Open PDF | Ctrl+Shift+O |
| Save | Ctrl+S |
| Save As | Ctrl+Shift+S |
| Export | Ctrl+E |
| Ctrl+P | |
| Find | Ctrl+F |
| Undo | Ctrl+Z |
| Redo | Ctrl+Shift+Z |
| New Tab | Ctrl+T |
| Close Tab | Ctrl+W |
| Toggle Preview | Ctrl+Shift+V |
| Zoom In | Ctrl+Shift++ |
| Zoom Out | Ctrl+Shift+- |
| Command Palette | Ctrl+Shift+P |
| Zen Mode | F11 |
| Writing Analytics | Ctrl+Shift+A |
| Quick Note | Ctrl+Alt+Q |
| Universal Converter | Ctrl+Shift+C |
| Table Generator | Ctrl+Shift+T |
| ASCII Art Generator | Ctrl+Shift+A |
| Next Comment | F8 |
| Add Comment at Cursor | Ctrl+Alt+M |
Themes
Light Themes
- Atom One Light (Default)
- GitHub Light
- Light
- Solarized Light
- Gruvbox Light
- Ayu Light
- Sepia
- Paper
- Rose Pine Dawn
- Concrete Light
Dark Themes
- Dark
- One Dark
- Dracula
- Nord
- Monokai
- Material
- Gruvbox Dark
- Tokyo Night
- Palenight
- Ayu Dark
- Ayu Mirage
- Oceanic Next
- Cobalt2
- Concrete Dark
- Concrete Warm
PDF Viewer
Open PDF files directly in MarkdownConverter:
- File > Open PDF or Ctrl+Shift+O
- Navigate pages with arrow buttons or page input
- Zoom controls: +/- buttons, Fit Width, Fit Page
- Rotate pages left or right
- Close PDF to return to editor
Bundled Dependencies, Legal Notices & Credits
MarkdownConverter ships as a self-contained package. Everything needed for the core workflows is bundled; a few large optional tools are detected from the system when present.
Bundled with the app
| Component | License | Role |
|---|---|---|
| Pandoc 3.9 | GPL-2.0+ (separate process) | 25+ export/import formats |
| FFmpeg (via ffmpeg-static) | GPL-3.0+ build (separate process) | audio/video tools |
| MarkItDown (MIT) + embedded Python runtime (PSF) | MIT / PSF | any-file → Markdown import (PDF/DOCX/PPTX/XLSX/Outlook/EPUB/images/ZIP) |
| sharp + libvips | Apache-2.0 / LGPL-2.1+ (dynamic) | image tools |
| KaTeX, marked, [highlight.js], [DOMPurify], [mermaid], [CodeMirror 6], pdf-lib (@cantoo fork), pdfjs-dist, JSZip, simple-git | MIT / Apache-2.0 / BSD-3 / MPL-2.0 | editor, preview, PDF, Git |
| JetBrains Mono & Fira Code fonts | SIL OFL 1.1 | editor typography |
GPL-licensed tools run as separate processes (never linked into the app) and their complete corresponding sources are offered in SOURCES.md. Full details: THIRD-PARTY-NOTICES.md, also available inside the app under Help → Third-Party Notices & Licenses.
Not bundled (used when installed)
LibreOffice (Office conversion), MiKTeX/TeX Live (LaTeX PDF), ImageMagick
(extra image formats), PlantUML + Java (local diagrams), Calibre (MOBI),
MarkItDown [all] extras (audio transcription / OCR).
Credits
Built on open source: [Electron], [CodeMirror], [marked], [KaTeX], [highlight.js], DOMPurify, mermaid, [pdf-lib], pdf.js, [sharp]/libvips, [Pandoc], [FFmpeg], [MarkItDown] by Microsoft, [simple-git], [JSZip], [JetBrains Mono], [Fira Code]. Thank you to all their authors and maintainers.
Open Source
MarkdownConverter is 100% open-source. All dependencies are permissively licensed:
- Electron - MIT License
- pdf-lib - MIT License
- pdfjs-dist - Apache 2.0 License
- marked - MIT License
- highlight.js - BSD 3-Clause License
- dompurify - Apache 2.0/MIT License
- docx - MIT License
- xlsx - Apache 2.0 License (SheetJS Community Edition)
License
MIT License - see LICENSE file for details.
Author
Amit Haridas (amit.wh@gmail.com)
Version
v4.7.1