The rssapi returns items with blog.title/blog.siteUrl instead of flat
feedTitle/author fields. Add blog.* fallbacks in all three view modes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The kebab-case keys were never reachable from Nunjucks templates anyway;
camelCase and snake_case cover all actual frontmatter variants.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tended date now appears on its own line below, matching the desired
layout: Planted + tags + badge on line 1, Tended on line 2.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show "Planted:" before publish date and "Tended:" with the updated date
when posts have an `updated` front matter field. Also updates JSON-LD
dateModified to use the updated date when available.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces the deleted upstream docs with svemagie-specific documentation.
README.md — human-readable setup guide: stack, local dev, env vars,
content structure, custom systems, deploy, repo layout, and upstream
relationship.
CLAUDE.md — AI working context: architecture, key custom systems
(garden, AI disclosure, nested tags, unfurl, OG), template gotchas
(garden-badge placement, blog.njk branch structure), deploy workflow,
common tasks, and a summary of divergence from the theme upstream.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Three misplaced `{% include "components/garden-badge.njk" %}` calls were
rendering duplicate badges outside the post-type branches:
- One after the AI disclosure block (appeared at the bottom of every
article card, next to "Read more")
- Two inside the pagination <nav> (between Previous/Next links)
The badge is already correctly included once per post-type branch
(article, note, like, bookmark, repost, reply, photo).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This directory is managed by the node jail, not by the build. rsync
was trying to delete homepage.json (placed by the other jail) and
failing with permission denied.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The deploy user cannot set timestamps on the jail root directory.
Drop -a (which implies -t, -p, -o, -g) in favor of -rlz (recursive,
symlinks, compress) which is sufficient for deploying static files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SCP only copies files over, leaving deleted files on the server. rsync
with --delete compares source and destination, removing files that no
longer exist in the build output.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>