Repository navigation
Hugo and our Hextra fork, and no Python at all - #12
Merged
Merged
Conversation
This repository rendered a static site for an organisation whose whole
argument is that it needs no runtime but Go -- using MkDocs Material and mike,
which meant a requirements.txt, a pip install and a Python setup step in CI.
It is Hugo now, with the theme as a Go module, and there is no Python left.
require github.com/imfing/hextra v0.13.0
replace github.com/imfing/hextra => github.com/tannevaled/hextra v0.16.0
The fork keeps upstream's module path, so it is reached through a replace
rather than by importing a different path, and it is tagged independently and
AHEAD: v0.16.0 against upstream's v0.13.0. This repository is the FIRST in the
fleet to consume it, so those two lines are the pattern the others copy.
The build prints `hugo mod graph`, so a build that silently fell back to
upstream is visible in the log rather than in the rendering. Verified here:
github.com/go-pdfkit/docs github.com/imfing/hextra@v0.13.0
=> github.com/tannevaled/hextra@v0.16.0
It checks the nav table against the tree IN BOTH DIRECTIONS before writing
anything -- a page on disk the nav does not name, or a nav entry with no page,
is an error and nothing is written. Both refusals were exercised before the
real run. Then it adds front matter from the nav (title, and a weight that
keeps the sidebar in the nav's order), drops a leading `# Heading` that only
repeats the title, rewrites the nineteen internal `.md` links to the sections
the pages moved into, and turns the MkDocs admonitions into Hextra callouts.
⛔ That last one is why the output was read rather than trusted. An admonition
is delimited by INDENTATION, so rewriting only its opening line leaves the body
indented four spaces -- and Markdown renders that as a CODE BLOCK. The first
version did exactly that, and the opening line had converted perfectly. It is a
line-by-line pass now, and the rendered HTML was checked: the body comes out as
`<p>` prose inside the callout, not inside a `<pre>`.
Versioning. `mike` published `/latest/` and a directory per version; this
publishes one current set. The fork carries a versioned-documentation kit added
2026-10-05, and adopting it is its own change: moving the generator and the
versioning scheme in one step would make a failure impossible to attribute.
Git recorded the pages as renames, so each keeps its history.
`hugo --minify` builds 15 pages; actionlint passes.
Contributor
Author
One thing outside the diff: Pages was still on the legacy builder
Switched out of band, the same way gh api -X PUT repos/go-pdfkit/docs/pages -f build_type=workflow⚠ The 🤖 Generated with Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This repository rendered a static site for an organisation whose whole argument
is that it needs no runtime but Go — using MkDocs Material and
mike,which meant a
requirements.txt, apip installand a Python setup step inCI.
It is Hugo now, with the theme as a Go module, and there is no Python left.
The theme is our fork
The fork keeps upstream's module path, so it is reached through a
replacerather than by importing a different path, and it is tagged independently and
ahead:
v0.16.0against upstream'sv0.13.0.This repository is the first in the fleet to consume it, so those two lines
are the pattern the others copy. The build prints
hugo mod graph, so a buildthat silently fell back to upstream shows in the log rather than in the
rendering. Verified here:
The thirteen pages were converted by a tool, not by hand
It checks the nav table against the tree in both directions before writing
anything — a page on disk the nav does not name, or a nav entry with no page,
is an error and nothing is written. Both refusals were exercised before the
real run:
Then it adds front matter from the nav (title, and a weight that keeps the
sidebar in the nav's order), drops a leading
# Headingthat only repeats thetitle, rewrites the nineteen internal
.mdlinks to the sections the pagesmoved into, and turns the MkDocs admonitions into Hextra callouts.
⛔ Why the output was read rather than trusted
An admonition is delimited by indentation. Rewriting only its opening line
leaves the body indented four spaces — and Markdown renders that as a code
block. The first version did exactly that, and the opening line had
converted perfectly:
It is a line-by-line pass now, and the rendered HTML was checked: the body
comes out as
<p>prose inside the callout, not inside a<pre>.What is deliberately not in this change
Versioning.
mikepublished/latest/and a directory per version; thispublishes one current set. The fork carries a versioned-documentation kit added
on 2026-10-05, and adopting it is its own change — moving the generator and
the versioning scheme in one step would make a failure impossible to attribute.
Checks
hugo --minifybuilds 15 pages,actionlintpasses, and git recorded thepages as renames, so each keeps its history.
🤖 Generated with Claude Code