Skip to content

Releases: benbalter/wordpress-static-site-exporter

v4.0.4

30 Apr 22:09
11008dd

Choose a tag to compare

What's Changed

  • send(): stream the export zip in 8 KB chunks instead of readfile() so large exports do not exhaust memory_limit when delivering the archive
  • zip_folder() now throws RuntimeException instead of calling wp_die() directly, so the existing try/catch in export() renders a friendly error page and runs cleanup() on partial temp files
  • New jekyll_export_html_converter filter lets integrations (and tests) swap in a custom HTML-to-Markdown converter
  • The fallback error_log() added in v4.0.3 is now gated behind WP_DEBUG
  • Hardened sanitization of $_GET['type'] in the export callback
  • Added regression tests for the v4.0.3 Invalid HTML was provided fallback and the new zip_folder() throw behavior

Full Changelog: v4.0.3...v4.0.4

v4.0.3

30 Apr 21:41
bb901c9

Choose a tag to compare

What's Changed

  • Catch InvalidArgumentException from league/html-to-markdown in convert_content() and fall back to the post's raw HTML for that single post instead of aborting the entire export with Jekyll Export failed: Invalid HTML was provided (#400)

Full Changelog: v4.0.2...v4.0.3

v4.0.2

30 Apr 21:34
8b78549

Choose a tag to compare

What's Changed

  • Add shutdown handler to surface fatal errors (memory exhaustion, max execution time) during export with actionable error messages instead of a generic WordPress critical error page
  • Add proactive memory_limit pre-flight check (warns when below 64MB) in validate_environment()
  • Display admin error notice on Tools → Export when environment validation fails, before the user clicks Export

Full Changelog: v4.0.1...v4.0.2

v4.0.1 - Security fixes

30 Apr 03:16
56899e0

Choose a tag to compare

Security fixes

This is a security patch release. All fixes are post-auth (require manage_options) but recommended for all installations, especially shared hosting and multisite.

  • Predictable temp directory (Medium, CWE-330/377): Replaced md5(time()) with wp_generate_password() for the export temp directory name to prevent symlink/TOCTOU attacks on shared hosts.
  • Web-accessible WP bootstrap (Low, CWE-665): Deprecated jekyll-export-cli.php now rejects non-CLI access before loading wp-load.php.
  • Path sanitization (Low, CWE-22): Each path segment of page filenames is now individually sanitized as defense-in-depth against path traversal.
  • Multisite cache correctness (Low, CWE-665): copy_recursive() symlink-allow-list cache is now keyed by blog ID.

Full Changelog: v4.0.0...v4.0.1

v4.0.0

28 Apr 20:52
87e48ee

Choose a tag to compare

Breaking Changes

  • Minimum PHP version bumped from 7.2.5 to 8.2
  • Minimum WordPress version bumped from 4.4 to 6.4

What's New

  • Added PHPStan static analysis at level 5
  • Updated symfony/yaml from ^5.4 to ^7.0
  • Updated PHPUnit from ~8.0 to ~9.6
  • Removed symfony/polyfill-php80 (no longer needed with PHP 8.2+)
  • Fixed get_posts() to return integer IDs instead of strings
  • Fixed PHPDoc type annotations throughout codebase
  • Deprecated legacy jekyll-export-cli.php in favor of lib/cli.php
  • Improved CI pipeline with PHPStan job and vendor consistency checks

v3.1.3

28 Apr 18:04
64a2a7f

Choose a tag to compare

What's Changed

  • Regenerate vendor autoload files without dev dependencies by @Copilot in #404

Full Changelog: v3.1.2...v3.1.3

v3.1.2

27 Apr 21:08
4f600be

Choose a tag to compare

🐛 Bug Fixes

  • Export error handling — The export process now validates the environment (ZipArchive extension, writable temp directory)
    before starting and wraps all operations in try-catch, surfacing actionable error messages instead of generic 500 Internal Server
    Errors (#401)

🔧 Improvements

  • Code quality & security — Miscellaneous improvements to code quality, security, and maintainability (#393)
  • Test reliability — Fixed closure serialization errors and removed unreliable xdebug header assertions (#393)

🏗️ Infrastructure

  • Updated translations — Refreshed POT file (#387)

v3.1.1

09 Feb 20:04
8ad94da

Choose a tag to compare

What's Changed

  • Fix plugin loading error from missing dev dependency in autoload by @Copilot in #382
  • Bump version to 3.1.1 by @Copilot in #386

Full Changelog: v3.1.0...v3.1.1

v3.1.0

14 Jan 18:01
6f36af9

Choose a tag to compare

What's Changed

  • Update POT file by @github-actions[bot] in #357
  • Disable PHP time limit during export to prevent timeout by @Copilot in #367
  • Fix temp directory creation when realpath() fails by @Copilot in #374
  • Remove automatic filtering of empty/falsy frontmatter values by @Copilot in #378
  • Add selective export by category/tag via WP-CLI by @Copilot in #376
  • Fix data loss when uploads directory is symlinked by @Copilot in #373
  • Localize inline media URLs in exported content by @Copilot in #375
  • Bump version to 3.1.0 by @Copilot in #380
  • Add colspan support for table exports by @Copilot in #377

Full Changelog: v3.0.2...v3.1.0

v3.0.2

13 Jan 20:48
94e4034

Choose a tag to compare

What's Changed

  • Fix WordPress plugin directory compliance issues by @Copilot in #369
  • Bump version to 3.0.2 by @Copilot in #371

Full Changelog: v3.0.1...v3.0.2