Skip to content

docs: serve README badges without shields.io so they render through GitHub's image proxy - #19

Merged
ryanduguid merged 2 commits into
developfrom
ryan/badges-self-hosted
Oct 30, 2026
Merged

ryanduguid merged 2 commits into
developfrom
ryan/badges-self-hosted

Conversation

@ryanduguid

Copy link
Copy Markdown
Collaborator

Summary

The badges in README.md and the 6 translated READMEs now load from sources GitHub's image proxy can reach, so they no longer show as broken images.

GitHub serves external README images through its camo proxy, which returned 504 after about 4.2 s on most shields.io fetches on 30 October 2026. Each badge keeps its link target and alt text:

  • GitHub Actions status and Codacy: the provider's own badge. GitHub's native workflow badges are not proxied and have GitHub's grey label.
  • Static badges (fork-of.svg, licence.svg, rust.svg and licence-translations.svg for the translations' licence badge): the exact shields.io SVGs, committed under .github/assets/badges/ and linked by relative path.
  • Release, Homebrew and Discord badges in the translations: badgen.net, which camo reaches (200 on 5 of 5), with the same colours. The release badge uses badgen's stable channel, which skips prereleases as shields.io did.
  • Discord: the new badge counts online members through the invite in the badge's own link (discord.gg/RySmvNF5kF, the 'rtk-ai labs' server). The shields.io badges used the server widget, which shows 'widget disabled'. README_pt.md queried server 1470188214710046894, which is an unrelated server ('NanoClaw'), so its count now matches its link.

Evidence

  • Before: shields.io badge URLs fetched through camo mostly returned 504.
    After: GitHub's rendered HTML for all 7 READMEs on this branch: every image URL returned 200. Release and Homebrew values match the shields.io badges fetched directly.
  • Checks: bash scripts/validate-docs.sh: passed. No script, workflow or test reads README_*.md.

Merge danger

Door: two-way. Blast radius: README

Unverified

  • The GitHub mobile app.
  • crates.io publishes README.md without .github/assets, so the relative badge SVGs may not render there.

…s image proxy

GitHub's camo proxy timed out (504 after about 4.2 s) on most shields.io fetches, so the badges showed as broken images. Workflow badges now use GitHub's native badges, Codacy its own badge, and static badges are committed SVGs.
shields.io also times out through GitHub's image proxy for live values, so the release, Homebrew and Discord badges in the translated READMEs now come from badgen.net with the same labels and colours, and their static licence badge is now a committed SVG.
@ryanduguid
ryanduguid enabled auto-merge (squash) October 30, 2026 06:25
@sonarqubecloud

Copy link
Copy Markdown

@ryanduguid
ryanduguid merged commit 49fead7 into develop Oct 30, 2026
23 checks passed
@ryanduguid
ryanduguid deleted the ryan/badges-self-hosted branch October 30, 2026 06:32
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