Releases: lauzis/mawiblah
Release list
1.0.36 — Slack test button, and cron logs that say what happened
Send a test message button beside the Slack webhook field. It posts to whatever is in the field — saved or not — waits for Slack's answer and reports it. Ordinary log traffic is fire-and-forget, so a bad webhook otherwise fails silently.
The Tests page's Logging scenario now posts to Slack too when a webhook is configured, and says it skipped when none is. It runs whether or not file logging is on, since errors reach Slack either way.
Cron logging now says what happened rather than which function ran:
- The tick logs
Scheduled check startedand a matchingScheduled check finishedwith how many schedulers were seen, how many fired, and how long it took — a check that dies halfway no longer looks like one that found no work. - A scheduled send logs
Scheduled campaign startedwith the campaign name and schedule type. Batch startedcarries the campaign name plus what had already been sent and failed;Batch finished(wasBatch complete) adds the elapsed time;Campaign finishedcarries the final counts.
Note that these are info entries, so they reach Slack only at Every log entry — the errors-only default still posts just failures.
Bundled lauzis/wp-plugin-packages updated to 1.16.0.
1.0.35 — Slack webhook for logs
Log entries can now be posted to a Slack incoming webhook.
Two fields under Logging: the webhook URL, and whether Slack gets errors only (the default) or every entry. Errors are posted even with file logging disabled — a send that failed at 3am is not something anybody finds by opening the log later.
- Fire-and-forget, so a campaign send never waits on Slack; a webhook Slack rejects fails quietly.
- Only
https://URLs are used: the webhook URL is itself a credential. - "Every log entry" means one request per entry against a webhook Slack rate-limits to about a message a second — leave it on Errors only during a send.
Mawiblah declares its own Logging section rather than registering the shared package's, so the two fields were added to config/settings.json directly, under the ids the logging component reads. No change to classes/Logs.php was needed.
Stable tag in readme.txt said 1.0.29, six releases behind; it now matches. Bundled lauzis/wp-plugin-packages updated to 1.15.0.
v1.0.28
Changes in 1.0.28
New
rerender_on_recurringper-campaign setting — when enabled (default on), the locked template is cleared before each recurring send so shortcodes and dynamic content are re-evaluated fresh.
Fixes in 1.0.27
Critical
- Division by zero in
getConversionStatsForCampaign()when no emails have been sent yet (PHP 8DivisionByZeroError) - Import transient key contained uppercase chars;
sanitize_key()lowercased on read, causing every import confirmation to fail with "session expired"
Major
- Background send via WP Cron failed silently when no user is logged in — template fetch now bypasses the authenticated REST loopback in cron context
- Fatal error:
Cannot access protected property WPMailSMTP\MailCatcherV6::$exceptions— replacedphpmailer_initwithwp_mail_failedhook CronSend::lockTemplatefailure now callsbackgroundSendStop()so campaigns are not left permanently stuck- Background send failure path now calls
sentEmailFailed()(updates fail count, error meta, Failing Email audience) - Scheduler now advances
next_sendwhen skipping an in-progress recurring send, preventing an immediate re-fire Templates::getTemplateByNameViaRest()now fails closed on non-200/malformed REST responses- Tester records are now preferred over non-testers when deduplicating by email in
getTestModeSubscribers() - Import overwrite now clears
unsubed/unsub_timemeta when the Unsubed audience is removed
Minor
backgroundProgressREST route returns a normalized payload on campaign-not-foundScheduler::add()guards againstwp_insert_post()returning0- AJAX URL in background-progress uses
esc_url_raw()to preserve nonce query string onclickconfirm in scheduler list usesesc_js()instead ofesc_attr_e()- Import error display escapes each message individually so
<br>separators render - Removed duplicate open-rate array keys in stats templates
- Fixed typo "beeing" → "being" on unsubscribe page
- Open timestamps now use
date_i18n()for site timezone MAWIBLAH_VERSIONno longer appendstime()on every request (browser caching restored)- Fixed DOCUMENTATION.md flowchart loop-back node