Static site for https://seyonv.github.io/. No build step; GitHub Pages serves the
main branch directly.
This repo was recreated fresh and is public. The old Jekyll blog's history lives
in the private repo seyonv/jekyll-blog-archive, on branch
archive/jekyll-blog-2026 and tag jekyll-blog-final.
index.html- landing pageartifacts/- encrypted gallery (data lives inartifacts/data/)plans/- encrypted Build Plans (data lives inplans/data/)scripts/- site and gallery tooling (scripts/lib/for shared code)docs/- specs, plans, and other project docs
Plaintext artifact state lives at ~/.local/share/seyonv-site/ and the
encryption key at ~/.config/seyonv-site/artifacts.key - neither is ever
committed to this repo.
./publish.sh (only runs from main) does, in order:
scripts/sync-artifacts.mjs- scans local Claude Code transcripts for published artifacts and updates the plaintext state file.scripts/thumbs.mjs- captures a thumbnail per artifact. Source priority: the local file, else a saved published page under~/.local/share/seyonv-site/pages/<id>/, else a placeholder. Capturing a fresh screenshot from the hosted claude.ai page is opt-in (scripts/thumbs.mjs --remote, since claude.ai blocks headless Chromium without cookies) and is not run bypublish.sh.scripts/seal.mjs- encrypts the state and thumbnails intoartifacts/data/*.enc. Only ciphertext is ever written under this repo.scripts/plans.mjs- finds every plan-page folder (~/Desktop/repos/*/with a.plan/dir), bundles itsindex.htmlinto one read-only page (shell CSS/JS and images inlined, chat and versions hidden), and encrypts it intoplans/data/with the same key, so one unlock opens both sections.- Stages, commits, and pushes
artifacts/andplans/.
The deployed plans are read-only. builds (an alias in ~/.bash_profile for
node scripts/builds.mjs) starts each plan's local plan-page server and opens
a local index at ~/.local/share/seyonv-site/builds.html that links to them,
with Claude chat and versions working.
The gallery is encrypted; visiting it directly shows nothing. Get the one-time unlock URL with:
node scripts/unlock.mjs --open
This opens https://seyonv.github.io/artifacts/#k=<key> in the browser. The
key never leaves this URL fragment and the local key file.
node scripts/seal.mjs --rotate
./publish.sh
node scripts/unlock.mjs --open
Rotating clears the sealed cache and re-encrypts everything under a new key, so you'll need a fresh unlock URL afterward.
A remote-only artifact (no local file, no saved page) that gets republished
later keeps its old saved-page thumbnail until that page is re-fetched with
the Artifact tool's read action - the thumbnail pipeline itself doesn't
re-fetch remote pages.
scripts/install-launchd.sh installs both sync jobs (this repo's
artifacts-sync and the explainers repo's explainers-sync) into
~/Library/LaunchAgents and (re)bootstraps them. Logs land in
~/Library/Logs/seyonv-site/.