Make targets now resolve a repo-local, gitignored .tools/bin (Hugo extended
0.167.0, Node 22.11.0, lychee 0.24.2) via a recipe-scoped PATH, so machines
with old/missing tools can no longer produce error-127 mysteries or version
drift. System PATH is never touched.
make bootstrap one-time idempotent install (sha256-verified Hugo)
make tool-versions pinned vs PATH-first diagnostic table
make preflight strict check, wired ahead of build/serve/serve-lan
The old Makefile was a single 'run' target (hugo server + pagefind --serve).
Replace it with documented targets:
build hugo --gc -> public/
index build + pagefind --site public -> public/pagefind/
serve / run index + pagefind's own server on 127.0.0.1:1414 (local)
serve-lan static-serve public/ on 0.0.0.0:8090 for other machines
link-check offline internal-link scan (lychee --scheme file) -> JSON
link-fix comment out confirmed-dead internal links, then rebuild
external-check network scan of external links (report-only)
clean / all
Add scripts/:
serve_lan.py stdlib static server rooted at public/ (prints LAN IP)
fix_dead_links.py idempotent internal dead-link comment-out
check_external_links.py external link report (drives the daily cron job)
.gitignore: add linkcheck/, resources/_gen/ (regenerable Hugo asset cache),
__pycache__/, and .hermes/.