Releases: benbalter/wordpress-static-site-exporter
Releases · benbalter/wordpress-static-site-exporter
v4.0.4
What's Changed
send(): stream the export zip in 8 KB chunks instead ofreadfile()so large exports do not exhaustmemory_limitwhen delivering the archivezip_folder()now throwsRuntimeExceptioninstead of callingwp_die()directly, so the existing try/catch inexport()renders a friendly error page and runscleanup()on partial temp files- New
jekyll_export_html_converterfilter lets integrations (and tests) swap in a custom HTML-to-Markdown converter - The fallback
error_log()added in v4.0.3 is now gated behindWP_DEBUG - Hardened sanitization of
$_GET['type']in the export callback - Added regression tests for the v4.0.3
Invalid HTML was providedfallback and the newzip_folder()throw behavior
Full Changelog: v4.0.3...v4.0.4
v4.0.3
What's Changed
- Catch
InvalidArgumentExceptionfromleague/html-to-markdowninconvert_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
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_limitpre-flight check (warns when below 64MB) invalidate_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
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())withwp_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.phpnow rejects non-CLI access before loadingwp-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
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/yamlfrom ^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.phpin favor oflib/cli.php - Improved CI pipeline with PHPStan job and vendor consistency checks
v3.1.3
v3.1.2
🐛 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
v3.1.0
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