diff --git a/PLAN.md b/PLAN.md index 3050036..f4b0b22 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1457,8 +1457,10 @@ provided cert) at the contour caddy; prod VPN; rollback. still **opens with the spinner** and fills on reconnect (global indicator + read auto-retry), so navigation is never dead. Pure policy unit-tested (`retry.ts`); a mock-only `window.__conn` hook drives a Chromium+WebKit e2e (indicator appears offline, the action disables, both clear - on reconnect). Other server-action buttons (chat send, profile save, …) are not yet visually - disabled but degrade to a safe no-op (the suppressed toast + indicator) — easy to extend. + on reconnect). The visual soft-disable spans the server-action buttons across the app: the + game bar (commit/exchange/pass/hint/resign), chat send + nudge, profile save / link / merge, + friends (request/respond/unfriend/block/code), New Game (auto-match + invite) and the lobby + hide ❌; purely local controls (board/rack/reset, menu, navigation, settings) stay live. ## Deferred TODOs (cross-stage) diff --git a/ui/src/game/Chat.svelte b/ui/src/game/Chat.svelte index f1a6dd0..10ec271 100644 --- a/ui/src/game/Chat.svelte +++ b/ui/src/game/Chat.svelte @@ -1,6 +1,7 @@