Skip to content

⚙️ [Maintenance]: Documentation site migrated to Zensical#31

Open
Marius Storhaug (MariusStorhaug) wants to merge 27 commits into
mainfrom
feat/30-migrate-to-zensical
Open

⚙️ [Maintenance]: Documentation site migrated to Zensical#31
Marius Storhaug (MariusStorhaug) wants to merge 27 commits into
mainfrom
feat/30-migrate-to-zensical

Conversation

@MariusStorhaug
Copy link
Copy Markdown
Member

The documentation site is now built with Zensical instead of Material for MkDocs. The Blog section has been removed from the site and navigation. All other documentation pages remain accessible at their current URLs, now served by Zensical's modern theme.

Removed: Blog section

The Blog section and all its content have been removed from the site and navigation. The RSS feed and social preview cards, which depended on third-party plugins not yet available in Zensical, have also been removed. These features are tracked on Zensical's roadmap and can be re-enabled once the corresponding native modules ship.

Changed: Documentation site built with Zensical

The site is now generated by Zensical, the next-generation platform built by the creators of Material for MkDocs. The modern theme variant (Zensical's default) is active. The overrides/ customizations and includes/ snippets carry over unchanged, as Zensical's HTML structure is compatible with both theme variants.

Technical Details

mkdocs.ymlzensical.toml
All settings translated to native TOML under the [project] scope. The mkdocs.yml compatibility shim was not used. modern is the Zensical default, so no variant key is set.

Plugins
Five Tier 2 plugins dropped entirely: git-committers, git-revision-date-localized, rss, social (via mkdocs-material[imaging]), and table-reader — all on Zensical's Tier 2 backlog and not yet available as native modules. Dependent site features (contributor avatars, last-modified dates, RSS feed, social preview cards) are removed with them. meta (Tier 1) and search (built-in default) are retained.

Blog content deleted
docs/Blog/index.md, docs/Blog/.authors.yml, docs/Blog/Posts/test.md, docs/Blog/Posts/.meta.yml — all existed solely as blog plugin inputs.

Docs.yml CI workflow rewritten
Full replacement with Zensical's recommended GitHub Pages pattern: configure-pagescheckoutsetup-pythonpip install zensicalzensical build --cleanupload-pages-artifactdeploy-pages. MATERIAL_FOR_MKDOCS_INSIDER_PAT, MKDOCS_GIT_COMMITTERS_APIKEY, the PSModule/GitHub-Script connect step, and all plugin install steps removed. contents: write downgraded to contents: read. uv adoption deferred per planning decision.

Implementation plan progress: All four groups from issue #30 Section 3 complete in this PR — prep (create zensical.toml), prep (remove Blog content), migrate (update Docs.yml), cleanup (delete mkdocs.yml). The four groups ship atomically because each intermediate state would leave the repo in a broken build.

@MariusStorhaug Marius Storhaug (MariusStorhaug) added the github_actions Pull requests that update GitHub Actions code label May 23, 2026
@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title 📖 [Docs]: Documentation site migrated to Zensical ⚙️ [Maintenance]: Documentation site migrated to Zensical May 23, 2026
- Pin actions/checkout@v6 → @de0fac2e (v6) in Linter.yml and Update-Index.yml
- Pin super-linter/super-linter@latest → @9e863354 (v8.6.0)
- Add VALIDATE_ALL_CODEBASE: false so CI only lints files changed in the PR,
  preventing pre-existing issues in overrides/ from blocking unrelated changes
… failures

- biome.json: exclude overrides/ (MkDocs/Zensical template files — not source JS)
  so Biome does not flag template arrow-function and parse errors in vendor HTML
- .github/zizmor.yml: suppress secrets-outside-env for Update-Index.yml;
  ClientID/PrivateKey are required with: params for PSModule/GitHub-Script and
  have no env: alternative
@MariusStorhaug
Copy link
Copy Markdown
Member Author

CI Diagnostics & Fixes

Two check failures diagnosed after the Zensical migration commits. Summary below.


Lint code base — Fixed (three commits)

The linter has never been green on any PR in this repo (all 10 historical runs failed). Root causes addressed in commits cf12af2 and 93c08c6:

Finding File Fix
unpinned-uses (error) Linter.ymlactions/checkout@v6 Pinned to @de0fac2e
unpinned-uses (error) Linter.ymlsuper-linter/super-linter@latest Pinned to @9e863354 (v8.6.0)
unpinned-uses (error) Update-Index.ymlactions/checkout@v6 Pinned to @de0fac2e
secrets-outside-env (warning) Update-Index.ymlSCRIBBLER_BOT_CLIENT_ID/PrivateKey passed via with: Suppressed in .github/zizmor.yml; PSModule/GitHub-Script has no env: alternative for these inputs
BIOME_LINT (errors in overrides/) tablesort.js, comments.html Added biome.json excluding overrides/**; these are MkDocs/Zensical template files with Jinja2 syntax that Biome cannot parse
Pre-existing failures (CSS, HTML, JS, PowerShell) Various overrides/ files Resolved by VALIDATE_ALL_CODEBASE: false (lint only changed files on PRs) and the biome.json exclusion

Update index — Pre-existing, not caused by this PR

The workflow fails intermittently on pushes to PR branches with HTTP 401 – Bad credentials from Invoke-GitHubAPI. The same commits that introduced the Zensical files ran Update-Index successfully; the 401 appeared on the 3rd push and has persisted. Runs on main (schedule/push) succeed consistently.

This is not caused by any file changed in this PR. Likely the psmodule-s-scribbler GitHub App encounters transient credential issues on branch pushes. Needs investigation separately from this migration.

Org-level shared secrets intentionally used outside a GitHub Environment.
Replace .github/zizmor.yml with inline # zizmor: ignore[secrets-outside-env]
comments so the justification lives next to the suppressed lines.
Org-level shared secrets intentionally used without a dedicated
GitHub Environment — they serve multiple repositories.
- Linter.yml: add VALIDATE_ALL_CODEBASE: false (only lint PR diff)
- Linter.yml: add permission comments (zizmor undocumented-permissions)
- Docs.yml: add job name (zizmor anonymous-definition)
- .textlintrc: revert environment/package patterns to misspelled forms
  (these regex patterns intentionally match typos, not correct words)
- ideas.md: normalize horizontal rules to 57-dash style (MD035)
- ideas.md: reword 'build systems' to avoid false terminology match
- Workflow.md: fix table column alignment (MD060)
All uses: comments now specify the exact patch version instead of just
the major version tag, making the pinned version immediately visible:
- actions/configure-pages v5.0.0
- actions/checkout v5.0.1, v6.0.2
- actions/setup-python v5.6.0
- actions/upload-pages-artifact v4.0.0
- actions/deploy-pages v4.0.5
@MariusStorhaug Marius Storhaug (MariusStorhaug) marked this pull request as ready for review May 23, 2026 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate documentation site from Material for MkDocs to Zensical

1 participant