Add Atom and RSS feeds
Deploy production / deploy (push) Successful in 21s

This commit is contained in:
2026-08-23 17:37:05 -07:00
parent 623686590c
commit a88092631a
13 changed files with 910 additions and 27 deletions
+2 -1
View File
@@ -6,11 +6,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% if this._path != '/' %}{{ this.title }} — {% endif %}Labyricorn</title>
{% block social_head %}{{ social_metadata(this) }}{% endblock %}
{% block feed_head %}{% endblock %}
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;500&family=Playfair+Display:ital,wght@0,600;0,700;1,500;1,600&display=swap" rel="stylesheet">
<link rel="icon" href="{{ '/static/favicon.svg'|url }}" type="image/svg+xml">
<link rel="stylesheet" href="{{ '/static/style.css'|url }}?v=24">
<link rel="stylesheet" href="{{ '/static/style.css'|url }}?v=25">
<script src="{{ '/static/tags.js'|url }}?v=2" defer></script>
<script src="{{ '/static/activity.js'|url }}?v=1" defer></script>
<script src="{{ '/static/hero-circuit.js'|url }}?v=2" defer></script>
+6 -15
View File
@@ -1,3 +1,4 @@
{% from "macros/feed-links.html" import visible_feed_links with context %}
<section class="circuit-hero" aria-label="Labyricorn navigation hero" data-circuit-hero>
<div class="circuit-hero-topline">
<span><strong>LABYRICORN</strong> // SIGNAL ROUTER</span>
@@ -103,23 +104,12 @@
<section class="homepage-panel" aria-labelledby="recent-activity-heading">
<div class="section-heading">
<span id="recent-activity-heading">Recent Activity</span>
<span>Sorted by date</span>
<span>Sorted by date · {{ visible_feed_links('https://www.labyricorn.com/feed.xml', 'https://www.labyricorn.com/rss.xml') }}</span>
</div>
<div class="timeline" id="recent-activity-list" data-activity-feed data-batch-size="6">
{% set entries = [] %}
{% for section_id in ['articles', 'blog'] %}
{% for item in site.get('/' ~ section_id).children %}
{% if entries.append(item) %}{% endif %}
{% endfor %}
{% endfor %}
{% for project in site.query('/projects').filter(F._model == 'project') %}
{% set devlog = site.get(project.path ~ '/devlog') %}
{% if devlog %}
{% set latest_devlog_entry = devlog.children.order_by('-date', '-source_commit_time').first() %}
{% if latest_devlog_entry and entries.append(latest_devlog_entry) %}{% endif %}
{% endif %}
{% endfor %}
{% for item in entries|sort(attribute='date', reverse=true) %}
{% for item_path in this.recent_activity_paths %}
{% set item = site.get(item_path) %}
{% if item %}
<article class="timeline-entry accent-{{ item.kicker|lower }}" data-activity-item>
<div class="entry-meta">
<span class="label">{{ item.kicker }}</span>
@@ -129,6 +119,7 @@
<p>{{ item.summary }}</p>
<a class="read-more" href="{{ item|url }}">Read entry →</a>
</article>
{% endif %}
{% endfor %}
</div>
<div class="activity-controls" data-activity-controls hidden>
+13
View File
@@ -0,0 +1,13 @@
{% macro feed_autodiscovery(atom_url, rss_url, title) -%}
<link rel="alternate" type="application/atom+xml" title="{{ title }} (Atom)" href="{{ atom_url }}">
<link rel="alternate" type="application/rss+xml" title="{{ title }} (RSS)" href="{{ rss_url }}">
{%- endmacro %}
{% macro visible_feed_links(atom_url, rss_url) -%}
<span class="feed-links" aria-label="Syndication feeds">
<span>Feeds:</span>
<a href="{{ atom_url }}" type="application/atom+xml">Atom</a>
<span aria-hidden="true">/</span>
<a href="{{ rss_url }}" type="application/rss+xml">RSS</a>
</span>
{%- endmacro %}
+4 -1
View File
@@ -1,4 +1,8 @@
{% extends "base.html" %}
{% from "macros/feed-links.html" import feed_autodiscovery with context %}
{% block feed_head %}
{% if this._path == '/' %}{{ feed_autodiscovery('https://www.labyricorn.com/feed.xml', 'https://www.labyricorn.com/rss.xml', 'Labyricorn - Recent Activity') }}{% endif %}
{% endblock %}
{% block body %}
{% if this._path == '/' %}
{% include "home.html" %}
@@ -14,4 +18,3 @@
</section>
{% endif %}
{% endblock %}
+7
View File
@@ -1,9 +1,15 @@
{% extends "base.html" %}
{% from "macros/tag-links.html" import tag_links, taxonomy_labels with context %}
{% from "macros/social-sharing.html" import social_metadata, share_controls with context %}
{% from "macros/feed-links.html" import feed_autodiscovery, visible_feed_links with context %}
{% block social_head %}{{ social_metadata(this, 'SoftwareSourceCode', 'website') }}{% endblock %}
{% block feed_head %}
{% set project_feed_base = 'https://www.labyricorn.com' ~ this.url_path %}
{{ feed_autodiscovery(project_feed_base ~ 'feed.xml', project_feed_base ~ 'rss.xml', 'Labyricorn - ' ~ this.title) }}
{% endblock %}
{% block body %}
{% set devlog = site.get(this.path ~ '/devlog') %}
{% set project_feed_base = 'https://www.labyricorn.com' ~ this.url_path %}
<article class="project-page">
<header class="project-hero">
<div class="shell project-hero-inner">
@@ -19,6 +25,7 @@
<a class="button-link button-link-primary" href="{{ this.repository_url }}">Source repository →</a>
<a class="button-link" href="{{ this.repository_readme_url }}">README →</a>
{% if devlog %}<a class="button-link" href="{{ devlog|url }}">Development log →</a>{% endif %}
{{ visible_feed_links(project_feed_base ~ 'feed.xml', project_feed_base ~ 'rss.xml') }}
</div>
</div>
</header>
+17 -1
View File
@@ -1,5 +1,12 @@
{% extends "base.html" %}
{% from "macros/tag-links.html" import tag_links with context %}
{% from "macros/feed-links.html" import feed_autodiscovery, visible_feed_links with context %}
{% block feed_head %}
{% if this._id in ['articles', 'blog'] %}
{% set feed_base = 'https://www.labyricorn.com/' ~ this._id ~ '/' %}
{{ feed_autodiscovery(feed_base ~ 'feed.xml', feed_base ~ 'rss.xml', 'Labyricorn - ' ~ this.title) }}
{% endif %}
{% endblock %}
{% block body %}
{% set filter_tags = namespace(values=[]) %}
{% if this._id in ['blog', 'articles', 'projects'] %}
@@ -158,7 +165,16 @@
{% endif %}
<section class="activity-section">
<div class="shell">
<div class="section-heading"><span>{{ this.title }}</span><span data-entry-count>{{ this.children.count() }} entries</span></div>
<div class="section-heading">
<span>{{ this.title }}</span>
<span>
<span data-entry-count>{{ this.children.count() }} entries</span>
{% if this._id in ['articles', 'blog'] %}
{% set feed_base = 'https://www.labyricorn.com/' ~ this._id ~ '/' %}
· {{ visible_feed_links(feed_base ~ 'feed.xml', feed_base ~ 'rss.xml') }}
{% endif %}
</span>
</div>
{% if filter_tags.values %}
<div class="tag-filter" data-tag-filter aria-label="Filter {{ this.title }} by tag">
<button class="tag-filter-button is-active" type="button" data-tag-value="" aria-pressed="true">All</button>