From f50ffe8ed27e06ad22b00f0989022efc5de098c1 Mon Sep 17 00:00:00 2001 From: Amit Haridas Date: Mon, 15 Sep 2025 16:36:23 +0530 Subject: [PATCH] Release v1.5.0: Enhanced Features and Open Source Compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Major improvements including optional advanced export options, removed proprietary dependencies for better open-source compatibility, and comprehensive new features for enhanced user experience. 🔧 Export Functions & Advanced Options: • Fixed export function issues after advanced options integration • Added optional advanced export checkbox (unchecked by default) • Clean UI separation between simple and advanced export workflows 🏗️ Open Source Compatibility: • Removed bundled Pandoc binaries - requires system installation • Replaced proprietary XLSX with open-source CSV export • Eliminated licensing concerns with bundled dependencies ✨ Advanced User Experience Features: • Auto-save system with visual indicators every 30 seconds • Enhanced document statistics (lines, paragraphs, sentences, reading time) • Recent files menu with persistent storage (last 10 files) • Mathematical expression support with KaTeX rendering • Improved export dialog with better user experience 📚 Updated documentation with new dependency requirements and features 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- CLAUDE.md | 53 +++++++- LICENSE | 21 +++ README.md | 15 ++- assets/icon-proper.ico | Bin 0 -> 5632 bytes assets/icon.icns | Bin 0 -> 8819 bytes assets/icon.ico | Bin 0 -> 3919 bytes package.json | 50 +++++++- src/index.html | 26 +++- src/main.js | 135 +++++++++++++++++--- src/renderer.js | 282 +++++++++++++++++++++++++++++++++++------ src/styles.css | 177 ++++++++++++++++++++++++++ 11 files changed, 680 insertions(+), 79 deletions(-) create mode 100644 LICENSE create mode 100644 assets/icon-proper.ico create mode 100644 assets/icon.icns create mode 100644 assets/icon.ico diff --git a/CLAUDE.md b/CLAUDE.md index 7fc61b5..a86f413 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ **PanConverter** is a cross-platform Markdown editor and converter powered by Pandoc, built with Electron. It provides professional-grade editing capabilities with comprehensive export options. -**Current Version**: v1.4.0 +**Current Version**: v1.5.0 **Author**: Amit Haridas (amit.wh@gmail.com) **License**: MIT **Repository**: https://github.com/amitwh/pan-converter @@ -13,10 +13,10 @@ ### Core Technologies - **Electron** - Cross-platform desktop application framework -- **Pandoc** - Universal document converter (required dependency) +- **Pandoc** - Universal document converter (required system dependency) - **marked** - Markdown parsing and rendering - **highlight.js** - Syntax highlighting -- **XLSX** - Spreadsheet export functionality +- **KaTeX** - Mathematical expression rendering - **DOMPurify** - HTML sanitization ### Application Structure @@ -109,7 +109,48 @@ gh release create v1.2.1 --title "Title" --notes "Release notes" \ ## Feature Implementation Guide -### v1.4.0 Advanced Export & Batch Processing (Latest) +### v1.5.0 Enhanced Features & Open Source Compatibility (Latest) + +#### 🔧 Export Function Fixes & Optional Advanced Options +**Export Dialog Enhancement** (`src/index.html:125-133`, `src/renderer.js:960-985`) +- Fixed export function issues after advanced export options integration +- Added optional advanced export options via checkbox toggle (unchecked by default) +- Basic export options always visible, advanced options hidden until enabled +- Clean UI separation between simple and advanced export workflows + +#### 🏗️ Open Source Compatibility & Dependency Removal +**Removed Proprietary Dependencies** (`src/main.js:430-450`, `package.json:32-37`) +- Removed bundled Pandoc binaries - now requires system-installed Pandoc +- Replaced proprietary XLSX dependency with open-source CSV export +- Removed non-essential bundled binaries to ensure open-source compatibility +- Updated export functions to use system Pandoc installation + +#### ✨ Advanced User Experience Features +**Auto-Save System** (`src/renderer.js:445-484`) +- Automatic saving every 30 seconds with visual indicators +- Smooth slide-in animation for auto-save notifications +- Prevents data loss during extended editing sessions +- Integrated with file opening and tab creation workflows + +**Enhanced Document Statistics** (`src/renderer.js:385-444`) +- Comprehensive statistics: words, characters, lines, paragraphs, sentences +- Estimated reading time calculation (200 words per minute) +- Real-time updates as user types +- Professional presentation in status bar + +**Recent Files Management** (`src/main.js:69-114`, `src/renderer.js:487-512`) +- Recent files menu with last 10 opened files +- Persistent storage via localStorage and user data directory +- Menu integration with File > Recent Files submenu +- Clear recent files functionality with menu rebuild + +**Mathematical Expression Support** (`src/renderer.js:1099-1130`, `src/renderer.js:292-306`) +- KaTeX integration for rendering mathematical expressions +- Support for multiple delimiters: $$, $, \\[\\], \\(\\) +- Real-time math rendering in preview pane +- Fallback handling for missing KaTeX library + +### v1.4.0 Advanced Export & Batch Processing #### 🔧 Fixed File Association Support **File Loading Fix** (`src/main.js:385-390`, `src/renderer.js:485-486`) @@ -377,5 +418,5 @@ gh release create v1.2.1 --title "Title" --notes "Release notes" \ --- -**Last Updated**: September 14, 2025 -**Claude Assistant**: Development completed for v1.4.0 with fixed file associations, advanced export options with templates and metadata, batch file conversion system, and enhanced UI components. \ No newline at end of file +**Last Updated**: September 15, 2025 +**Claude Assistant**: Development completed for v1.5.0 with optional advanced export options, removed proprietary dependencies for open-source compatibility, enhanced auto-save functionality, comprehensive document statistics, recent files management, and mathematical expression support using KaTeX. \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1d0db01 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Amit Haridas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 81c6419..a0306d8 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,14 @@ A cross-platform Markdown editor and converter powered by Pandoc. - 👁️ **Live Preview** - See your markdown rendered in real-time with synchronized scrolling - 🎨 **Multiple Themes** - Choose from Light, Dark, Solarized, Monokai, or GitHub themes - 💾 **Auto-Save** - Never lose your work with automatic saving every 30 seconds +- 📊 **Enhanced Statistics** - Detailed document statistics including word count, character count, lines, paragraphs, sentences, and estimated reading time +- 🕒 **Recent Files** - Quick access to recently opened files via File menu +- 🧮 **Math Support** - Render mathematical expressions using KaTeX (supports $$, $, \\[\\], \\(\\) delimiters) ### 📤 Export & Conversion - 📄 **Enhanced PDF Export** - Robust PDF generation with multiple LaTeX engine fallbacks (XeLaTeX, PDFLaTeX, wkhtmltopdf) - 📄 **Document Export** - Convert to HTML, DOCX, LaTeX, RTF, ODT, EPUB, PowerPoint (PPTX), and OpenDocument Presentation (ODP) -- 📊 **Spreadsheet Export** - Export markdown tables to Excel (XLSX/XLS) and OpenDocument Spreadsheet (ODS) formats +- 📊 **Spreadsheet Export** - Export markdown tables to CSV format for compatibility with any spreadsheet application - 📥 **Document Import** - Import DOCX, ODT, RTF, HTML, PDF, and presentation files to markdown - 📋 **Table Creation Helper** - Built-in table generator for easy markdown table creation @@ -50,9 +53,9 @@ For optimal PDF export, install a LaTeX engine (recommended): Download the latest release for your platform from the [Releases](https://github.com/amitwh/pan-converter/releases) page. #### Linux -- **AppImage**: `PanConverter-1.3.1.AppImage` (universal, may require `--no-sandbox` flag) -- **Debian Package**: `pan-converter_1.3.1_amd64.deb` -- **Snap Package**: `pan-converter_1.3.1_amd64.snap` +- **AppImage**: `PanConverter-1.5.0.AppImage` (universal, may require `--no-sandbox` flag) +- **Debian Package**: `pan-converter_1.5.0_amd64.deb` +- **Snap Package**: `pan-converter_1.5.0_amd64.snap` ### Install from Source ```bash @@ -73,7 +76,9 @@ npm start ### Export Options - **Documents**: HTML, PDF, DOCX, LaTeX, RTF, ODT, EPUB - **Presentations**: PowerPoint (PPTX), OpenDocument Presentation (ODP) -- **Spreadsheets**: Excel (XLSX/XLS), OpenDocument Spreadsheet (ODS) +- **Spreadsheets**: CSV format for tables (compatible with Excel, LibreOffice, Google Sheets) +- **Advanced Export Options**: Optional template support, metadata insertion, table of contents, section numbering, and PDF-specific settings +- **Batch Conversion**: Convert entire folders of markdown files with progress tracking ### Import & Conversion - **Import Documents**: Convert DOCX, ODT, RTF, HTML, PDF, and presentation files to Markdown diff --git a/assets/icon-proper.ico b/assets/icon-proper.ico new file mode 100644 index 0000000000000000000000000000000000000000..46ffe197dc4563202f1a5d52e8fc67a268426744 GIT binary patch literal 5632 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index d2bac07..cc9d9d6 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,14 @@ { "name": "pan-converter", - "version": "1.4.0", + "version": "1.5.0", "description": "Cross-platform Markdown editor and converter using Pandoc", "main": "src/main.js", "scripts": { "start": "electron .", "test": "echo \"Error: no test specified\" && exit 1", "build": "electron-builder", - "build:win": "electron-builder --win", + "build:win": "cross-env CSC_LINK=code-signing-cert.pfx CSC_KEY_PASSWORD=PanConverter2024! electron-builder --win", + "build:win-unsigned": "cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --win", "build:mac": "electron-builder --mac", "build:linux": "electron-builder --linux", "dist": "electron-builder --publish=never", @@ -23,6 +24,7 @@ "author": "Amit Haridas ", "license": "MIT", "devDependencies": { + "cross-env": "^10.0.0", "electron": "^37.4.0", "electron-builder": "^26.0.12", "sharp": "^0.34.3" @@ -32,8 +34,7 @@ "dompurify": "^3.2.6", "electron-store": "^10.1.0", "highlight.js": "^11.11.1", - "marked": "^16.2.1", - "xlsx": "^0.18.5" + "marked": "^16.2.1" }, "build": { "appId": "com.panconverter.app", @@ -58,7 +59,7 @@ { "ext": "markdown", "name": "Markdown Document", - "description": "Markdown Document", + "description": "Markdown Document", "mimeType": "text/markdown", "role": "Editor" } @@ -68,8 +69,43 @@ "icon": "assets/icon.icns" }, "win": { - "target": "nsis", - "icon": "assets/icon.ico" + "target": [ + { + "target": "nsis", + "arch": ["x64"] + }, + { + "target": "portable", + "arch": ["x64"] + }, + { + "target": "zip", + "arch": ["x64"] + } + ], + "icon": "assets/icon.png", + "artifactName": "${productName}-${version}-${arch}.${ext}", + "requestedExecutionLevel": "asInvoker", + "signAndEditExecutable": true + }, + "nsis": { + "oneClick": false, + "perMachine": false, + "allowToChangeInstallationDirectory": true, + "displayLanguageSelector": true, + "installerIcon": "assets/icon-proper.ico", + "uninstallerIcon": "assets/icon-proper.ico", + "installerHeaderIcon": "assets/icon-proper.ico", + "createDesktopShortcut": true, + "createStartMenuShortcut": true, + "shortcutName": "PanConverter", + "runAfterFinish": true, + "menuCategory": "Productivity", + "license": "LICENSE", + "warningsAsErrors": false, + "artifactName": "${productName}-Setup-${version}.${ext}", + "deleteAppDataOnUninstall": false, + "differentialPackage": true }, "linux": { "target": [ diff --git a/src/index.html b/src/index.html index e597527..4f81251 100644 --- a/src/index.html +++ b/src/index.html @@ -122,8 +122,20 @@
-
- + +
+ + Enable for templates, metadata, bibliography, and advanced PDF settings +
+ + +