feat(nudge): name the sender; blink lobby cards; re-animate toasts #75
Reference in New Issue
Block a user
Delete Branch "feature/nudge-name-lobby-blink"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что
«Жду вашего хода» оказалась nudge-всплывашкой (
chat.nudge), без имени отправителя. Теперь:NudgeEvent.sender_name:«<Соперник>: Жду Вашего хода 🤭»(chat.nudgeBy);rendernudgeBy);your_turnуже был с именем — не трогали.gameId(SvelteSet + nonce + таймер на игру) — карточки изолированы; под reduce-motion выключено.seq+{#key}вToast.svelte), единообразно везде.Scope: backend (
notify/social/game) + FB-схема (NudgeEvent.sender_name, реген Go+TS) + Telegram-рендер + UI. Без миграций БД → контур без вайпа.Проверка локально (всё зелёное)
gofmt/go build/go vet· backend-unit + telegram · полная интеграция (вкл. новыйTestSeatNameResolvesDisplayName) · UIcheck/test:unit(271)/build/bundle-gate · e2e 138 (Chromium+WebKit).Живая проверка на контуре (после деплоя)
«<Соперник>: Жду Вашего хода 🤭»в лобби и на других экранах; пузырёк в чате — новая формулировка.Отложено:
PLAN.mdTODO-7 — FLIP-анимация переезда карточки между секциями (косметика).The "waiting for your move" popup was the nudge (chat.nudge), shown without a sender name. Resolve the nudger's per-game seat name server-side and carry it on a new NudgeEvent.sender_name field, so: - the in-app toast reads "<opponent>: Waiting for your move 🤭" (chat.nudgeBy); - the out-of-app Telegram push names the sender too (render nudgeBy); falling back to the plain phrase when the name is absent (RU mirrored). The your_turn toast already named the opponent and is unchanged. Lobby: when a card transitions into "your turn" or "finished" while the lobby is open, its status emoji blinks twice (two 1s fades); the opponent's-turn change stays in place. Blink state is keyed by game id (SvelteSet + per-id nonce/timer) so overlapping events animate in isolation; suppressed under reduce-motion. Toast: a per-message seq re-keys Toast.svelte, so the freshest toast cancels the previous one and replays its entrance, uniformly on every screen. Tests: notify.Nudge round-trip + render named/fallback (Go), game.Service.SeatName (integration), codec/i18n/gamePhase/shouldBlink (UI). Docs (FUNCTIONAL +_ru, UI_DESIGN) + PLAN TODO-7 (deferred FLIP card-relocation animation) updated.