Version 5.2.0
October 9, 2026
Added
- An email channel: messages go to the inboxes of the people they are addressed to — a group's
members, one user, or for
everyone, everyone who can reach the control panel. One email per message (queued), or a daily or weekly digest per person, run byphp craft yo/digest/sendon cron with a web-request fallback.yo/digest/statusshows the schedule and what is waiting. - A webhook channel: Slack, Microsoft Teams or plain JSON, to one admin-set URL (
$ENVsupported), optionally HMAC-signed withX-Yo-Timestamp/X-Yo-Signature. Posts are queued and retried, and go through the family's SSRF guard — public addresses only, pinned at connect time, no redirects. - A per-type routing table for both ("errors and warnings to email, errors to Slack"). It applies to messages addressed beyond the current request; a plugin can also ask for either channel by name.
- "Send a test email" and "Send a test post" buttons in the settings, admin-only and using the saved settings.
Email::EVENT_BEFORE_SENDandWebhooks::EVENT_BEFORE_POST, to change or cancel what goes out.
Changed
- Two new tables,
yo_email_queueandyo_digests, for the email digest. Runphp craft up.
Version 5.1.0
September 29, 2026
Fixed
- Yo no longer breaks other markup on the page. DataStar is now scoped to
data-yo-ds-*attributes; before, it evaluated Craft's owndata-attrtable cells as JavaScript and loggedReferenceError: … is not definedon every control panel element index. - The panel's DataStar click handlers (open/close, move, clear all, message actions, the settings
test buttons) now run — they used pre-1.0
data-on-clicksyntax, which DataStar 1.0 ignores. - The front-end channel's first poll on page load now fires (
data-on-load→data-init).
Version 5.0.0
August 27, 2026
Initial release.
Added
- A message bus with one API for every plugin on the site:
Yo::success(),Yo::error()and a fluent builder for everything else. - Five message types — success, notice, tip, warning, error — each with its own colour, icon,
stickiness and sort priority, and
Types::EVENT_REGISTER_MESSAGE_TYPESfor plugins that want their own. - Three channels — the control panel, the front end and the Craft log — and
Channels::EVENT_REGISTER_CHANNELSfor plugins that want to add a fourth. - Receipts: shown, read, dismissed and actioned, each an event carrying the sending plugin's own context back to it.
- Audiences: the current user, one user, a user group, or everybody. Broadcasts cost one row.
- A floating control panel panel, positionable to any of six anchors by dragging or from a menu, remembered per person.
- A dashboard widget listing what is waiting, without taking any of it.
- Front-end delivery with no stylesheet of its own: stable class names, an overridable template,
and
{{ craft.yo.init() }}. - Adoption of Craft's own control panel notices, server-side and in the browser, so every plugin already installed gets Yo without a line of change.
- Dedupe keys, time to live, a per-person cap, and expiry swept with Craft's garbage collection.
- Console commands:
yo/say,yo/channels,yo/types,yo/purge. - Template hooks
yo.panel.header,yo.panel.footerandyo.message.meta.