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