feat: verify multi-client reset recovery and document the emergency workflow
This commit is contained in:
@@ -79,6 +79,8 @@ session, clears match and cumulative statistics, and starts a fresh game
|
||||
generation. Successful recovery responses contain `resetReason` (`session_left`,
|
||||
`profile_reset`, or `game_reset`) and `generation`. Invalidated-token state
|
||||
polling returns `SESSION_INVALIDATED` with the same bounded recovery metadata.
|
||||
The recovery generation and `gameId` make delayed commands stale; retrying a
|
||||
completed recovery is harmless and cannot mutate a newly registered session.
|
||||
|
||||
## Role-safe state event
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# Если игра застряла
|
||||
|
||||
Кнопка с спасательным кругом «Помощь» доступна после подключения к игре. Она
|
||||
не стреляет и не меняет поле сама по себе: сначала выберите действие, затем
|
||||
подтвердите его.
|
||||
|
||||
## Выйти из игры
|
||||
|
||||
Выберите «Выйти из игры», чтобы освободить своё место. Имя на этом устройстве
|
||||
останется, поэтому можно быстро подключиться снова. Если игрок выходит во
|
||||
время партии, партия безопасно прекращается и оставшийся игрок возвращается в
|
||||
лобби.
|
||||
|
||||
## Сбросить мой профиль
|
||||
|
||||
Этот пункт удаляет только данные текущего браузера: имя, выбранного героя и
|
||||
токен. Данные других игроков не меняются. Без связи профиль всё равно можно
|
||||
очистить локально; место на ESP32 освободится после восстановления связи или
|
||||
обычного таймаута.
|
||||
|
||||
## Сбросить всю игру
|
||||
|
||||
Этот пункт виден только игроку. Он возвращает всех пользователей к первому
|
||||
экрану и удаляет текущую партию и статистику текущего запуска. Для защиты от
|
||||
случайного нажатия подтверждение нужно удерживать около двух секунд.
|
||||
|
||||
Старые вкладки и токены после этого не могут изменить новую партию.
|
||||
|
||||
## Что не удаляется
|
||||
|
||||
Эти действия не стирают Wi‑Fi, пароль сети, прошивку, файлы игры, flash или
|
||||
настройки платы. Перезагрузка ESP32 не нужна.
|
||||
|
||||
## Проверка на устройстве
|
||||
|
||||
Проверьте с двумя игроками и зрителем выход, локальный профиль, полный сброс
|
||||
из лобби/игры/результата, WebSocket и HTTP fallback. После 50 смешанных
|
||||
циклов сравните `/api/health`: свободная куча, largest free block, число
|
||||
клиентов и причина перезагрузки не должны показывать утечку, зависание или
|
||||
перезагрузку.
|
||||
Reference in New Issue
Block a user