== Changelog ==

= 2.4.0 =

- Added: Outgoing HTTP Request Log. Under Debug you can now see every call your site makes out to another server, with where it went, what came back, how long it took and which plugin or theme started it, which is usually the quickest way to find out what is making the site slow.
- Added: Disable Generated Image Sizes. Under Media you can now pick which of the image sizes your theme and plugins register should no longer be created when you upload a picture, so one upload stops turning into a dozen files you never use. Images already in the library are left alone.
- Added: Heartbeat Control. Under Performance you can now switch off or slow down the background checking WordPress does every 15 to 60 seconds for everyone logged in, while keeping autosave and post locking working in the editor.
- Added: Export and Import Settings. A new Tools tab saves all your AdminEase settings to a file you can keep as a backup, and loads it back on this site or on another one.
- Added: Sticky Notes. A pencil button now sits on every admin screen. Click it and a panel slides in from the right holding the notes for that screen, and a note saves itself as you write, tells you when it is saving and when it is saved, and sends the last few words before you leave the page. Notes stay on the screen you wrote them on, so a reminder about plugins waits for you on the Plugins screen, and each one leaves a small numbered marker on the page so you can see at a glance that something is waiting there. Drag a marker wherever it suits you, or click it to open that note. Drop one on something on the page, a row in a table, a field in a form or a paragraph in the editor, and it sticks to it and travels with it as you scroll or resize the window. The panel reads as a plain WordPress list, one note per row showing its number and its first line, and clicking a row opens it while the others fold away, so a screen with a dozen notes still fits on one screenful. It can also show every note in the site, each telling you which screen it belongs to and linking straight back to it, with a search box for finding a note by what it says. The number on the pencil counts the notes waiting on the screen you are on, with the total for the whole site shown when you hover it, and the panel loads notes a batch at a time so it opens just as quickly on a site with hundreds of notes as on one with three. Nothing disappears by accident: a note is marked as done rather than thrown away, deleting one moves it to the trash first, and you can bring a note back from either at any time. You can turn the markers off and keep your notes in the panel only, choose whether the notes button floats in the bottom corner or sits in the admin bar next to your name, and turning the feature off hides the button everywhere without deleting a single note. The panel header, the markers and the number on each note all follow the scheme you picked in Users, Profile, Admin Colour Scheme, so your notes match the rest of your admin.
- Added: Full right to left support. If your site runs in Hebrew, Arabic, Persian or any other right to left language, the whole of AdminEase now reads the right way round. Headings and buttons line up on the right, the tick box and arrow on every selection field move to the side you expect, tables, switches, bullet lists and the notes panel all turn to match, and the maintenance and password pages your visitors see do the same. The gap that used to sit between the menu and the page has gone as well.
- Added: AdminEase is now fully translated into Hebrew.
- Fixed: A few words stayed in English whatever language your site was in, including the small x that clears a selection field and the Select heading above the tick box column in the cron and email logs. They now translate with everything else.
- Tweak: The copy button on the debug log no longer tints its background when you point at it.
- Updated: Translation template.

= 2.3.0 =

- Improved: The AdminEase boxes on the post, category and tag, and user edit screens now look like the rest of WordPress. Their buttons, tables, text fields and pop up windows are the standard WordPress ones, at the standard sizes, so the boxes sit on the page as if they had always been part of it instead of standing out in AdminEase's own green styling.
- Improved: Those same boxes now follow whatever colour scheme you picked in Users, Profile, Admin Colour Scheme. If you use Midnight, Ocean, Sunrise or any of the others, the buttons, links and highlights in the AdminEase boxes match it, and they will keep matching if you change your mind later.
- Improved: The taxonomy box in the sidebar of the post editor now uses smaller controls, so the search field, the page buttons and the results per page selector fit the narrow column instead of crowding it.
- Improved: The post, term and user edit screens no longer load AdminEase's design stylesheet at all. It was still being downloaded on those screens to style the boxes, and now that the boxes use WordPress's own styling there is nothing left for it to do, so that is 62KB less to load every time you open a post.
- Improved: The Network Viewer now has numbered page buttons below the table, so you can jump straight to the page you want instead of clicking Next over and over.
- Fixed: While you were dragging a post or a category to reorder it, the table would suddenly become narrower and the row you were holding no longer lined up with the columns. The table now keeps its size and column positions for the whole drag.
- Fixed: Ticked checkboxes and selected radio buttons on the AdminEase dashboard were hard to see, because the tick was drawn in a colour very close to the box behind it. They now use a much brighter fill, so you can tell at a glance which options are switched on.
- Updated: SVG sanitizer library to the latest version.
- Updated: Translation template.

= 2.2.0 =

- Added: Send Email Through SMTP. Send your site's emails through a real mailbox (Gmail, Microsoft 365, your host, or a service like Brevo or Mailgun) so password resets, order confirmations, and contact form messages reach the inbox instead of spam. Includes a test button to check your settings.
- Added: Email Failure Alert. Get a notice in your admin area whenever your site fails to send an email, with a link to the details, so problems don't go unnoticed.
- Improved: The Email Log now shows the error message at the top of the details window, so you can see why an email failed right away.
- Added: A warning if your file backups are left somewhere anyone could find them. AdminEase keeps copies of your wp-config.php and .htaccess files in a folder with a long random name, so nobody can reach them by typing a web address. If it cannot give the folder that name, either because your uploads folder is not writable or because another plugin is changing the way WordPress builds random text, a red notice now appears in your admin area. It tells you where the folder is, which of the two causes it was, and what to do about it. The notice disappears on its own as soon as the folder is renamed, and you can dismiss it in the meantime.
- Fixed: AdminEase was writing to your site's error log during normal use, recording things that had gone right such as backups being created and settings being applied. On sites where the log is watched, or where the hosting panel counts those lines as errors, it looked like something was wrong when nothing was. AdminEase now stays quiet unless there is a genuine problem, and reports those only while WordPress debugging is switched on.
- Fixed: A PHP warning was logged every time the AdminEase dashboard was opened on PHP 8.1 and above. One of the on/off switches on the page could be handed a stored value it was not built to read. The switches now cope with any value and simply show as off when they cannot make sense of it.
- Updated: Translation template.

= 2.1.2 =

- Fixed: A security issue with where AdminEase stores its file backups. Before changing wp-config.php or .htaccess, AdminEase saves a copy of the original so you have something to fall back on. Those copies were kept in a folder inside your uploads folder with a fixed, predictable name, protected by rule files that Apache and IIS read but that Nginx and LiteSpeed in its own native mode ignore. On those servers the folder could be reached from the web by anyone who knew the address, which would expose the contents of your wp-config.php file, including your database details. The folder is now given a long random name that cannot be guessed, so it is protected on every server rather than only on some. Your existing backups are moved into the new folder for you the first time an admin page loads after updating, and there is nothing for you to do.
- Improved: AdminEase's design stylesheet was loading on every single admin page, including screens it has nothing to do with such as the post list, the media library, and other plugins' settings pages. It is now loaded only where it is actually used: the AdminEase dashboard and the AdminEase metadata boxes on the post, term, and user edit screens. Every other admin page on your site now loads 62KB less CSS.
- Improved: The AdminEase metadata boxes on the post, term, and user edit screens now use the standard WordPress admin font instead of downloading AdminEase's own fonts, so those screens load faster and the boxes sit more naturally alongside the rest of the page. The AdminEase dashboard is unchanged.
- Fixed: The media library's preview background for SVG files and the loading notice shown while scrolling the media library were both missing their colors. They referenced design values that were never available on those screens, so the SVG preview had no backdrop, and the notice had no tint or border.

= 2.1.1 =

- Fixed: Disable XML-RPC, Block Specific Countries, and Block Specific Bots did nothing on Nginx, IIS, and LiteSpeed running in its own native mode. These features worked by writing rules into the .htaccess file, which those servers never read, so the setting saved and reported success while your site stayed completely open. AdminEase now detects the server type and enforces all three in PHP instead, with the same result and nothing for you to configure. If you are on Apache or LiteSpeed in Apache-compatibility mode, nothing changes: the .htaccess rules are still used because blocking a request before it reaches PHP is faster.
- Fixed: Moving a site between server types could leave a blocking rule behind in a file the new server does not read. Rules and stored settings are now cleaned up in both directions when you save.
- Fixed: Country blocking could not be switched off again if the site lost its geolocation source, for example, when Cloudflare was removed or a host turned off its GeoIP module. The controls were greyed out in whatever state they were left in, so a block already switched on could not be undone, its country list was quietly dropped the next time any setting on the page was saved, and the rules already written to .htaccess were never removed. The controls now stay usable whatever the server supports, your country list is kept, and turning the feature off always clears the rules.
- Improved: The Disable XML-RPC and Block Specific Countries settings now tell you when your server is being protected in PHP rather than through .htaccess, so it is clear the feature is active either way. Apache users see no extra text.
- Fixed: On servers where the block is enforced in PHP, Block Specific Bots answered blocked bots without telling caches to keep the response out. A CDN or reverse proxy was free to store that refusal against the page and later serve it to real visitors, turning a bot block into an outage. The response is now marked uncacheable, matching Disable XML-RPC, Block Specific Countries, and Crawl Delay.
- Updated: Translation template.

= 2.1.0 =

- Added: Crawl Delay. A new Security feature that slows aggressive crawlers down instead of blocking them, so you keep the indexing but cap how fast bots can hit your server. It adds a Crawl-delay directive to the robots.txt WordPress generates (honored by Bingbot and YandexBot; Googlebot ignores it by design), and can optionally enforce the delay in PHP by answering bots that return too soon with 429 Too Many Requests and a Retry-After header. Each bot can be given its own delay, and logged-in users, admin pages, AJAX, WP-Cron, and WP-CLI are never throttled. If your site has a real robots.txt file, which replaces the one WordPress generates, the delays are written into it automatically inside a marked block; the rest of the file is left alone, a backup is taken first, and the block is removed again when you turn the feature off or deactivate the plugin. A robots.txt file is never created if you do not already have one. No .htaccess or wp-config.php changes are made, so it behaves the same on Apache, Nginx, and LiteSpeed.
- Added: Bulk Delete Terms. A batched tool on the Taxonomies tab that permanently deletes taxonomy terms, with an optional "empty terms only" filter, a name search, and an option to delete child terms along with their parent. The taxonomy's default term is always protected. Free covers Categories and Tags; Pro unlocks every registered taxonomy.
- Added: A Stop button for Bulk Delete Posts and Bulk Delete Terms, so a long run can be ended safely.
- Added: Turning on a tool such as Bulk Delete Posts now offers to save and activate it straight away, instead of leaving its buttons unresponsive until you save.
- Fixed: A broad reliability pass over the admin tools. Progress bars now advance and finish with the right totals, batched runs no longer stall near the end, Taxonomy Switcher stops cleanly when something goes wrong, drag and drop ordering saves reliably, Cron Viewer times are correct, email previews open in an isolated frame, and errors always show a clear message instead of appearing to do nothing. With AdminEase Pro active, Bulk Delete Posts lists your custom post types again.
- Fixed: Improved Taxonomy Meta Box could block Publish and Save Draft on post types with an empty hierarchical taxonomy, and could lose or duplicate selected terms or keep spinning after a search.
- Fixed: The password-protected site login now only sends you back to pages on your own site.
- Fixed: Max Execution Time refused to save when left empty. Clearing the field now simply removes the timeout AdminEase had set and hands the decision back to your server.
- Fixed: Maintenance Mode's page background and card no longer ignore your chosen colors, and the feature now supports a scheduled on/off window with a live countdown, an IP allowlist bypass, and two more page themes: Minimal and Split Screen. A fourth theme, Terminal, is available with AdminEase Pro.
- Improved: Display and translation throughout. Names containing quotes or other special characters now show correctly, and all remaining on-screen text can be translated.
- Updated: Translation template.

= 2.0.2 =

- Fixed: Compatibility issue with Taxonomy Meta Box in Pro.
- Fixed: Sorting UI issue in meta boxes.

= 2.0.1 =

- Fixed: In rare cases, saving settings could merge the opening `<?php` tag in wp-config.php with an immediately following line added by another plugin (e.g. a `define()` for a caching constant), corrupting the file. wp-config.php is now normalized to guarantee a newline always follows the opening tag.

= 2.0.0 =

- Redesign release: Brand-new dark-theme admin UI with the "moss" accent palette across the Dashboard.
- Fixed: Issue with Taxonomy Meta Box in product edit screen.
- Fixed: WooCommerce HPOS compatibility.
- Fixed: Bug in the Drag And Drop Ordering Taxonomies feature.
- Fixed: Bug in date range for Bulk Delete Posts feature.
- Fixed: Disable user password change admin notification email now also blocks the admin "Password Changed" email when a user changes their password through the WooCommerce My Account area.
- Fixed: Password Protect Site no longer loops back to the login form on sites behind Cloudflare or other edge/page caches; the gate now self-heals via a one-shot cache-buster, sets a cache-friendly companion cookie, and marks protected pages uncacheable.
- Tweak: Improved GeoIP Detection.
- Added: The review request notice ("Enjoying AdminEase?") now appears on the AdminEase dashboard.
- Improved: Better handling of wp-config.php.
- Improved: Tested with WordPress version 7.
- Improved: Block Specific Countries feature: Now you can exclude certain paths from country blocking so external services will continue working despite having the country block.
- Updated: Translation template.

= 1.9.3 =

- Fixed: Taxonomy Meta Box causing save draft issue in edge cases.

= 1.9.2 =

- Added: Password Protect Site can now include/exclude any post type.
- Tweak: Improved performance loading data only on current tab in the plugin, speeds up the page loading time.
- Tweak: Improved error messages in Debug log viewer.
- Tweak: Better email type detection in Email log viewer.
- Tweak: Network Viewer Log now has more information available in connection details modal in some cases.
- Fixed: Plugin icon visibility issue in some environments.
- Fixed: Resend email in Email log.
- Updated: Translation template.

= 1.9.1 =

- Fixed: Cron viewer missing partial

= 1.9.0 =

- Added: Cron Viewer - full WordPress cron job manager under the Debug tab. View all scheduled jobs, detect orphaned hooks, run jobs on demand, pause and resume jobs, and delete specific cron events.
- Added: Plugins tab - new dedicated dashboard tab for plugin management features.
- Added: Enable Plugin Download - adds a Download action link to each plugin row in the Plugins list, allowing admins to download any installed plugin as a .zip file. Requires PHP ZipArchive extension.
- Added: Display Active Plugins First - reorders the Plugins list to show active plugins at the top, separated from inactive plugins by a visual divider.
- Fixed: AllowSvgUpload: PHP 8.4 deprecated implicit nullable parameter types - string $param = null must be written as ?string $param = null.

= 1.8.1 =

- Added: Network Viewer advanced filtering - filter by method, status, type, location, IP, path, and visitor type (human/bot).
- Added: Mobile-responsive filter toggle button for Network Viewer - hide/show filters on mobile devices.
- Added: Debug Log copy-to-clipboard button - easily copy debug log contents with visual feedback.
- Improved: Network Viewer filter UI with better organization and mobile support.
- Improved: Email Log bulk resend now works for emails in ANY status (sent, failed, blocked).
- Fixed: Form field ID conflicts between Network Viewer and Email Log features - all IDs now have unique feature-specific prefixes.
- Updated: Email Log icon for disabled email indicator.

= 1.8.0 =

- Added: Email Log: Manages the functionality to capture, store, retrieve, and manage email logs.
- Updated: Plugin icon.
- Fixed: Bug with Improved Taxonomy Meta Box and Order Taxonomies using Drag and Drop conflict.
- Fixed: Block Author Scans feature now allows authenticated REST API requests for application passwords while maintaining security against unauthenticated author enumeration attacks.
- Fixed: Issue with Users Metadata box not allowing to update user profile.

= 1.7.0 =

- Added: Users Metadata Box for easy custom fields viewing and updates.
- Added: Taxonomy Term Metadata Box for easy custom fields viewing and updates.
- Added: Last Login Tracking: Tracks when users log in, displays the information in the users table, and shows it on their profile pages.
- Fixed: Bug loading Improved Taxonomy Meta Box in posts.
- Fixed: Posts Metadata Box didn't load all meta data on WooCommerce subscriptions.
- Improved: Performance improvement for network viewer.
- Updated: Translation template.

= 1.6.3 =

- Updated: Revamped Block Specific Bots feature.
- Updated: TaxonomySwitcher loading scripts only where necessary.
- Fixed: PasswordProtectSite better session handling, fixed issue with caching.

= 1.6.2 =

- Fixed: Issue with FileHandler class.

= 1.6.1 =

- Fixed: Taxonomy Switcher not appearing in dashboard.

= 1.6.0 =

- Added: Taxonomy Switcher feature.
- Added: Disable Big Image Threshold feature.
- Fixed: Taxonomy meta box loading issue.

= 1.5.5 =

- Fixed: Password Protection log not hiding properly.
- Improved: Better performance with Ajax requests.
- Updated: Translations template.

= 1.5.4 =

- Fixed: Password Protection issue with session.

= 1.5.3 =

- Fixed: PostsMetadataBox not working properly on new posts.
- Fixed: Password Protection Access Log showing even when the feature is off.

= 1.5.2 =

- Fixed: Posts meta box loading issue.

= 1.5.1 =

- Fixed: Posts meta box loading issue.
- Fixed: Issue with MaxExecutionTime empty causing settings not saving.
- Improved: FileHandler class.
- Updated: Translations template.

= 1.5.0 =

- Added: Posts meta data box feature.
- Fixed: Debug log download button not showing.
- Fixed: Max execution time not working properly.
- Improved: Better support for Pro plugin.
- Improved: Add an eye icon to the password protect site form to show/hide the password.
- Improved: Better post types selection handler.
- Improved: Added Password Protection Access Log.
- Updated: Translations template.

= 1.4.2 =

- Updated: NetworkViewerLog template file.
- Fixed: MaxExecutionTime causing issues on some servers.

= 1.4.1 =

- Added: Added plugin version number to the dashboard header.
- Added: Download debug.log file in Debug Log Viewer.
- Added: Auto load network viewer setting.
- Updated: Translate template.

= 1.4.0 =

- Fixed: Wrong label for Disable comment post author notification email.
- Fixed: Better control for REST API, it was causing issues with page builders.
- Improved: Plugin UI.
- Improved: Disable Rest API feature with better control.
- Improved: Network Viewer Log browser detection and added country flags.
- Updated: Translations template.
- Added: Disable Emojis: Disable loading of emoji scripts and styles.
- Added: Bulk Delete Posts: Easily delete posts in bulk from the admin panel.
- Added: Disable Comments: Disable comments site-wide with a single toggle.
- Added: Disable Admin Notices: Hide admin notices from plugins and themes.
- Added: Disable recovery mode email notification: Prevent WordPress from sending recovery mode emails.
- Added: Customize recovery mode recipient email: Set a custom email address to receive recovery mode notifications.

= 1.3.5 =

- Fixed: Bug with Drag and Drop Ordering for Taxonomy terms.

= 1.3.4 =

- Improved: Displaying errors below the field, improving user experience.
- Improved: Better support for Pro plugin.
- Updated: Translations template.

= 1.3.3 =

- Fixed: PasswordProtectSite was not working properly in edge cases.
- Fixed: MaintenanceMode was not working properly in edge cases.
- Tweak: Improved Maintenance Mode feature with more customizations.
- Updated: Translations template.

= 1.3.2 =

- Tweak: Disabled autoloading of debug log and network viewer log to improve performance.
- Updated: Translations template.

= 1.3.1 =

- Fixed: Network Viewer Log had issues with users with multiple roles and excluded ips not being excluded properly.

= 1.3.0 =

- Added: Redirect after login / logout.
- Tweak: Improved Network Viewer Log with filter for Ajax, Cron, and Rest API requests.
- Tweak: Better escaping in AdminEase.js.
- Tweak: Better control over comment email notifications, now you can select to disable notification to the moderator and the post author.
- Tweak: Removed admin current country from country list to prevent the admin from mistakenly blocking himself.
- Updated: Translations template.
- Fixed: The User-Password-Change Admin Notification Email feature.
- Fixed: Improved function prefixing to avoid conflicts with other plugins.
- Fixed: Disabled caching in Password Protect Site page.
- Fixed: Improved disabling auto updates.
- Fixed: AllowSvgUpload failed on tiny SVG files.
- Fixed: Having to save settings twice to get Block Specific Countries settings to take effect.

= 1.2.0 =

- Added: Allow Custom File Extension Uploads feature to enable additional file types.
- Added: Network viewer.
- Added: Debug log viewer.
- Updated: Translations template.
- Fixed: bug fixes in AllowSvgUploads feature.
- Fixed: Issue with the mobile menu when tabs are initially opened.

= 1.1.2 =

- Added: Maintenance Mode: Prevent all users from accessing the site but not the admin area.
- Updated: Translations template.
- Fixed: Bug with settings of some features.

= 1.1.1 =

- Fixed: Loading of CSS/JS.

= 1.1.0 =

- Added: Disallow File Mods - This setting prevents all file modifications in WordPress, including installing, updating, and deleting plugins and themes.
- Added: Hide PHP Version - Remove X-Powered-By header to hide PHP version information for enhanced security.
- Added: Password Protect Site - Comprehensive website password protection with customizable themes, role-based bypasses, IP whitelisting, device remembering, and scheduled auto-disable functionality.
- Tweak: Reorganized features in tabs.
- Tweak: Loading settings fields in each feature separately.
- Tweak: Changed the way the plugin toggle fields for more control.
- Tweak: Changed naming convention for files.
- Tweak: Merged Updates and Notifications into 1 tab.
- Updated: Dashboard Pro features.
- Updated: Translations template.
- Updated: Styles in AdminEase.css.
- Updated: Rendering date field.
- Updated: Media Infinite Scrolling feature.
- Fixed: is_geoip_enabled returning error.
- Fixed: Bug with disable file edit.
- Fixed: Uninstall error.

= 1.0.2 =

- Fixed: Drag and Drop Ordering for posts and taxonomies.
- Fixed: Removed error log in code.
- Tweak: Taxonomy meta box CSS and JS.

= 1.0.1 =

- Added: Feature - CORS Headers to allow trusted websites to access your site's resources safely.
- Added: Feature - Upload Max File Size to set maximum upload file size.
- Added: Feature - Allow SVG Uploads with security checks.
- Added: Feature - Hide Admin Bar for specific users.
- Added: Feature - Disable gutenberg editor.
- Fixed: Prefixed js files to avoid conflicts with other plugins.
- Fixed: Undefined array key "block_specific_countries".
- Fixed: Bug in ForceStrongPasswords in PHP 7.4.
- Updated: link to support forum in the readme file.
- Updated: FileHandler for better error handling.
- Updated: Translations template.
- Updated: SVGSanitizer package.

= 1.0.0 =

First release of AdminEase – a comprehensive admin toolkit for WordPress.
