Skip to content

arcade 0.6.0: a landing page at play.<base>/ instead of the 302 - #3

Merged
dmccoystephenson merged 1 commit into
mainfrom
feat/landing-page
Oct 3, 2026
Merged

dmccoystephenson merged 1 commit into
mainfrom
feat/landing-page

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

Summary

https://play.danielstephenson.dev/ is changed from a 302 to the portal into a real landing page (arcade 0.6.0).

  • src/arcade/landing.py renders a small self-contained HTML page from the registry on each request: every game by title, linked to https://<slug>.play.<base>/ (a game with nothing deployed is listed as "Coming soon", unlinked), and a prominent Browse all games → danielstephenson.dev/play link to ARCADE_LANDING_URL.
  • No script, no external stylesheet/font/image; Content-Security-Policy: default-src 'none'; style-src 'unsafe-inline'; … enforces it. Light/dark via prefers-color-scheme, phone-first layout, Cache-Control: public, max-age=60, titles HTML-escaped.
  • ARCADE_LANDING_MODE = page (default) or redirect (the old 302 to ARCADE_LANDING_URL); any other value refuses to start. The API is unchanged.
  • Version 0.6.0, CHANGELOG and README updated.

Verification

  • python3 -m pytest (3.8): 127 passed, including new tests/test_landing.py and landing/redirect/HEAD/registry-reload tests in tests/test_server.py.
  • The rendered page was loaded in Chromium (Playwright) at desktop 1366 and iPhone 13, light and dark: no horizontal overflow, no console errors, no request beyond the document itself.

The gateway pin is not bumped here.

drafted by Claude on behalf of Daniel Stephenson

🤖 Generated with Claude Code

https://claude.ai/code/session_0116e9DMUhtNXM5bHUdMhDAn

The page is generated from the registry: every game linked to its
<slug>.play URL, a "Browse all games" link to ARCADE_LANDING_URL, no
script or external request (CSP), light/dark, phone-first.
ARCADE_LANDING_MODE=redirect keeps the old 302. The API is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0116e9DMUhtNXM5bHUdMhDAn
@dmccoystephenson
dmccoystephenson merged commit ee8e107 into main Oct 3, 2026
3 checks passed
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