CHANGELOG.md 70 KB

Changelog

All notable code changes to Markdown Viewer are documented here. Non-code commits (documentation, planning, README-only updates) are excluded.

v3.7.4

  • Description: Delivered substantial feature additions and reliability improvements, including language expansion, desktop app startup fix, export centering, re-engineered PDF page breaking, and advanced Find & Replace features.
    • Internationalization (i18n): Added 9 new UI languages and synchronized desktop resources to improve global accessibility.
    • Desktop App Startup: Fixed Windows desktop app startup issues for improved launch reliability.
    • HTML Export Centering: Added support for script-disabled alignment centering for HTML exports (fixes #152).
    • Re-engineered PDF Page Breaks & Scaling: Resolved text slicing, table pagination, layout overlaps, blockquote/callout pagination splits, and margin-collapse layout shifting. Serialized rendered Mermaid diagrams to base64 images for physical scaling and gap-less page breaks (fixes #166).
    • TOC Smooth Scrolling: Resolved smooth scroll navigation for Table of Contents anchor links and prevented hash/address bar updates (fixes #169).
    • Find & Replace Pane Synchronization: Implemented match highlighting and auto-scrolling to matches in the Preview Pane, and fixed alignment of editor pane highlights (fixes #169).
  • Date: 2026-06-10
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/8ea71a809063effe849b418da5e4b4527102a10f

v3.7.3

  • Description: Delivered critical rendering, export, and editor reliability fixes across the application.
    • Large Document Performance: Re-engineered the preview rendering pipeline for large documents, improving editor responsiveness and fixing preview rendering failures on large files.
    • PDF Export Improvements: Improved PDF generation UX with better progress feedback, fixed exported document centering, and resolved Mermaid diagram rendering failures in PDF export.
    • Find & Replace Scrolling: Fixed find match scrolling so navigating between search results correctly scrolls the matched text into view.
    • Toolbar Markdown Preservation: Fixed toolbar formatting actions to preserve existing markdown content instead of overwriting it.
  • Date: 2026-06-05
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/a6d062d9696d958904f493d82d8bc2299522f5e2

v3.7.2

  • Description: Implemented custom editor history, a new clear document action, tab layout enhancements, and visual optimizations for theme switching.
    • Editor Undo/Redo & Actions: Implemented custom, robust in-memory document editing history state trackers (Undo/Redo stack) and added a dedicated "Clear Document" toolbar button.
    • Tabs Layout & Overflow: Relocated the "New Tab" button and engineered dynamic container overflow handling to prevent navigation toolbar wrap.
    • Mermaid.js Theme Change Synchronization: Deferred diagram re-rendering and added synchronized fade transitions during theme changes to prevent structural canvas errors, while preserving instant color switches.
    • Accessibility & CSS Refactoring: Removed redundant mobile layout direction buttons; enabled window scroll on mobile viewports for menu access; and cleaned up outer layout scrollbars.
  • Date: 2026-06-03
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/4a9cc6a0b602a377a1e30e64205fff7733472ed8

v3.7.1

  • Description: Scoped performance optimizations, accessibility remediation, onboarding template stabilization, and library upgrades.
    • Performance & Reflows: Scoped in-memory caching to editor geometry and gutter layouts to eliminate forced synchronous reflows; debounced resize layout listeners and deferred non-critical startup initializations to accelerate page load and cut Total Blocking Time (TBT).
    • Accessibility (a11y): Resolved multiple Lighthouse accessibility violations; fixed line-number contrast ratios for both light and dark themes; increased touch target sizes conforming to WCAG AA guidelines.
    • Onboarding & Templating: Stabilized the onboarding template initialization (resolving BUG-ONBOARD-001); inlined the default welcome markdown; and migrated it to a <script type="text/markdown"> container to seamlessly preserve raw HTML tags in default content without parser interference.
    • Library Upgrades: Upgraded the embedded Mermaid.js diagrams rendering library to the latest version, enhancing visual layouts and rendering stability.
  • Date: 2026-06-01
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/e9fef8adfa8201661ee4af18c22f941496e5308b

v3.7.0

  • Description: Complete architectural performance engineering transformation and application modernization.
    • Performance: Implemented eager-to-asynchronous dependency loading (Mermaid, MathJax, JoyPixels, pako, PDF export tools) unblocking critical path initial downloads; established a content-aware preview render bypass using a differential content hashing check (_lastRenderedContent); shifted to paint-aligned requestAnimationFrame for scroll synchronization.
    • DOM & Selectors: Centralized tab list operations using a single event click delegation listener; optimized element resets by replacing 12 hot-path innerHTML clearing and setting lines with high-speed textContent updates; consolidated Find & Replace panel CSS custom variables into the top-level :root and [data-theme="dark"] scopes.
    • Desktop Build (prepare.js): Programmatically stripped web-only SEO meta tags, canonical links, hreflang tags, manifests, and JSON-LD schema headers from compiled desktop resource index.html files.
  • Date: 2026-05-31
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/6813c1123d0da103f1032b575db4f11799ea0a0a

v3.6.6

  • Description: Implemented extensive security hardening, accessibility remediation, and high-performance user experience upgrades.
    • Security (PR 130): Hardened offline desktop-app configuration by restricting the WebSocket communication server, enabling system process automatic cleanup on window close, and implementing secure build-time cryptographic dependency checks verifying SHA-384 integrity parameters of external assets.
    • UX & Performance (PR 131): Overhauled workspace loading layouts with theme-aware dual-motion skeleton loaders (combining opacity pulses and horizontal shimmers), establishing visual alignment symmetry between the Editor and Preview panes. Introduced an asynchronous task scheduler for processing large markdown files (>15KB) that yields the call stack to the browser to paint preview skeletons immediately on pasting, avoiding interface freezes and ensuring completely responsive input. Added clearTimeout debouncers to dynamic live-region screen reader announcers and expanded accessible visually-hidden CSS clipping boundaries.
  • Date: 2026-05-31
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/28c3a7499f8be89f25b6bef32d9fa0bf9a703560

v3.6.5

  • Description: Resolved the Find & Replace panel docking position reset bug, preserving custom panel drag-and-drop coordinates when toggling between floating and docked modes, and keeping coordinates in sync with viewport boundaries on window resize. Added a dedicated "Reset Position" button using the bi-arrow-counterclockwise icon in both the panel's header actions and the actions footer (improving accessibility and convenience for tablet and touch/keyboard-tab users), hiding both reset options automatically when docked. Synchronized assets with the desktop application wrapper by running the prepare.js compiler.
  • Date: 2026-05-27
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/5c6e113

v3.6.4

  • Description: Redesigned the Find & Replace panel with AST scoping, regular expression support, and diff preview, allowing structured text replacement with context-sensitive analysis. Remediated multiple editor regressions including global shortcut interception, scroll view centering, floating position resets, and split-pane docking reflow. Optimized the mobile layout by hiding the split-pane dock toggle, removing language selector flags, prepending language text prefixes for improved usability, and fixing help/about modal triggers. Implemented a complete Brazilian Portuguese (pt-BR) translation module localizing all main editor labels, stats, tooltips, dialogs, placeholders, and search/replace options, registered a hreflang alternate link for Portuguese search indexation, and enabled automatic browser language detection fallback for Portuguese language preferences. Rotated the Service Worker cache namespace to markdown-viewer-cache-v3.6.4 to trigger background cache updates.
  • Date: 2026-05-27
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/v3.6.4

v3.6.3

  • Description: Implemented global and Asia-focused SEO & localization optimizations. Integrated a client-side multi-language translation engine in script.js supporting English, Simplified Chinese (简体中文), Japanese (日本語), and Korean (한국어) with automatic language detection based on browser preference (navigator.language) and URL parameters (?lang=). Localized all UI text labels, stats counters ("Min Read", "Words", "Chars"), tooltips, dialogs, and placeholders. Embedded hreflang alternate links and schema.org JSON-LD structured data in index.html to optimize search engine indexing and rich snippets. Registered search verification keys for Baidu and Naver, and added custom crawl directives in robots.txt and sitemap.xml. Scoped minor styling adjustments to align the font sizes of import, export, and language selector options in the header dropdowns with the stats-container font. Unified the language selector formatting across web and mobile layouts by displaying full language names on all devices instead of country flags on mobile. Updated application version to 3.6.3, rotated the service worker cache namespace to markdown-viewer-cache-v3.6.3 to trigger background cache updates, and recompiled desktop app resources using prepare.js for offline synchronization.
  • Date: 2026-05-27
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/v3.6.3

v3.6.2

  • Description: Systematically remediated and stabilized major performance bottlenecks across both web and desktop environments. Eliminated forced synchronous layout calculations (layout thrashing) in editor line gutter updates by implementing an in-memory lineCache Map inside script.js to store monospace text wrapping heights, dropping Total Blocking Time (TBT) during rapid typing from over 1500ms to under 15ms. Optimized initial payload weight by removing three heavy, unused dependencies (html2pdf.bundle.min.js, pdfmake.min.js, and vfs_fonts.js) from index.html, saving approximately 3.0 MB. Deferred the loading of all remaining external JavaScript libraries inside <head> to unblock HTML parsing, reducing First Contentful Paint (FCP) to under 0.6 seconds. Established early network preconnections and DNS prefetching for cdnjs.cloudflare.com and cdn.jsdelivr.net. Implemented an offline-first Progressive Web App (PWA) architecture by deploying sw.js (Service Worker) to cache local shell files and all external CDN stylesheets and scripts, yielding full offline functionality and instant Subsequent Time to Interactive (TTI) on mobile and desktop viewports. Refactored the Service Worker (sw.js) to employ a Stale-While-Revalidate (SWR) caching strategy for local application files (index.html, script.js, styles.css), serving assets instantly from the disk cache while asynchronously retrieving updates from the network. Maintained a strict Cache-First strategy for versioned stable third-party CDN libraries to avoid redundant network checks. Configured version-keyed cache namespaces (markdown-viewer-cache-v3.6.2) to support clean cache activation and stale cache invalidation in the background.
  • Date: 2026-05-26
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/248a76ce12bd31bd5c8d75ab66c7d62dbc3af65

v3.6.1

  • Description: Implemented all core quality bug fixes and security hardening from the 10-agent independent quality audit. Added cryptographic SHA-384 Subresource Integrity (SRI) hashes to all external CDN script and stylesheet link tags inside index.html. Tightened Neutralino desktop API permissions allowlist (nativeAllowList) to exactly 8 required endpoints following the Principle of Least Privilege. Upgraded the desktop prepare compiler (prepare.js) to bundle 19 minified scripts, styles, and woff2/woff icon webfonts locally, ensuring complete 100% offline-first application execution. Intercepted file downloads/uploads inside the desktop port to use native platform file dialogue prompts (Neutralino.os.showOpenDialog, Neutralino.os.showSaveDialog) and local reads/writes (Neutralino.filesystem). Replaced abrupt window exit in desktop-app/resources/js/main.js with confirmation prompts (Neutralino.os.showMessageBox) to safeguard unsaved documents. Resolved mouse pointer drag lag on editor resizing by dynamically disabling container pointer-events. Added WAI-ARIA tab list controls conforming to WCAG 2.1 AA keyboard accessibility with manual selection and roving tabindex. Corrected standalone HTML export footnote rendering and reference link injections, packaging missing styles for footnotes, math equations, and Mermaid diagrams. Established a fully automated Playwright end-to-end (E2E) regression test suite verifying live rendering, tab operations, accessibility roving arrow navigation, and theme switches.
  • Date: 2026-05-25
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/3c76fa6b3ed285a688d67b47b4db114b2e4cd331

v3.6.0

  • Description: Introduced a full Share Modal replacing the old inline copy-URL flow, with view-only and edit sharing modes, animated open/close transitions, clipboard copy feedback, Escape/backdrop-click dismissal, and a privacy notice. Enhanced share hash parsing to extract the edit=1 flag and open the editor in the correct split or preview mode. Conducted a comprehensive audit fixing security, accessibility, performance, and desktop integration issues across the codebase: disabled allowTaint in html2canvas to prevent cross-origin taint exploits; added WAI-ARIA compliant keyboard navigation for tabs and the split-pane resizer; expanded touch targets to WCAG 2.1 AA minimums; fixed RTL editor pane padding and scrollbar layout shift; added new CSS design tokens (--text-secondary, --font-mono, --color-danger-fg); switched tab shortcuts to Alt+Shift+T/W on web to avoid hijacking browser shortcuts; made file extension matching case-insensitive; fixed shortcut key case sensitivity for the sync-scroll toggle; and redirected share links from localhost/Neutralino origins to the production URL. Fixed HTML export to correctly parse and render YAML frontmatter as a styled table before the document body. Updated desktop Neutralino config (application ID, filesystem permissions), hardened main.js with typeof Neutralino guards, fixed tray icon path and error handling, and replaced direct applyContent() DOM calls with a proper NL_INITIAL_FILE_CONTENT / NL_IMPORT_EXTERNAL_FILE handoff. Fixed Find & Replace capture group corruption, aligned exported Mermaid CDN to v11.6.0, added aria-hidden to all 11 modals, fixed active-tab 1px layout jump, and smoothed mobile menu transitions. Excluded the desktop app from Docker builds and added a CI guard to prevent image publishing on pull requests.
  • Date: 2026-05-24
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/2bb281adc1c811f7dca2b331b4867791b52b7401

v3.5.5

  • Description: Overhauled footnote rendering to support multi-paragraph footnotes displayed inline, restored correct nested list indentation, and fixed footnote backref spacing and paragraph-splitting patterns. Broadened footnote continuation indentation handling and hardened inline parsing for content without footnotes. Also added MathJax loader configuration to support additional LaTeX packages, ensuring extended math notation renders correctly in both web and desktop modes.
  • Date: 2026-05-22
  • URL: https://github.com/ThisIs-Developer/Markdown-Viewer/commit/bc988ca48b118b8e05e76cbe513f79b2d4ae0ac5

v3.5.4


v3.5.3


v3.5.2


v3.5.1


v3.5.0


v3.4.12


v3.4.10


v3.4.9


v3.4.8


v3.4.7


v3.4.6


v3.4.5


v3.4.4


v3.4.3


v3.4.2


v3.4.1


v3.4.0


v3.3.12


v3.3.11


v3.3.10


v3.3.8


v3.3.7


v3.3.6


v3.3.5


v3.3.4


v3.3.3


v3.3.2


v3.3.1


v3.3.0


v3.2.12


v3.2.11


v3.2.10


v3.2.9


v3.2.8


v3.2.7


v3.2.6


v3.2.5


v3.2.4


v3.2.3


v3.2.2


v3.2.1


v3.2.0


v3.1.5


v3.1.4


v3.1.3


v3.1.2


v3.1.1


v3.1.0


v3.0.2


v3.0.1


v3.0.0


v2.9.9


v2.9.8


v2.9.7


v2.9.6


v2.9.5


v2.9.4


v2.9.3


v2.9.2


v2.9.0


v2.7.10


v2.7.9


v2.7.8


v2.7.7


v2.7.4


v2.7.3


v2.7.2


v2.7.1


v2.6.10


v2.6.9


v2.6.8


v2.6.7


v2.6.2


v2.6.1


v2.6.0


v2.5.8


v2.5.7


v2.5.6


v2.5.5


v2.5.4


v2.5.3


v2.5.2


v2.5.1


v2.5.0


v2.4.5


v2.4.4


v2.4.3


v2.4.2


v2.4.1


v2.4.0


v2.3.4


v2.3.3


v2.3.2


v2.3.1


v2.3.0


v2.2.8


v2.2.7


v2.2.6


v2.2.2


v2.2.1


v2.2.0


v2.1.9


v2.1.8


v2.1.7


v2.1.5


v2.1.4


v2.1.3


v2.1.2


v2.1.1


v2.0.7


v2.0.6


v2.0.5


v2.0.4


v2.0.1


v2.0.0


v1.8.8


v1.8.7


v1.8.6


v1.8.5


v1.8.4


v1.8.3


v1.8.1


v1.8.0


v1.7.10


v1.7.9


v1.7.8


v1.7.7


v1.7.5


v1.7.4


v1.7.2


v1.7.1


v1.7.0


v1.6.5


v1.6.4


v1.6.2


v1.6.1


v1.6.0


v1.5.5


v1.5.4


v1.5.3


v1.5.2


v1.5.0


v1.4.4


v1.4.3


v1.4.1


v1.4.0


v1.3.7


v1.3.6


v1.3.5


v1.3.1


v1.3.0


v1.2.3


v1.2.2


v1.1.3


v1.1.2


v1.1.1


v1.1.0


v1.0.9


v1.0.8


v1.0.7


v1.0.6


v1.0.5


v1.0.4


v1.0.3


v1.0.2


v1.0.1


v1.0.0


v0.5.6


v0.5.5


v0.5.4


v0.5.3


v0.5.2


v0.5.1


v0.5.0


v0.4.10


v0.4.9


v0.4.8


v0.4.7


v0.4.6


v0.4.5


v0.4.4


v0.4.3


v0.4.2


v0.4.1


v0.4.0


v0.3.13


v0.3.12


v0.3.11


v0.3.6


v0.3.5


v0.3.4


v0.3.3


v0.3.2


v0.3.0


v0.2.4


v0.2.3


v0.2.2


v0.2.1


v0.2.0


v0.1.7


v0.1.6


v0.1.5


v0.1.4


v0.1.3


v0.1.2


v0.1.1


v0.1.0