Well, I must confess when I first agreed to take over maintenance of this plugin I wasn’t prepared for just how burned out I’d gotten at the time, so while I did manage to get 3.3.7 out the door, I have to admit progress was far slower than I would’ve liked.

But, version 4.0.0 is finally done, and I’ve managed to integrate a bunch of changes I had queued up while dealing with a bunch of open issues in the tracker.

Here’s hoping I didn’t break anything horribly (I dogfood the main branch on my own blog but I’m not going to claim that exercises every corner of the codebase, and I’ve not begun the monumental effort to close out issue #29, so automated tests are still very much absent).

With that said, version 4.0.0 of this plugin brings along a couple of major new features, along with some more minor enhancements. While the gem behaviour and associated configuration should be backward compatible with the 3.x series, the changes are significant enough that I felt it best to bump the major version of the plugin so folks are less likely to experience a surprise upgrade.

Syndication support

Services like brid.gy and news.indieweb.org make use of webmentions to support automated syndication of content from blogs to various third-party silos, including Mastodon, Github, and so on (in fact, that’s how this blog is syndicated to the Fediverse). While previously it was possible to use this plugin to integrate with those services, the integration was a bit tedious and there were key bits of functionality missing to enable a full integration.

This version of the plugin introduces a whole new set of functionality, along with related configuration and documentation, for simplifying the integration with these types of services.

For more information you can check out the documentation for the feature.

Enhanced error handling

Prior to version 4.0.0, error handling in this plugin was fairly basic with only a few settings to control behaviour. With the introduction of syndication support, it became more important to have finer-grained control over error handling so that, for example, syndication targets don’t get accidentally blacklisted due to configuration errors on the source site or outages on the target service.

As a result, this plugin adds a variety of new behaviours and associated configuration settings that offers the user significantly more control over how these types of errors are handled.

To learn more about these additional features and associated configuration options, checkout the associated documentation.

Additional changes

Support for Ruby 3.2

Thanks to Daniel Pietzsch for contributing this change, which removes the string_reflection gem from our list of dependencies, as it does not currently work with Ruby 3.2, and replaces it with the activesupport gem, which does.

Don’t process inbound webmentions as markdown-formatted text

Previous versions of this plugin passed inbound webmention content received from webmention.io through a markdown formatter. However, content received from that service is actually sanitized HTML and should be treated accordingly.

As a result, the plugin no longer formats this content and, by default, passes it straight through to the formatting template.

For users who wish to preserve the old behaviour, this can be done by setting up a custom template and passing the content through markdownify.

In previous versions, this plugin would attempt to process and send webmentions to URL targets that were lacking a protocol specifier. Unfortunately, this code was broken and resulted in the plugin crashing. Given that no user reported this issue, I assume this functionality was not in use by anyone, and so rather than fixing the code I’ve removed it.

If it turns out this feature is important, please file an issue and I can investigate re-introducing it.

Support for short URLs

When syndicating to silos, it’s often desirable to post a shortened backlink URL in order to save characters. This plugin now supports specifying a shorturl value in the page frontmatter that is used as the source when sending a webmention to a target.

How you populate that field is up to you. On this blog I used this technique to build my own simple URL shortener using Apache RewriteMaps.

Ignore drafts

The draft frontmatter value is used by the jekyll-feed plugin to ignore posts in a blog feed, however in previous versions of this plugin this frontmatter was ignored when gathering and sending webmentions. This behaviour has now been fixed and draft posts are ignored by the plugin.

Bookmark support

Along with in_reply_to, the plugin now recognizes the bookmark_of frontmatter value and will send a webmention to the indicated target.

Some documentation cleanups

While Aaron did a great job of putting together solid documentation for enabling this plugin, I saw some opportunities to streamline things a bit and hopefully simplify onboarding. As a result, I’ve done a first pass at trying to further improve the documentation. I have no doubt there’s still a long way to go to make this gem as easy as possible to set up, but I hope this is a good step forward!