| @@ -6,9 +6,9 @@ | ||
| 6 | 6 | License: GPLv2 or later |
| 7 | 7 | Requires PHP: 8.1 |
| 8 | 8 | Requires at least: 5.9 |
| 9 | 9 | Tested up to: 7.1 |
| 10 | -Stable tag: 1.4.0 | |
| 10 | +Stable tag: 1.4.2 | |
| 11 | 11 | |
| 12 | 12 | Offload media to cloud storage (S3, DigitalOcean, Google Cloud, Cloudflare R2, S3 compatible Services) and rewrite URLs for seamless file delivery. |
| 13 | 13 | |
| 14 | 14 | == Description == |
| @@ -74,8 +74,9 @@ | ||
| 74 | 74 | 🔹 **Bucket-to-Bucket Migration** — copy synced media to a new provider, bucket, or account, including reusing an already-connected credential source as the migration destination. |
| 75 | 75 | 🔹 **Ajax/Mixed Sync Method** — run bulk sync live in the browser (Ajax) or with automatic WP-Cron fallback (Mixed), instead of Cron-only. |
| 76 | 76 | 🔹 **Delivery Settings: Cache-Control duration** — set a custom Cache-Control max-age (or explicit no-cache) per storage/CDN choice for newly uploaded files. |
| 77 | 77 | 🔹 **Include/Exclude Extensions** — control exactly which file types get uploaded to the bucket. |
| 78 | +🔹 **Third-party compatibility** — WooCommerce and Easy Digital Downloads downloadable files, BuddyBoss Platform, WPML, Elementor, Divi, Enable Media Replace, EWWW Image Optimizer, Meta Slider, and WP Smush all stay in sync with cloud storage. | |
| 78 | 79 | 🔹 And more... |
| 79 | 80 | |
| 80 | 81 | == Other Useful Links == |
| 81 | 82 | 🔹 [Official website](https://dudlewebs.com) |
| @@ -151,8 +152,36 @@ | ||
| 151 | 152 | - **Description**: Manages media files efficiently, allowing file storage, retrieval, and deletion. |
| 152 | 153 | - **Data Sent**: User authentication data, file metadata (name, size, MIME type). |
| 153 | 154 | |
| 154 | 155 | == Changelog == |
| 156 | += 1.4.2 = | |
| 157 | +* Tweak: Internal groundwork for an upcoming Pro integration. | |
| 158 | +* Feature: Added a read-only stream-wrapper fallback so plugins without a dedicated integration can read offloaded files straight from cloud storage. | |
| 159 | +* Bug Fix: A local media URL pasted into an ACF oEmbed field wasn't rewritten to the cloud URL like other ACF text-like fields already are. | |
| 160 | +* Bug Fix: A corrupted/legacy media count entry could crash the admin page with "Cannot access offset of type string" instead of self-healing. | |
| 161 | +* Bug Fix: With "Remove from server" enabled, images uploaded via WordPress 7.1's client-side (block editor) sub-size generation reached the bucket with the original file only — sub-sizes stayed on the server and never synced. | |
| 162 | +* Bug Fix: Flipping or rotating an image 180° in place (native Image Editor, or the ACF Image Crop Add-on) wasn't detected as a change, so the bucket kept serving the pre-edit version. | |
| 163 | +* Feature: Added offloading support for the HEIC source file and animated-GIF video/poster files WordPress 7.1's client-side media processing can attach to an upload. | |
| 164 | += 1.4.1 = | |
| 165 | +* Feature: Added private media support (Pro) — mark individual Media Library items private, served through short-lived signed URLs. | |
| 166 | +* Feature: Added a "Remove from Cloud" bulk sync job (Pro). | |
| 167 | +* Feature: Added a per-item cloud-delivery override (Pro) — "Use Server URL" / "Use Cloud URL" in the Media Library. | |
| 168 | +* Bug Fix: WooCommerce could leave restored files on the server and skip re-uploading a regenerated thumbnail crop. | |
| 169 | +* Bug Fix: Customizer crop, image editor, and Regenerate Thumbnails could leave restored files on the server without cleaning up. | |
| 170 | +* Bug Fix: A successful Cloudflare R2 restore could be treated as failed, skipping cleanup. | |
| 171 | +* Bug Fix: A failed image size re-upload could wipe that size's cloud reference from the database. | |
| 172 | +* Bug Fix: Private media on Google Cloud Storage always failed to apply; now uses GCS Managed Folders instead. | |
| 173 | +* Feature: Added a Security step (Block All Public Access) to the Google Cloud Storage setup wizard. | |
| 174 | +* Feature: Added a generic integration extension point so Pro add-ons can register new source types. | |
| 175 | +* Bug Fix: A source type with no meta table configured could break signed URL generation. | |
| 176 | +* Bug Fix: Resolving a file's relative path from a full URL produced an incorrect local path. | |
| 177 | +* Feature: Source types can now declare a translatable admin-UI label and use a custom meta caching backend. | |
| 178 | +* Bug Fix: A WooCommerce compatibility hook could force local file paths for the rest of a request after any image rendered. | |
| 179 | +* Feature: Added a generic hook (Pro) letting an integration veto a cloud-storage delete when another item shares the file. | |
| 180 | +* Bug Fix: An attachment deleted without going through wp_delete_attachment() could leave its cloud-tracking row orphaned. | |
| 181 | +* Feature: Added generic bulk sync job lifecycle hooks so Pro add-ons can react when a job finishes. | |
| 182 | +* Security Fix: A crafted file path in a Pro downloadable-file field (WooCommerce/EDD) could use "../" to escape the uploads directory. | |
| 183 | +* Bug Fix: Resolving a bare cloud/local URL (e.g. in page builder data) to its attachment could silently fail to match. | |
| 155 | 184 | = 1.4.0 = |
| 156 | 185 | * Compatibility: WordPress 7.1 |
| 157 | 186 | * Bug Fix: WooCommerce image regeneration restored offloaded files to the server to resize them but never removed them again, even with "Remove from server" enabled, and could leave stale, un-regenerated images on the cloud since the plugin's "unchanged, skip reupload" check couldn't tell a regenerated file at the same size apart from a real no-op. Regenerated files are now always re-uploaded, and restored copies are cleaned up once WooCommerce is done with them. |
| 158 | 187 | = 1.3.12 = |