Summary
A reliability release. Scheduled sending, snooze restores, undo-send and
filter rules get a hardened scheduler layer with a new server-cron runner
and a per-worker schedule health view, and the release folds in roughly
sixty fixes from the independent review series (PF-024 through PF-365).
Added
- A WP-CLI server-cron runner,
wp pressedmail cron run-due, for hosts
where WP-Cron is disabled or starved by low traffic: a one-minute
crontab entry gives scheduled sends, snooze returns, rule runs and
mirror refresh a dependable clock. Safe to run alongside WP-Cron.
- A Scheduled work section in Diagnostics: every scheduled worker with
its next run, cadence and overdue state, plus the exact crontab line
for the runner and a warning when DISABLE_WP_CRON has taken over
scheduling.
- Read-only PressedMail facts inside WordPress Site Health.
- A per-user hourly ceiling for interactive AI endpoints.
PRESSEDMAIL_SECRET_KEYsupport so backups do not carry the stored
plugin secret.
Changed
- Timed workers (scheduled send, snooze, undo-send) run only for
retained work and disarm themselves when idle.
- Stored notifications render in the reader's language.
- The message detail response follows one contract across surfaces.
- Automatic follow-ups stay inside a bounded detection window.
- The integrity warning is built per administrator instead of cached
globally.
Fixed
- Timed delivery hardening: claim cutoffs compare true UTC instants,
stale claims are quarantined instead of wedged, and an empty claim
timestamp can no longer freeze a scheduled send in sending state.
- Filter rules: every automatic rule for one arrival runs in a single
pass, the Delete action moves mail to Trash, and manual-only rules
can no longer execute on their own.
- Copied-site safety: automation on a cloned install stays paused until
an administrator approves it, and the pause applies to automatic
deliveries only, never to the composer or interactive sync.
- Mail fidelity: extended LIST responses decode by their wire encoding,
headers decode once without dropping characters, and compose
signatures survive round trips.
- Calendar: occurrence edits and deletes are scoped to this, following
or all events, and candidate ranges are bounded.
- Contacts: CSV and vCard import and export follow the spec, with
validated fields.
- Contacts: a website address is accepted, stored, and linked only when
it is http or https, so a value the form took can no longer come back
blank from the server and be written over as blank on the next save.
- Folder operations no longer expunge on create, rename or delete.
- Security and stability: license moves require a signed server
handshake, OAuth license and update operations use POST, a failing
core feature cannot take the site down, and erasure and mailbox
deletion complete on object-cache sites.
- Interface fixes from the review series, including a real modal
composer, recipient combobox completion, local dates with clear
past-time errors in the scheduler and snooze pickers, and composer
media URLs limited to http and https.
Upgrade Notes
- No action required. Hosts that want minute-exact scheduled sending
can add the crontab line shown in Settings, Diagnostics, Scheduled
work; it is optional and safe alongside WordPress's own cron.




