| author | Alan Dipert
<alan@tailrecursion.com> 2026-08-12 20:33:21 UTC |
| committer | Alan Dipert
<alan@tailrecursion.com> 2026-08-12 20:33:21 UTC |
| parent | a0a592f60a28b1ff013852daccf4cf0aea67467d |
| README.md | +17 | -7 |
diff --git a/README.md b/README.md index f6abb80..7eb73f1 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,20 @@ # Homepage static site generator -This converts Markdown from `md/` to a static site in `out/`. Podman provides the pinned build environment; the host only needs Podman, Make, and Git. +This converts Markdown from `md/` to a static site in `out/`. The normal workflow uses the pinned Podman image defined by `Containerfile`. > AI helpers: read `AGENTS.md` before making changes. -## Reproducible build +## Edit and build + +For a normal Markdown change: + +1. Edit a file under `md/`, or create `md/PageName.md` with a level-one title. +2. Use relative links such as `./OtherPage.md`; the generator rewrites them for the published site. +3. Put page-specific assets in `md/PageName/` and reference them as `./PageName/file.png`. +4. Build the site with `make container-build`. +5. Open `out/Index.html` and review the generated page. + +`make container-build` builds the image from `Containerfile` when needed, runs the complete build in that image, and writes the generated site to `out/`. It includes the pinned versions of cmark-gfm, Python, rsync, Git, and Git LFS, so no site-build tools need to be installed on the host. ```sh make container-build @@ -19,24 +29,24 @@ Deployment assets stored alongside the Markdown, including `.htaccess`, are copi Lossless masters for optimized site images live in `source-assets/`. They are retained in Git but excluded from both the container context and published site. -To prove that two isolated builds produce identical files and metadata: +For a new article, also add a dated entry near the top of `md/Home.md`'s Updates table. To run the full checks before committing: ```sh -make verify-reproducible make test +make verify-reproducible ``` -The `Containerfile` pins both the Debian base-image digest and a dated Debian package snapshot. Update those two values together when intentionally refreshing the toolchain, rebuild with `make container-image`, and rerun the reproducibility check. +The `Containerfile` pins both the Debian base-image digest and a dated Debian package snapshot. Update those two values together only when intentionally refreshing the toolchain. ## Local fallback -The Make pipeline can still run without Podman when `cmark-gfm`, Python 3.11 or newer, rsync, Make, and Git are installed locally: +The host build is optional. It requires `cmark-gfm`, Python 3.11 or newer, rsync, Make, and Git: ```sh make assets && make ``` -Set `MD2HTML` if the renderer is not on `PATH`: +Set `MD2HTML` if the local renderer is not on `PATH`: ```sh make MD2HTML=bin/cmark-gfm