Skip to content

Fix broken links in the docs - #2974

Merged
pvcraven merged 1 commit into
developmentfrom
fix-broken-links
Oct 9, 2026
Merged

pvcraven merged 1 commit into
developmentfrom
fix-broken-links

Conversation

@pvcraven

@pvcraven pvcraven commented Oct 9, 2026

Copy link
Copy Markdown
Member

Part 1 of #1168. The next PR adds a CI check for internal links.

I scanned every page of a built copy of the docs for links to files or anchors that don't exist, and ran Sphinx's linkcheck for external links. This fixes everything both found, except external sites that refuse automated requests.

Internal links: 43 broken → 0

  • 19 named links missing their trailing underscore, such as `Discord <Arcade Discord>`_. Without the underscore inside the brackets, docutils treats the name as a relative URL and links to a page called Arcade Discord. Nitpicky mode can't catch this, because it isn't a cross-reference. They were on the academia, licensing, contributing and Raspberry Pi pages, and in the video section of the resources page.
  • The Swedish and German textbook links had no targets. I added them (learn.arcade.academy/sv/latest/ and /de/latest/) after checking the pages are the translated books.
  • Two "How to Get Help" links used section labels as URLs. They're :ref: now. One also had the wrong label name.
  • A malformed link in PymunkPhysicsEngine's docstring: <CONTRIBUTING.md: https://...>.
  • The resources page's file-type icons and copy icon used absolute /_static/... paths. src_kludge() prefixed them with the Read the Docs URL, so they worked there, but they broke in any other build. They're relative to the page now (../_static/...), which works everywhere. Full https:// URLs, used for the audio files, are left alone.

Dead external links (404)

Where Was Now
Sound guide devguide.python.org/internals/garbage-collector/ CPython's InternalDocs/garbage_collector.md
arcade.math quaternion docstring danceswithcode.net article (gone) Web Archive copy
Nuitka tutorial platform_tutorial/17_views.py 20_views.py, the same step after renumbering (10 mentions)
Window.set_mouse_cursor docstring pyglet en/master docs en/development (pyglet 3)
Pymunk platformer tutorial kenney.nl/assets/toon-characters-1 kenney.nl/assets/toon-characters
Community games, Space Typer github.com/thecodeah/space-typer the GitHub account is gone, so the entry now says the source is no longer online

Not changed: links that return 403 to automated requests (StackOverflow, SuperUser, Shadertoy, the Khronos wiki, ISO) and easings.net anchors, which are built by JavaScript. They work in a browser.

Checked

  • The docs build with -W (nitpicky) passes.
  • A scan of all 495 built pages finds 0 links to missing files or anchors.
  • Every replacement URL returns 200.
  • ruff passes.

🤖 Generated with Claude Code

- 19 named links like `Discord <Arcade Discord>`_ were missing the
  trailing underscore that makes the name a reference, so docutils
  linked to pages called "Arcade Discord" etc. The Swedish and German
  textbook links also had no targets.
- Two "How to Get Help" links pointed at section labels as URLs.
- A malformed CONTRIBUTING.md link in PymunkPhysicsEngine's docstring.
- The resources page used absolute /_static/ paths, which only worked
  on Read the Docs, where the site URL was prefixed. They're relative now.
- Six dead external links: the CPython GC docs moved, a quaternion
  article is gone (archived copy), the Nuitka tutorial pointed at
  17_views.py (now 20_views.py), pyglet's master docs, a renamed Kenney
  asset page, and a community game whose repo no longer exists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@pvcraven
pvcraven merged commit d5176f3 into development Oct 9, 2026
7 checks passed
@pvcraven
pvcraven deleted the fix-broken-links branch October 9, 2026 20:20
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