# ESP32 nav minimal test

- Краткое описание: легаси-заметка по старому навигационному тесту UI для homeserver на базе `LVGL + subserver touch`. Актуальный основной скетч уже переехал в `shine_homeserver_main/`, а этот файл оставлен как историческая справка по старой версии.
- Что проверять:
  - стартует экран `HOME`;
  - на `HOME` видны реальное значение homeserver или `homeserver not set`, реальное значение логина или `login not set`, при отсутствии секрета строка `secret not set`, а также `STATUS`, верхний правый блок с процентом батареи, иконкой батареи и индикатором Wi-Fi, кнопка баланса, строка `SHiNE: ...`, кнопка `SETTINGS` уменьшенной ширины у правого края и нижняя подпись `SHiNE homeserver (v.0.18)`;
  - справа от строки логина виден индикатор статуса Solana-аккаунта:
    - зелёный, если ключи совпали;
    - красный, если mismatch;
    - белый контур, если пользователь не найден;
  - если статус не зелёный, рядом выводится краткое текстовое пояснение;
  - строка Wi-Fi на `HOME` корректно показывает одно из состояний:
    - `Wi-Fi (not configured) not configured`
    - `Wi-Fi (<saved_ssid>) disconnected`
    - `Wi-Fi (<current_ssid>) connected`
  - строка `SHiNE:` корректно показывает одно из состояний:
    - `connected`
    - `account not configured`
    - `unavailable`
  - пока открыт `HOME`, статус сам обновляется без перехода на другие экраны;
  - баланс обновляется кнопкой по нажатию;
  - если логин зарегистрирован и секрет/homeserver заданы, устройство:
    - читает `user_pda` через Solana RPC;
    - сверяет `root`, `blockchain`, `device` и `homeserver` session type `100`;
    - поднимает WebSocket-сессию с сервером SHiNE;
    - шлёт `Ping` раз в минуту;
  - кнопка `SETTINGS` открывает `SETTINGS_MENU`;
  - свайп влево на `HOME` открывает `SETTINGS_MENU`;
  - если пользователь не найден в Solana PDA, слева снизу появляется `REGISTER ACCOUNT`;
  - `REGISTER ACCOUNT` открывает экран-заглушку только в старой тестовой версии;
  - в `SETTINGS_MENU` сначала видны только `Wi-Fi` и `Server`;
  - обе видимые карточки меню одного цвета;
  - свайп вверх показывает `Server` и `Account`;
  - свайп вниз возвращает `Wi-Fi` и `Server`;
  - свайп вправо из `SETTINGS_MENU` возвращает на `HOME`;
  - нажатие `Wi-Fi` открывает `WIFI_SCREEN`;
  - `SELECT NETWORK` запускает скан;
  - после скана показывается список доступных SSID;
  - выбор SSID открывает общий экран редактирования текста для пароля;
  - если для этого SSID пароль уже сохранялся раньше, он автоматически подставляется в редактор;
  - если затем ввести пароль для другого SSID, пароль первой сети не теряется;
  - одновременно хранится до `8` паролей для разных SSID;
  - на этом экране видно старое значение, курсор стоит в конце;
  - две верхние служебные строки над полем ввода отсутствуют;
  - при вводе пароля Wi-Fi текст показывается открыто, без точек;
  - большая клавиатура реально видна на экране и занимает большую часть высоты;
  - буквы разбиты на 2 страницы;
  - режим символов тоже разбит на 2 страницы;
  - на правой странице кнопки стоят в ровных вертикальных колонках;
  - свайп влево/вправо на экране ввода переключает страницы клавиатуры;
  - при этом свайп страниц клавиатуры срабатывает только из нижней клавиатурной зоны, а не из верхней части экрана;
  - при переключении `ABC/123` и `SHIFT` уже введённый текст не пропадает;
  - при свайпе между левой и правой половиной клавиатуры уже введённый текст тоже не пропадает, в том числе для цифр, символов и заглавных букв;
  - визуальный курсор в поле ввода не показывается;
  - новые символы всегда дописываются только в конец строки;
  - основные 3 ряда клавиш и нижний служебный ряд стали выше;
  - внизу остаётся отдельная тёмная полоса с версией `SHiNE homeserver (v.0.18)`, а рамка клавиатурного блока заканчивается выше неё;
  - одно непрерывное касание вызывает не более одного действия кнопки;
  - скольжение пальцем по клавиатуре не нажимает подряд несколько клавиш;
  - медленный свайп по экрану не должен превращаться в случайное нажатие кнопки;
  - `ABC/123`, `SHIFT`, `DEL`, `SAVE`, `CANCEL` работают;
  - при успехе SSID и пароль сохраняются, а `HOME` показывает `Wi-Fi connected`;
  - если после подключения ко второй сети снова выбрать первую, её старый пароль уже подставлен и достаточно нажать `SAVE`;
  - при ошибке показывается `Connection failed`;
  - `CLEAR SAVED WI-FI` очищает сохранённые настройки;
  - если сеть была ранее успешно сохранена, после потери связи устройство автоматически пытается переподключиться;
  - первые повторные попытки идут раз в `10` секунд, а после долгого отсутствия связи интервал увеличивается до `30` секунд;
  - нажатие `Server` открывает `SERVER_SCREEN`;
  - в `SERVER_SCREEN` видны и редактируются два значения:
    - `https://api.devnet.solana.com`
    - `https://shineup.me`
  - нажатие `SOLANA RPC` открывает общий экран редактирования;
  - нажатие `SHINE SERVER` открывает общий экран редактирования;
  - после `SAVE` новые адреса сохраняются в NVS;
  - нажатие `Account` открывает `ACCOUNT_SCREEN`;
  - `ACCOUNT_SCREEN` показывает 3 кнопки:
    - `Login (<value|not set>)`
    - `Homeserver (<value|not set>)`
    - `Secret (<*****|not set>)`
  - `Login` открывает общий экран редактирования и сохраняется в NVS;
  - `Homeserver` открывает промежуточный экран с `USE HOMESERVER1` и `EDIT MANUALLY`;
  - `USE HOMESERVER1` возвращает стандартное значение `homeserver1`;
  - `EDIT MANUALLY` открывает общий экран редактирования и сохраняет значение в NVS;
  - `Secret` теперь открывает меню секрета с показом секрета, ручным вводом и генерацией;
  - в `SHOW SECRET` показывается прокручиваемый список всех ключей:
    - `Secret (base58)`
    - `Root key (base58)`
    - `Root key priv (base58)`
    - `Blockchain key (base58)`
    - `Blockchain key priv (base58)`
    - `Device key (base58)`
    - `Device key priv (base58)`
    - `Homeserver key (base58)`
    - `Homeserver key priv (base58)`
  - значения ключей показываются полными строками увеличенным шрифтом;
  - при смене `login` сохранённый секрет сбрасывается в `not set`;
  - во время генерации секрета есть `CANCEL` и подтверждение остановки;
  - при отмене генерации старый секрет, если он был, не должен теряться;
  - свайп вправо из внутренних экранов возвращает в `SETTINGS_MENU`;
  - свайп вправо из `ACCOUNT_HOMESERVER_SCREEN` и `ACCOUNT_SECRET_SCREEN` возвращает в `ACCOUNT_SCREEN`;
  - если во время реального свайпа палец проходит по кнопке, это не должно открывать кнопку как обычный `click`.
- Ожидаемый результат: новый скетч даёт чистый навигационный каркас и уже умеет настраивать Wi-Fi и серверные адреса на самой ESP32.
- Дополнительно ожидается: `HOME` уже показывает реальный Solana/WS-статус homeserver, а отсутствие пользователя в Solana заметно сразу без перехода в настройки.
- Статус: done
