Summary
A security and reliability release. Every mailbox, rule, tag, snooze, calendar entry and background job is now bound to the WordPress user who connected the account, and the fixes proven on the 1.0.26 Beta line ship with it.
Added
- A PressedMail.com link on the plugin's row of the Plugins screen, ahead of the
author link. WordPress hides a plugin's own site link for anything installed
from the directory, so it had to be added back deliberately. Both editions.
- Pro: the API and webhook runtime is complete. Keys and webhooks are scoped to
the owner who created them, deliveries are signed and retried on a schedule,
and a destination is validated before anything is sent to it.
- Pro: follow-up reminders run to completion, and a read receipt can be revoked.
Changed
- Email rules run on the server, once per real arrival, and only for the
account owner. The manual and automatic engines now agree on what a rule
matches and on what it did.
- The undo-send background tick exists only while a message is waiting to go
out. An idle site no longer schedules it every five seconds, which on shared
hosting kept WordPress cron permanently due.
- Requests to the plugin's own API wait up to 60 seconds before giving up
instead of 20, so a slow shared host that queues a settings read behind the
app's start-up no longer shows "could not be loaded" for a value that was
simply late.
- Migrations run on activation and report an honest failure instead of
recording success they did not earn.
- Translation catalogues rebuilt from the current interface. They still offered
translators strings for screens that no longer exist.
- The Free readme, which is also the WordPress.org listing text, is rewritten
and its screenshots replaced.
Fixed
- Rules, tags, auto-tagging, snoozes, scheduled sends, AI queues, follow-ups and
calendar reminders run only for the WordPress user who connected the mailbox.
Background work no longer touches another user's account.
- A message cannot be acted on through another account: every cached read,
bulk action and rule move checks the full account, folder and message
identity, and the cache reports what it really did.
- Removing an owner or revoking a membership ends that person's sessions,
background access and stored secrets in one step, and secrets are never
written back in the clear.
- Composer drafts and view state are kept per WordPress user and site in the
browser, so two people sharing a browser never see each other's drafts.
- Unused WordPress post types the plugin registered are no longer exposed.
- On a multisite network every account, setting and background job stays inside
the site it was created on, and uninstall follows the network policy.
- Remote images and other external resources in a message stay blocked until
you allow them. The image proxy isolates what it fetches and caps the bytes it
returns, and incoming attachments are decoded within a budget.
- Scheduled sends verify attachment authorization and use one transport and
MIME path. A normal send carries one attempt key, so a retry after a network
hiccup cannot send the same message twice, and an uncertain outcome is
reported as uncertain. Undo Send refuses an attachment it cannot carry instead
of sending without it.
- Account authentication failures are told apart from host outages, so one
wrong password no longer trips the circuit for every mailbox on the host.
- Snooze parking survives a lost cron event, snoozed messages can be returned
from the reader, and the Scheduled list keeps its selection and results.
- AI queue jobs claim their work once and require consent; an exhausted
auto-reply recovers instead of staying silent; auto-replies keep the body you
saved.
- Reply headers and recipient lists with quoted pairs and unusual addresses are
parsed correctly.
- Privacy export and erase complete and report what they did.
- Calendar and contact sync stays correct for a provider that has been dormant.
- The random "service unavailable" and "forbidden" answers some sites saw in the
first seconds after opening the app are gone: reading site-scoped settings no
longer takes a database lock, and a busy lock is treated as busy rather than
as an outage.
- Rule preview validates the selected rules before the account scope, so an
empty selection previews as an empty run instead of an error.
- Calendar reminders skip owners who have been removed.
- The legacy calendar event routes queried columns the events table never had
and have been retired; the calendar reads and writes through the local
calendar routes.
- IMAP capability answers with nested groups are read correctly, and header
parsing no longer logs a warning on every message.
- Error responses from the batch, message, sync, account, search, folder and
diagnostics endpoints reach the client as JSON instead of dying in a fatal.
- Email rules from the 1.0.26 Beta line: queued runs cancel immediately, runs
pause during a mailbox sync, stranded runs recover and drain without waiting
for cron, and matching uses the real recipients.
- Drafts keep their exact attachment parts, refresh in the mailbox mirror after
a save, load in full before editing, and survive the composer switching
between desktop and compact layouts.
- The composer opens from incoming mailto links on desktop, handles a repeated
PWA compose entry, leaves compact compose routes cleanly on close, keeps
editor controls out of saved bodies, and renders the reply quote as an
ordinary blockquote.
- Attachment limits count wire bytes and decoded bytes separately; decoded
attachment metadata and MIME bodies from PEEK fetches are retained; exported
.eml files carry their attachments.
- Calendar: all-day imports work, guests are notified before an event is
deleted, and display settings persist.
- Contacts keep their extended fields and saved notes, and deleting a list
removes its memberships.
- Folder-scoped thread flags are preserved in the cache, quoted IMAP values and
MIME metadata survive the mirror, and the writable IMAP selection is restored
before a move.
- A write is not repeated after a network failure; Speed Dial no longer overlaps
the editor controls; blank date fields select today; the phishing review keeps
the message's visible text.
- Three cross-user gaps in tags, posts and the mailbox lock are closed.
Upgrade Notes
- Nothing to reconnect and no setting to change. Migrations run on activation;
if one fails the plugin says so and stays on the previous schema.
- Anything that called the legacy
calendar/events/create,update/{id}or
delete/{id} routes directly must use the calendar/local-events routes.
The two read routes remain.
- Sites whose WordPress cron is not reachable keep working through the
request-driven catch-up, as before; the undo-send tick simply no longer spawns
cron on every page view.




