Skip to content

1.x-1.1.0

Latest

Choose a tag to compare

@albanycomputers albanycomputers released this 12 Jun 14:49

Fixed

  • 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).