plibvi · Android «По любви» · проверка 14 сентября 2026

Что нашлось в сборке и что из этого исправлено

Проверка началась с одного сообщения: на экране «Как тебя зовут?» кнопка «Далее» не срабатывает. Это воспроизвелось, и рядом нашлось ещё семь похожих мест, и всё это уже исправлено. Всё проверено на той же сборке, что лежит на странице раздачи, на эмуляторе 390×844 против живого стенда dusha.uxbrain.ru.

Исправлено 14 сентября. Все восемь находок закрыты и проверены на эмуляторе против живого стенда. Регистрация с чистого листа проходит все восемь шагов анкеты и доходит до конца. Ниже — что было, почему так вышло и чем проверяли. Свежие сборки с исправлениями лежат на странице раздачи.

Находки

блокерД-1. Тупик после обязательной части анкеты

✓ Исправлено. Следующий шаг ищется только среди показываемых, лоадер получил «назад». Проверено: регистрация с чистого листа прошла все восемь шагов и дошла до разводной «Не упусти свою любовь».

Что видно
Отвечаешь на все восемь шагов анкеты. Дальше — белый экран с крутилкой, шкала прогресса на двух третях и чёрная кнопка «Далее». Нажатие не делает ничего, стрелка «назад» на самом экране не нажимается. Системная кнопка «назад» возвращает на восьмой шаг, вперёд пути нет. Перезапуск приложения — онбординг с самого начала, ответы потеряны.
Почему
Плоский список вопросов строится из всех шагов ответа GET /survey, включая необязательный шаг «Интересы», а список шагов для показа — только из обязательных. После восьмого шага указатель переводится на первый вопрос «Интересов», а фаза остаётся прежней, вместо перехода на разводную «Не упусти свою любовь». Шаг для этого вопроса не находится, и рисуется ветка загрузки: без заголовка, без вариантов. Кнопка в этой ветке получает состояние по умолчанию (активное, чёрная), а обработчик нажатия в неё не передаётся вовсе.
Где чинить
OnboardingViewModel.flattenSurvey и nextSurveyStep, ветка загрузки в OnboardingScreen.SurveyQuestionStep
Воспроизводится
Всегда, пока в анкете есть необязательный шаг. На стенде он есть: девять шагов, девятый — «Интересы».

важноД-2. «Далее» на экране имени молчит без фамилии

✓ Исправлено. Фамилия больше не обязательна — отправка анкеты и правка профиля и так подставляют прочерк. Проверено: «Далее» с одним именем уводит на следующий шаг.

Что видно
Ввёл имя — кнопка стала чёрной и активной. Нажимаешь: ничего не происходит, никакого сообщения. Заполнил фамилию — тот же тап сразу уводит на следующий шаг.
Почему
Кнопка включается по одному имени, а проверка требует и фамилию. При пустой фамилии проверка выставляет текст «Введите фамилию», но у экрана имени нет места, куда этот текст вывести, — он просто теряется.
Стоит решить
Похоже, фамилия тут обязательна по недоразумению: отправка анкеты в этом же коде подставляет вместо пустой фамилии прочерк, а правка анкеты в профиле фамилию не требует. То есть или убрать требование, или показать сообщение и гасить кнопку.
Где чинить
OnboardingViewModel.continueFromName, OnboardingScreen.NameStep

важноД-3. Поле фамилии не показывает, что оно в фокусе

✓ Исправлено. Поле отдаёт настоящий фокус. Проверено по цвету рамки: после нажатия терракотовая рамка у фамилии, у имени спокойная.

Что видно
Тапаешь по «Фамилии» — клавиатура открыта, ввод идёт, но поле выглядит нетронутым: подпись внутри, курсора нет, рамка серая. Терракотовая рамка при этом остаётся на поле имени. Ощущение, что поле не работает, хотя оно работает.
Почему
Вид поля выводится не из настоящего фокуса, а из того, есть ли уже текст в фамилии. Пока она пуста, оба поля рисуются так, будто выбрано имя.
Где чинить
OnboardingScreen.NameStep (firstFocused), ui/kit/Inputs.kt

важноД-4. Дата рождения: та же немая кнопка на несуществующей дате

✓ Исправлено. Кадр показывает «Дата неверная», «Тебе нет 18» или «Тебе N лет», кнопка включается только по пройденной проверке. Проверено на 31.02.2000 и на настоящей дате.

Что видно
Вводишь 31.02.2000 — кнопка активна, нажатие не делает ничего и ничего не говорит. Настоящая дата — проходит сразу.
Почему
Кнопка включается по восьми цифрам, а проверка требует существующую дату. Обидно, что у этого экрана уже есть готовые места под сообщения, собранные по кадрам «Дата неверная» и «Тебе нет 18», — их просто не заполняют.
Где чинить
OnboardingScreen.BirthdayStep — передать messageTitle/messageText

важноД-5. Шкалы анкеты нарисованы кнопками, подписи повторяются

✓ Исправлено. Шкала рисуется шкалой, нажатие и протяжка выбирают деление. По дороге нашлись ещё две беды: обработчик жеста держал колбэк предыдущего шага, и повторное нажатие снимало ответ. Обе закрыты.

Что видно
Вопрос «Я хочу завести ребенка» показывает подряд четыре одинаковые кнопки «Не планирую детей», затем «Готов к детям», затем четыре «Хочу детей».
Почему
Три вопроса приходят со стенда как шкала из девяти делений с подписями только у части делений. Экран рисует шкалу вертикальным списком кнопок, по кнопке на деление, — отсюда повторы. Данные тут ни при чём, стенд отдаёт ровно это. В проекте есть готовый экран шкалы, но он никуда не подключён.
Сколько
Три вопроса из пятнадцати: «Я хочу завести ребенка», «Личная жизнь или работа?», «Насколько свободными ты видишь идеальные отношения».
Где чинить
OnboardingScreen.SurveyQuestionStep — развилка по типу ответа на SurveySliderStepScreen

важноД-8. Крупный шрифт в системе ломает вёрстку

✓ Исправлено. Масштаб шрифта закреплён. Проверено сравнением кадров: при системном шрифте 1.3 и 1.0 разница ноль пикселей, до правки было 3,3 % на приветствии и 1,9 % на экране имени.

Что видно
Если в настройках телефона увеличен размер шрифта, текст наезжает сам на себя. На приветствии «ДОСТУПНО» залезает на «60%» и разваливается на две строки поверх кольца, а строки подзаголовка слипаются. На экране имени подпись «Можно отредактировать в профиле» переносится на две строки и садится прямо на кнопку «Далее».
Почему
Размер текста задан в единицах, которые растут вместе с системной настройкой, а высота каждого текстового блока и положение блоков на экране взяты из макета жёстко, в неизменяемых единицах. Экраны при этом не прокручиваются: во всём онбординге ровно одно прокручиваемое место. Подросший текст выходит за свой блок и накрывает соседний.
Проверено
Тот же эмулятор, системный размер шрифта увеличен на треть. При обычном размере оба экрана в порядке.
Чем шире
По той же причине под угрозой любой экран с длинным текстом, а не только эти два: жёстких координат в вёрстке 178 штук.
Приветствие, крупный шрифт
Приветствие, крупный шрифт
«ДОСТУПНО» поверх «60%», строки подзаголовка слиплись
Экран имени, крупный шрифт
Экран имени, крупный шрифт
Подпись переносится и садится на кнопку «Далее»

мелочьД-6. Ошибкам шага «Открывашки» негде показаться

✓ Исправлено вместе с Д-7 — общим местом под сообщение.

Проверка ставит три разных текста («Выберите вопрос и напишите ответ», «Эта открывашка уже добавлена», «Максимум»), а у экрана есть только флажок «ошибка» без места под сообщение. Вживую не проверено: шаг лежит за тупиком Д-1.

мелочьД-7. Возврат в конце анкеты без объяснения

✓ Исправлено. В корне онбординга появился снек, который показывает любое сообщение проверок. Возраст к тому же проверяется на самом шаге даты, а не в конце анкеты.

Если при отправке анкеты не хватает обязательных ответов, дата не разбирается или возраст меньше 18, пользователя откидывает на нужный шаг с заготовленным текстом («Регистрация с 18 лет» и другие). Эти экраны сообщений не показывают — со стороны это выглядит как самопроизвольный прыжок назад. Вживую не проверено по той же причине.

Одна общая причина у Д-2, Д-4, Д-6, Д-7

Экраны онбординга собраны по кадрам макета, и места под сообщение об ошибке в них не заведено, хотя проверки такие сообщения исправно готовят. Вдобавок кнопка «Далее» включается по более мягкому условию, чем то, что проверяет обработчик. Получается худший вариант: кнопка выглядит рабочей, нажимается и молчит. Лечится в двух местах сразу — включать кнопку ровно по тому же условию, что проверяет обработчик, и дать экранам одну общую строку под сообщение.

Как это выглядит

Д-2 · имя введено
Д-2 · имя введено
Кнопка чёрная и активная. Нажатие не делает ничего, пока пуста фамилия
Д-5 · шкала кнопками
Д-5 · шкала кнопками
Четыре одинаковые кнопки «Не планирую детей» подряд
Д-1 · тупик
Д-1 · тупик
Крутилка без конца, «Далее» активна и ни к чему не подключена
Д-1 · после перезапуска
Д-1 · после перезапуска
Онбординг с начала, ответы анкеты потеряны

Как это выглядит после правок

Д-5 · шкала вместо кнопок
Д-5 · шкала вместо кнопок
Вместо четырёх одинаковых кнопок — шкала с подписью деления
Д-8 · крупный системный шрифт
Д-8 · крупный системный шрифт
Вёрстка не разъезжается: кадр совпадает с обычным шрифтом пиксель в пиксель
Д-3 · фокус на фамилии
Д-3 · фокус на фамилии
Рамка переехала на поле фамилии, у имени она спокойная
Д-1 · конец анкеты
Д-1 · конец анкеты
Тупика нет: после восьмого шага приложение доходит сюда

Чем проверяли

ПроверкаИтог
Регистрация с чистого листа на живом стендеВосемь шагов анкеты пройдены, дошли до конца
Кадры при системном шрифте 1.3 против 1.0Ноль пикселей разницы, было 3,3 % и 1,9 %
Цвет рамки поля фамилии после нажатияТерракотовая у фамилии, спокойная у имени
Падения за все прогоныНи одного
Сборкиrelease и debug собираются, R8 не ругается

Что проверено и работает

УчастокИтог
Вход по СМСРаботает. Код 338610 принимается, токены выдаются
Шаги «Пол и рост», восемь шагов анкетыРаботают, кнопка гаснет и зажигается честно
Четыре таба под готовой анкетойЛента, симпатии, чаты, профиль открываются на живых данных
Профиль, настройки, фильтры, пейволлОшибки показывают как надо — снеком или блоком
ПаденияНи одного за весь прогон, включая релизную сборку

Что осталось непроверенным

Всё, что лежит за тупиком Д-1: открывашки, выбор фото и видео, финальная отправка анкеты. И оплата — для неё нужен стенд оплаты, которого нет.

Проверка: эмулятор 390×844 ×3, сборка от 13–14 сентября 2026, коммит a782e198, стенд dusha.uxbrain.ru. Сборки и ссылки — на странице раздачи APK.