Skip to content

docs: serve the documentation from gpjax.quantclimate.com - #740

Open
thomaspinder wants to merge 2 commits into
mainfrom
docs/quantclimate-domain
Open

docs: serve the documentation from gpjax.quantclimate.com#740
thomaspinder wants to merge 2 commits into
mainfrom
docs/quantclimate-domain

Conversation

@thomaspinder

@thomaspinder thomaspinder commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Repoints the published documentation at gpjax.quantclimate.com, matching the <project>.quantclimate.com convention that Impulso will also adopt.

GitHub Pages serves exactly one custom domain per site, so this is a move, not an addition — hence the redirect bundle below.

What changed

File Why it matters
docs/CNAME Copied to the site root via html_extra_path; the hostname Pages is told to serve
docs/conf.py (html_baseurl) Drives the sitemap, the canonical link, og:url and the absolute og:image URL
pyproject.toml The Documentation project URL shown on PyPI
README.md 15 documentation links
legacy-docs-redirect/ New. The Netlify site contents that keep the old host alive as a 301

Verified in a clean build: deployed CNAME, <link rel="canonical">, og:url, og:image and every <loc> in sitemap.xml carry the new domain, and no reference to any previous docs host survives in docs/_build/html.

Deliberately not changed: the three https://jaxgaussianprocesses.com/contact/ links in README.md, GOVERNANCE.md and CODE_OF_CONDUCT.md — that is the separate marketing site, not the docs host.

Not losing the existing traffic

docs.jaxgaussianprocesses.com is where the JOSS paper, PyPI, search results and every third-party citation point. legacy-docs-redirect/_redirects is a bare wildcard:

/*    https://gpjax.quantclimate.com/:splat    301!

The path is carried through unchanged on purpose. Old MkDocs-era URLs are still in circulation, and the new site ships 87 sphinx-reredirects stubs keyed on exactly those paths, so the chain completes:

/_examples/classification/ on the old host → same path on the new host → reredirect stub → /examples/classification.html

Rewriting paths in the redirect would break that. URL fragments are never sent to the server and are reattached by the browser, so #laplace-approximation deep links survive too.

It is deployed by hand, once, and never by CI. --prod belongs in that one manual command and must never reach the PR preview step, which uses --alias specifically so a pull request cannot overwrite a production deploy. PR previews are unaffected — they are alias deploys at pr-<n>--<site>.netlify.app.

Deployment notes — order matters

Merging this alone will not move the site, and merging before DNS is ready would take the docs offline: once a custom domain is set, Pages 301-redirects thomaspinder.github.io/GPJax to it, and that URL is currently the only working copy of the new docs.

  1. Porkbun — replace the parked gpjax record with a CNAME to thomaspinder.github.io
  2. Wait for it to resolve
  3. Set the Pages custom domain to gpjax.quantclimate.com
  4. Merge this PR so the next deploy carries the matching html_baseurl
  5. Enable Enforce HTTPS once the certificate provisions
  6. Deploy legacy-docs-redirect/ to the Netlify site serving the old docs host

🤖 Generated with Claude Code

https://claude.ai/code/session_01QXcSotTJspF11tgaJfrXrZ

Repoints the published docs at docs.quantclimate.com. GitHub Pages serves
exactly one custom domain per site, so this is a move rather than an addition.

- docs/CNAME and html_baseurl, which between them drive the Pages custom
  domain, the sitemap, the canonical link, og:url and the absolute og:image
  URL. All four were verified in a clean build.
- The Documentation URL in pyproject.toml and the 15 documentation links in
  README.md.

Deliberately NOT changed: the three https://jaxgaussianprocesses.com/contact/
links in README.md, GOVERNANCE.md and CODE_OF_CONDUCT.md. That is the separate
marketing site, not the docs host.

The 87 sphinx-reredirects entries are unaffected: their targets are written
site-absolute, so they resolve against whatever domain serves them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QXcSotTJspF11tgaJfrXrZ
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

📖 Docs preview: https://pr-740--endearing-crepe-c2d5fe.netlify.app

Smoke render — the expensive notebooks run with reduced budgets, so
figures are not publication fidelity. /render-mode.txt says smoke.

Renames the target host from docs.quantclimate.com to gpjax.quantclimate.com,
matching the <project>.quantclimate.com convention that impulso will also use.

Adds legacy-docs-redirect/, the complete contents of the Netlify site that keeps
docs.jaxgaussianprocesses.com alive as a permanent redirect. GitHub Pages serves
one custom domain per site and cannot answer for both hosts, so without this
every published link to the old domain 404s -- the JOSS paper, the PyPI project
page, search results and third-party citations.

The rule is a bare wildcard carrying `:splat` through unchanged. That is
deliberate: old MkDocs-era URLs are still in circulation and the new site ships
87 sphinx-reredirects stubs keyed on exactly those paths, so preserving the path
lets the chain complete as legacy host -> new host -> stub -> final page.
Rewriting paths in the redirect would break it.

Deployed by hand, never by CI, and documented as such -- `--prod` belongs in
that one manual command and must never reach the PR preview step, which uses
`--alias` precisely so a pull request cannot overwrite a production deploy.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QXcSotTJspF11tgaJfrXrZ
@thomaspinder thomaspinder changed the title docs: serve the documentation from docs.quantclimate.com docs: serve the documentation from gpjax.quantclimate.com Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant