Max Glenister

Blog & IndieWeb • 3 min read Plain text

Plugins instead of patches

Part 2 of 4 · How this blog is built

I’ve been running Known as my social posting hub for a while now. It’s a solid IndieWeb-friendly CMS that handles status updates, photos, and syndication to various silos. Recently I upgraded my instance for the first time in about four years, which meant dealing with all the little tweaks I’d made to core templates over that time.

Previously I’d just edited core files directly, which meant upgrades would wipe my changes. After four years I had no idea what I’d even modified (I’ll go into the archaeology of that in another post). This time I decided to do it properly, and ended up writing four plugins.

LikeLabels

Known calls likes “stars”. The button says “star”, the count says “stars”. This is fine, but I wanted mine to say “likes” instead. A small thing, but it bugged me.

The LikeLabels plugin overrides the template that renders these labels and pulls the text from a config setting instead. There’s an admin page where I can set the singular and plural forms to whatever I want. “Like/likes”, “heart/hearts”, “fave/faves”, whatever.

CustomMenu

Jumping into a template file every time I want to tweak the navigation isn’t ideal, so I made the CustomMenu plugin to handle it through the admin UI instead.

It adds an admin page with a table of menu items. Each one has a label, URL, and an optional rel attribute (handy for rel="me" verification). I can drag them around to reorder, and mark one as “active” to highlight which site I’m currently on. The plugin then injects these into the toolbar template.

RichFeed

The RichFeed plugin adds OpenGraph metadata to the JSON Feed output for any URLs in posts. It also renders Markdown and strips out bare URLs that have been unfurled (so they don’t appear twice).

The plan is to use this data to create richer embeds of my timeline on my blog. This plugin is doing a bit much (unfurling, Markdown, URL stripping), but it works for what I need.

UnfurlManager

Sometimes I don’t want a URL to be unfurled. Maybe the preview card looks rubbish, or maybe I’m linking to something where the URL itself is the point. The UnfurlManager plugin lets me hide individual unfurls on a per-post basis.

Each post stores a list of URLs that shouldn’t be unfurled. The RichFeed plugin checks this list and excludes those URLs from the _unfurls data. The URL still appears as a link in the post, it just doesn’t get a preview card.

  • Blog & IndieWeb · shares #indieweb
    Enriching webmentions from third-party platforms

    I keep finding new gaps in my webmention implementation. Mentions coming in from Bluesky, Lemmy and Lobsters were showing up with no author at all, just a blank avatar and an empty name. Reddit and Hacker News bookmarks fared a bit better, with a username attached, but got flattened into a generic “bookmarked” icon with no indication of where the post had actually been shared. Lobsters mentions also carried the wrong published date. None of these felt like they were pulling their weight compared to a proper webmention from a blog or Mastodon.

    June 2026 • 8 min read
  • Blog & IndieWeb · shares #indieweb
    Sending webmentions on deploy

    I’ve spent a fair bit of time on the receiving end of webmentions, from adding support for them in the first place through to fetching them at build time and rendering them server-side so the discussion section doesn’t flicker in over JS. What I’d never actually done was send the other half. Every link I’ve ever made out to another IndieWeb site has just sat there, silently not telling anyone I’d linked to them.

    June 2026 • 3 min read
  • Blog & IndieWeb · shares #indieweb
    Baking webmentions into the build

    Back in 2022 I added webmention support to this blog. The implementation worked but it was entirely client-side, so the page would load, JS would fire, fetch from webmention.io, and render the results into the DOM. With JS disabled or on a slow connection, the discussion section was just empty. It worked well enough that I didn’t touch it for three years, but the rate-limit situation had been silently catching visitors out and eventually I started pulling at the thread.

    March 2026 • 5 min read

Discussion

No interactions yet

Join the conversation

Comment on the GitHub issue, or reply from your own site with a Webmention (how?).

Comment on GitHub

Webmentions last fetched 12 November 2026, 12:24