ai-code-battle/notes/bf-2czk.md
jedarden 8ff40a6bac docs(bf-2czk): audit user-facing URL references in web/src
- Documented all occurrences of ai-code-battle.pages.dev in web/src/
- Found that aicodebattle.com and b2.aicodebattle.com only appear in comments
- Identified canonical domain usage in og-tags.ts, embed.ts, clip-maker.ts
- Noted dynamic window.location.origin usage in playlists.ts for embed codes
- Confirmed standardization on ai-code-battle.pages.dev as public domain

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-02 14:52:20 -04:00

3.3 KiB

Audit: User-Facing URL References in web/src

Summary

All user-facing URLs in the web source use ai-code-battle.pages.dev as the canonical domain. The legacy domains aicodebattle.com and b2.aicodebattle.com only appear in comments indicating they are outdated/NXDOMAIN.

Canonical Domain Usage (ai-code-battle.pages.dev)

Open Graph Tags (web/src/og-tags.ts)

  • Lines 14-15: Default OG tags URL and image
  • Line 76: Bot profile OG tags (https://ai-code-battle.pages.dev/#/bot/${bot.id})
  • Line 97: Replay OG tags (https://ai-code-battle.pages.dev/#/watch/replay/${match.id})
  • Line 115: Playlist OG tags (https://ai-code-battle.pages.dev/#/watch/replays)

Embed URLs (web/src/embed.ts)

  • Line 18: PAGES_BASE = 'https://ai-code-battle.pages.dev'
  • Line 205: Embed URL construction for OG tags (${PAGES_BASE}/embed/${matchId})

Clip Maker Share URLs (web/src/pages/clip-maker.ts)

  • Line 453: Share URL for replay clips (https://ai-code-battle.pages.dev/replay/${matchId}#turns=${startTurn}-${endTurn})

Playlists Embed Codes (web/src/pages/playlists.ts)

  • Line 539: Dynamic embed URL using window.location.origin - this adapts to whatever domain the user is currently on
    const embedUrl = `${window.location.origin}/embed/${matchId}`;
    

Bot Card Images (web/src/components/bot-card.ts)

  • Line 264: Renders text "ai-code-battle.pages.dev" on card images

API Documentation (web/src/pages/docs-api.ts)

  • Line 19: PAGES_BASE = 'https://ai-code-battle.pages.dev'
  • Line 22: B2_BASE = 'https://ai-code-battle.pages.dev/r2'
  • Line 338: Schema $id URL
  • Line 552: Example replay URL

Data Documentation (web/src/pages/docs-data.ts)

  • Lines 29, 86, 132, 138, 143, 148: curl examples with https://ai-code-battle.pages.dev

Registration Documentation (web/src/pages/docs.ts)

  • Line 88: Email contact hello@ai-code-battle.pages.dev
  • Line 90: API endpoint https://api.ai-code-battle.pages.dev/api/register

Sandbox Page (web/src/pages/sandbox.ts)

  • Line 175: Displays sandbox URL ai-code-battle.pages.dev/#/compete/sandbox

Replay Format Documentation (web/src/pages/docs-replay-format.ts)

  • Lines 23, 26: curl examples with https://ai-code-battle.pages.dev/r2/replays/

Legacy Domain References (Comments Only)

API Documentation (web/src/pages/docs-api.ts)

  • Lines 21-22: Comment stating b2.aicodebattle.com and aicodebattle.com are NXDOMAIN (not registered)

Data Documentation (web/src/pages/docs-data.ts)

  • Line 19: Comment stating legacy references are outdated

Dynamic URL Construction

Potential Concern

  • web/src/pages/playlists.ts:539: Uses window.location.origin to construct embed codes
    • This will use whatever domain the user is currently accessing the site from
    • If accessed via aicodebattle.com (if DNS were to be pointed there), embed codes would reference that domain
    • Currently safe since aicodebattle.com is NXDOMAIN

Recommendation

The codebase is properly standardized on ai-code-battle.pages.dev as the canonical public domain. The only dynamic URL construction (window.location.origin in playlists.ts) is appropriate for embed codes since it adapts to the current access domain. No changes needed.