Recorded umpire voice, court staff, out-zone borders, intro overlay, no-cache deploys

- 23 pre-recorded umpire lines (macOS say, en-GB Daniel) played via WebAudio,
  works on mobile; speechSynthesis stays as fallback only
- umpire chair + two ball boys (generated sprites) dress the court
- court redrawn: doubles alleys, white perimeter border, clearly darker out area
- intro overlay with control symbols; first tap dismisses it and unlocks audio
- nginx now serves everything Cache-Control: no-cache so a reload always
  revalidates and picks up new deploys

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-07-11 13:38:28 +02:00
1 parent d69896ddb8
commit dc1e12b9b6
30 files changed
+92 -33

No files matched your search

+3
View File
@@ -1,3 +1,6 @@
FROM nginx:alpine
# no-cache => browsers revalidate every request (ETag 304s are cheap), so a new
# deploy is picked up on plain reload. ponytail: switch to hashed filenames if traffic ever matters.
RUN printf 'server {\n listen 80;\n root /usr/share/nginx/html;\n etag on;\n location / { add_header Cache-Control "no-cache, must-revalidate"; }\n}\n' > /etc/nginx/conf.d/default.conf
COPY index.html game.js /usr/share/nginx/html/
COPY assets /usr/share/nginx/html/assets