You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Multiple messages in one batch now all display. Previously every message was
rendered as popover="auto", and per the HTML Popover API specification,
non-nested auto popovers light-dismiss each other — so only the last message
of a batch was ever visible. All popovers are now popover="manual", with
auto-dismissal handled by the timer.
AJAX dialogs (Views UI settings/filters, and any core AJAX insert) no longer
break while the module is enabled. The behaviour now normalises the context
argument before using native DOM methods — core's ajax.js passes a jQuery
object, which previously caused a TypeError that aborted the AJAX command
chain, leaving dialog content dumped at the bottom of the form.
Settings saved as 0 now survive: "0" in the persistence limit or auto-dismiss
timer was silently coerced back to the default (300 / 8000) when the form
redisplayed. A timer of 0 now genuinely disables auto-dismissal end-to-end.
Messages containing markup but no plain text (e.g. image-only) are no longer
silently discarded; empty wrappers with nothing displayable (such as Devel's <pre></pre> from an Execute PHP run with no output) are still filtered.
The persistence character limit is now measured in characters rather than
bytes (backdrop_strlen), so multibyte text is classified correctly.
Drag handling no longer leaks document-level event listeners for every
message shown; a single delegated listener pair is registered once.
Popover IDs are unique across HTMX swaps within one page session,
preventing close buttons from targeting the wrong message.
Added
Graceful fallback for browsers without the Popover API: messages display as
fixed toast notifications with a working close button instead of being lost.
Escape key closes all visible messages.
Accessibility: messages carry role="alert" (errors) or role="status", plus a
visually hidden severity label for screen readers.
Changed
Severity icon locations are resolved server-side with base_path() and passed
to the stylesheet as CSS custom properties, so icons work at any module
location and on subdirectory installs.
Documentation updated to match current behaviour (British English).