Picks up new content from IndieKit, refreshes external feeds (Last.fm,
Mastodon, Bluesky, Funkwhale, etc.) and redeploys without a manual push.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The cache was written to .cache/og/ relative to the workspace, which is
under /usr/local/git/.cache/act/<unique-hash>/hostexecutor/ — a new path
per run, so every build regenerated all images from scratch.
OG_CACHE_DIR env var now controls the cache path (resolved to an absolute
path). CI sets it to /usr/local/git/.cache/og, which survives between runs.
Locally it still defaults to .cache/og inside the project dir.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- me claim must be the publication URL (SITE_URL), not a separate INDIEKIT_URL
- SITE_URL is already a configured secret in this repo
- Show HTTP response body and status code for easier debugging
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add hard 22s Promise.race deadline in prefetchUrl() to guard against
TCP-level connection hangs that bypass unfurl.js's read-only timeout.
Fixes builds hanging indefinitely on unresponsive hosts.
- Add actions/cache step to deploy.yml persisting .cache/ between runs.
Prevents webmention (and all eleventy-fetch) data loss on transient
502s: a populated cache means failures return existing data, not [].
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>
SCP can't access the jail filesystem directly; use SSH + bastille cmd
instead, same pattern as the node jail deploy workflow.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a pre-build SCP step to pull the live homepage config from the
node jail, so GitHub Actions always builds with the latest admin-saved
config instead of the stale committed version.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- deploy.yml: add missing BLUESKY_HANDLE env var to Build site step
- deploy.yml: fix GITHUB_USERNAME secret name (was GH_USERNAME)
- mastodonFeed.js: read MASTODON_URL first, fall back to MASTODON_INSTANCE
- mastodonFeed.js: add early-return guard when instance/user vars are empty
- mastodonFeed.js: also accept MASTODON_USERNAME as fallback for MASTODON_USER
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>