Classify visitors by referrer into segments (direct, search, fediverse,
bluesky, indieweb, web) via a custom umami.track('reader-source') event.
Add noscript pixels to RSS/JSON feeds so feed-reader activity appears
under virtual /rss/* paths in Umami.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
RSS feeds encode special characters as HTML entities; the backend
serves them raw, causing " etc. to appear literally in the UI.
Decode titles client-side using the browser's HTML parser.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Switch from KittyGiraudel's shortcode-based footnotes plugin to
markdown-it-footnote, which handles standard [^1] Markdown syntax
used in Obsidian notes. Remove the {% footnotes %} shortcode from
the post layout as the plugin renders footnotes automatically.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Registers the KittyGiraudel footnotes plugin and adds {% footnotes %}
to post.njk below the article content.
Usage in content:
{% footnoteref "id" "Footnote text here" %}anchor text{% endfootnoteref %}
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Indiekit stores a single related URL as a plain string, not a YAML list.
Iterating over a string yields characters, breaking the See Also section.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds seeAlsoLinks filter that extracts all internal blog.giersig.eu
links from the raw markdown source and merges them with the explicit
`related` frontmatter field, deduplicated. The section now surfaces
automatically whenever an article links to another post inline.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>