jwogrady Working notes on tools, and why they earn their place

The theme, and where it ends

The theme is hugo-spectrum, vendored as a git submodule at themes/hugo-spectrum.

What it does and does not own

It owns presentation. It carries no content types, no taxonomy and no URL structure — those are declared in hugo.toml here. That is why the [taxonomies] and [menus] blocks live in this repo.

The journal is not a content type. layouts/home.html filters where site.RegularPages "Section" "posts" — an exact string match, so an entry outside content/posts/ renders at its own URL and never appears in the index.

Config it will not build without

timeZone = 'America/Chicago'
[params.spectrum]
  timezone = 'America/Chicago'   # must equal the above

Unset, Hugo uses the build machine’s zone, and the same commit renders different times on a laptop and in CI. The theme fails the build rather than let that happen.

Cloning this repo

git clone --recurse-submodules <url>

Without --recurse-submodules the themes/ directory is empty and the build fails in a way that reads like a content problem. To fix an existing clone:

git submodule update --init --recursive

Updating the theme

cd themes/hugo-spectrum && git pull origin master && cd -
git add themes/hugo-spectrum && git commit -m "chore: update theme"

The submodule pins a commit. Nothing changes until that pin moves.

Overriding it

Project files beat theme files at the same path. layouts/page.html here wins over themes/hugo-spectrum/layouts/page.html entirely — there is no merging, so an override is a fork of that one file and stops receiving theme updates to it. Override as little as possible.

One knob

[params.spectrum]
  accentHue = 355   # the whole palette derives from this
  palette   = ''    # or 'ultraviolet' for the preset