* FIX: Multisite activation issues - Database tables now properly created for all sites in multisite networks
* FIX: PHP 8.1+ compatibility - Added safe string functions to prevent deprecation warnings
* IMPROVED: Code refactoring - Moved utility functions to dedicated classes
* IMPROVED: Enhanced multisite compatibility for all security tests
* IMPROVED: Test execution system, in particular to multisite testing.
* IMPROVED: Vulnerability scanner - Fixed time difference calculation for "Last Updated" display
* IMPROVED: Vulnerability file download - Simplified to single "Download All Files" button
* IMPROVED: Freemius integration - Added license validation hooks to ensure premium tables are created
* NEW: Enhanced test interface with smooth animations - Tests now show spinner animations during execution and completion highlights for better visual feedback.
* NEW: 2FA - Use E-mail based codes or app - Several users wanted to be able to choose email instead of app-based authentication.
* Fix: Removed minimum of 5 days in 2FA grace period.
* Fix: Some users reported settings reset - we tracked it to a race-condition where an update could overwrite the settings if not loaded yet.
* Fix: Error with importing latest settings that included malware scanner results. Trimmed down the export settings.
* Fix: Minor adjustment to file-viewer class, function to check where file is located.
* FIX: Enhanced REST API protection to prevent blocking legitimate API calls. Thank you Alex.
* FIX: Firewall settings randomly deactivates in rare cases.
* FIX: Change login URL feature did not properly save its state.
* NEW: Added WooCommerce protection to the Wizard for new installations.
* IMPROVED: Firewall settings module loads more efficiently, moved non-essential code to sub structure to improve load time in and out of admin.
* IMPROVED: Dashboard Widget visually improved and contains more practical information.
* FIX: "Details" button in events log would sometimes expand details and also reload the entire page.
* Improved visuals on the overview page for the firewall events.
* Continued improving the visual layout of the plugin.
* Improvements to visitor logging - better filtering of unecessary requests.
* Fixed problem with custom login for some users, sorry for the hassle.
* Added checks for the unecessary themes to include theme from 2025, thank you Troy.
* Added fix for incorrect CSP header values in the auto-fixer. Saving a header value containing a URL could lead to incorrect values being saved. Thank you Maxime.
* Cleaning up temporary files - Thank you Heath.
* Fixed: Scheduled Scanner now correctly respects the "Send an email only when test results change" setting, preventing daily emails when no changes are detected. Thank you Jean.
* Fixed: Added a database update routine to fix missing URL column in visitor log table that was causing errors. Thank you Jean for reporting this issue.
* Fixed: WordPress version detection issue, thanks to Tom for pointing it out.
* Change: Renamed the license file from `license.txt` to `license_key.txt` for better clarity and consistency, this prevents overlap with tests trying to remove the file.
* Updated: Freemius SDK to 2.11.0
* Updated language files.
* Fix: Added missing URL column to visitor log database table to properly track request URLs.
* Fix: Cleaning up the code for the 2FA module console log messages only showing for error events.
* Fix: Create missing database tables when installing the plugin.
* Added UptimeRobot IPs to the whitelist.
* Updated: Freemius SDK to 2.10.1 and phpseclib to 2.0.48.
* Fix: Resolved rare PHP warnings related to undefined webhook settings in Events Logger.
* New: Users IPs automatically added to the whitelist when activating the firewall. IPs are no longer added to the whitelist by successful login.
* Updated Freemius SDK to 2.10.1