diff --git a/nginx.conf b/nginx.conf index 12811dc..9655ccf 100644 --- a/nginx.conf +++ b/nginx.conf @@ -10,7 +10,14 @@ server { try_files $uri $uri.html $uri/ /index.html; } - # Long-cache immutable build assets. + # Never cache the HTML shell — so a new deploy (with new chunk hashes) is + # always picked up immediately and tabs don't load a stale bundle. + location ~* \.html$ { + add_header Cache-Control "no-cache, no-store, must-revalidate"; + try_files $uri /index.html; + } + + # Long-cache immutable, content-hashed build assets. location /_next/static/ { expires 1y; add_header Cache-Control "public, immutable"; diff --git a/src/components/GameTable.tsx b/src/components/GameTable.tsx index 647c228..04ca1f5 100644 --- a/src/components/GameTable.tsx +++ b/src/components/GameTable.tsx @@ -413,10 +413,10 @@ function OpponentHand({ // Compact, centered cross — small magnitudes keep the played pile in the middle of // the felt (clear of the side seats/stacks). Each card still nudges toward its player. const TRICK_OFFSET: Record = { - 0: { x: 0, y: 52 }, - 1: { x: 50, y: 0 }, - 2: { x: 0, y: -52 }, - 3: { x: -50, y: 0 }, + 0: { x: 0, y: 50 }, + 1: { x: 48, y: 0 }, + 2: { x: 0, y: -50 }, + 3: { x: -48, y: 0 }, }; const TRICK_ENTER: Record = { 0: { x: 0, y: 260 },