fix(ui): язык интерфейса по системе (не по боту) + pinch-zoom не триггерит back #65

Merged
developer merged 2 commits from fix/locale-and-pinch-swipe into development 2026-06-15 15:42:03 +00:00
Owner

Два бага по обратной связи/UI (отдельно от #64).

1. Язык интерфейса не уважал системные настройки (Telegram-боты)

Вход через ru-бота на системе с английским показывал интерфейс на русском, хотя в настройках выбран английский. Причина: на логине UI перекрывал язык интерфейса значением preferred_language аккаунта (которое подтянулось не от устройства). Теперь интерфейс следует устройству — явный локальный выбор (сохранён, залочен) или системный язык; бот, через которого зашли, язык UI не диктует. preferred_language по-прежнему пишется из настроек и используется для маршрутизации out-of-app push.

Кавет (поведенческое изменение): авто-применение языка с сервера при входе на новом устройстве уходит — свежее устройство берёт системный язык, пока пользователь явно не переключит (на этом устройстве выбор сохраняется). Это ровно «уважаем системные настройки». Если хочешь, чтобы явный выбор языка синхронизировался между устройствами — скажи, сделаю иначе.

2. Pinch-zoom на доске иногда срабатывал как swipe-back

Edge-свайп «назад» вооружался по первому пальцу и срабатывал на отпускании, даже если присоединялся второй палец (pinch — доска ещё не .zoomed в момент первого касания, поэтому hit-test не отсекал). Теперь считаем активные указатели в capture-фазе и отменяем свайп, как только появляется второй палец; назад срабатывает только для одиночного пальца.

Проверки локально: pnpm check 0 ошибок; unit 224; e2e 136 (+ синтетический gestures.spec на оба сценария: pinch не навигирует, одиночный свайп навигирует), zoom.spec без регрессий. Реальный pinch в Playwright не воспроизводим — финально проверяется вживую на контуре (по практике проекта).

Два бага по обратной связи/UI (отдельно от #64). ### 1. Язык интерфейса не уважал системные настройки (Telegram-боты) Вход через ru-бота на системе с английским показывал интерфейс на русском, хотя в настройках выбран английский. Причина: на логине UI перекрывал язык интерфейса значением `preferred_language` аккаунта (которое подтянулось не от устройства). Теперь **интерфейс следует устройству** — явный локальный выбор (сохранён, залочен) или системный язык; бот, через которого зашли, язык UI не диктует. `preferred_language` по-прежнему пишется из настроек и используется для маршрутизации out-of-app push. **Кавет (поведенческое изменение):** авто-применение языка с сервера при входе на *новом* устройстве уходит — свежее устройство берёт системный язык, пока пользователь явно не переключит (на этом устройстве выбор сохраняется). Это ровно «уважаем системные настройки». Если хочешь, чтобы явный выбор языка синхронизировался между устройствами — скажи, сделаю иначе. ### 2. Pinch-zoom на доске иногда срабатывал как swipe-back Edge-свайп «назад» вооружался по первому пальцу и срабатывал на отпускании, даже если присоединялся второй палец (pinch — доска ещё не `.zoomed` в момент первого касания, поэтому hit-test не отсекал). Теперь считаем активные указатели в capture-фазе и **отменяем свайп, как только появляется второй палец**; назад срабатывает только для одиночного пальца. **Проверки локально:** `pnpm check` 0 ошибок; unit 224; e2e 136 (+ синтетический `gestures.spec` на оба сценария: pinch не навигирует, одиночный свайп навигирует), zoom.spec без регрессий. Реальный pinch в Playwright не воспроизводим — финально проверяется вживую на контуре (по практике проекта).
developer added 2 commits 2026-06-15 11:53:17 +00:00
On login the UI no longer overrides the interface language from the account's
preferred_language. The live interface follows the device — the explicit local
choice (saved, locked) or the system-language guess — so opening the mini-app via
the ru-bot on an English system keeps the interface English (it was forced to
Russian by the account seed). preferred_language is still written from Settings and
used for out-of-app push routing; it just no longer dictates the UI on launch.
fix(ui): a board pinch-zoom no longer triggers swipe-back
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 47s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 58s
800a692766
The edge swipe-back armed on the first finger and fired on release even when a
second finger had joined (a pinch-zoom — the board is not .zoomed yet at the first
touch, so the hit-test could not skip it). Track the live pointer count in the
capture phase and cancel the swipe the moment a second pointer joins; the back
navigation fires only for a lone finger. Synthetic-PointerEvent e2e covers both.
owner approved these changes 2026-06-15 15:39:54 +00:00
developer merged commit 4b454db219 into development 2026-06-15 15:42:03 +00:00
developer deleted branch fix/locale-and-pinch-swipe 2026-06-15 15:42:03 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/scrabble-game#65