Description
LC Smart Media Redirect & Cleaner keeps your Media Library lean without ever breaking a front-end
image. It intelligently redirects missing/mismatched thumbnail-size requests to the closest
available size instead of letting them 404 or silently regenerate on every request, scans for
orphaned metadata and unused files, and gives you a safe, reviewable prune tool.
Features:
- Adaptive CPU Load Throttling & Background Engine — Real-time server CPU load monitoring (
get_server_cpu_load()) with dynamic batch pacing, cooling backoffs, and safe execution. - Smart Core Web Vitals (LCP) Booster & Hero Preload Engine — Automatically detects hero images, strips
loading="lazy", injectsfetchpriority="high"anddecoding="async", and outputs high-priority<link rel="preload">in<head>. - Master Original Image Dimension Cap & Auto-Downscaler — Resizes oversized raw master camera/iPhone uploads in place (e.g. capped at 2560px or 2048px) to eliminate hosting bloat.
- Native WP-CLI Command Suite — Comprehensive terminal management via
wp smrc stats,wp smrc regen,wp smrc prune, andwp smrc redirect. - Interactive Visual Quality & Savings Comparison Modal — Apple-style split comparison slider with real-time file size & % savings calculations.
- Smart Size Redirect — serves the closest matching registered image size instead of a
broken or oversized fallback. - Metadata Orphan Scanner — manual, batched scan for attachment metadata pointing at files
that no longer exist. - Prune Tool — review orphaned files before removing them; nothing is deleted blindly.
- Future Generation Manager & custom image size management.
- Background thumbnail regeneration via WP-Cron, batched to avoid timeouts.
- App-like dashboard with single-site storage stats, export/import configuration.
- Staging-to-Live Production Preset Sync — export complete configurations (core dimensions, size selections, Smart Size Redirect rules, and Pro engines) for seamless local-to-live migration.
Need automated (no-click) background maintenance, AVIF/WebP multi-format delivery, auto-compression, or
multisite/CDN-aware storage analysis? See LC Smart Media Redirect & Cleaner Pro, the licensed
add-on.
This plugin is the direct successor to “Batch Image Cleaner” (v1.9.28 and earlier); Standard
free features and stored settings remain fully compatible.
Current Active Pipeline Status
- Standard lifecycle (v1.9.33, audited August 8, 2026): ✅ Bootstrap order, migration, activation/deactivation, cron ownership, uninstall cleanup, and legacy URL handling were traced end to end. Three defects were fixed: query-string false-positive 410 responses, stale deactivation orphan-scan state, and retained dynamic prune sessions after uninstall.
- Future-upload size generation & Image Size Manager (v1.9.56, audited August 19, 2026): ✅
smrc_get_registered_sizes()updated to read unfiltered registrations directly fromSmrc_Core::get_image_sizes(). Custom registration, override ordering, disabled-size filtering, minimum-longest-side behavior, duplicate-size deduplication, and post-upload metadata were traced end to end. All 26 registered sizes (Core, Theme, WooCommerce, Custom) reliably render on the Image Sizes grid regardless of active upload generation state. - Dashboard configuration controls (v1.9.35, audited August 8, 2026): ✅ Rendered controls, action bindings, nonces/capabilities, option persistence, import/export, and completion feedback were traced end to end. Two UI defects were fixed: numeric settings now acknowledge or safely roll back failures, and the unused scan-subfolder selector was removed.
- Manual thumbnail regeneration (v1.9.36, audited August 8, 2026): ✅ Selected-size persistence, reset/resume/run loop, locks, attachment processing, file/metadata writes, errors, stop, and recovery controls were traced end to end. Two defects were fixed: Stop no longer releases the lock during an active batch, and the live error total includes every batch error.
- Background thumbnail regeneration (v1.9.37, audited August 8, 2026): ✅ AJAX start/status/cancel, cron scheduling, run state, locks, batch processing, completion, stale recovery, and UI feedback were traced end to end. Four concurrency/recovery defects were fixed: duplicate starts and callbacks are blocked, cancellation cannot be overwritten by an in-flight batch, and malformed running state recovers safely.
- Background orphan scanner (v1.9.38, audited August 8, 2026): ✅ Start/status/cancel/clear AJAX, WP-Cron scheduling, persistent offsets/results, filesystem and metadata phases, result caps, cancellation, stale recovery, and UI polling were traced end to end. Four concurrency/recovery defects were fixed: duplicate starts and cron callbacks are blocked, cancellation cannot be overwritten by in-flight work, malformed state recovers to idle, and structured UI failures are handled correctly.
- Cleanup and prune execution (v1.9.39, audited August 8, 2026): ✅ Analysis safety set, prune preparation, transient ownership, batched deletion, per-file path handling, orphan metadata/file deletion, and client completion feedback were traced end to end. Two safety defects were fixed: every batch revalidates its reviewed filesystem scope, and the UI only confirms deletion after a successful server response.
- Rebrand compatibility (v1.9.40, audited August 8, 2026): ✅ Standard bootstrap, class/function identity, shared cron hooks/state, Pro dependency contract, and exported UI metadata were traced end to end. Runtime and exported metadata now use the Smart Media name; retained
bic_*keys are data compatibility identifiers, not executable class/function names. - Active runtime boundary (v1.9.41, audited August 8, 2026): ✅ Configuration import validation now accepts only Smart Media exports. The retired Batch Image Cleaner is not used as a runtime or import dependency; retained
bic_*values remain stored-data compatibility only. - Deletion and regeneration safety (v1.9.42, audited August 8, 2026): ✅ Folder deletion, thumbnail-size deletion, metadata-derived file paths, foreground size selection, and lifecycle cleanup were rechecked. Four defects were fixed: unsafe deletion inputs are rejected, failed deletes retain metadata, folder traversal refuses symlinks/out-of-scope entries, and regeneration processes only active image sizes.
- Third-pass deletion revalidation and state hardening (v1.9.44, audited August 8, 2026): ✅ Orphan deletion (metadata + files), regeneration lock lifecycle, prune lock recovery, custom-size deletion, size-override read paths, configuration import validation, and uninstall coverage of lock options and dynamic scan-accumulator transients.
- Smart Size Redirect (Standard, v1.9.55, audited August 18, 2026): ✅ Dynamic canonical discovery, aspect-ratio/crop-mode compatibility scoring, manual destination overrides, auto-match reset, and frontend
image_downsize/srcset behavior were traced end to end. - Fourth-pass deep audit (Standard + Pro, audited August 10, 2026): ✅ Thumbnail Regeneration, Future Generation & Custom Sizes, Storage Overview & Config Backup, Pro License Engine, Pro WebP Pipeline, Pro Auto-Compression Pipeline, Pro Automated Maintenance, and Pro Multisite & CDN Storage Analysis were thoroughly reviewed end to end. Validated correctness, state transitions, fail-closed safety checks, and edge-cases. Found no regressions or new bugs. The fixes applied in previous passes successfully resolved all prior defects in these pipelines.
Installation
- Upload the
lc-smart-media-redirect-cleanerfolder to/wp-content/plugins/. - Activate the plugin through the Plugins menu in WordPress.
- Access the dashboard from the new Media Redirect menu item in your WordPress admin.
FAQ
-
If AVIF and WebP files are so small, why do we still need thumbnail sizes?
-
AVIF and WebP solve file compression (bytes per pixel), but thumbnail sizes solve display resolution, mobile GPU memory decoding, and responsive srcset layout. Even an ultra-compressed 24-megapixel AVIF takes 96 MB of RAM for a mobile device to decompress into GPU memory; loading 30 full-res images on a mobile page can cause browser lag or out-of-memory crashes. Resizing to a thumbnail (e.g. 400×300 px) in AVIF reduces file size from ~350 KB down to just ~8 KB (a 99.8% reduction!) while decoding in under 0.5 MB of RAM. LC Smart Media Redirect & Cleaner lets you keep only the 2-3 essential responsive sizes in AVIF/WebP, and dynamically redirects any missing legacy requests on the fly with zero 404s.
-
How does Smart Size Redirect prevent broken images?
-
When a theme or plugin requests an image size that you deleted or disabled, Smart Size Redirect intercepts the request and dynamically serves the closest available registered size with matching aspect ratio, preventing broken layouts without generating unnecessary files.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“LC Smart Media Redirect & Cleaner” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “LC Smart Media Redirect & Cleaner” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.9.66 (August 26, 2026)
- REBRANDING & URL SYNC — Updated
Plugin URItohttps://www.lightandcomposition.com/dev/lc-smart-media-redirect-cleaner/across plugin headers, Dev Lab catalog, and metadata mappings.
1.9.65 (August 26, 2026)
- REVIEW COMPLIANCE — Directory slug alignment to
lc-smart-media-redirect-cleaner, full text domain unification, unslashed and sanitized nonce verification, and template late-escaping audit.
1.9.64 (August 25, 2026)
- AUDIT — 17-Pipeline Deep End-to-End Audit: Full code and security verification across all 17 pipelines including SSR routing, orphan cleanup, lock lifecycle, master downscaler, and LCP booster.
- COMPLIANCE — Zero-Residue Lifecycle Cleanup: Added missing options (
smrc_max_original_width,smrc_lcp_preload_enabled) touninstall.phpandactivate()/maybe_upgrade()defaults. - HARDENING — Form Action & Superglobal Sanitization: Added strict
sanitize_key()andwp_unslash()sanitization across admin form actions and AJAX request parameters. - TEST SUITE — Verified 100% test pass rate across 225 automated unit tests with 765 assertions.
1.9.63 (August 25, 2026)
- REFACTOR — WordPress.org Directory Rebranding: Renamed plugin to
LC Smart Media Redirect & Cleaner(slug:smart-media-redirect-cleaner) to ensure distinctiveness and eliminate generic/trademark collisions. - SECURITY — JSON Import Deep Sanitization: Added recursive
sanitize_json_payload()sanitization engine to validate, unslash, and sanitize all keys and nested values decoded from configuration imports prior to database persistence and action hook distribution (smrc_import_config_settings). - SECURITY — Global Input & Nonce Hardening: Unified unslashing and sanitization for all AJAX and form submission parameters (
nonce,offset,batch_size,ids,files). - COMPLIANCE — Scoped Admin Notices (Guideline 11): Scoped PHP extension and environment notices exclusively to the plugin’s dedicated admin screen.
- COMPLIANCE — Added
celsiusandersonto contributors and verified compatibility with WordPress 7.1.
1.9.62 (August 19, 2026)
- FIX — Storage Overview Batched Scan Accumulator: Initialized
avif_countandavif_sizeinresetAccum(), preventingNaNlive count formatting during active scans. - FIX — Visual Comparison Endpoint WebP Masters: Enhanced
ajax_get_image_comparison()to recognize.avifcompanion files for native WebP uploads.
1.9.61 (August 19, 2026)
- FEATURE — Storage Breakdown AVIF Metrics: Added AVIF companion scanning to
get_folder_statistics(),get_database_statistics(), and the batched background scan engine (scan_stats_batch()), including AVIF files in total storage calculations. - ENHANCEMENT — Multi-Color Storage Breakdown Bar: Added cyan/sky gradient
#smrc-bar-avifsegment and legend indicator to the Overview dashboard card. - ENHANCEMENT — WP-CLI AVIF Stats:
wp smrc statsnow displays total AVIF file counts and human-readable disk sizes.
1.9.60 (August 19, 2026)
- FEATURE — Adaptive CPU Load Monitoring & Dynamic Throttling: Added
Smrc_Core::get_server_cpu_load()andSmrc_Core::get_cpu_cores()supporting multi-OS load detection (Linux/proc/loadavg, macOSsysctl, WindowsNUMBER_OF_PROCESSORS) to dynamically pace batch operations and prevent server resource exhaustion. - ENHANCEMENT — Embedded live CPU load telemetry into all batch responses for dynamic client-side cooling down during traffic spikes.
1.9.59 (August 19, 2026)
- FIX — Enhanced
ajax_get_image_comparison()with random media sampling and missing disk file candidate fallback. - FIX — Split-slider before/after 1:1 pixel alignment fix in interactive comparison modal.
- FIX — Standardized
wp_parse_url()in LCP preload tag generator and addeddecoding="async"to first content image. - FIX — Added uploads base boundary realpath containment security check to
wp smrc pruneWP-CLI command.
1.9.58 (August 19, 2026) – Next-Gen Dominance Features & WP-CLI Suite
- FEATURE — Smart Core Web Vitals (LCP) Booster & Hero Preload Engine: Automatically injects
<link rel="preload" as="image">withfetchpriority="high"in<head>, stripsloading="lazy", and appliesdecoding="async"to optimize Google PageSpeed LCP score. - FEATURE — Master Original Image Dimension Cap & Auto-Downscaler: Automatically resizes oversized raw camera/iPhone master uploads on upload to configurable caps (2560px, 2048px, 1920px) preserving aspect ratio.
- FEATURE — Native WP-CLI Command Suite: Complete CLI terminal tooling via
wp smrc stats,wp smrc regen,wp smrc prune, andwp smrc redirect. - FEATURE — Interactive Visual Quality & Savings Comparison Modal: Apple-style split comparison slider overlay with real-time file size & % savings calculation.
- ENHANCEMENT — Added dimension cap preset pills and LCP toggle in Settings tab.
1.9.57 (August 19, 2026)
- REFACTOR — Modernized all plugin options, transients, cron hooks, and postmeta to
smrc_*prefix with automatic zero-data-loss migration on boot (maybe_migrate_legacy_bic_data()). - ENHANCEMENT — Configuration export/import uses clean
smrc_*keys while seamlessly supporting legacy import formats.
1.9.56 (August 19, 2026)
- FIX —
smrc_get_registered_sizes()now usesSmrc_Core::get_image_sizes()directly, ensuring all registered theme, WooCommerce, and custom image sizes appear in the Image Sizes tab even when disabled from upload generation.
1.9.55 (August 18, 2026) – Pipeline Audit: SSR Algorithmic Grounding & UI Hardening
- FIX — Smart Size Redirect (P2): Added
$ignore_custom_mappingsparameter tofind_best_redirect_target()to compute pure algorithmic defaults independently of active manual overrides, ensuring “Reset Mappings to Auto” always accurately restores true algorithmic matches. - ENHANCEMENT — Added
OVERRIDEbadge indicator on SSR dashboard chips whenever a custom manual destination is active. - ENHANCEMENT — Automatic clean-up of redundant mappings during save so options storage remains minimal and dynamic.
- ENHANCEMENT — Dashboard view auto-refreshes seamlessly upon saving SSR destination modifications.
1.9.54 (August 18, 2026) – Staging-to-Live Production Preset Sync & Filter Extensibility
- FEATURE — Enhanced Configuration Export & Import to bundle WordPress Core Dimensions (
thumbnail,medium,large, crop settings) and Smart Size Redirect rules (bic_size_redirectwith exclusions and custom dynamic mappings). - FEATURE — Added
smrc_export_config_payloadfilter andsmrc_import_config_settingsaction hooks, enabling Pro to serialize and restore complete optimization stacks. - ENHANCEMENT — Updated dashboard UI with dedicated Staging Sync card and updated export filename format (
smrc-config-YYYY-MM-DD.json).
1.9.52 (August 18, 2026) – Pipeline Audit Fixes: Smart Size Redirect & Thumbnail Deletion Hardening
- FIX — Smart Size Redirect (P2):
get_size_width_unfiltered()previously checked options-table widths for core sizes1536x1536and2048x2048, where options do not exist. Removed them from core options lookup so they properly resolve from$_wp_additional_image_sizes(1536px and 2048px) and map to large thumbnails instead of falling back to full master photos. - FIX — Batch Deletion Hardening (P4):
delete_all_thumbnails_batch()now enforcesrealpath, uploads base-prefix boundary matching, and symlink skipping matching the security model ofdelete_thumbnail_size_files().
1.9.51 (August 17, 2026) – Storage Breakdown WebP Metrics, Prune Tool Lifecycle & Admin Notice Alignment
- FIX — Storage breakdown metrics: storage overview calculation (
get_database_statistics,get_folder_statistics,scan_stats_batch) now includes.webpcompanion file sizes intotal_sizeand computeswebp_percentageaccurately. Added dynamic#smrc-bar-webpsegment and legend to the Storage Breakdown dashboard card. - FIX — Prune Tool lifecycle: fully wired
#smrc_prune_run,#smrc_prune_cancel, batch deletion progress chunks, and scan status UI in admin script and stylesheet. - FIX — Admin notices: aligned minimum WordPress version requirement notice in
class-admin-interface.phpfrom legacy 4.0 to 5.0, matching plugin declarations and runtime requirements. - HOUSEKEEPING — Synced Author URI to
https://www.lightandcomposition.com/.
1.9.50 (August 14, 2026) – Plugin URI Fix
- HOUSEKEEPING —
Plugin URInow points to the plugin’s Dev Lab page (/dev/smart-media-redirect-cleaner/) instead of the wordpress.org listing.
1.9.49 (August 10, 2026) – Critical bug fixes: delete_thumbnail_size_files & Generation Control
- FIX —
delete_thumbnail_size_files():$uploads_prefixwas undefined inside this function (only set in the siblingdelete_all_thumbnails_batch()). Caused the path-traversal guard to always be empty-string truthy silently skipped every file “Delete Size” button did nothing. Variable now properly derived fromrealpath(wp_upload_dir()['basedir']). - FIX — Quick Setup “Generation Control” step: marked incomplete even after user selected ALL sizes because the old condition required
selected_count < total_reg_count. New logic: step is done if (a) any disabled sizes, (b) any selected sizes (including all), or (c) the option was ever explicitly saved in the DB (get_optionsentinel check).
1.9.48 (August 10, 2026) – Generation Control Quick Setup evaluation enhancement
- FIX — Generation Control (Step 3) now considers setup complete if unused sizes are unselected/excluded in Image Sizes tab (
selected_sizes< registered count) OR if Uploads creation is disabled (disabled_sizesis non-empty).
1.9.47 (August 10, 2026) – Quick Setup progress tracker & layout audit
- NEW — 5-step Quick Setup progress tracker on Overview dashboard (PHP Image Engine, Smart Size Redirect, Generation Control, Compression & Quality, Safety Shields).
- FIX — Step 3 button target updated to
image-sizestab ID for seamless jump navigation. - FIX — Added
flex: 0 0 autoto.smrc-qs-stepcontainers to prevent flex shrinkage and line overlaps across step labels. - FIX — Added strict
text-decoration: none !importantoverrides to eliminate WordPress core.is-donestrike-through text styling. - FIX — 100% complete state now collapses into clean compact banner with expandable breakdown.
1.9.44 (August 8, 2026) – third-pass deletion revalidation and state hardening
- FIX — orphaned-metadata deletion re-validates every submitted ID at delete time (must still be an attachment whose original file is missing); a stale or replayed request can no longer delete a valid attachment.
- FIX — orphaned-file deletion re-checks at delete time that each file is not a registered attachment or a thumbnail of one, closing the scan-to-delete race window.
- FIX — a foreground regeneration first batch that loses the per-batch processing-lock race now releases the run claim and 30-minute lock it just created, instead of blocking all future foreground and background starts.
- FIX — prune batch locks reclaim automatically after 10 minutes if a batch died fatally, so an interrupted run no longer blocks its review forever.
- FIX — deleting a custom size no longer crashes when the stored list contains a malformed entry; malformed entries are dropped safely.
- FIX — size-override filtering guards malformed override entries, preventing a fatal during upload when option data is poisoned.
- FIX — configuration import now sanitizes disabled-size, selected-size, and size-override arrays to their exact expected shapes instead of storing arbitrary structures.
- FIX — uninstall now removes prune lock options, folder-stats scan accumulator transients, and regeneration/scan lock options that could previously survive removal.
1.9.43 (August 8, 2026) – second-pass prune and regeneration safety
- FIX — prune reviews now resolve the uploads scope and every candidate to canonical, non-symlinked paths; a supplied subfolder must be a real child of uploads.
- FIX — prune state is owned by the administrator who prepared it and each review token has an atomic deletion-batch lock, preventing concurrent requests from losing state or double-processing files.
- FIX — cleanup results now distinguish deleted and safely skipped candidates, while protected-file totals count unique canonical attachment files.
- FIX — foreground and background thumbnail regeneration share atomic start and batch locks, preventing simultaneous runs from changing the same attachment state.
1.9.42 (August 8, 2026) – deletion and regeneration safety audit
- FIX — thumbnail-size deletion now accepts only currently registered sizes, rejects unsafe metadata-derived paths, and retains metadata when a physical delete fails.
- FIX — whole-folder deletion now refuses symlinked or out-of-scope entries and returns a failure instead of claiming success after an incomplete delete.
- FIX — foreground regeneration filters submitted sizes to current WordPress registrations before it removes old derivatives, and uninstall now clears its activation redirect transient.
- FIX — aligned the WordPress plugin header with the current Standard runtime version.
1.9.41 (August 8, 2026) – active runtime boundary audit
- FIX — configuration imports now accept only LC Smart Media Redirect & Cleaner exports. The completely deactivated Batch Image Cleaner is no longer treated as an executable or import dependency; retained
bic_*keys remain available only as existing stored-data compatibility identifiers.
1.9.40 (August 8, 2026) – rebrand compatibility audit
- FIX — executable runtime identity and exported error-log metadata now use the LC Smart Media Redirect & Cleaner name.
- NOTE — the prior Batch Image Cleaner plugin is deactivated and is not part of the active runtime. Retained
bic_*settings, metadata, and cron keys belong to LC Smart Media Redirect & Cleaner’s existing data contract and are intentionally not executable class or function names.
1.9.39 (August 8, 2026) – cleanup and prune audit
- FIX — every prune deletion batch now resolves and verifies each stored path against the exact uploads scope reviewed during preparation, so stale or corrupted cleanup state cannot delete outside that approved folder.
- FIX — orphan metadata/file deletion now checks JSON success and network failures before reloading, rather than falsely displaying a successful completion after a rejected request.
1.9.38 (August 8, 2026) – background orphan scanner audit
- FIX — a running background scan can no longer be overwritten by a second Start request, and an atomic short-lived cron lock prevents overlapping batches from racing over shared offsets and results.
- FIX — cancellation or replacement invalidates the active run; an in-flight callback can finish its current read but cannot publish results, mark the scan complete, or schedule another batch afterward.
- FIX — missing, malformed, or abandoned run metadata now recovers to idle instead of leaving the scanner permanently stuck; result arrays are normalized before status counts are returned.
- FIX — start and cancel failures in the dashboard now display structured server messages and do not report cancellation as successful when the server rejected it.
1.9.37 (August 8, 2026) – background thumbnail regeneration audit
- FIX — a running background job can no longer be overwritten by another Start request, and an atomic cron-batch lock prevents duplicate callbacks from regenerating the same attachments concurrently.
- FIX — Cancel now invalidates the active run so an in-flight batch cannot revive or complete it afterward; malformed running state now recovers to idle instead of remaining stuck forever.
- FIX — background start/cancel errors now show the server’s actual message rather than an object placeholder or a false successful cancellation state.
1.9.56 (August 19, 2026)
- FIX —
smrc_get_registered_sizes()now usesSmrc_Core::get_image_sizes()directly, ensuring all registered theme, WooCommerce, and custom image sizes appear in the Image Sizes tab even when disabled from upload generation.
1.9.65 (August 26, 2026)
- SECURITY & STANDARDS — Updated plugin text domain to
lc-smart-media-redirect-cleaneracross all PHP files, templates, and translation calls per WordPress.org Directory slug alignment. - SECURITY — Hardened input unslashing and strict sanitization across all AJAX nonce verification routines (
sanitize_text_field( wp_unslash( $_POST['nonce'] ) )). - SECURITY — Sanitized request URI checking in core initialization (
esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) )). - SECURITY — Comprehensive late-escaping audit across all admin views, memory/system limits, progress bars, and dynamically calculated attributes.
1.9.55 (August 18, 2026)
- FIX — Smart Size Redirect dynamically discovers unfiltered registered sizes and canonical targets.
1.9.34 (August 8, 2026) – future-upload pipeline audit
- FIX — duplicate-size alias metadata is now scoped to the attachment WordPress is generating, preventing alias mappings from one upload from leaking into another image handled in the same request.
- FIX — custom image-size edits now reject duplicate custom names and names already owned by core, theme, or another plugin instead of creating ambiguous registrations.
1.9.33 (August 8, 2026) – lifecycle pipeline audit
- FIX — legacy-media 410 handling now inspects the request path only, so an unrelated page whose query string contains an old asset URL is never incorrectly terminated.
- FIX — deactivation now clears the orphan-scan file-list cache, and uninstall removes dynamic, incomplete prune-run transient state as well as fixed plugin state.
- FIX — the WordPress minimum-version declaration and activation check are aligned at 5.0.
1.9.32 (August 6, 2026)
- FIX — Smart Size Redirect now preserves a URL supplied by an earlier
image_downsizefilter when SMRC has nothing to redirect. This keeps CDN/offload/image-optimization integrations compatible instead of overwriting their valid result withfalse. - FIX — the per-request redirect marker is now consumed after its matching srcset calculation, preventing one redirected image from causing a later unrelated image srcset to lose its original source.
1.9.31 (August 6, 2026)
- FIX — complete the Standard/Pro dashboard contract audit: corrected renamed UI hooks, made the background scanner status element unique, and removed obsolete legacy dashboard assets so controls cannot silently bind to the wrong interface.
- FIX — Storage Overview Refresh now listens to the Smart Media control and reliably starts its batched scan.
1.0.0 (August 6, 2026) – rebrand/split from Batch Image Cleaner
- First release under the new name. Rebranded from
batch-image-cleaner(formerly reachable only
from the WordPress Tools submenu) into its own top-level admin menu item, redesigned with the
shared sidebar + click-to-show-tabs dashboard used across this plugin suite. - WebP conversion, auto-compress, and the “Pending Optimization” panel moved to the new licensed
Pro add-on. All free Standard features and their underlying option/meta/cron keys are unchanged
from Batch Image Cleaner v1.9.28.
