Home / Changelog
Changelog
Cloud Storage
3.1.8 - October 2, 2026
- 🔧 FixedThe watermark image now always stays on your server. Tools > Reclaim Local Storage, the migration tool and the missed-upload sweep all skip it, so watermarking keeps working
- 🔧 FixedPhotos imported with pre-made thumbnails now keep the keywords, title, caption and photo date saved in the files, so gallery search can find them by keyword
3.1.7 - September 14, 2026
- 🔧 FixedTools > Reclaim Local Storage now opens right away on sites with very large photo libraries. The page used to check every image before it could load, which timed out on big sites. The check now runs in small steps after you click Start Cleanup, with a running count as it goes
3.1.6 - September 14, 2026
- 🔧 FixedThe bulk import folder picker no longer offers the sunshine folder where Sunshine keeps images for galleries that already exist, and a scan from the root of your bucket skips it too, so those images cannot be imported a second time as duplicate galleries
- 🔧 FixedSites using Bunny.net or Backblaze B2 no longer see the "Your cloud storage bucket does not support per-object ACLs" warning. Those providers never have per-file permissions, and Sunshine already protects your images there with signed links, so there was nothing to fix
- 🔧 FixedThe "images migrated from WP Offload Media are missing bucket location data" warning no longer appears on sites that never used WP Offload Media. It now only counts images that came through that migration, and sites that saw it by mistake will see it clear on their next visit to the admin
- 🔧 FixedTools > Record Image Locations now also fills in the missing storage key for any image it records, so images added by an older import get the same information as new uploads
- 🔧 FixedPhotos kept in Bunny.net folders with spaces or special characters in their names (for example "2 - 6 Dressage") could not be downloaded. The address Sunshine used to fetch the file from Bunny was rejected by the server, so the customer saw a "some of the files could not be retrieved" error
- 🔧 FixedGoogle Cloud Storage buckets with "Public access prevention" turned on (Google's default for new buckets) now work. Thumbnails were failing to upload because the bucket refuses public files, so nothing was moved to the cloud and no error was shown. Sunshine now uploads those files as private and serves them through signed links, and Test Connection tells you when your bucket is set up this way
3.1.5 - September 12, 2026
- 🔧 FixedLarge files such as background download zips are now sent to Bunny.net straight from disk with no fixed time limit, instead of being loaded into memory with a 60 second cutoff that a big upload on a slower host could miss
3.1.4 - September 10, 2026
- ✨ NewTools > Record Image Locations also works out which bucket folder each imported gallery came from, reading it back from the photos inside. A gallery whose photos came from more than one folder is left alone rather than guessed at
- ✨ NewTools > Record Image Locations works out which bucket and file your already-uploaded images live at, so they get the same treatment as new uploads. Nothing is uploaded, downloaded or changed in your bucket, and any image it cannot work out is left exactly as it is
- ✨ NewIf your images are on record in one bucket while Sunshine is set up for another, which is what happens when you rename a bucket, Sunshine now says so and offers to update them. Images that genuinely live in a separate bucket can be left alone
- 🔨 ChangeSunshine now records which bucket and which file each image lives at, instead of only the web address it was served at when it was uploaded. Addresses are worked out fresh each time from your current settings, so changing your custom domain, CDN, endpoint or region now takes effect straight away rather than leaving every image uploaded beforehand pointing at the old address
- 🔧 FixedImages recorded as living in a different bucket than the one you are set up for no longer get your custom domain applied to them, which could never have served those files
- 🔧 FixedImages kept on Wasabi, DigitalOcean or Linode at a path-style address had the bucket name left on the front of their file path. That broke signed links for thumbnails and could point a re-upload at the wrong place in your bucket
- 🔧 FixedA folder that could not be read from your bucket during a bulk import was skipped without a word, so the import finished looking successful while quietly leaving galleries out. Sunshine now retries once, then stops and names the folder it could not read
- 🔧 FixedA bucket listing that failed partway through was treated as if it were complete, which silently dropped everything not yet read. Part-read listings are now detected and reported instead
- 🔧 FixedUploading a large batch of photos left one scheduled task behind for every single image. Those all live in one WordPress setting that is read on every page load, so a few thousand photos slowed the whole site down and could stop other scheduled tasks from saving. A single recurring check now does the same job, and the leftovers from previous uploads are cleared out on update
- 🔧 FixedAmazon S3 buckets outside us-east-1 made a failed request to work out the bucket's region before every operation, then worked it out a second way. The region is now found on the first try
- Performance: A bucket's region is now remembered permanently instead of being looked up again every hour
- 🔧 FixedAn image that could not be uploaded retried forever. It now backs off and gives up after three attempts
- 🔧 FixedUploading a file that had already been removed from the server logged a warning
- 🔧 FixedCloud storage no longer swaps a real image URL in for an image that is still processing, so the placeholder shown by Sunshine Photo Cart is not bypassed
- ✨ NewAmazon S3 setups can set 'region' in SUNSHINE_CLOUD_STORAGE_SETTINGS to skip region detection entirely. The wp-config snippet on the settings page now includes it
- 🔧 FixedThe Test Connection button and bucket list now read the same 'region' setting that uploads use
3.1.3 - August 27, 2026
- 🔧 FixedImages did not load after migrating from WP Offload Media if your files live on an S3-compatible service that WP Offload Media was set up to treat as Amazon S3, such as Wasabi, Backblaze B2 or Cloudflare R2; image addresses are now built from your Sunshine cloud storage settings instead of being assumed to be Amazon
- 🔧 FixedMigrating from WP Offload Media no longer saves a temporary link for private full-size images, so those downloads keep working instead of expiring an hour later
- 🔨 ChangeTools > Cloud Storage now offers a Re-Run Migration button after a migration has finished, which rebuilds any image addresses pointing at the wrong service and leaves correct ones untouched
3.1.2 - August 11, 2026
- 🔧 FixedFull-size downloads for images migrated from WP Offload Media could permanently fail once their temporary link expired; a repair tool on Tools > Cloud Storage fixes any images already affected
3.1.1 - August 6, 2026
- 🔧 FixedPre-processed images imported from cloud storage now record their real thumbnail dimensions, so they display at the correct size in the justified gallery layout instead of appearing as an empty gallery
- 🔧 FixedAmazon S3 buckets with dots in the name (e.g. photos.example.com) failed to load images over HTTPS due to an SSL certificate mismatch; these buckets now use path-style URLs that serve correctly
- 🔧 FixedDeleting a gallery or image that was imported from your cloud storage also deleted your original files out of your bucket; Sunshine now only removes files it uploaded itself
- 🔧 FixedImages imported from cloud storage now record where they live in your bucket, so downloads and other features can find them
3.1 - June 29, 2026
- 🔧 FixedMigrating a large library crashed with a "Network Error" before starting
- 🔧 FixedReclaim Local Storage reported success on large libraries without deleting anything; it now deletes the files and reports the real space freed
- 🔨 ChangeMigration and Reclaim Local Storage now run in the background — leave the page while they work and get an email when they finish
3.0.11 - June 20, 2026
- 🔧 FixedUploading or migrating images failed with a "Network Error" on hosts that don't have PHP's fileinfo extension; file types are now detected without it (affected every provider)
- 🔧 FixedBulk-importing galleries from a large bucket (hundreds of folders) timed out before the preview loaded; the bucket is now scanned in small batches that won't hit server or Cloudflare timeouts (requires Bulk Galleries 3.2.5 or later)
- 🔧 FixedExpanding a cloud folder that contains many subfolders was extremely slow; the folder browser now loads each level in a single request
- 🔧 FixedLocations with more than 1,000 folders or images could have items skipped during import; all items are now read
3.0.10 - June 18, 2026
- 🔧 FixedBackblaze B2 — watermarked gallery previews (thumbnail and large sizes) failed to upload, so B2 kept serving the original unwatermarked images; Sunshine no longer sends the per-object "public-read" permission that private B2 buckets reject, and serves gallery images through signed URLs
- 🔧 FixedBackblaze B2 — signed image URLs repeated the bucket name in the path and returned errors on private buckets
- 🔧 FixedBackblaze B2 — the connection test no longer warns you to make a private bucket public; a private bucket served through signed URLs is the recommended setup
- 🔧 FixedCloud Storage — an image was treated as fully offloaded (making local files eligible for deletion) even when some sizes failed to upload; incomplete uploads now keep their local files and retry
3.0.9 - May 28, 2026
- ✨ NewRegion selector for Backblaze B2 — non-US regions (ca-east-006, eu-central-003, us-east-005, and others) are now honored instead of defaulting to us-west-004, with an "Other" option for entering future cluster codes
- 🔧 FixedBackblaze B2 connections ignored the configured region (database setting and wp-config constant both silently fell back to us-west-004), preventing connections to Canadian, EU Central, and US East buckets
3.0.8 - May 20, 2026
- ✨ NewWP Offload Media migration tool — moves legacy WP Offload Media data into Sunshine's own storage (Tools > Cloud Storage > WP Offload Media Migration)
- ✨ NewReclaim Local Storage tool — finds images already in cloud storage that still have local copies on the server and deletes the local files, with optional cloud verification before each delete (Tools > Cloud Storage > Reclaim Local Storage)
3.0.7 - April 20, 2026
- 🔧 FixedSigned URLs for files with spaces or other URL-encoded characters in the path double-encoded (%20 became %2520), producing broken image URLs
- 🔧 FixedPre-processed cloud imports from the Bulk Galleries addon created unusable attachments — now correctly reuse the existing thumbnail and large files without downloading or processing the original
3.0.6 - March 30, 2026
- ✨ NewAdded video file support — videos uploaded via the Video Sales addon are now offloaded to cloud storage
- 🔧 FixedFixed video downloads using incorrect cloud storage URL by resolving gallery path through linked image
- 🔨 ChangeVideos in galleries use private ACL with signed URLs, matching image behavior
3.0.5 - March 19, 2026
- ✨ NewAdded region selector for Amazon S3 to avoid auto-detection errors
3.0.4 - March 9, 2026
- 🔧 FixedFixed Google Cloud Storage not showing all subfolders when browsing for volume galleries
- 🔧 FixedFixed cloud storage files not being deleted when a gallery is permanently deleted
3.0.3 - March 4, 2026
- ✨ NewAdded region selectors for Wasabi, DigitalOcean Spaces, and Linode Object Storage
- ✨ NewAdded region to wp-config.php code snippets for providers that require it
- ⚡️ ImprovedImproved Load Buckets button placement inline with bucket name field
- ⚡️ ImprovedMoved custom domain field into each provider's settings group
- ✨ NewAdded missing Wasabi regions (eu-south-1, eu-west-3, us-west-2)
- ✨ NewAdded public URL access verification to connection test
- 🔧 FixedFixed images not displaying when provider blocks public object access (falls back to signed URLs)
3.0.2
- 🔧 FixedFixed test connection failing with wp-config.php connection method
- 🔧 FixedFixed Cloudflare R2 not working due to missing endpoint URL field and configuration
- 🔧 FixedFixed cloud storage not activating when using wp-config.php connection method
- 🔧 FixedFixed ACL errors with providers that don't support per-object ACLs (Cloudflare R2)
3.0.1
- ✨ NewAdded Bunny.net cloud storage provider support
- 🔨 ChangeRefactored cloud storage client into abstract base class with S3, GCS, and Bunny subclasses
- 🔧 FixedFixed signed URL generation for Bunny.net Token Authentication
- 🔧 FixedFixed year/month folder structure not being applied to gallery images
- 🔧 FixedFixed GCS bucket listing when Google Cloud is selected as provider