Skip to content

Releases: DiluxOne/diluxone-offload-wordpress

Development build 2.1.0-dev.7

Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Sep 18:41
e725ef6

Development build 2.1.0-dev.7 of DiluxOne diluxone-offload, from commit e725ef6. Not a release: it is replaced on every push to main, it is not on wordpress.org, and a site that installs it updates to the release when it is published.

Install: download diluxone-offload.zip below, then in WordPress: Plugins → Add New → Upload Plugin. Status › System shows the version and the build.

Coming in the next version:

  • Before the first sync, Sync & Offloading › Sync checks this site's folder in the container or bucket. If something is already there (an earlier install, a staging copy) it says how many files and how much, and lets you continue with them, empty that folder (typing the container's or bucket's name) or connect another one. Emptying never touches anything outside this site's folder.
  • A sync whose uploads go through ends a pause the connection health had recorded (a key that failed and was fixed since), instead of showing "Paused" for up to five more minutes.
  • An upload, a delete or a check that meets a temporary error from the storage service (a 500 or 503, a dropped connection) is sent again, up to three times, instead of failing at once. Backblaze B2 answers that way to about one upload in a hundred, which could leave an image without one of its thumbnails.

2.0.0

Choose a tag to compare

@dilux-release dilux-release released this 28 Sep 00:01
ad77e6f
  • S3-compatible storage: besides Azure Blob Storage, the media can live on Amazon S3, Cloudflare R2, Backblaze B2, DigitalOcean Spaces, Wasabi, Google Cloud Storage (HMAC keys) or any server that speaks the S3 API, such as MinIO. Pick the service and the plugin fills in the endpoint and the public URL; the Public URL field is also where a CDN or a custom domain goes. Test Connection proves the keys can write to the bucket and that browsers can read what is stored, and refuses a private bucket. Large files go up in 5 MiB parts; the secret access key is encrypted like the Azure key. "Force HTTPS for cloud storage URLs" leaves alone a Public URL that is plain http on purpose, such as a server on a private network.
  • Only a configuration that passed Test Connection can be saved, now checked on the server too: a key other than the tested one is refused.
  • The admin is one menu with a screen per submenu (Overview, Cloud Provider, Sync & Offloading, Settings, Status) and tabs only where a screen needs a second level: Connection and Credentials; Sync, Offloading and Disconnect; Transfers, Serving and Logging; Health and System. Every screen is headed "DiluxOne Offload | Screen", shows the site's state at a glance in a column beside the content, and the open tab follows your admin colour scheme. Old links to the tabs keep working.
  • Status › Health shows the connection health the plugin already recorded (status, last check, last success, consecutive failures) and how many files the tracking table knows, with a "Check now" button that asks the provider right away; Status › System shows the free disk.
  • The screens say what is where: Sync shows how many files are synced, how many still have a local copy, how many live in the cloud only, the last upload made through the site and what the last scan left out (and why); Offloading shows where the media is served from, where the bytes are and since when; Disconnect shows what it would bring back and whether the disk has room; Cloud Provider shows since when it is connected.
  • Files uploaded through the site while offloading is on are now counted like the ones the initial sync moved, and deleting the local copies no longer empties the plugin's tracking table, so those figures stay right on the sites that use offloading. A very long list of failed files shows its first 50 rows and says how many there are.
  • The Overview shows three state cards (the fourth repeated them); Cloud Provider › Connection offers "Rotate the key" and "Delete Cloud Provider" as buttons; every button with an icon has the icon and its label on one line, and the sync window's buttons read at their size.
  • The "Upload Timeout" setting is now "Transfer Timeout" and governs every upload request: the single upload, each block and its commit, and the sync's parallel transfers. Before, block commits waited a fixed 300 seconds whatever the setting said. Downloads keep waiting at least the 300 seconds they always had; a higher setting raises that too.
  • A transfer that runs past the timeout is reported as such: the connection-health banner says "Cloud Transfer Timed Out" and links to Settings, instead of showing a made-up error code.
  • With debug logging on, every successful upload through the stream wrapper writes one line (path and size).
  • The suites now prove what each setting does, not only that it is saved.

What was merged since 1.0.0

✨ Features

  • admin three state cards, provider actions as buttons, icons centred on every button (#17)
  • providers S3-compatible storage, from Amazon S3 and R2 to MinIO, with presets per service (#15)
  • admin the screens show what is where: counts, timestamps, last upload, skipped, Check now (#12)
  • admin one menu, a screen per submenu, tabs only where needed, a rail beside each (#11)
  • adopt DiluxOne/.github v2, stamp development builds, release as a deployment (#7)

🐛 Fixes

  • providers Google copies, aborted multipart commits; R2 and Google in the real suite (#16)
  • admin the hostname media is served from fits its card, smaller and wrapped at its dots (#14)

📝 Documentation

  • plans version numbers and step names agree with the roadmap; readme locales in architecture (#2)

✅ Tests

  • admin the figures, the skipped list, the timestamps and Check now, end to end (#13)
  • settings each setting proves what it does; the transfer timeout governs every transfer (#4)

👷 CI

  • release the development build is the pre-release in Releases; bug reports name the build (#10)
  • release one page for how a change becomes a version; the readme is the switch; dry-run off (#9)
  • release the caller grants pull-requests read, which the version job asks for (#8)
  • security the environment's secrets reach the shared release and check jobs (#6)
  • security explicit secrets for the shared workflows; the release pinned, reading its environment (#5)
  • real the real Azure suite runs on a pull request only when code changed (#3)

🔧 Maintenance

  • release 2.0.0 (#18)
  • translations for the current strings, the roadmap by version and the 2.0.0 technical plan (#1)

1.0.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 16:03
e0072d3

First public release.

  • Azure Blob Storage provider with your own account and key; media served from https://<account>.blob.core.windows.net.
  • Transparent PHP stream wrapper on /wp-content/uploads/: no URL rewriting, no database migration.
  • Sync with cancel, resume and retry; optional deletion of the local copies once synced; Disconnect from Cloud brings everything back.
  • Connection health: when the cloud is unreachable an upload fails with a clear error and nothing is written elsewhere.
  • Streaming transfers: downloads go straight to disk and uploads go in 4 MiB blocks, so large files do not need large memory.
  • "Force HTTPS for cloud storage URLs" option; multisite with per-site configuration; credentials encrypted at rest (AES-256-GCM, key derived from the site's salts); quiet unless WP_DEBUG or the debug toggle is on.
  • Uninstalling removes the plugin's options, transients and table; media files are never touched.