fix: fight restart bug, mobile TTS, character sizing, bitcoin symbols

- Fix fight replay showing empty scene: validate rounds before playing,
  retry loading fight data up to 5 times when rounds are missing
- Add COOP/COEP headers to production server for SharedArrayBuffer
  (required by Kokoro TTS WASM threading on mobile)
- Add blob: to scriptSrc/workerSrc CSP for Web Worker support
- Fix mobile character cutoff: raise ground line to 0.82, add
  MOBILE_SCALE_CAP (0.55) so fighters never shrink too small
- Add ₿ bitcoin chest badge to all fighter sprites (scales with tier)
- Add sats coin stack on bot profile page proportional to satsWon
- Seed dev tournament with 8 mock bots on startup (dev mode only)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-09 08:21:16 +00:00
co-authored by Claude Opus 4.6
parent a10c1c9cb6
commit 5ee6b6c88c
10 changed files with 141 additions and 16 deletions
+6 -1
View File
@@ -357,7 +357,12 @@ async function handleFightEnd(data: any) {
if (liveScene) { liveScene.destroy(); liveScene = null }
liveSceneReady.value = false
await loadFight()
// Retry loading until rounds are populated (server may still be persisting)
for (let attempt = 0; attempt < 5; attempt++) {
await loadFight()
if (fight.value?.rounds?.length) break
await new Promise(r => setTimeout(r, 800))
}
isLive.value = false
disconnectSSE()
stopHumanPolling()