Repository navigation
Add share-preview tags to the landing page and robots.txt on the API host - #8
Merged
Merged
Conversation
…host og:* and twitter:* tags let a shared play.<base> link unfurl. robots.txt allows all and is answered on the API host only, so it never shadows a static game's own file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BZQMN1M5hQKfUpPwDkMjqd
2 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A live audit of play.danielstephenson.dev (2026-10-04) found a canonical link but no share-preview tags and no robots.txt.
src/arcade/landing.py): addsog:type,og:site_name,og:title,og:description,og:url(https://<ARCADE_DOMAIN>/, whose production default is alreadyplay.danielstephenson.dev), plustwitter:card=summarywith its title and description. The title and description now live inTITLE/DESCRIPTIONconstants so<title>, the description and the preview tags cannot drift apart. Noog:imageis set because the repository has no image to reuse, and none was invented.GET /robots.txt(src/arcade/server.py):User-agent: */Allow: /astext/plain, answered on the API host only, next to/version.json. A game's host never answers it, so a static game's ownrobots.txtis not shadowed, and tak games, aliases and unknown hosts still 404. No sitemap was added (optional per the brief). The landing page is the only indexable document on that host.[Unreleased]entry added.Tests
tests/test_landing.py: every share-preview tag is present on the configured domain, there is no localhost, and there is noog:image/twitter:image. A second test checks thatog:urlfollows the configured domain.tests/test_server.py:/robots.txton the API host (GET + HEAD, content type, body). A static game's ownrobots.txtis served untouched on its host, while tak, alias, unknown and localhost hosts 404.Verification
python -m pytest: 142 passed locally (Python 3.8).python -m arcade check-registry examples/games.yaml: OK.play.danielstephenson.dev, and the output was confirmed to contain each tag with the production URL.drafted by Claude on behalf of Daniel Stephenson
🤖 Generated with Claude Code
https://claude.ai/code/session_01BZQMN1M5hQKfUpPwDkMjqd