Version 1.2.0

March 22, 2026

Added

  • Added a Failed Webmentions view to the control panel. Webmentions that cannot be processed are now recorded in a new webmention_failures table instead of disappearing silently into the logs.
  • Failed webmentions are shown in a dedicated "Failed" subnav item with a badge displaying the current failure count.
  • The failures table shows source, target, error message, attempt count, and last attempted timestamp for each failure.
  • Added per-row Retry and Dismiss actions. Retry re-queues the webmention for processing and removes the failure record; a successful retry also clears the record automatically.
  • Added bulk Retry All and Dismiss All actions above the failures table.
  • If a source+target combination fails repeatedly, the existing failure record is updated (incrementing the attempt count) rather than creating duplicates.
  • Added a failureRetentionDays setting (default: 30) to automatically prune old failure records.
  • Added a webmention/cleanup/failures console command to manually prune failure records older than the retention setting.
  • Added Bluesky author fallback via the public AT Protocol API. When a webmention from Bridgy Fed (bsky.brid.gy) contains no author data in its mf2, the plugin now extracts the Bluesky DID from the URL and fetches the author's display name, profile URL, and avatar from public.api.bsky.app. The avatar is stored locally via the existing asset saving flow.
  • Tracking parameters (utm_*, fbclid, gclid, and similar) are now stripped from URLs during normalization to prevent duplicate webmention records for the same source.

Version 1.1.3

March 22, 2026
  • Fixed avatar saving failures in queue context caused by the volume filesystem using a relative Base Path that didn't resolve correctly in CLI.
  • Fixed file extension detection for avatar URLs containing query strings (e.g. avatar.webp?cb=123).
  • Added validation for empty or truncated avatar responses from CDNs.
  • Added error handling for cleanImage() failures that could destroy the temp file before asset saving.
  • Fixed a crash when processing Bluesky webmentions with at:// protocol URIs in in-reply-to data.

Version 1.1.2

March 21, 2026
  • Fixed a race condition where concurrent queue jobs processing webmentions from the same author would write to the same temporary file path, causing avatar assets to fail with an "Unable to copy stream" error.
  • Avatar assets are now reused across webmentions from the same author instead of being re-downloaded and re-saved for each incoming webmention.

Version 1.1.1

March 14, 2026
  • Missed to bump up the $schemaVersion…

Version 1.1.0

March 14, 2026
  • Added threaded/nested display for webmentions. Replies to other webmentions are now tracked via in-reply-to from mf2 data and displayed as nested threads.
  • Added parentId to the Webmention element, linking replies to the webmention they respond to.
  • Added reverse resolution: when a new webmention arrives, existing orphan replies are automatically linked to it.
  • Added retroactive backfill: existing webmentions with in-reply-to data are connected to their parents on migration.
  • Added "Threaded Display" setting in the control panel to toggle between threaded and flat display.
  • Added getThreadedWebmentions(), getThreadedWebmentionsForElement(), getParentWebmention(), getChildWebmentions(), and getInReplyToUrl() template helpers.
  • Added parentId() and hasParent() query params to WebmentionQuery.
  • Improved accessibility of the default template with semantic list markup and ARIA labels.
  • Added retry logic for avatar asset saving to handle transient stream errors.

Version 1.0.7

March 7, 2026
  • Fixed a database error caused by oversized name values from senders that populate the h-entry name property with UI chrome and article excerpts due to the mf2 implied name algorithm.

Version 1.0.6

March 5, 2026
  • Fixed Bridgy source URL type and site detection to match path segments only, preventing false positives where e.g. app.bsky.feed.post in Bluesky URLs would incorrectly match as a mention type.

Version 1.0.5

March 4, 2026
  • Added alt text support for author photos. (#9)
  • Added loading="lazy" to the webmention Twig template.
  • Improved reliability: unresolvable URLs (local/test TLDs, localhost, IP addresses) are now detected via DNS lookup and handled gracefully without blocking the queue.
  • Improved performance: avatar images are no longer loaded twice, and Guzzle connection/request timeouts are now configured to better handle slow responses.
  • Improved URL matching by normalizing URLs for comparison.
  • Fixed multiple bugs in webmention parsing and avatar handling, including null checks for representative h-card property access, graceful handling of missing published dates, avatar filename collision prevention (by hashing the full URL), and correct Bridgy type detection.
  • Fixed form submission check to use URL parameter.

Version 1.0.4

May 16, 2025
  • Added support for eager-loading webmentions
  • Added new element.getTotalWebmentions() and getTotalWebmentionsByType() methods, which support eager-loading as well.

Version 1.0.3

May 12, 2025
  • Improved performance by automatically eager-loading avatars the first time getAvatar() is called. (#13)
  • Added the “Host” condition rule type. (#12)
  • “Source” and “Target” condition rules no longer have “has a value” or “is empty” operators. (#12)
  • authorName values now use the h-card’s nickname property as a fallback. (#10)
  • Fixed a bug where webmention validation wasn’t catching ConnectException errors.
  • Fixed a bug where jobs for webmentions whithout a valid backlink to the target got stuck in the queue.
  • Fixed a bug where Bluesky source URLs from Brid.gy weren’t always being stored in their entirety.

Version 1.0.2

March 21, 2025
  • Fixed a bug where getting the the avatar photo from the parsed representative h-card would fail because the URL was the value inside of an array instead of being a string. Now the plugin supports both cases.

Version 1.0.1

March 15, 2025
  • Added avatarId, host, and properties as optional table attributes
  • Fixed Bluesky (via Bridgy) avatars: if an avatar image has no extension, the extension is now determined by the respective MIME type

Version 1.0.0

March 9, 2025
  • Added Craft 5 compatibility.
  • Added the “Avatar Location” setting.
  • Avatar assets are now accessible via webmention.avatar.
  • Webmentions now store which element they are associated with.
  • Added the ability to update webmentions from the control panel.
  • Added the resave/webmentions CLI command.
  • Added the webmention/example-template CLI command.
  • Added the webmention/update CLI command.
  • Added the webmention/update-avatars CLI command.
  • Added the getWebmentions() and getWebmentionsByType() element behaviors
  • Added support for the Bridgy site types mastodon, bluesky, github, and reddit.
  • Added a new icon based on Paul Robert Lloyd’s IndieWeb icon designs
  • Fixed the regex that scans for URLs in entries so that it now correctly handles Markdown links
  • Lots of smaller bugfixes and improvements

Version 0.3.1

April 2, 2017
  • Changed the retrieval method for links within an entry to fix a bug where a very long article with many links would lead to a PHP execution timeout
  • Minor bugfixes and improvements

Version 0.3.0

January 6, 2017
  • Webmention sending functionality implemented
  • Setting added: Entry Types (for Webmention sending)
  • New “Webmention Switch” field type

Version 0.2.0

June 7, 2016
  • Webmentions are now stored as Craft elements (ElementType: Webmention_webmention)
  • Improved backend functionality: Webmentions are displayed under the tab Webmentions and can be deleted
  • The plugin now sets the type property of an incoming Webmention correctly, based on the Microformats properties u-like-of, u-like, u-repost-of, and u-repost.

Version 0.1.0

June 3, 2016
  • First version