ai-code-battle/web
jedarden 79f3bee8a9 fix(web): serve replays from same-origin /data/ static assets, not R2
Replays are bundled into the Pages deploy as gzipped static assets (B2 stays
the private cold archive). Repoint all replay/card/thumbnail/live.json fetches
off the empty R2 cache and the non-resolving b2.aicodebattle.com onto
same-origin /data/, via a shared fetchReplayFromUrl helper that gunzips
.json.gz with DecompressionStream.

- new web/src/lib/replay-data.ts (REPLAY_BASE, replayUrl, fetchReplayFromUrl)
- replay.ts / embed.ts / pages/embed.ts / playlist-carousel.ts use the helper
- og-tags, bot-card, home, matches, bot-profile, playlists, feedback, ambient,
  api-types: /r2/ -> /data/
- pages.json data_paths updated; friendlier 404 message preserved
- 21 web tests pass; npm run build OK

Closes: bf-5cwi

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 16:41:30 -04:00
..
functions/r2 fix(web): decompress .gz objects in Pages Function instead of setting Content-Encoding 2026-04-30 12:51:28 -04:00
public feat(web): enhance demo blog post with LLM-generated sections 2026-05-26 13:38:22 -04:00
src fix(web): serve replays from same-origin /data/ static assets, not R2 2026-05-26 16:41:30 -04:00
.gitignore Complete Phase 3: TypeScript Canvas replay viewer 2026-03-24 07:30:04 -04:00
CLOUDFLARE_DEPLOYMENT.md feat(ci): add Cloudflare Pages deployment configuration 2026-04-08 16:53:09 -04:00
DEPLOYMENT_INSTRUCTIONS.md docs(web): add Cloudflare Pages deployment instructions 2026-04-08 17:21:59 -04:00
embed.html feat(playlists): add playlist curation and rebuild logic per §10, with series/seasons/enrichment 2026-04-21 16:11:27 -04:00
index.html feat(web): add maps browsing page per plan §14.6 2026-05-26 16:23:59 -04:00
package-lock.json style: format Go files with gofmt 2026-05-25 15:33:38 -04:00
package.json fix(web): distinguish 404 from generic errors in replay viewer 2026-05-24 23:04:58 -04:00
pages.json fix(web): serve replays from same-origin /data/ static assets, not R2 2026-05-26 16:41:30 -04:00
replay.html refactor(web): promote app.html to index.html as homepage 2026-04-25 08:51:52 -04:00
test-match-list.js test(web): verify match list page renders cards with real matches 2026-04-25 11:58:02 -04:00
test-real-replay.js test(web): verify replay viewer loads and plays real match replay 2026-04-25 12:27:56 -04:00
test-replay-viewer.html test(web): verify replay viewer loads and plays real match replay 2026-04-25 12:10:09 -04:00
tsconfig.json fix(web): distinguish 404 from generic errors in replay viewer 2026-05-24 23:04:58 -04:00
vite.config.ts refactor(web): promote app.html to index.html as homepage 2026-04-25 08:51:52 -04:00
vitest.config.ts fix(web): distinguish 404 from generic errors in replay viewer 2026-05-24 23:04:58 -04:00
wrangler.toml feat(web): route R2 assets through Pages Function instead of r2.aicodebattle.com 2026-04-30 07:55:44 -04:00