chore: pin docs toolchain and modernize CI image#9
Merged
Conversation
MkDocs 1.x is unmaintained and MkDocs 2.0 drops the plugin system and Material theme support entirely, so it is not an upgrade path for this site. The likely successor is Zensical, but it does not support the blog plugin yet, so we stay on the current stack for now. Pin all four dependencies to the versions currently in use so an upstream release cannot change what CI builds while the toolchain is frozen. Bump the CI container from python:3.8-buster (EOL October 2024) to python:3.12-slim. Zensical requires Python >=3.10, so this also removes a blocker for the eventual migration. Fix a broken anchor in the 2023 app-integration post: the linked #app-format section does not exist in developer_docs/overview.md; the app format is described under "The App's metadata". Also gitignore .claude/worktrees so agent worktrees are not swept into commits. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The site deploys to GitHub Pages via .github/workflows/ci.yml, not GitLab Pages. Also record that the toolchain is pinned deliberately, so future agents do not "helpfully" bump MkDocs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Jul 25, 2026
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.
Why
MkDocs 2.0 is not an upgrade path for this site: it removes the plugin system, switches to TOML, and is incompatible with Material for MkDocs. Material itself has been in maintenance mode since 2025-11-06 (12 months of critical fixes). The likely successor is Zensical, by the same author.
I trial-built this repo with Zensical (
uvx --with markdown-include zensical build): it reads ourmkdocs.ymlunchanged, respectssite_dir: public, and builds in 1.7s. glightbox and markdown-include work. The blocker is the blog plugin (zensical/backlog#30, still open) —/blog/renders with no post listing, and posts land at/blog/posts/<dir>/main/instead of/blog/YYYY/MM/DD/slug/. So: stay put, but freeze the stack and clear the easy blockers.Changes
requirements.txt— pin all four deps to the versions currently in use (mkdocs==1.6.1,mkdocs-material==9.7.6,markdown-include==0.8.1,mkdocs-glightbox==0.5.2). Previously unbounded (mkdocs>=1.1.2,mkdocs-material>=9.2.0b0). MkDocs 2.0 could not have slipped in (Material 9.7.5+ pinsmkdocs<2), but there is no reason to float versions on an unmaintained toolchain..github/workflows/ci.yml—python:3.8-buster→python:3.12-slim. 3.8 went EOL in October 2024; Zensical requires >=3.10, so this also unblocks the eventual migration.docs/blog/posts/2023-09-16_app_integration_overhaul/main.md— broken anchor. The post linkeddeveloper_docs/overview.md#app-format; no such section exists. Retargeted to#the-apps-metadata. Found by the Zensical trial build, which reports missing anchors (MkDocs only logs these at INFO, so--strictnever caught it)..gitignore— add.claude/worktrees.agents.md— deployment section said GitLab Pages; the site actually deploys to GitHub Pages via.github/workflows/ci.yml. Also records that the pins are deliberate, so future agents do not bump MkDocs.Verification
uv pip install -r requirements.txt && uv run mkdocs build --strict→ exit 0.id="the-apps-metadata"present inpublic/developer_docs/overview/index.html, and the post's rendered link points at it.Follow-up
Migrate to Zensical once zensical/backlog#30 closes. At that point: re-run the trial build, diff blog URLs against the current
/blog/YYYY/MM/DD/slug/scheme, add redirects if they differ, then swaprequirements.txtand the CI build command.mkdocs.ymlcan stay as-is — Zensical reads it natively.🤖 Generated with Claude Code