- 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>
7 lines
476 B
Docker
7 lines
476 B
Docker
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
|