Skip to content

docs: use resolvable root-absolute links for internal pages#831

Merged
henryiii merged 1 commit into
mainfrom
henryiii/fix/relative-doc-links
Jul 18, 2026
Merged

docs: use resolvable root-absolute links for internal pages#831
henryiii merged 1 commit into
mainfrom
henryiii/fix/relative-doc-links

Conversation

@henryiii

@henryiii henryiii commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

🤖 AI text below 🤖

Internal doc links were written as bare root-relative paths (e.g. guides/pytest, guides/packaging-simple). MyST couldn't resolve many of these as cross-references — paths resolve relative to the source file, and the multi-word ones used hyphens where the source files use underscores (packaging_simple.md). Unresolved links fell back to raw BASE_URL concatenation, which only produced valid URLs when BASE_URL ended in a trailing slash.

This rewrites them as root-absolute paths with the .md extension (/guides/packaging_simple.md) so MyST resolves them as real cross-references and emits correct URLs regardless of the BASE_URL trailing slash.

Verified by building the docs with BASE_URL=/development (no trailing slash): all internal links now resolve to /development/..., with zero broken concatenated links across all pages.

Context: this surfaced downstream in learn.scientific-python.org, which dropped the trailing slash from BASE_URL to fix a theme JS issue, exposing these latent broken links.


📚 Documentation preview 📚: https://scientific-python-cookie--831.org.readthedocs.build/

Internal doc links were written as bare root-relative paths (e.g.
`guides/pytest`, `guides/packaging-simple`). MyST could not resolve many of
these as cross-references: paths are resolved relative to the source file, and
the multi-word ones used hyphens where the source files use underscores
(`packaging_simple.md`). Unresolved links fell back to raw `BASE_URL`
concatenation, which only produced valid URLs when `BASE_URL` ended in a slash.

Rewrite them as root-absolute paths with the `.md` extension
(`/guides/packaging_simple.md`) so MyST resolves them as real cross-references
and emits correct URLs regardless of the `BASE_URL` trailing slash.

Assisted-by: ClaudeCode:claude-opus-4.8
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
@henryiii
henryiii merged commit 113bfd5 into main Jul 18, 2026
8 checks passed
@henryiii
henryiii deleted the henryiii/fix/relative-doc-links branch July 18, 2026 19:13
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