Files
markdown-converter/UPDATES.md
T
amitwh d31ed86fab fix(flowchart): wire selection + layout precedence; v4.9.4
- Add opts.onNodeClick + surgical applySelectionHighlight() so node/edge clicks immediately paint .selected and mirror id into panel state (Delete/Backspace works on freshly-clicked node).
- Add Maximize/Restore button to flowchart toolbar: toggles .main-content.flowchart-takeover which hides .editor-container and lets the canvas + preview split the full window width instead of the 280px sidebar.
- destroy() clears the takeover class so the editor stays usable after leaving the panel.
- 8 new tests in tests/flowchart-panel.test.js for selection wiring and takeover.

Amit Haridas
2026-09-14 23:00:47 +05:30

27 KiB
Raw Blame History

PanConverter - Updates & Changelog

Version 4.9.4 (2026-09-14)

Fixes

  • Flowchart Panel — selection was invisible: clicking a node or edge updated the canvas's internal selectedNodeId / selectedEdgeId but never repainted, so the .flowchart-node.selected / .flowchart-edge.selected CSS highlight only appeared when the user actually dragged (which triggers store.subscribe → render()). A bare click left the canvas looking unchanged, and the panel's own selectedNodeId (used by the panel-scoped Delete/Backspace shortcut) stayed null, so Delete on a freshly-clicked node silently no-op'd. Wired opts.onNodeClick(id) end-to-end:
    • src/flowchart/flowchart-canvas.js — added an opts.onNodeClick callback parallel to the existing opts.onEdgeClick; on click, both branches now call a new surgical applySelectionHighlight() that toggles the .selected class on the existing <g data-node-id> / <line data-edge-id> elements without going through render() (which would detach the very element the user's pointer is still on, breaking pointermove/pointerup bubbling during a drag).
    • src/sidebar/flowchart-panel.js — the panel's onNodeClick handler mirrors the id into the panel's selectedNodeId (clearing selectedEdgeId) so Delete/Backspace routes correctly. Same symmetry was already in place for onEdgeClick.
  • Flowchart Panel — narrow sidebar cramped the canvas + preview: the panel lives in the 280 px sidebar, which split the canvas vs. preview to ~175 px each — too tight to edit a flowchart. Added a "Maximize / Restore" button to the panel toolbar (between the status text and the right edge). Clicking it toggles a flowchart-takeover class on .main-content:
    • src/styles-sidebar.css — new .main-content.flowchart-takeover rules hide .editor-container (display: none) and let .sidebar / .sidebar-panel grow with flex: 1 so the canvas + preview split the full window width instead of the 280 px sidebar.
    • The button label flips between "Maximize" and "Restore", aria-label and title update, and the button gets an .active highlight while takeover is on. destroy() clears the class so leaving the panel doesn't leave the editor hidden for the rest of the session.
    • The class lookup walks up from the panel container to the nearest .main-content ancestor (with a document.querySelector('.main-content') fallback) so the panel doesn't need to know whether the sidebar lives inside #sidebar or any future container.

Tests

  • tests/flowchart-panel.test.js — added two new describe blocks (8 tests total):
    • "selection wiring (canvas click → panel state + SVG class)": clicking a node applies .selected to the matching <g>, clicking a second node moves .selected from the first to the second, clicking an edge applies .selected to the matching <line>, and a regression test verifying Delete removes a freshly-clicked node (was broken in v4.9.3 because the panel's selectedNodeId was never updated by canvas clicks).
    • "maximize / takeover": the maximize button is exposed in the toolbar, clicking it toggles .flowchart-takeover on .main-content and flips the button label/active class, and destroy() clears the class so the editor stays usable.
  • New mountWithMainContent() helper wraps the panel container in a fake .main-content (mirroring the real DOM layout in src/index.html:2341) so the takeover's class-toggling is observable from the test.

Version 4.9.3 (2026-09-14)

Fixes

  • Flowchart Panel — preview pane accumulated raw Mermaid source: when the user fired several addNode mutations within the 250 ms preview debounce, mermaid.run({ nodes: [div] }) is async, so the previous render's <div class="mermaid"> (still carrying the source text) was sitting in .flowchart-preview-render when the next render cleared the target. The first render's eventual element.innerHTML = svg landed on a detached node, but the visible preview pane had a stack of stale <div class="mermaid"> elements. Fixed in src/renderer.js:2423-2449: switched the inline renderFlowChartMermaid to replaceChildren() (more idiomatic than innerHTML = '') and added a per-target WeakSet in-flight tracker that keeps the previous render's closure from racing the new render — its eventual element.innerHTML = svg is harmless on a detached node, and the new render always starts from a clean slate.

Tests

  • tests/flowchart-panel.test.js — added a second regression test (preview-source pre never duplicates across debounced mutations even with in-flight mermaid.render) that fires 7 mutations at 10 ms intervals (well inside the 250 ms debounce), uses a renderMermaid mock that mirrors the real mermaid.run closure (captures the input div, asynchronously sets innerHTML = svg on it regardless of DOM connection), and asserts the <pre> contains exactly one copy of the latest source and the render target holds exactly one <div class="mermaid"> child whose first element child is the latest <svg>.

Version 4.9.2 (2026-09-14)

Fixes

  • Standalone ASCII Art Generator — broken stylesheet path: src/ascii-generator.html:7 linked <link rel="stylesheet" href="../fonts.css" />. The HTML loads via BrowserWindow.loadFile(path.join(__dirname, 'ascii-generator.html')) where __dirname is src/, so ../fonts.css escaped the src/ directory and resolved to a non-existent <project>/fonts.css. Changed to fonts.css (same file, src/-relative — mirrors src/index.html:29). The window rendered without its font rules, leaving the header in the fallback system stack.
  • Standalone ASCII Art Generator — dead Box/Templates UI: the controller (src/renderer/ascii-controller.js) shipped three mode tabs (Text Banner / Box-Frame / Templates), 18 .template-btn[data-template] buttons, and a Box form (#box-text / #box-style / #box-padding) but wired none of them. Clicking any tab or button was a no-op. Wired all of them:
    • setMode(mode) toggles .active on the right .mode-tab and the matching .mode-section (text-mode / box-mode / templates-mode).
    • Template buttons call api.generate({ text: '', font: 'template:<id>' }) so the orchestrator owns template content; preview updates and the button gets .active.
    • Box mode renders the user text with a border using the chosen style (single / double / rounded / bold / ascii) and padding, exposed as a pure window.ASCIIBoxRenderer.renderBox(text, style, padding) helper.
    • All 11 brief-required behaviours (text-input / font-picker / font-search / insert / copy / save / generate, last-font persistence, debounced preview) remain intact.

Tests

  • New tests/ascii-controller.test.js — 6 tests covering the stylesheet path (no .. escape), pure box renderer (single + ascii styles), mode-tab switching (Box and Templates), and template button → preview wiring.

Version 4.9.1 (2026-09-14)

Fixes

  • Flowchart Panel save failed: getUserDataPath() IPC was not awaited in src/renderer.js:2439-2449, so the persistence path was computed as "[object Promise]/flowchart-session.json" and rejected by the write-text-file userData sandbox. Pre-resolved the path on panel register and cached it; persistence (read and write) now works correctly.

Version 4.9.0 (2026-09-14)

New: Visual Flow Chart Editor (Sidebar panel → "Flow Chart")

  • Pure flowchart-store.js — graph data store with bounded undo/redo (depth 50) and injectable persistence IO (testable without touching the filesystem)
  • 5 node shapes (process, decision, terminator, subroutine, document) × 3 edge kinds (solid, dotted, thick) with full keyboard accessibility
  • Hand-rolled SVG canvas: drag nodes, double-click to edit labels, Alt+drag from a node edge to wire connections, in-place label editing, delete + backspace to remove the selection
  • flowchart-shapes.js — pure SVG path templates (no DOM, fully unit-tested)
  • flowchart-mermaid.js — translates the graph to Mermaid flowchart TD source that renders identically in the preview pane
  • Sidebar panel src/sidebar/flowchart-panel.js with debounced preview (250 ms), debounced persistence (500 ms), and Ctrl+Z / Ctrl+Shift+Z / Delete / Backspace shortcuts
  • 3 thin IPC channels (get-user-data-path, read-text-file, write-text-file) sandboxed to app.getPath('userData') via path validation
  • Auto-save to <userData>/flowchart-session.json; restores on reopen
  • Rail button in the sidebar; toggle the panel with Ctrl+Alt+F
  • Insert-at-Cursor wraps the generated Mermaid in a fenced ```mermaid block at the current cursor position in the active editor tab
  • 73 new tests

New: ASCII Art Generator upgrade

  • Pure AsciiArt orchestrator (generate / listFonts / getFontMeta) unifying hand-coded fonts + figlet + 19 named templates behind one API
  • 17 hand-coded font tables extracted from inline renderer code (5 existing + 12 new: Big, Small, Lean, Slant, Isometric1-4, 3-D, 3x5, ANSI Shadow, Calvin S)
  • 19 named ASCII templates (arrows, flowcharts, banners, frames)
  • figlet@^1.8.0 dep with lazy-load + cache adapter (≥328 bundled fonts; pure JS, no native bindings)
  • 6 IPC handlers: ascii:generate / list-fonts / get-font-meta / save / copy / last-font
  • Standalone window rewrite: removed the ~385-line inline script; added a searchable font picker, Copy to Clipboard, and Save to File
  • Major cleanup: -1029 net lines of dead code (the in-app modal #ascii-art-dialog, the 800-line renderer controller, the show-ascii-generator* preload channels, and the obsolete textToASCII/createASCIIBox/etc. helpers)
  • 97 new tests

New: Editor Theme Registry (extension)

  • 12 new themes added: Catppuccin Latte / Frappé / Macchiato / Mocha, One Light, Tokyo Night Storm, Synthwave '84, Outrun, Winter is Coming (Light + Dark), Solarized Dark High Contrast, Spring Light
  • Total: 37 themes (15 light + 22 dark incl. 1 high-contrast), sorted into Light / Dark / High-Contrast tables in the README
  • Pure ThemeRegistry module; the View menu generator now reads list() + categories(); new per-theme CSS files live at src/styles/themes/<id>.css
  • <link disabled> preload + <link> toggle pattern (sub-millisecond theme switch — no flash, no re-fetch)
  • Aria-friendly: the high-contrast option is announced to assistive tech

Bug fixes

  • Plan 3: rail button tooltip Ctrl+Alt+F now actually wired (the shortcut existed but the panel toggle was missing)
  • Plan 3: destroy() cleanup on panel unmount — timers, listeners, and the store subscription are all released (no leaks when toggling repeatedly)
  • Plan 2: standalone window <script src> path corrected (was escaping src/)
  • Plan 2: font substitutions reverted — Isometric1-4 and Calvin S are actually restored from figlet's bundled fonts

Housekeeping

  • 1093 tests passing across 36 snapshots in 90 suites
  • Lint + Prettier clean across all 3 plans
  • Linux build verified end-to-end (AppImage + deb + snap produced)

Version 4.7.1 (2026-09-05)

New: Export Themes (Word + PDF)

  • Theme picker in the export dialog (basic and advanced mode) for PDF and DOCX: Default (Pandoc), Modern, Classic, Sepia, Minimal, Elegant
  • PDF: LaTeX header recolors/reformats headings + links (xcolor/titlesec, core-TeX packages only); DOCX: styles.xml surgery recolors Heading1-6/Title/ Subtitle/Hyperlink and swaps heading/body fonts
  • Themes persist in export presets; unknown ids in old presets fall back to Default instead of failing the export

Branding

  • New M↓ brand identity: app icons, favicons, tray icon, welcome mark, README wordmark (vector kit in assets/markdown-converter-assets/)

Fixes

  • Windows: pdfjs text/image extraction failed on Windows — standardFontDataUrl is now a proper file:// URL (raw backslash paths failed pdfjs's trailing-slash URL validation)
  • Windows: sharp temp-file cleanup (EPERM retry), path-separator test assertions, and pdfjs test timeouts fixed — the Windows CI job is green
  • FiraCode tooling downloads pinned to the immutable 6.2 release; .gitattributes stops CRLF checkout rewriting hash-pinned files
  • macOS pandoc extractor locates the binary in the archive (layout changed)
  • Packaged apps resolve bundled pandoc/markitdown next to the executable (resourcesPath lookup was wrong since 4.5 — packaged builds silently used system pandoc)

Version 4.7.0 (2026-09-05)

  • MarkItDown is now bundled: npm run bundle:markitdown freezes Microsoft's markitdown (MIT) + embedded Python runtime into a single ~75MB per-platform binary (bin/<platform>/markitdown) via PyInstaller (ML extras excluded); the app prefers the bundled binary and falls back to system installs
  • Packaging copies the bundled markitdown for Windows/macOS/Linux alongside Pandoc
  • THIRD-PARTY-NOTICES.md — full license inventory of everything distributed (bundled binaries, npm runtime deps, fonts, embedded Python packages)
  • SOURCES.md — GPL §3(b) written source offer for Pandoc / FFmpeg (GPL build) / PyInstaller bootloader, with pinned versions + SHA-256; LGPL relinking note for libvips
  • third-party-licenses/ — canonical texts: GPL-2.0, LGPL-2.1, MPL-2.0, Apache-2.0, OFL-1.1, PSF-Python
  • Help → Third-Party Notices & Licenses — in-app viewer for both documents
  • download-tools.js now SHA-256 pins and verifies every downloaded artifact (post-download and against the cache on every run; hard-fails on mismatch)
  • README gains a "Bundled Dependencies, Legal Notices & Credits" section
  • Large optional tools intentionally NOT bundled (documented): LibreOffice, MiKTeX/TeX Live, ImageMagick, PlantUML+JRE, Calibre

Version 4.6.1 (2026-09-05)

New Features

  • MarkItDown import — "File → Import with MarkItDown (Any Format)…" embeds Microsoft's markitdown (MIT) as an any-file → Markdown path: PDF, DOCX, PPTX, XLSX, Outlook .msg/.eml, EPUB, images, CSV/JSON/XML, ZIP; audio transcription and OCR with the [all] extras
    • Command auto-resolution: markitdown binary, then python -m markitdown / python3 -m markitdown (probed once, cached)
    • Same SEC-1 argv discipline as Pandoc (execFile only, paths never through a shell), 50MB input cap, 120s timeout, path-sanitized errors that surface markitdown's actionable pip install 'markitdown[...]' hints
    • Output written next to the source as <name>.md (numeric suffix instead of overwriting) and opened in a new tab; markitdown:available / markitdown:convert IPC for future renderer flows
  • AI Assistant: Anthropic-compatible provider — any base URL speaking the Anthropic messages schema (LiteLLM proxies, Bedrock gateways, local servers); x-api-key + Bearer auth, keyless proxies supported, tolerates bases with or without a trailing /v1

Bug Fixes

  • File → Open PDF crashed the PDF editor (null operation matched no section; now defaults to Merge)
  • Backlinks panel required the wrong module path (failed at registration)
  • writing-studio engines/panels now await their IPC-backed settings/file backends (eliminates JSON.parse("[object Promise]") crashes)
  • Manuscript panel's window.prompt (unsupported in Electron) replaced with an inline dialog; collaboration comment store made async to match its IO

Version 4.6.0 (2026-09-05)

New Features

AI Assistant Plugin (multi-provider)

  • Chat sidebar panel with rolling conversation history and insert-reply-into-document
  • Providers: OpenAI, Anthropic, Ollama, LM Studio, and any OpenAI-compatible endpoint
  • All provider traffic proxied through the main process — API keys never enter the renderer and the CSP stays closed to AI endpoints
  • Commands: AI Summarize / Improve / Explain / Translate selection
  • Answers the writing-studio ai:analyze contract, finally enabling the Proofread panel

Collaboration Plugin (inline comments)

  • Anchor-based comments stored in .comments/ sidecar files (never exported, never committed)
  • Comments sidebar panel: add at cursor, list, resolve, delete, jump to anchor
  • Drift detection flags moved/edited anchors; F8 navigates to the next open comment
  • [[Note]], [[Note|alias]], [[Note#section]] render as links in the preview (code blocks excluded)
  • Clicking a wiki-link opens the note or offers to create it
  • Backlinks sidebar panel scans the folder (bounded BFS) for documents linking to the current one

Crash Recovery / Session Restore

  • Open tabs (paths + unsaved buffer content) snapshotted to localStorage, debounced on edits, on tab changes, on unload, and once a minute
  • Restore prompt on launch with per-tab restore, clean-fresh option, and 2MB content budget

Document Version History

  • Every save snapshots the previous on-disk content to <userData>/versions/
  • History sidebar panel: list, restore (with safety snapshot), unified diff vs. current, delete, manual "save version now"
  • Per-document pruning (20 versions), path-hash storage, id-validated reads

Editor

  • Vim keybindings (View → Vim Mode, persisted, live toggle via CodeMirror Compartment)
  • Snippet Tab-expansion: type a snippet name and press Tab to insert it
  • Zen Mode word-goal setter (the HUD progress bar finally has UI)

Export / Conversion

  • Real PDF encryption: pdf-lib swapped for @cantoo/pdf-lib — encrypt/decrypt/permissions now actually work (UI auto-enables via the capability probe)
  • XLSX export: markdown tables → native Excel workbook, one sheet per table (no Pandoc needed)
  • ODT headers/footers + page size: real ODF styles.xml patching replaces the empty stub
  • Local PlantUML rendering: diagrams render on-machine via the plantuml CLI when installed; plantuml.com stays as fallback
  • KaTeX bundled locally (CSS + fonts): math renders offline, no CDN calls
  • Writing heatmap (GitHub-style 30-day grid) in the writing-studio Goals panel

Platform

  • Quick Note global scratchpad (Ctrl+Alt+Q, works when unfocused; appends to notes/quick-notes.md)
  • Deep link protocol markdownconverter://open?path=…
  • REPL confirmation dialog before first code execution per language per session (unsandboxed-execution guard rail)
  • Writing-studio's four sidebar panels (Manuscript/Goals/Snapshots/Proofread) are now actually wired with rail icons
  • Plugin sidebar panels get automatic rail icons via registerPanel({icon})

Bug Fixes

  • Ctrl+Shift+P collision: PDF (Enhanced) export now Ctrl+Alt+Shift+P; Command Palette keeps Ctrl+Shift+P
  • Universal Converter's Pandoc tool no longer always reports "not installed" (checkConverterAvailable gained a pandoc case with bundled-binary check)
  • CLI headless export: removed dangling --css / --reference-doc flags that made pandoc exit with an error; --self-contained replaced with --standalone (Pandoc 3.x)
  • Removed dead "Open Export Options Dialog…" button from the converter dialog
  • Removed duplicate styles-zen.css include

Security

  • AI provider requests carry size caps (200KB prompt), timeouts (120s), and user-safe error surfaces
  • Version-history reads validate ids against traversal; history listing requires a valid document path
  • PlantUML local rendering removes the diagram-text exfiltration path when a local CLI exists (CVE-MC-007 follow-up)

Tests

  • New suites: OdtStyling, AiProviders, ai-assistant prompts, collaboration comment-store, wiki-links/backlinks, session-store, XlsxExporter, VersionHistory
  • PDFOperations encryption tests rewritten for the real-encryption reality

Version 4.0.0 (2026-03-04)

Major Changes

  • CodeMirror 6 Editor — Replaced textarea with CodeMirror 6 featuring syntax highlighting, code folding, bracket matching, multiple cursors, and auto-indent
  • Sidebar Panel System — Collapsible sidebar with File Explorer, Git, Snippets, and Templates panels
  • Command Palette — Ctrl+Shift+P to search and execute all app actions
  • Code Execution (REPL) — Run JavaScript, Python, and Bash code blocks directly from the preview

New Features

  • Print Preview dialog with paper size, orientation, margins, scale, and page range controls
  • Image paste from clipboard and drag-drop support with auto-save to assets folder
  • Document templates library (10 templates: blog post, meeting notes, tech spec, changelog, README, project plan, API docs, tutorial, release notes, comparison)
  • Markdown extensions: footnotes, admonitions (note/warning/tip/danger/info), and toc table of contents
  • PlantUML diagram rendering alongside Mermaid
  • Welcome tab with onboarding and "What's New" feature showcase
  • System spell checking with context menu suggestions and dictionary support
  • Enhanced status bar with word count, character count, line/column, encoding, and language mode
  • Grouped toolbar with visual section separators
  • Breadcrumb bar showing current file path

New Export/Import Formats

  • Reveal.js slides (.html)
  • Beamer slides (.pdf)
  • Confluence/Jira wiki markup (.txt)
  • MOBI e-books (via Calibre)
  • Developer formats: JSON, YAML, XML, TOML

Security

  • Content Security Policy (CSP) meta tag
  • File size validation (50MB limit)
  • Error message sanitization (stripped file paths)
  • Conversion rate limiting (2-second debounce)

Dependencies Updated

  • marked: 16.x to 17.x (with marked-highlight extension)
  • pdfjs-dist: 3.x to 5.x (new worker model)
  • html2pdf.js: 0.10 to 0.14
  • pdfkit: 0.14 to 0.17
  • dompurify, docx, and others updated to latest

Testing

  • 80 tests across 7 test suites
  • New tests for sidebar manager, command palette, print preview, markdown extensions, and utility functions

Breaking Changes

  • Editor is now CodeMirror 6 (replaces textarea)
  • marked API changed to use marked.use() instead of marked.setOptions()
  • pdfjs-dist upgraded to v5 with new worker model

Version 2.1.0 (December 14, 2025)

🎨 UI/UX Improvements

Subtle & Small Preview Popout Button

  • Redesigned popout button with minimalist aesthetic
  • Removed border for cleaner appearance
  • Reduced size: 11px font, 2px×6px padding (previously 14px font, 4px×8px padding)
  • Added opacity transition: 50% when idle, 100% on hover
  • Subtle background effect on hover instead of heavy border styling
  • File: src/styles.css:195-211

Simplified Table Headers in Preview

  • Removed gradient background from table headers in modern theme
  • Changed from var(--primary-gradient) (purple gradient) to simple light gray (#f0f0f0)
  • Updated text color to dark (#333333) for better readability
  • Clean, professional appearance matching standard themes
  • File: src/styles-modern.css:445-449

📥 Enhanced Import Capabilities

Comprehensive Format-to-Markdown Conversion

Dramatically expanded the "Import Document" feature to support 30+ file formats:

Supported Formats:

  • Documents: DOCX, ODT, RTF, HTML, HTM, TEX, EPUB, PDF, TXT
  • Presentations: PPTX, ODP
  • Markup Languages: RST, Textile, MediaWiki, Org-mode, AsciiDoc, TWiki, OPML
  • E-book Formats: EPUB, FB2
  • LaTeX Formats: TEX, LATEX, LTX
  • Web Formats: HTML, HTM, XHTML
  • Wiki Formats: MediaWiki, DokuWiki, TikiWiki, TWiki
  • Data Formats: CSV, TSV, JSON

Format-Specific Optimizations:

  • PDF text extraction with XeLaTeX engine
  • CSV/TSV automatic table conversion
  • JSON structure handling
  • Improved error messages with format hints

Access: File → Import Document (Ctrl+I) File: src/main.js:1933-1994

🎨 Exhaustive ASCII Art Generator

5 New Text Banner Styles

Complete alphabet (A-Z) and numbers (0-9) support for all styles:

  1. Standard - Classic ASCII art with slashes and underscores
  2. Banner - Large format using # characters (7-line height)
  3. Block - Modern Unicode block characters (█ ╔ ╗ ═ ║)
  4. Bubble - Circular bubble letters (Ⓐ Ⓑ Ⓒ)
  5. Digital - Digital display style (▄ ▀ ▐ ▌)

File: src/renderer.js:3397-3537

19 Professional ASCII Templates

Organized into 4 categories with expanded options:

Arrows & Flow (4 templates):

  • Arrow Right - Horizontal flow indicators
  • Arrow Down - Vertical flow indicators
  • Decision - Binary decision diagrams
  • Process Flow - Multi-step process visualization

Diagrams & Charts (6 templates):

  • Flowchart - Advanced flowchart with decision branches and loops
  • Sequence - Sequence diagrams for User-System-Database interactions
  • Network - Server-client network topology
  • Hierarchy - Organizational tree structures
  • Timeline - Milestone visualization with dates
  • Table Simple - Basic table template with borders

Boxes & Containers (4 templates):

  • Header - Section header with decorative borders
  • Note Box - Important notes with rounded corners (┏━━┓)
  • Warning Box - Warning messages with bold borders (╔═══╗)
  • Info Box - Information boxes with subtle styling (╭───╮)

Decorative Elements (6 templates):

  • Divider - Horizontal section separator (═══)
  • Separator Fancy - Elegant rounded divider
  • Brackets - Japanese-style brackets 【 】
  • Banner Stars - Star-bordered banners
  • Checklist - Task lists with ✓ checkmarks
  • Progress Bar - Visual progress indicators

Features:

  • All ASCII art automatically wrapped in code blocks for proper rendering
  • Preserved formatting in markdown preview and all export formats
  • Categorized template selection interface
  • Real-time preview generation

Access: Tools → ASCII Art Generator Files: src/renderer.js:3513-3671, src/index.html:427-466

📝 Technical Improvements

  • Enhanced ASCII art detection in Word template exporter
  • Improved monospace font rendering across all export formats
  • Better code block preservation in PDF and Word exports
  • Optimized template categorization and organization

🔧 Files Modified

  • src/styles.css - Preview popout button styling
  • src/styles-modern.css - Table header simplification
  • src/main.js - Enhanced import function, version update
  • src/renderer.js - ASCII art generator enhancements
  • src/index.html - ASCII template UI organization
  • package.json - Version bump to 2.1.0

Version 2.0.0 (Previous Release)

Major Features

  • Export Profiles - Save and reuse export configurations
  • Mermaid.js diagram support
  • Command Palette (Ctrl+Shift+P)
  • GitHub Light/Dark preview themes
  • Table Generator
  • ASCII Art Generator (basic)
  • Resizable Preview Pane
  • Pop-out Preview Window
  • Configurable page sizes (A3-A5, B4-B5, Letter, Legal, Tabloid, Custom)
  • Custom Headers & Footers for exports
  • Enhanced PDF and Word export with templates
  • 22 beautiful themes

Core Capabilities

  • Cross-platform markdown editor with live preview
  • Universal document conversion (30+ formats)
  • PDF Editor (merge, split, compress, rotate, watermark, encrypt)
  • Batch file conversion
  • File association support
  • Advanced export options
  • Multi-tab interface

Installation & Usage

Prerequisites

  • Pandoc - Required for document conversion
  • Optional: LibreOffice, ImageMagick, FFmpeg for universal converter

Download

Get the latest release from: https://github.com/amitwh/pan-converter/releases

Supported Platforms

  • Windows (x64)
  • Linux (AppImage, .deb, .snap)
  • macOS (planned)

Contributing

Contributions are welcome! Please see CLAUDE.md for development guidelines.

Author: Amit Haridas (amit.wh@gmail.com) License: MIT Repository: https://github.com/amitwh/pan-converter