feat: migrate documentation to zensical#5
Conversation
|
📘 Site preview available: |
There was a problem hiding this comment.
Pull request overview
Migrates the documentation site from the previous MkDocs configuration to a Zensical + uv-managed setup, updating the build/deploy pipeline and site theming/templates accordingly.
Changes:
- Replace
mkdocs.ymlconfiguration withzensical.tomland add a Python/uvproject (pyproject.toml,uv.lock,.python-version) - Add a new GitHub Actions workflow for PR previews + Pages publishing, plus repo governance files (CODEOWNERS, PR template, Dependabot)
- Refresh homepage template/styles and add Bootstrap grid CSS for layout
Reviewed changes
Copilot reviewed 41 out of 121 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| zensical.toml | Introduces Zensical site configuration (project metadata, theme, nav, CSS). |
| uv.lock | Adds locked Python dependencies for Zensical-based docs build. |
| serve.sh | Adds local serve command wrapper (uv run zensical serve -o). |
| pyproject.toml | Defines the Python project and Zensical dependency. |
| mkdocs.yml | Removes legacy MkDocs configuration. |
| docs/stylesheets/theme.css | Adds/updates site theming CSS variables and homepage styling. |
| docs/stylesheets/bootstrap-grid.min.css | Adds Bootstrap grid stylesheet for responsive layout. |
| docs/pages/web/thymeleaf.md | Removes legacy MkDocs content page. |
| docs/pages/web/taglib.md | Removes legacy MkDocs content page. |
| docs/pages/web/index.md | Removes legacy MkDocs content page. |
| docs/pages/web/console.md | Removes legacy MkDocs content page. |
| docs/pages/web/apis.md | Removes legacy MkDocs content page. |
| docs/pages/v2/index.md | Removes legacy MkDocs content page. |
| docs/pages/strategy/index.md | Removes legacy MkDocs content page. |
| docs/pages/stores/index.md | Removes legacy MkDocs content page. |
| docs/pages/spring/index.md | Removes legacy MkDocs content page. |
| docs/pages/samples/index.md | Removes legacy MkDocs content page. |
| docs/pages/configuration.md | Removes legacy MkDocs content page. |
| docs/pages/basics/security.md | Removes legacy MkDocs content page. |
| docs/pages/basics/property-store.md | Removes legacy MkDocs content page. |
| docs/pages/basics/index.md | Removes legacy MkDocs content page. |
| docs/pages/basics/flipping-strategy.md | Removes legacy MkDocs content page. |
| docs/pages/basics/feature.md | Removes legacy MkDocs content page. |
| docs/pages/basics/feature-store.md | Removes legacy MkDocs content page. |
| docs/pages/basics/architecture.md | Removes legacy MkDocs content page. |
| docs/pages/advanced/spring-boot.md | Removes legacy MkDocs content page. |
| docs/pages/advanced/jmx.md | Removes legacy MkDocs content page. |
| docs/pages/advanced/feature-groups.md | Removes legacy MkDocs content page. |
| docs/pages/advanced/cli.md | Removes legacy MkDocs content page. |
| docs/pages/advanced/caching.md | Removes legacy MkDocs content page. |
| docs/pages/advanced/aop.md | Removes legacy MkDocs content page. |
| docs/overrides/main.html | Simplifies override to only extend base.html. |
| docs/overrides/home.html | Reworks homepage layout/content using grid + new visuals. |
| docs/index.md | Switches index page to use the new home.html template only. |
| docs/img/ff4j-logo.svg | Adds SVG logo asset used by the new theme config. |
| docs/home/img/upcoming.svg | Adds new homepage illustration asset. |
| docs/home/img/strategy.svg | Adds new homepage illustration asset. |
| docs/home/img/featuretoggle.svg | Adds new homepage illustration asset. |
| docs/home/img/canaryrelease.svg | Adds new homepage illustration asset. |
| docs/cheat.md | Removes legacy MkDocs “cheat sheet” page. |
| README.md | Updates local run instructions to the new toolchain entrypoint. |
| .python-version | Pins local Python version for the new uv workflow. |
| .gitignore | Updates ignores for uv venv/cache and site output. |
| .github/workflows/pages.yml | Adds PR preview publishing + Pages deploy workflow for Zensical build output. |
| .github/workflows/main.yml | Removes old MkDocs deployment workflow. |
| .github/dependabot.yml | Adds Dependabot config for uv + GitHub Actions updates. |
| .github/PULL_REQUEST_TEMPLATE.md | Adds a PR template focused on docs review/preview checks. |
| .github/CODEOWNERS | Adds code ownership for review routing. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if: github.event_name == 'pull_request' && | ||
| github.event.action == 'closed' && | ||
| github.event.pull_request.merged == false | ||
| runs-on: ubuntu-latest |
There was a problem hiding this comment.
The preview cleanup job only runs when a PR is closed and not merged, which leaves the pr-<number>/ preview folder behind for merged PRs. If previews should be ephemeral, adjust the condition to also clean up after merges (or document why merged previews should be retained).
| ## Prerequisites | ||
|
|
||
| ## Run the website locally | ||
| - [zensical](https://zensical.org/docs/get-started/) | ||
|
|
||
| ### 1. Installation | ||
| ## Run locally | ||
|
|
||
| ```bash | ||
| python3 -m pip install --upgrade pip # install pip | ||
| python3 -m pip install mkdocs # install mkdocs | ||
| python3 -m pip install mkdocs-material # install material theme | ||
| #python3 -m pip install https://github.com/bmcorser/fontawesome-markdown/archive/master.zip # install font-awesome | ||
| python3 -m pip install mkdocs-git-revision-date-plugin # install git revision date | ||
| python3 -m pip install mkdocs-video # install git revision date | ||
| ```shell | ||
| sh ./serve.sh | ||
| ``` |
There was a problem hiding this comment.
The "Prerequisites" section only mentions Zensical, but serve.sh relies on uv being installed (and a compatible Python version). Consider updating the README to include installing uv (and running uv sync once) so the local run instructions are complete.
| nav = [ | ||
| { "Home" = "index.md" } | ||
| ] |
There was a problem hiding this comment.
The new Zensical nav only includes index.md, and the previous documentation pages appear to have been removed from docs/ (no other .md files remain). If the intent is a full migration from the prior MkDocs site, you likely need to add the missing pages back (or relocate them) and expand nav so the documentation remains accessible.
| <a href="#" class="md-button md-button--primary"> | ||
| Get started | ||
| </a> | ||
| <a href="#" class="md-button link-color"> | ||
| Learn more | ||
| </a> |
There was a problem hiding this comment.
The primary CTA links use href="#", which results in non-functional links in the generated homepage. Point these buttons to real pages (e.g., the first docs section / getting-started page) so users can navigate from the landing page.
| - name: Comment PR with preview URL | ||
| if: github.event_name == 'pull_request' | ||
| uses: actions/github-script@v7 | ||
| with: | ||
| script: | | ||
| const pr = context.payload.pull_request.number; | ||
| const { owner, repo } = context.repo; | ||
|
|
||
| const url = `https://ff4j.github.io/docs/pr-${pr}/`; | ||
|
|
||
| await github.rest.issues.createComment({ | ||
| owner, | ||
| repo, | ||
| issue_number: pr, | ||
| body: `📘 **Site preview available**:\n\n${url}` | ||
| }); | ||
|
|
There was a problem hiding this comment.
This workflow posts a new PR comment on every synchronize event, which will spam the PR thread on iterative pushes. Consider making the comment idempotent (search for an existing comment containing a unique marker and update it) or use a dedicated "sticky comment" approach.
| - name: "Set up Python" | ||
| uses: actions/setup-python@v6 | ||
| with: | ||
| python-version-file: "pyproject.toml" | ||
|
|
There was a problem hiding this comment.
actions/setup-python is configured with python-version-file: "pyproject.toml", but this repo also adds a .python-version file. If setup-python can't parse pyproject.toml for the version, CI will fail; it’s safer to point python-version-file at .python-version (or set python-version explicitly).
| environment: | ||
| name: github-pages | ||
| url: https://paulwilliams.dev | ||
| steps: |
There was a problem hiding this comment.
The GitHub Pages environment URL is set to https://paulwilliams.dev, which doesn’t match the project’s configured docs URL (https://ff4j.github.io/docs/). This will show an incorrect deployment link in GitHub’s UI; update it to the actual GitHub Pages (or custom) domain for this site.
No description provided.