== Full changelog ==

Recent versions (2.5.x) live in readme.txt, in the Changelog section displayed on WordPress.org.
Older entries are archived here for historical reference.

= 2.4.0 =
* Added: Backup - Off-site backups to S3, WebDAV, SFTP and pCloud (plus Google Drive, Dropbox, OneDrive in Beta) with setup guides, a Remote Copies browser to restore after a server loss, and email reports after scheduled backups.
* Added: Core - Full multisite support with per-site isolation (Beta), a dashboard Notifications panel, and a cross-module dashboard alerts widget.
* Added: Redirections - Per-rule status codes (301/302/307/410/451) and a 404 Monitor that logs broken URLs and creates the missing redirect in one click.
* Added: SEO/GEO - A GEO/AEO tab with an llms.txt file for AI answer engines, one-click JSON-LD templates, and SEO/GEO editing with live scoring inside Elementor.
* Added: Anti-Spam - Email-address protection that encodes addresses against harvesters (with an [email] shortcode and block), plus Contact Form 7 and WPForms coverage.
* Added: Forms - Collect payments with Stripe Checkout, recording the entry only after payment succeeds (Beta).
* Added: User Role Editor - Restrict any page or post to selected roles (with a [be_restrict] shortcode), assign several roles from the profile screen, and auto-snapshot permissions before each change.
* Added: Disable Comments - Disable comments on selected post types only, block the XML-RPC and REST comment endpoints, and delete comments per post type.
* Added: Image Sizes - Regenerate thumbnails from the Media Library (row and bulk actions) and optionally scale down oversized uploads.
* Added: Broken Links - Scheduled background scans (daily or weekly) with optional email alerts and one-click Unlink that keeps the anchor text.
* Added: Database Optimizer - A new Autoload tab that flags which options are safe to disable and toggles them in one click.
* Added: Cookie Banner - One-click Cookie Policy page with an auto-generated declaration table and a [blaminhor_cookie_declaration] shortcode.
* Added: Maintenance - Built-in email capture on the coming-soon page, stored locally with CSV export and no third-party service.
* Added: Mute Core Emails - A single "mute everything" switch plus control over auto-update emails.
* Added: Domain Changer - One-click Undo of the last domain change, with the post GUID preserved and selectable column exclusions.
* Added: Cache & Performance - A Script & Style Manager to stop specific scripts or styles from loading, everywhere or on chosen URLs.
* Added: HTTPS Redirect - A daily SSL certificate check that emails an alert a chosen number of days before expiry.
* Added: Fatal Error Recovery - Detect a theme-caused fatal error and switch to a safe theme from recovery mode.
* Added: Favicon Generator - A live preview of the icon in a browser tab and on a phone home screen before generating.
* Fixed: Core - Clicking an inactive module now activates it and opens its settings instead of an "access denied" error; uninstall removes every table (including the cookie-consent and Web Vitals tables) and the backups folder; and filter pills no longer show an underline.
* Fixed: SEO/GEO - Scores read the real content of Elementor pages, count protocol/root-relative links and no longer treat an empty alt as alt text; the SEO box is hidden for content with no public page.
* Fixed: Cache & Performance - Captcha scripts (Turnstile, hCaptcha) are excluded from JS delay and optimizations skip the login page, so forms and sign-in keep working.
* Fixed: Core - A leftover internal name was removed from the Image Sizes help text and the exported database-backup header.
* Improved: SEO/GEO - Scoring now uses defensible on-page signals with partial-credit (amber) states and clearer focus-keyword guidance.
* Improved: SMTP Mailer - The general settings show one option per row with clear on/off toggles.

= 2.3.2 =
* Fixed: Database Optimizer - The "Optimize Tables" button returns to its normal label as soon as optimization finishes, even during the short page reload.
* Fixed: Database Optimizer - The "Items to Clean" count reaches zero after a full cleanup; comments awaiting moderation are listed separately since Clean All never removes them.
* Improved: SEO/GEO - When the SEO title or description is empty, a hint explains search engines build it automatically, and clicking the preview copies that suggestion in as an editable starting point.
* Improved: Backup - The backup list explains that the listed sizes are those of the compressed files, smaller than the database since indexes are rebuilt on restore, and can vary slightly between backups.

= 2.3.1 =
* Added: Post Types Order, Favicon and User Role Editor - One-click import from their matching standalone plugin (Custom Taxonomy Order, Favicon by RealFaviconGenerator, and User Role Editor) so you keep your existing order, icon and custom capabilities when you switch to Blaminhor Essentials.
* Fixed: Backup - Named database backups keep their name after being downloaded and re-uploaded to another site; deleting the safety backup from the restore notice clears it from the list and counter; a restore no longer leaves "plugin file does not exist" errors (plugins missing from the backup are switched off cleanly); and media-heavy sites no longer stall, since already-compressed files like images, video and PDFs skip pointless re-compression.

= 2.3.0 =
* New module: Forms (Beta) - Accessible contact forms with a drag-and-drop builder, Gutenberg block and shortcode; submissions are stored in the database and exportable as CSV; spam is blocked without a CAPTCHA by default, with optional reCAPTCHA or Cloudflare Turnstile; conditional logic and multi-step forms; GDPR controls (consent field, optional hashed IP, automatic entry purge); merge tags like {name} and a fully editable notification body with an {all_fields} recap; notifications and auto-replies go through your SMTP relay.
* Added: Cache & Performance - Preload and Purge & preload buttons in the overview and toolbar Cache menu warm your pages on demand with a live progress bar, and after a theme change clears your Critical CSS a dismissible notice regenerates it in one click.
* Added: Backup - A manual backup can be given a name shown in the list and file name, and the list flags backups made on a different domain so you can see which ones need a domain change on restore.
* Fixed: Backup - Uploaded backups keep their name, date and label and import once cleanly without duplicates or stray archives; a restore keeps you signed in and on your current site address even when the backup came from another domain (prompting a domain change to finish), reports its exact outcome including any file it could not write, blocks a second restore while one is running, and ends a stalled step with a clear message; scheduled retention deletes the oldest backups as configured, the table sorts by the column you click, and automatic pre-update backups get a clean file name.
* Improved: Cache & Performance - Clearing the cache simply empties it without starting a background crawl, so a quick purge stays quick.
* Improved: Backup - The pre-restore safety backup snapshots only what the restore will overwrite, so a database-only restore is far faster, and tells you when no rollback point exists; the Undo offer appears only for a complete, valid safety backup; an empty or corrupt archive leaves your folder untouched; and leftover temp files are cleaned on the next run while files over 100MB skipped from a backup are listed in the log.

= 2.2.0 =
* New module: Anti-Spam Honeypot - Blocks spam bots on your comment, login, registration and password forms with a hidden trap — no CAPTCHA, no external service; spam goes to the recoverable Spam queue, with a link filter, IP throttle, fail-open login and a privacy-friendly journal of hashed IPs.

= 2.1.1 =
* Improved: Backup - Restoring a backup runs smoothly through to completion, including large and previously-uploaded backups.
* Improved: Backup - Restoring a site to a new web address keeps both the site and the admin reachable.
* Improved: Backup - Restore options stay available, settings save safely while a backup runs, and the confirmation buttons read clearly.
* Improved: Cache & Performance - Cache preloading runs reliably through to completion.

= 2.1.0 =
* Added: Cache & Performance - Major overhaul: a new Overview of your whole cache stack, a live preview editor, and an empirical auto-pilot that tests each optimisation on your real pages before recommending it.
* Improved: Cache & Performance - Plain-language relabel across every tab, settings regrouped by intent, and a one-click auto-pilot with a real progress bar.
* Fixed: Cache & Performance - Security hardening: logged-in pages can no longer leak to anonymous visitors, plus fixes for cache poisoning, SSRF on self-hosted Google Fonts, and rate-limit bypass.
* Fixed: Cache & Performance - Page caching is more reliable: correct HTML minification spacing, coalesced purge cycles, object-cache (Redis/Memcached) invalidation, and accurate host detection.
* Removed: Cache & Performance - Dropped the unsafe "cache pages for logged-in visitors" option and a few non-functional toggles.
* Fixed: SMTP Mailer - Drag-and-drop relay reordering works again and saves reliably; the test result now shows next to the relay you tested.
* Improved: Core - Enabling a module no longer jumps you to its settings, so you can switch several on in a row; modules that still need configuring show a "Needs setup" badge.

= 2.0.2 =
* Fixed: Cache & Performance - Clear button on per-template Critical CSS rows is now a standard secondary button, visually consistent with the adjacent Generate button.
* Updated: Core - Dashboard vertical spacing tightened so the header, search bar and category grid stay compactly aligned on a single 16px rhythm.

= 2.0.1 =
* Updated: Core - Button corners now match the WordPress 7 native style (2px radius) for a tighter, more familiar look across every module.

= 2.0.0 =
* Improved: Core - Plugin redesigned across all 21 modules on a unified visual grammar aligned with WordPress 7: buttons, fields, tables, tabs and notices share the same look.
* Improved: Core - Full WCAG 2.1 AA accessibility: keyboard navigation, screen-reader support (ARIA), focus rings on every interactive element and reduced-motion support.
* Improved: Core - Codebase modernised on PHP 8.1 with strict types, enums and value objects for tighter security and faster execution.
* Improved: Core - Save bar at top and bottom of every module shows the unsaved-changes count and offers one-click Cancel and Save.
* Improved: Core - Redesigned tab bar (per-tab unsaved-changes dot, Alt+1..9 keyboard shortcuts), and tabs persist in the URL for reloads and shared links.
* Improved: Core - Dashboard loads faster with a lighter stylesheet footprint, and module pages follow your WordPress admin colour scheme.
* Added: Core - Optional 'Alerts & quick actions' dashboard widget that surfaces module alerts and exposes shortcut buttons on the WP dashboard (off by default).
* Improved: SEO/GEO - Content Overview redesigned with stat cards, filters, search, pagination, bulk actions (indexed/noindex/clear meta) and a new 'All indexed types' view.
* Improved: Cookie Banner - GDPR Article 7 personal-data exporters and erasers added for privacy-rights requests.
* Improved: Broken Links - Scan terminal prefixes each line with a status icon (success/warning/error) for clearer reading.
* Fixed: Core - Security hardening: Domain Changer SQL injection during migration, Backup filename injection on downloads, Cache & Performance POST input handling.
* Fixed: Core - Localisation gaps closed: Backup list dates, SEO/GEO archive date placeholder and Broken Links result counts now follow the active language (singular/plural).

= 1.11.0 =
* Added: Core - Introduces a full WP-CLI command tree (`wp blaminhor ...`) covering every module's settings and the most-used actions, enabling automation, AI-driven configuration, and CI/CD setup without the admin UI.
* Fixed: Cache & Performance - Disabling the module now fully removes its .htaccess sections instead of leaving empty marker blocks behind.
* Fixed: SEO/GEO - Saving settings from a non-browser context no longer triggers a noisy redirect warning and now returns a clean success message.
* Improved: Cache & Performance - GZIP/Brotli compression now applies reliably to HTML and other text responses on hosting setups where the previous rules were silently skipped.
* Improved: Redirections - Public API now exposes create, list and delete operations so external tooling reuses the same loop detection and cache invalidation as the admin form.
* Translations: Core - 110 new strings translated across 12 languages for the WP-CLI command tree.

= 1.10.0 =
* Added: Cookie Banner - New module that shows a consent banner and blocks tracking scripts (analytics, ads, embedded videos) until visitors agree.
* Fixed: Core - Text fields no longer accumulate backslashes in front of apostrophes, quotes or backslashes on successive saves.
* Fixed: Core - One-time cleanup removes backslashes already stored in module options from earlier versions.
* Fixed: Core - Feedback replies now reach the sender directly when they provide their email, instead of bouncing on the site's From address.
* Fixed: SMTP Mailer - SMTP authentication no longer silently fails when the relay password contains an apostrophe, quote or backslash.

= 1.9.10 =
* Fixed: Cache & Performance - Logged-in administrators now see the front-end as if the module were not active, exposing page-builder regressions that were previously hidden.
* Fixed: Cache & Performance - Elementor Pro and other page-builder dropdown menus open correctly on hover; bundled libraries are no longer delayed alongside ordinary scripts.
* Fixed: Cache & Performance - Critical CSS cells state why an extraction was rejected (size limit, write failure, network error) instead of resetting silently to "Not generated".
* Added: Cache & Performance - Preload tab exposes a "Pages per run" setting (1 to 200, default 30) so a small sitemap is warmed in a single batch instead of multiple hourly ticks.
* Added: Cache & Performance - A status banner at the top of the cache page shows the preload progress (queue size, last batch, next run) and warns when WP-Cron seems stuck.
* Added: Cache & Performance - Preload tab lists every page currently saved on disk with size, age, variant, and a per-URL purge button.
* Added: Cache & Performance - A full cache purge now triggers an immediate preload run instead of waiting up to an hour for the next cron tick.
* Added: Cache & Performance - Settings backup section in the Advanced tab to export every cache option as a JSON file and import it back on another site or after troubleshooting.
* Added: Core - Dashboard shows a "What's new" block above Feedback & Ideas, summarising the current version's upgrade notice in the user's language.
* Improved: Cache & Performance - Preload starts within seconds of a purge or settings save and chains batches, so a 30-page sitemap drains in a minute instead of an afternoon.
* Improved: Cache & Performance - Async loading of non-critical CSS is locked until a Critical CSS sheet is generated, preventing the unstyled flash and broken nav menus.
* Improved: Cache & Performance - Frontend helper scripts no longer load for logged-in administrators, saving four needless requests per admin page view.
* Improved: Cache & Performance - Network errors during Critical CSS generation are recorded so they show up in the diagnostic export.
* Translations: Cache & Performance - 60 new strings in 11 languages for the new preload, cached pages, Critical CSS, settings backup and Pages-per-run interfaces.
* Translations: Core - Cleaned up 154 module descriptions across the 11 supported languages where the same sentence was repeated two or three times on the modules dashboard.

= 1.9.9 =
* Added: Cache & Performance - Render watchdog probes the home anonymously after every change and auto-disables any optimisation that breaks the layout.
* Added: Cache & Performance - Theme adapters for Avada, Elementor and Divi sync purges with the builder's cache and contribute Defer JS / RUCSS exclusions.
* Added: Cache & Performance - Cloudflare integration with scoped API token and Zone ID, encrypted at rest, auto-purges on content updates.
* Added: Cache & Performance - Top third-party hosts auto-matched with dns-prefetch / preconnect hints, and the CDN tab now shows the detected hosting provider.
* Added: Cache & Performance - Self-hosted Google Fonts (GDPR + perf) and auto-filled image dimensions on every <img> to cut Cumulative Layout Shift.
* Fixed: Cache & Performance - Async CSS loading no longer breaks Avada / Divi / Elementor layouts: theme stylesheets stay in synchronous cascade order.
* Fixed: Cache & Performance - Aggressive optimisations are now off by default on Avada and Divi to avoid first-activation layout breakage; users opt-in per option.
* Fixed: Cache & Performance - Page cache is fully purged on any optimisation change, so visitors stop seeing the old version after a settings update.
* Fixed: Cache & Performance - Critical CSS no longer breaks on modern compound selectors (:is, :where, attribute selectors with commas).
* Fixed: Fatal Error Recovery - Recovery emails no longer trigger on errors that don't take the site down, and identical errors are deduplicated within 24h.
* Improved: Cache & Performance - The "Enable Cache & Performance" toggle is now the module's master switch — OFF stops the page cache AND every optimisation.
* Removed: Cache & Performance - The "Enable RUCSS" toggle is hidden until the server-side application is implemented; the previous switch did nothing.

= 1.9.8 =
* Added: Logs - New cross-module debug logger with copy / download / clear actions, filtered by module / level / search. Cookies, nonces and tokens are auto-redacted. Off by default.
* Added: Logs - Exported JSON includes a full environment block (server, PHP / WP versions, theme, active plugins, memory limits) so a single export is enough to diagnose a bug.
* Added: Cache & Performance - "Preload all pages now" button on the Preload tab. Crawls every sitemap URL with a live progress bar and Stop button, without blocking the cron.
* Added: Cache & Performance - Critical CSS now records detailed client-side log events to the Logs page so generation failures can be diagnosed without browser-console access.
* Fixed: Cache & Performance - Critical CSS now generates reliably on production sites behind a CDN (was silently stuck on "Not generated").
* Fixed: Cache & Performance - "Preload all pages now" button no longer returns an empty queue.
* Fixed: Cache & Performance - Audit results panel now renders with its full styling (cards, status dots).
* Fixed: Cache & Performance - Critical CSS now falls back to the home URL when the requested template (Page, Article, Archive) has no published content yet.
* Fixed: Cache & Performance - Audit no longer recommends turning on an option that is already enabled.
* Fixed: SEO/GEO - Sitemap URL list stays correct when a third-party theme returns false from the home_url filter.
* Improved: Cache & Performance - PageSpeed Insights error messages now explain what to fix in Google Cloud Console (API enablement, key restrictions, referrer restrictions).
* Improved: Cache & Performance - "How to get a free API key" tutorial now covers API restrictions and HTTP-referrer restrictions, the two most common causes of failure.
* Improved: Cache & Performance - Live preload table now uses the plugin's design system for visual consistency with other modules.
* Translations: 360 new strings added in the 11 supported locales for the new Logs page, the live preload UI and the PageSpeed tutorial.

= 1.9.7 =
* Fixed: Cache & Performance - Critical CSS no longer times out on heavy pages or behind a CDN; extraction is now near-instant.
* Fixed: Cache & Performance - PageSpeed Insights audit and "Test" button now work with Google API keys restricted by HTTP referrer.
* Fixed: Cache & Performance - Audit recommendation buttons now correctly switch to the target tab when the user is already on the cache settings page.
* Fixed: Cache & Performance - Audit no longer recommends turning on an option that is already enabled.
* Fixed: Cache & Performance - Audit loading message and recommendation group titles now appear in the user's language.
* Improved: Cache & Performance - Audit buttons now show a spinner while the audit is running.
* Improved: Cache & Performance - Audit recommendations now use a suggestive tone ("Try X...") instead of imperative commands.
* Improved: Cache & Performance - Audit results panel refreshed to match the visual style of the rest of the plugin.
* Improved: Cache & Performance - Targeted setting now briefly pulses when landing on a settings tab from an audit recommendation.
* Translations: 330 new strings added in the 11 supported locales.

= 1.9.6 =
* Fixed: Cache & Performance - Module now automatically takes over when another cache plugin is removed but its cache file is left on disk (previous file is safely backed up first).
* Fixed: Cache & Performance - Properly distinguish between an active competing cache plugin and an obsolete cache file left by a removed plugin.
* Fixed: Cache & Performance - WooCommerce cart, checkout and my-account pages are now reliably excluded from caching, including on sites with custom permalinks.
* Translations: 293 Cache & Performance strings now available in the 11 supported locales.

= 1.9.5 =
* Fixed: Cache & Performance - Cache optimisations are now automatically paused when another cache plugin is detected (WP Rocket, W3 Total Cache, WP Super Cache, LiteSpeed, etc.), with a clear admin notice.
* Fixed: Cache & Performance - Conflicts with other cache plugins are now detected continuously, not only at module activation.
* Fixed: Cache & Performance - Page Cache and Advanced tabs no longer show a misleading "cache file missing" warning while the module is intentionally paused for a conflict.
* Fixed: Cache & Performance - Native browser alert popups in the cache UI replaced with proper WordPress admin notices that respect the active language.
* Fixed: Cache & Performance - "Lazy load exclusions" now correctly keep listed images and iframes eager-loaded.
* Fixed: Cache & Performance - Page cache is now automatically bypassed on themes that handle CSS in non-standard ways (Avada included by default).
* Fixed: Admin - "Save Changes" button under tabbed module pages now aligns properly with the tab content.
* Improved: Cache & Performance - Defer JS and Delay JS now ship with built-in safelists covering ~50 common patterns (jQuery, Stripe, PayPal, Recaptcha, Elementor, WooCommerce, WPML, etc.).
* Improved: Cache & Performance - "Remove Unused CSS" default safelist now covers dynamic class patterns from WordPress, Gutenberg, Elementor, WPML and WooCommerce.
* Improved: Cache & Performance - Cache file indicator on the Advanced tab now shows a "yielded to another cache plugin" state instead of a misleading "Not installed" label.
* Removed: Cache & Performance - "Concatenate CSS" and "Minify JS" options hidden until their implementation is complete.
* Translations: 7 new strings added in the 11 supported locales.

= 1.9.4 =
* Fixed: Cache & Performance - Cache configuration line is now reliably added to the WordPress configuration file on shared hosts where some safety checks were reporting false negatives.
* Fixed: Cache & Performance - Page Cache tab no longer stacks duplicate plugin-managed comments in the WordPress configuration file on every reinstallation.
* Fixed: Cache & Performance - Cache configuration line is now retried silently on every admin page load when missing, so a transient permission issue at activation no longer leaves the site stuck without caching.
* Improved: Cache & Performance - Clearer wording for the "caching is not active" admin notice.

= 1.9.3 =
* Fixed: Cache & Performance - Cache file no longer outputs garbage characters when something writes to the page before the cache hit (visible in private-window browsing only).
* Fixed: Cache & Performance - Cache file now serves uncompressed HTML when PHP automatic compression is enabled, to prevent double compression.
* Fixed: Cache & Performance - Critical CSS rows no longer get stuck on "Generating..." when extraction is skipped, times out or fails; cells now reset to "Not generated".
* Fixed: Cache & Performance - Clicking "Generate" or "Generate all" while a previous Critical CSS run is still extracting no longer creates parallel runs.

= 1.9.2 =
* Fixed: Cache & Performance - Critical CSS generator no longer reloads the page when a row finishes or is cleared; unsaved settings on other tabs are now preserved.
* Fixed: Cache & Performance - Per-row generation feedback: clicked "Generate" button switches to a spinner and the relevant cell shows a "Generating..." placeholder.
* Fixed: Cache & Performance - "Save Changes" button now correctly aligned with the tab content.

= 1.9.1 =
* Fixed: Cache & Performance - Activation no longer blocks when a leftover cache file from another plugin is still present after that plugin has been deactivated. The cache file is now taken over with a timestamped backup.
* Improved: Cache & Performance - Detection of leftover cache files now identifies the originating plugin (WP Rocket, W3 Total Cache, WP Super Cache, LiteSpeed, WP Fastest Cache, Cache Enabler, etc.) for clearer diagnostics.

= 1.9.0 =
* Added: Cache & Performance - New module covering page cache, browser cache, GZIP, HTML minification, lazy loading, JS defer / delay, YouTube facade, sitemap warmup, hover prefetch, CDN URL rewrite, resource hints, Critical CSS, Remove Unused CSS, PageSpeed audit and a Web Vitals dashboard.
* Added: Cache & Performance - 8-tab admin interface (Page Cache / Files / Media / Preload / CDN / Audit / Web Vitals / Advanced).
* Added: Cache & Performance - Cache plugin conflict detection (refuses activation if WP Rocket, W3 Total Cache, WP Super Cache, LiteSpeed Cache or WP Fastest Cache is active).
* Added: Cache & Performance - Three-layer safety switch to disable caching instantly: a PHP constant, a file flag, and an admin URL parameter for emergency bypass.
* Added: Cache & Performance - Heartbeat control for the front-end, the admin and the post editor with independent throttling.
* Added: Cache & Performance - Hybrid audit (Google PageSpeed Insights + built-in local audit) producing actionable recommendations classified as fixable by the plugin, by the theme, or by hosting.
* Added: Cache & Performance - Real User Monitoring of Core Web Vitals (LCP, INP, CLS, FCP, TTFB) with daily aggregation and an inline dashboard.
* Added: Cache & Performance - Embedded Health Check in the Advanced tab with 25 self-tests and a one-click report.
* Added: Core - New "Performance" category in the modules dashboard.
* Added: Core - Modules can now run setup and cleanup actions when activated or deactivated.
* Added: Core - Cross-module cache purge so any module can request a cache flush on state changes.
* Added: Mute Core Emails - New "Password change (to admin)" toggle to suppress the admin notification when a user changes their password.
* Added: Hide Login - Page cache is now automatically bypassed on the custom login URL.
* Fixed: User Role Editor - Capabilities panel now appears when a role is clicked.
* Fixed: Hide Login - Custom login slug now serves the login form correctly when the Cache module is active.
* Fixed: Hide Login - Eliminated 5 PHP "Undefined variable" warnings on the login page.
* Fixed: Mute Core Emails - Eliminated 8 PHP warnings and 2 deprecation notices on user creation.
* Fixed: Mute Core Emails - Admin notification "Password Changed" now correctly intercepted when the new toggle is on.
* Fixed: Cache & Performance - Eliminated 4 PHP warnings on the Advanced tab.
* Fixed: Backup - "Create Backup Now" button now correctly starts the backup.
* Fixed: Backup - Replaced a misleading "already saved" icon on the "Create Backup Now" button with a clearer "upload" icon.
* Improved: Core - JavaScript and CSS files are now versioned by their modification time when WordPress is in script-debug mode, so edits show up instantly during development.
* Improved: Redirections - Adding, updating, deleting, toggling, bulk-deleting and CSV-importing redirections now flushes the page cache so new redirect rules take effect immediately.
* Improved: Maintenance - Toggling maintenance mode now flushes the page cache so visitors do not see a stale state.

= 1.8.2 =
* Fixed: Redirections - False slug change detection on newly created posts.

= 1.8.1 =
* Fixed: SEO/GEO - Fatal error when using the [blaminhor_toc] shortcode.
* Improved: SEO/GEO - Noindex warning notice now also triggers when the Reading Settings "Discourage search engines" option is checked.
* Improved: SEO/GEO - Score details panel now stays expanded after clicking Refresh.
* Improved: SEO/GEO - Score Refresh button now uses current unsaved metabox data.

= 1.8.0 =
* Added: SEO/GEO - Schema.org / JSON-LD structured data output (Organization, Person, WebSite, Article, WebPage, BreadcrumbList).
* Added: SEO/GEO - New "Schema" settings tab with Site Identity and Structured Data Defaults.
* Added: SEO/GEO - Schema tab in the post / page metabox for per-content schema type override and custom JSON-LD.
* Added: SEO/GEO - Automatic FAQ detection from page content with FAQPage schema generation.
* Added: SEO/GEO - Granular AI crawler blocking via robots.txt (GPTBot, Google-Extended, ClaudeBot, PerplexityBot, CCBot).
* Added: SEO/GEO - HowTo schema auto-detection from ordered lists, step-by-step patterns and how-to blocks.
* Added: SEO/GEO - VideoObject schema auto-detection from YouTube, Vimeo and HTML5 embeds.
* Added: SEO/GEO - Author E-E-A-T enrichment (jobTitle, description, knowsAbout, alumniOf, sameAs) in Article schema.
* Added: SEO/GEO - Key Takeaways feature: summary points displayed at the top of content and added to the Article schema abstract.
* Added: SEO/GEO - Table of Contents shortcode [blaminhor_toc] with configurable depth, style and title.
* Added: SEO/GEO - GEO Content Score: 20-criteria analysis (0-100) measuring structure, machine interpretability, citability and E-E-A-T signals.
* Added: SEO/GEO - Schema Description field with fallback to meta description then automatic excerpt.
* Added: SEO/GEO - SEO Score: 20-criteria on-page analysis (0-100) covering title, description, content quality, technical SEO and readability.
* Fixed: SEO/GEO - Unresolved title template placeholders (e.g. {page_number}) no longer displayed in SERP previews and page titles.
* Fixed: Core - Modals now open reliably across all modules.
* Improved: SEO/GEO - Metabox reorganised to 3 tabs: SEO (Advanced merged), GEO and Social.
* Improved: SEO/GEO - Settings page Schema tab enriched with Author E-E-A-T, Table of Contents and Key Takeaways sections.
* Improved: SEO/GEO - Content Overview edit modal displays all sections stacked vertically with scroll.
* Improved: SEO/GEO - Added descriptive introductions to all settings page tabs and metabox sections.
* Improved: SEO/GEO - JSON-LD preview and FAQ detection indicator added in the Schema metabox section.
* Improved: Core - Cleaner and lighter CSS spacing system shared across all modules.
* Improved: SEO/GEO - Tab descriptions are now collapsible accordions.
* Improved: SEO/GEO - Score widget toggle and refresh button redesigned with info banner style.
* Improved: SEO/GEO - GEO score criteria now display current values and recommended thresholds.
* Improved: SEO/GEO - Each SEO/GEO score criterion now links to its authoritative source.
* Improved: SEO/GEO - Replaced 3 duplicate GEO E-E-A-T criteria with GEO-specific ones.
* Improved: SEO/GEO - Added note in score details clarifying that not all criteria apply to every page.

= 1.7.5 =
* Added: SEO/GEO - Unsaved changes warning when leaving the post editor with modified SEO fields.
* Fixed: SEO/GEO - Invalid lastmod dates in the sitemap when post modification GMT date is empty.

= 1.7.4 =
* Fixed: SEO/GEO - Placeholders like {year}, {month}, {sep} not being replaced in custom SEO titles, meta descriptions, OG and Twitter Card tags on the frontend.

= 1.7.3 =
* Fixed: SEO/GEO - Variable buttons (Title, Separator, Site Name, etc.) not inserting placeholders in the post editor metabox.
* Improved: Redirections - Cleaner internal database query handling.
* Improved: Domain Changer - Modernised table name handling in database queries for better safety on recent WordPress versions.

= 1.7.2 =
* Fixed: Backup - Backups created by DB Optimizer and Domain Changer now appear in the Backup module list and can be restored from there.
* Fixed: DB Optimizer - Pre-optimisation backups are now saved as .zip archives compatible with the Backup module format.
* Fixed: Domain Changer - Pre-domain-change backups are now saved as .zip archives compatible with the Backup module format.

= 1.7.1 =
* Added: DB Optimizer - "Create Backup Now" button to create a SQL database backup directly from the page (in the backup notice and the confirmation modal).
* Added: Multisite - Backup files are now stored in separate subdirectories per blog ID for full isolation across the network (Backup, Domain Changer, DB Optimizer).
* Fixed: SMTP - Fatal error on PHP 8.4 caused by a corrupted French translation of the email log status message.
* Fixed: Backup - Pre-update backups now display the plugin or theme name in the Type column.

= 1.7.0 =
* Added: Disable Comments - New module to completely disable comments on all post types, with tools to close existing comments and delete all comments from the database.
* Added: SEO/GEO - Clickable variable tags (Title, Separator, Site Name, etc.) under SEO Title and Meta Description fields in the metabox and the SEO list edit modal.
* Added: Domain Changer - Editable search domain field to find and replace traces of a previously migrated domain.
* Added: Domain Changer - Exhaustive database search across all tables, including third-party plugin tables.
* Added: Redirections - Loop detection: redirections creating loops (same source/target, reverse pairs, chains) are automatically disabled with visual warnings.

= 1.6.1 =
* Fixed: SEO/GEO - Variables like {site_name}, {sep}, {title} are now properly replaced in the SERP preview for meta descriptions.
* Improved: Core - Extracted inline CSS styles to proper stylesheet classes across all modules for better maintainability.

= 1.6.0 =
* Added: Hide Login - New module to change the login URL and block access to wp-login.php and wp-admin for non-logged-in users.
* Added: Classic Editor - Renamed to "Classic Editor & Widgets" with independent toggles for the Classic Editor and the Classic Widgets screen.
* Added: DB Optimizer - 7 new cleanup types: duplicated postmeta, oEmbed cache, duplicated commentmeta, pending comments, orphaned usermeta, duplicated usermeta and dead cron events.
* Added: DB Optimizer - Configurable toggles for new cleanup types in scheduled cleanup settings.
* Added: Backup - Configurable archive splitting by size (default 200 MB) to prevent PHP timeout on large backups.
* Added: Backup - Real-time log panel during backup operations with terminal-style display.
* Added: Backup - "Max Archive Size" setting to control the archive splitting threshold.
* Added: Backup - "View Log" button to consult the log of each backup from the backup list.
* Added: Backup - "Interrupted" status badge for backups that did not complete successfully.
* Added: Backup - Detailed restore logging (SQL errors, table operations, component progress).
* Added: SEO/GEO - Automatic conversion of Yoast, Rank Math and AIOSEO placeholders during SEO data import.
* Fixed: Backup - PHP timeout (error 500) when backing up large components, by splitting into smaller archives.
* Fixed: Backup - Duplicated component names in the backup list when archives are split into multiple parts.
* Fixed: Backup - Inability to delete pre-restore safety backups.
* Fixed: Backup - Pre-restore notice not disappearing after deleting the related backup.
* Fixed: Backup - Database export was including unrelated tables from other WordPress installations sharing the same database.
* Fixed: SEO/GEO - Yoast shortcodes (%%sep%%, %%sitename%%, etc.) appearing as raw text after SEO import.
* Fixed: DB Optimizer - "Overhead" column no longer displays misleading values for InnoDB tables (the space shown was pre-allocated, not reclaimable).
* Fixed: DB Optimizer - Hardened the database query that lists table sizes.
* Improved: Backup - Renamed module from "Backup" to "Backup & Restore" to better reflect its capabilities.

= 1.5.6 =
* Added: Backup - Separate scheduling for database and files backups (independent frequency, time and retention).
* Added: Backup - "Every Two Weeks" frequency option for scheduled backups.
* Fixed: Backup - Scheduled backups now run correctly.
* Fixed: Backup - Scheduled backup cleanup not identifying scheduled backups correctly.
* Fixed: SEO/GEO - HTML entities displaying literally in the SERP preview.
* Fixed: SEO/GEO - Error 500 when loading the content list on sites using page builders.
* Fixed: Redirections - Infinite loop when importing from the Redirection plugin.
* Improved: SEO/GEO - SERP preview now displays the real site favicon, publication date and featured image thumbnail.
* Improved: Backup - Redesigned scheduled backups layout with side-by-side cards.
* Improved: SEO/GEO - Renamed module from "SEO/GSO" to "SEO/GEO".

= 1.5.5 =
* Added: Redirections - Bulk delete, duplicate URL detection and add-redirection notices.
* Fixed: Redirections - Multiple fixes covering add / edit / refresh buttons, CSV import, stats update and modal close.
* Improved: Redirections - Code cleanup and consistent error messages.

= 1.5.4 =
* Fixed: SEO/GEO - Sitemap 404 for custom post types.
* Improved: SEO/GEO - SERP preview now uses the default title template.

= 1.5.3 =
* Added: SEO/GEO - New "Titles" settings tab with collapsible accordion panels for post types, taxonomies and special pages.
* Added: SEO/GEO - Title templates with configurable separator and dynamic variables for all content types.
* Added: SEO/GEO - Clickable variable buttons for easy template composition.
* Added: SEO/GEO - Live title preview under each template field with sample data.

= 1.5.2 =
* Fixed: Core - Filled all missing translations across the 11 supported languages.

= 1.5.1 =
* Fixed: User Role Editor - Missing translations and French accents.
* Fixed: User Role Editor - Icon alignment in action buttons.
* Fixed: Classic Editor - Missing translation for the status notice.
* Improved: User Role Editor - User capabilities modal now uses friendly labels, a search bar and shows role-inherited capabilities as checked but greyed out.

= 1.5.0 =
* Added: User Role Editor - New module to manage user roles and capabilities (create, clone, delete roles, per-user capabilities, import/export JSON, reset to defaults).

= 1.4.7 =
* Improved: SEO/GEO - SERP preview redesigned to match real Google results (correct layout, fonts, truncation).
* Removed: SEO/GEO - Homepage meta and title separator settings.

= 1.4.6 =
* Fixed: Post Types Order - Custom post order now applies correctly on the frontend with Elementor and other page builders.
* Fixed: Backup - Permalinks no longer get corrupted in the database export.
* Fixed: Backup - Data corruption during restore when source and target table prefixes differ.
* Fixed: Backup - Lost admin permissions after restore with a different table prefix.
* Fixed: Backup - HTTP / HTTPS protocol difference between source and target sites is now handled correctly during restore.
* Fixed: Backup - Page-builder data is now correctly preserved during restore.
* Fixed: Backup - Restore now replaces directory contents instead of merging, preventing leftover files from previous installations.

= 1.4.5 =
* Fixed: Backup - Download button now works correctly on all server configurations, including PHP 8 and above.
* Fixed: Backup - Multi-archive backups now download all files instead of only the first one.

= 1.4.4 =
* Added: Backup - Download button to save backup archives directly to your computer.

= 1.4.3 =
* Fixed: Post Types Order - Custom post type order now applies to page builder queries on the frontend (Elementor, Beaver Builder, Divi, etc.).

= 1.4.2 =
* Fixed: Post Types Order - Custom taxonomy terms now display correctly in the native admin list when sorting is enabled.

= 1.4.1 =
* Fixed: Post Types Order - Custom taxonomy terms no longer disappear from the native admin list when sorting is enabled.
* Fixed: Backup - Pre-update backups for plugins and themes now appear as a single grouped row instead of two separate entries.

= 1.4.0 =
* Added: Post Types Order - New module to reorder any post type or taxonomy with drag and drop.
* Added: Backup - Bulk delete with checkboxes and select all / deselect all.
* Added: Backup - Missing pre-restore notice translation in the 11 supported languages.
* Added: Classic Editor - Complete translations in the 11 supported languages.
* Added: HTTPS Redirect - Complete translations in the 11 supported languages.
* Fixed: Backup - Database was not included in automatic pre-update backups for plugins and themes.
* Fixed: Backup - Backup list missing per-row checkboxes for bulk selection.
* Fixed: DB Optimizer - Missing translation for the "Go to Backup Module" button.
* Fixed: SEO/GEO - Edit modal closing when selecting text in the title or description fields.
* Fixed: SEO/GEO - Removed unnecessary "Save Settings" button from the Overview and Import tabs.
* Fixed: SEO/GEO - Added unsaved changes warning when closing the edit modal without saving.
* Fixed: Core - Removed duplicate sort icons on sortable table columns.
* Improved: Core - CSS deduplication between admin.css and modules.css for lighter page loads.

= 1.3.2 =
* Fixed: SEO/GEO - Critical compatibility fix for the Avada theme: editing a page no longer loads the wrong content.
* Fixed: SEO/GEO - Content overview list now correctly filters by post type, even on sites where third-party themes alter WordPress queries.

= 1.3.1 =
* Added: Core - Admin bar menu with quick access to Dashboard and all active modules.
* Fixed: Content Duplicator - Unicode characters (accents, special characters) are now preserved correctly when duplicating page builder content.
* Fixed: Content Duplicator - Title suffix now displays correctly with proper spacing (" - Copie" instead of "- copie").
* Fixed: SEO/GEO - XML sitemaps now work correctly on WordPress installations in subdirectories.
* Fixed: SEO/GEO - Sitemap rewrite rules timing issue resolved for better compatibility.
* Improved: Content Duplicator - Page-builder content is now copied directly at the database level so all special characters are preserved exactly.
* Improved: Content Duplicator - All post types and taxonomies (including custom ones) are now enabled by default.
* Improved: Backup - After backup completion, automatically switches to the Backups tab with the updated list and a success message.
* Improved: Backup - Upload tab now supports multiple files with queue management before uploading.

= 1.3 =
* Added: Core - 9 new languages: Spanish, Portuguese, Italian, Japanese, Russian, Turkish, Dutch, Brazilian Portuguese and Indonesian.
* Added: Backup - Automatic backup before WordPress core, plugin or theme updates.
* Added: Core - Feedback invitation on the plugin dashboard to encourage user suggestions.
* Added: Content Duplicator - Full support for page builders (Elementor, Beaver Builder, Divi, Brizy, Oxygen).
* Fixed: Content Duplicator - Page builder content now duplicates correctly with regenerated CSS.
* Fixed: SMTP - Error during configuration import.
* Fixed: SMTP - Email log now refreshes automatically after sending a test email.
* Fixed: HTTPS Redirect - Added missing translations for French and other languages.
* Fixed: Backup - Default backup options are now correctly applied to the backup creation interface.
* Fixed: Backup - Archive names now show the actual time instead of random characters.
* Fixed: SEO/GEO - Noindex warning link now correctly opens the Indexing tab.
* Fixed: SEO/GEO - Auto-generated meta descriptions now appear in grey italic to distinguish them from manual entries.
* Fixed: SEO/GEO - Content overview now refreshes automatically after importing SEO data.
* Fixed: Fatal Error Recovery - Admin bar option is now disabled by default.
* Fixed: Fatal Error Recovery - Email notifications are now sent immediately during PHP shutdown, even when the site crashes.
* Fixed: Core - Resolved various code-quality warnings flagged by the WordPress Plugin Check.
* Improved: Content Duplicator - Default suffix changed from " (Copy)" to " - copy" for cleaner titles.
* Improved: Backup - Progress label now reads "Backing up" instead of "Creating".

= 1.2.0 =
* Added: Backup - Upload external backup files with automatic domain change detection.
* Added: Backup - Scheduled automatic backups with configurable frequency (daily, weekly, monthly) and retention settings.
* Added: Backup - Step-by-step progress bar during backup creation.
* Added: SEO/GEO - Import data from Yoast SEO, Rank Math and All in One SEO.
* Added: Redirections - Import redirections from Redirection plugin and Safe Redirect Manager.
* Added: SMTP - Import configuration from WP Mail SMTP, Post SMTP and Easy WP SMTP.

= 1.1.2 =
* Added: Backup - Automatic pre-restore backup before any restore operation.
* Added: Backup - Undo restore feature to revert to the previous state if a restore goes wrong.
* Added: Backup - Separate archives per component (database, plugins, themes, uploads) for smaller file sizes and better flexibility.
* Added: Backup - Pre-restore backups now appear in the main backup list.
* Added: SEO/GEO - Focus keywords now display as visual tags / badges in the metabox and the edit modal.
* Added: SEO/GEO - Keywords are now visible in the Content Overview listing.
* Fixed: DB Optimizer - Removed duplicate backup feature; the page now links to the Backup module.
* Fixed: Core - Resolved double event binding issues causing duplicate actions across multiple modules.
* Fixed: SMTP - Test relay now correctly uses the configured From Email.
* Fixed: SMTP - Updated Brevo tutorial with domain authentication steps.
* Improved: SEO/GEO - Archive indexing settings now use positive logic (check to index instead of check to noindex).
* Improved: SEO/GEO - Renamed module from "SEO" to "SEO/GSO".
* Improved: SMTP - Merged tabs into a single Configuration tab with a dropdown provider selector.
* Improved: SMTP - Enhanced relay visibility with a primary badge and clearer action buttons.
* Improved: SMTP - Added "Compare SMTP providers" link.
* Improved: Core - Admin sidebar modules now sorted alphabetically by translated name.
* Improved: Redirections - Smarter slug change detection (ignores trash and plain permalinks).
* Improved: Backup - Backup selection cards with a more compact design.

= 1.1.1 =
* Added: Core - Redirect to the plugin dashboard after activation.
* Added: Core - "Settings" link in the plugins list page.
* Added: SMTP - Email log auto-refresh after a successful test email.
* Added: Fatal Error Recovery - Recovery email notification option.
* Fixed: SEO/GEO - Missing translation for placeholder text.
* Fixed: Favicon - "Alfred Proteus" references in HTML comments.
* Fixed: Image Sizes - Cleanup button now scrolls to the cleanup section.
* Fixed: Mute Core Emails - Design consistency fixes (missing card styles).

= 1.1.0 =
* Added: Core - 13 new modules: Backup, Broken Links Checker, Classic Editor, Database Optimizer, Domain Changer, Favicon Generator, Fatal Error Recovery, HTTPS Redirect, Image Sizes, Mute Core Emails, Redirections 301 and SEO/GSO.
* Added: Core - Dashboard modules organised by categories with collapsible accordion sections.
* Added: Core - "Delete data on uninstall" option in Advanced Settings.
* Added: SMTP - Complete translations for all 13 provider tutorials.
* Improved: Fatal Error Recovery - Plugin deactivation now uses the database instead of renaming folders, for safer recovery.
* Improved: Fatal Error Recovery - Added support for single-file plugins (e.g. Hello Dolly).
* Improved: HTTPS Redirect - Module is now disabled by default with a safety warning.
* Improved: Core - Better translation handling for WordPress 6.7+ compatibility.
* Improved: Core - Aligned with WordPress Plugin Check guidelines.
* Fixed: Core - Various translation issues, with French and German improvements.

= 1.0.0 =
* Added: Core - Initial release with 3 modules: Content Duplicator, Maintenance Mode and SMTP Mailer.
