Replaced the v4.10.0 floating selection toolbar (which relied on SVG click hit-testing inside #canvas-host and was unreliable in the user's Electron runtime) with a button-driven node-list panel (#fc-nodelist) below the canvas. Every mutation now flows through explicit controls: 5 Add Node buttons, per-node kind-select + label-input + delete ×, per-edge kind-select + label-input + delete ×, and a Connect form (From/To selects + Edge button + Refresh). The canvas is purely visual now: no more #fc-selection-toolbar, no controller-level _selectedId/_selectedKind state, no keyboard Delete/Backspace selection handler. Canvas click callbacks (onNodeClick, onEdgeClick, onShapeMenu) are no-ops. The 5-shape / 3-edge-kind / label-input / delete-button surface is unchanged in spirit — it just lives in the panel instead of floating over the canvas. Files: - src/flowchart-generator.html: added #fc-nodelist between canvas and preview (wrapped in new .fc-left column), removed fc-selection-toolbar, bumped header hint. - src/renderer/flowchart-bundle.js: removed SHAPE_BUTTONS/EDGE_BUTTONS, setSelection, renderSelectionToolbar, appendLabelInput, appendDeleteButton, the keyboard Delete handler, and the controller-level selection state. Added rerenderNodeList + shapeLabel/edgeLabel, wired all panel buttons (add-row, per-node selects/inputs/deletes, per-edge selects/inputs/deletes, connect form). Subscribe now calls rerenderNodeList instead of the old renderSelectionToolbar. - tests/flowchart-controller.test.js: replaced 6 v4.10.0 selection toolbar tests with 11 v4.11.0 button-driven panel tests. - package.json: 4.10.0 -> 4.11.0. - README.md: version line bumped to v4.11.0. - UPDATES.md: added v4.11.0 changelog entry. Test summary: 92 suites, 1143 tests pass (was 1138 — +5 net). Lint + prettier clean. Amit Haridas
10 KiB
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
- Visual flow chart editor - Build Mermaid flowcharts visually; drag nodes, connect edges, live preview. Insert at cursor.
- Batch conversion - Convert entire folders of markdown files
- ASCII Art Generator - 17 hand-coded fonts + 400+ FIGlet fonts; text banners, boxes, and templates; insert into editor, copy to clipboard, or save to file (Ctrl+Shift+A)
- 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. Bundled (MIT + PSF Python runtime) — no installation required for the core formats (PDF, DOCX, PPTX, XLSX, Outlook .msg, EPUB, HTML, images, ZIP, CSV, JSON, XML). For audio transcription and OCR, install
markitdown[all]system-side (multi-GB ML models; not bundled). - 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) — only for development builds
- Pandoc — bundled inside the app, no install needed
- MarkItDown — bundled inside the app (MIT + embedded PSF Python runtime via PyInstaller), no install needed for PDF / DOCX / PPTX / XLSX / Outlook / EPUB / HTML / images / ZIP / CSV / JSON / XML
- Optional for advanced import only:
pip install "markitdown[all]"adds audio transcription (Whisper) and OCR (EasyOCR/Tesseract) — these are multi-GB model downloads and are not bundled for size reasons
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 |
| Flow Chart: Undo | Ctrl+Z |
| Flow Chart: Redo | Ctrl+Shift+Z |
| Flow Chart: Delete selected | Delete |
Themes
37 built-in editor themes, registered in src/main/ThemeRegistry.bootstrap.js.
Light (14)
| Theme | Id |
|---|---|
| Atom One Light (Default) | atomonelight |
| GitHub Light | github |
| Light | light |
| Solarized Light | solarized |
| Gruvbox Light | gruvbox-light |
| Ayu Light | ayu-light |
| Sepia | sepia |
| Paper | paper |
| Rose Pine Dawn | rosepine-dawn |
| Concrete Light | concrete-light |
| Catppuccin Latte | catppuccin-latte |
| One Light | one-light |
| Winter is Coming (Light) | winter-is-coming-light |
| Spring Light (seasonal) | spring-light |
Dark (22)
| Theme | Id |
|---|---|
| Dark | dark |
| One Dark | onedark |
| Dracula | dracula |
| Nord | nord |
| Monokai | monokai |
| Material | material |
| Gruvbox Dark | gruvbox-dark |
| Tokyo Night | tokyonight |
| Palenight | palenight |
| Ayu Dark | ayu-dark |
| Ayu Mirage | ayu-mirage |
| Oceanic Next | oceanic-next |
| Cobalt2 | cobalt2 |
| Concrete Dark | concrete-dark |
| Concrete Warm | concrete-warm |
| Catppuccin Frappé | catppuccin-frappe |
| Catppuccin Macchiato | catppuccin-macchiato |
| Catppuccin Mocha | catppuccin-mocha |
| Tokyo Night Storm | tokyo-night-storm |
| Synthwave '84 | synthwave-84 |
| Outrun | outrun |
| Winter is Coming (Dark) | winter-is-coming-dark |
High-Contrast (1)
| Theme | Id |
|---|---|
| Solarized Dark (High Contrast) | solarized-dark-hc |
The currently-selected theme persists across restarts via electron-store (key theme, default atomonelight). Adding a new theme is one register() call in the bootstrap + one CSS file under src/styles/themes/.
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.11.0