Plugin approvals now announce in-app only (NativePHP#476), so subscribers no
longer get flooded with mail on every single approval. This adds back
an explicit, admin-triggered way to email people about new plugins
without returning to one-email-per-approval.
A `new_plugin_notified_at` column on plugins tracks which approved
plugins haven't been included in an email digest yet. A new
`NewPluginsAvailable` notification (mail + database) covers one or
many plugins in a single message. `SendPendingPluginEmailDigest`
batches everything pending into one email per subscriber, excluding
each recipient's own plugins from their own digest.
An "Email Subscribers (N)" action on the admin Plugins list dispatches
the job manually. `plugins:resend-new-plugin-notifications` is
switched to the same batched notification so resending for named
plugins also sends one combined email instead of one per plugin,
keeping its existing signature, validation, and dry-run behaviour.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
What
Adds an admin-triggered way to email subscribers about newly approved plugins as a single combined digest, instead of one email per plugin.
Why
#476 moved automatic new-plugin announcements to in-app only, so nobody gets emailed on every single approval anymore — which fixed the spam problem, but also removed any way to email people about new plugins at all. That PR's own description flagged this as a follow-up:
This PR is that escape hatch: an admin can review what's piled up (the action label shows the count) and send one email covering everything at once, rather than either spamming per-approval or having no email option at all.
What this does not change
Tests
🤖 Generated with Claude Code