From b235b38332e4207d05ae433ce8602cd3362baf37 Mon Sep 17 00:00:00 2001
From: scottmakestech <83726258+scottmakestech@users.noreply.github.com>
Date: Wed, 11 Feb 2026 00:41:04 -0600
Subject: [PATCH] RSS Feed
- Add RSS Feed link to /blog page
- Update RSS feed template to exclude pages
- Add CI validation to catch xml errors
---
.github/workflows/test.yaml | 28 +++++++++++++
assets/sass/main.scss | 39 +++++++++++++++++++
layouts/_default/rss.xml | 18 +++++++++
layouts/blog/list.html | 5 ++-
layouts/partials/head.html | 3 ++
layouts/partials/rss-feed-link.html | 8 ++++
...s_77b10c8e87ff110a62c52933fe3f7f11.content | 2 +-
...scss_77b10c8e87ff110a62c52933fe3f7f11.json | 2 +-
static/images/rss-icon.svg | 1 +
9 files changed, 102 insertions(+), 4 deletions(-)
create mode 100644 .github/workflows/test.yaml
create mode 100644 layouts/_default/rss.xml
create mode 100644 layouts/partials/rss-feed-link.html
create mode 100644 static/images/rss-icon.svg
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
new file mode 100644
index 0000000..9f6d775
--- /dev/null
+++ b/.github/workflows/test.yaml
@@ -0,0 +1,28 @@
+name: Test
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Setup Hugo
+ uses: peaceiris/actions-hugo@v3
+ with:
+ # same as netlify.toml
+ hugo-version: '0.148.2'
+ extended: true
+ - name: Build
+ run: hugo -D -F --gc --minify -d public
+ - name: Install xmllint
+ run: sudo apt-get install -y libxml2-utils
+ - name: Validate RSS feed
+ run: xmllint --noout public/index.xml
diff --git a/assets/sass/main.scss b/assets/sass/main.scss
index 74fe057..202fee8 100644
--- a/assets/sass/main.scss
+++ b/assets/sass/main.scss
@@ -284,3 +284,42 @@ a code {
color: #e3116c;
}
+/* RSS Feed Link */
+.rss-feed-link {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ font-size: 14px;
+ font-weight: 600;
+ color: var(--link-color-on-white-bg);
+ text-decoration: none;
+ transition: color 150ms;
+
+ &:hover {
+ color: var(--teal-color);
+ text-decoration: none;
+ }
+
+ &--dark {
+ color: var(--teal-color);
+
+ &:hover {
+ color: var(--aquamarine-color);
+ }
+ }
+
+ .rss-icon {
+ display: inline-block;
+ flex-shrink: 0;
+ width: 14px;
+ height: 14px;
+ background-color: currentColor;
+ -webkit-mask-image: url('/images/rss-icon.svg');
+ mask-image: url('/images/rss-icon.svg');
+ -webkit-mask-size: contain;
+ mask-size: contain;
+ -webkit-mask-repeat: no-repeat;
+ mask-repeat: no-repeat;
+ }
+}
+
diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml
new file mode 100644
index 0000000..c430ad9
--- /dev/null
+++ b/layouts/_default/rss.xml
@@ -0,0 +1,18 @@
+
{{ i18n "subscribe_rss" . | safeHTML }}
{{ end }}