Fixed: members could receive duplicate digests. Batches are now reserved atomically before sending, so two concurrent processes (WP-Cron + the admin status page + Redis) can never mail the same recipient twice.
Fixed: an old digest job stuck on “Sending…” could be delivered weeks later when sending resumed. Jobs stuck for more than 2 days are now auto-cancelled and never sent.
Fixed: triggering a send while one was already in progress no longer creates a second job (which would have mailed everyone twice); it resumes the existing send instead.
Added: a “Delete” button in the History tab to remove a digest run — deleting a run that is still sending stops its remaining recipients from being mailed.
2.3.2
Fixed: a fatal error (“Class BBWD_Email_Builder not found”) could occur when WP-Cron processed the send queue in its own request, stalling the digest after the first batch. The queue processor now loads the email builder it needs. Recommended for everyone on 2.3.1.
2.3.1
Fixed: digest could get stuck on “Sending…” with 0 delivered (and nothing in the SMTP log) on hosts where WP-Cron does not fire follow-up events. Delivery no longer depends on WP-Cron alone — it now starts in the same request that queues the digest, the admin Status page drives the queue while open, the “Resume sending” button delivers in-request, and a stranded job self-heals on the next load.
Fixed: a PHP fatal mid-send could leave the queue lock dangling and freeze sending; the lock is now always released (finally + shutdown backstop).
2.3.0
Restructured to comply with the WordPress.org Plugin Directory Guidelines: this plugin now contains zero locked, trial or license-gated functionality.
Gravity SMTP delivery is now a fully free transport.
Features that were previously license-locked (biweekly cadence, group targeting, branding customization, custom post types, in-page preview, Claude AI subject lines) have been removed from this plugin entirely and moved to a separate, optional PRO add-on hosted off-site. This plugin exposes documented hooks the add-on uses; no PRO code ships here.
All inline admin <script> / <style> output moved to a properly enqueued assets/admin.js (+ wp_localize_script) and the existing enqueued stylesheet.
Removed the no-longer-needed load_plugin_textdomain() call (WordPress loads translations automatically since 4.6).
2.0.1
Fixed fatal error on activation when the host runs MySQL with NO_ZERO_DATE in sql_mode — the queue-store DATETIME columns are now NULL-able.
Hardened activation / deactivation hooks: dbDelta failures are caught and logged.
sanitize_options now coerces non-array Settings API payloads safely.
Renamed languages/bb-weekly-digest.pot → languages/weekly-digest-for-buddyboss.pot to match the Text Domain.
2.0.0
Renamed to “Weekly Digest for BuddyBoss” (was “BuddyBoss Weekly Digest”). New slug: weekly-digest-for-buddyboss.
Independent-add-on disclaimer visible in plugin header, plugin row meta, Settings header and Tutorial header.
New Tutorial submenu with 4 progress-detected steps. Auto-opens on first activation.
OCW house-style admin design (teal / navy / pink).
English placeholder aliases {first_name} / {full_name} (Dutch aliases still work).
BBWD_* constants kept as back-compat aliases for WDFB_*.
1.5.2
Settings sanitizer no longer wipes other tabs’ data when one tab is saved.
Cron reschedule only fires when frequency / day / time actually changes.
1.5.0
Queue store + batch processing (10 emails per 30 seconds).
RFC 8058 one-click unsubscribe with token-based tracking.