SHA256
Скорректировать main к базе 553a1f1 и UI из Pixel
This commit is contained in:
+72
-13
@@ -7,19 +7,17 @@
|
||||
Этот прототип проверяет базовую механику экранов, крупных кнопок, свайпов, первичную настройку Wi-Fi и настройку серверных адресов через общий экран редактирования текста.
|
||||
|
||||
На этом этапе отсутствуют:
|
||||
- логика серверной проверки доступности;
|
||||
- логин/пароль учётной записи SHiNE;
|
||||
- PIN;
|
||||
- кошелёк;
|
||||
- QR;
|
||||
- баланс;
|
||||
- регистрация;
|
||||
- PDA и транзакции;
|
||||
- PDA update/create транзакции;
|
||||
- входящие запросы.
|
||||
|
||||
## Экраны
|
||||
|
||||
Прототип содержит 8 экранов:
|
||||
Прототип содержит 10 экранов:
|
||||
- `HOME`
|
||||
- `SETTINGS_MENU`
|
||||
- `WIFI_SCREEN`
|
||||
@@ -27,13 +25,21 @@
|
||||
- `ACCOUNT_SCREEN`
|
||||
- `ACCOUNT_SUBSERVER_SCREEN`
|
||||
- `ACCOUNT_SECRET_SCREEN`
|
||||
- `SECRET_SHOW_SCREEN`
|
||||
- `SECRET_GENERATE_*`
|
||||
- `TEXT_EDIT_SCREEN`
|
||||
- `REGISTER_ACCOUNT_PLACEHOLDER`
|
||||
|
||||
## HOME
|
||||
|
||||
Показывает:
|
||||
- сверху слева значение сабсервера или `subserver not set`;
|
||||
- ниже значение логина или `login not set`;
|
||||
- справа от строки логина индикатор статуса Solana-аккаунта:
|
||||
- зелёный — все ключи совпадают;
|
||||
- красный — есть mismatch;
|
||||
- белый контур — пользователь не найден в Solana PDA;
|
||||
- рядом с индикатором краткий текст ошибки, если статус не зелёный;
|
||||
- третьей строкой `secret not set`, если секрет ещё не помечен как установленный;
|
||||
- сверху справа один ряд индикаторов:
|
||||
- процент батареи;
|
||||
@@ -41,7 +47,10 @@
|
||||
- индикатор Wi-Fi уровня сигнала;
|
||||
- по центру крупный текст `STATUS`;
|
||||
- одна строка Wi-Fi вида `Wi-Fi (<ssid>) connected/disconnected`;
|
||||
- снизу большую кнопку `SETTINGS`.
|
||||
- кнопка баланса вида `Balance: <value SOL>` или `Balance: failed to load`, по нажатию выполняет повторный запрос;
|
||||
- строка `SHiNE: <server> connected/account not configured/unavailable`;
|
||||
- при отсутствии пользователя в Solana PDA слева снизу появляется кнопка `REGISTER ACCOUNT`;
|
||||
- снизу кнопку `SETTINGS`, уменьшенную примерно до половины ширины экрана и сдвинутую к правому краю.
|
||||
- внизу на тёмной полосе подпись `SHiNE subserver (v.0.18)`.
|
||||
|
||||
Строка Wi-Fi на `HOME`:
|
||||
@@ -50,9 +59,20 @@
|
||||
- `Wi-Fi (<current_ssid>) connected`
|
||||
|
||||
Переходы:
|
||||
- кнопка `REGISTER ACCOUNT` -> `REGISTER_ACCOUNT_PLACEHOLDER`, только если пользователь не найден;
|
||||
- кнопка `SETTINGS` -> `SETTINGS_MENU`;
|
||||
- свайп влево -> `SETTINGS_MENU`.
|
||||
|
||||
Фоновая логика:
|
||||
- пока открыт `HOME`, экран сам обновляется примерно раз в секунду;
|
||||
- при наличии `login + secret + subserver` и Wi-Fi устройство читает Solana `user_pda` напрямую через RPC;
|
||||
- сравниваются `root key`, `blockchain key`, `device key` и `subserver` session-запись типа `100`;
|
||||
- для строки `SHiNE:` устройство держит отдельную WebSocket-сессию с сервером SHiNE:
|
||||
- авторизация через `AuthChallenge/CreateAuthSession` или `SessionChallenge/SessionLogin`;
|
||||
- session key = публичный `subserver key`;
|
||||
- подтверждение создания сессии подписывается `device key`;
|
||||
- heartbeat выполняется `Ping` раз в минуту.
|
||||
|
||||
## SETTINGS_MENU
|
||||
|
||||
Показывает вертикальное меню из 3 пунктов:
|
||||
@@ -90,7 +110,7 @@
|
||||
|
||||
Показывает:
|
||||
- текущий Wi-Fi статус;
|
||||
- сохранённый SSID;
|
||||
- сохранённый SSID и число известных сетей;
|
||||
- статусное сообщение;
|
||||
- кнопку `SELECT NETWORK`;
|
||||
- кнопку `CLEAR SAVED WI-FI`;
|
||||
@@ -109,6 +129,13 @@
|
||||
|
||||
Нажатие на SSID открывает `TEXT_EDIT_SCREEN` для ввода пароля.
|
||||
|
||||
Поведение:
|
||||
- если для выбранного SSID пароль уже был сохранён раньше, он сразу подставляется в поле ввода;
|
||||
- если пароль меняют для другого SSID, старые сохранённые пароли других сетей не теряются;
|
||||
- после успешного подключения выбранная сеть становится текущей `wifi_ssid/wifi_pass`;
|
||||
- одновременно хранится до `8` известных сетей `SSID -> password`;
|
||||
- `CLEAR SAVED WI-FI` очищает все сохранённые сети и текущую сеть.
|
||||
|
||||
Переходы:
|
||||
- свайп вправо из любого режима `WIFI_SCREEN` -> `SETTINGS_MENU`
|
||||
- кнопка `BACK` -> `SETTINGS_MENU`
|
||||
@@ -162,16 +189,34 @@
|
||||
|
||||
## ACCOUNT_SECRET_SCREEN
|
||||
|
||||
Пока это заглушка.
|
||||
|
||||
Показывает:
|
||||
- текущий статус секрета `set/not set`;
|
||||
- сообщение, что настройка секрета пока не реализована;
|
||||
- кнопку `BACK`.
|
||||
- кнопку `SHOW SECRET` или серую `SECRET NOT SET`, если секрета ещё нет;
|
||||
- кнопку `ENTER SECRET MANUALLY (NOT RECOMMENDED)`;
|
||||
- кнопку `GENERATE SECRET`.
|
||||
|
||||
Переходы:
|
||||
- свайп вправо -> `ACCOUNT_SCREEN`
|
||||
- `BACK` -> `ACCOUNT_SCREEN`
|
||||
- `SHOW SECRET` -> экран просмотра секрета
|
||||
- `ENTER SECRET MANUALLY (NOT RECOMMENDED)` -> `TEXT_EDIT_SCREEN`
|
||||
- `GENERATE SECRET` -> экран подтверждения генерации
|
||||
|
||||
## SECRET_SHOW_SCREEN
|
||||
|
||||
Показывает:
|
||||
- заголовок `SECRET`;
|
||||
- вертикально прокручиваемый список ключей;
|
||||
- `Secret (base58)`;
|
||||
- `Root key (base58)`;
|
||||
- `Root key priv (base58)`;
|
||||
- `Blockchain key (base58)`;
|
||||
- `Blockchain key priv (base58)`;
|
||||
- `Device key (base58)`;
|
||||
- `Device key priv (base58)`;
|
||||
- `Subserver key (base58)`;
|
||||
- `Subserver key priv (base58)`;
|
||||
- для каждого поля показывается формула derivation;
|
||||
- значения ключей показываются полными строками увеличенным шрифтом;
|
||||
- кнопку `BACK`.
|
||||
|
||||
## TEXT_EDIT_SCREEN
|
||||
|
||||
@@ -191,6 +236,15 @@
|
||||
- кнопки `SAVE`, `CANCEL`, `DEL`, `CLR`;
|
||||
- большую экранную клавиатуру.
|
||||
|
||||
## REGISTER_ACCOUNT_PLACEHOLDER
|
||||
|
||||
Временный экран-заглушка регистрации.
|
||||
|
||||
Показывает:
|
||||
- заголовок `REGISTER ACCOUNT`;
|
||||
- сообщение, что регистрационный flow пока не реализован;
|
||||
- кнопку `BACK`.
|
||||
|
||||
## Клавиатура
|
||||
|
||||
Клавиатура единая для всех текстовых вводов.
|
||||
@@ -211,8 +265,13 @@
|
||||
- `wifi_ssid`
|
||||
- `wifi_pass`
|
||||
- `wifi_known_good`
|
||||
- до `8` сохранённых пар `SSID -> password`
|
||||
|
||||
При старте устройства, если сохранён SSID, выполняется попытка подключения к сохранённой сети.
|
||||
При старте устройства, если сохранён SSID, выполняется попытка подключения к текущей сохранённой сети.
|
||||
|
||||
Если пользователь уже вводил пароль для сети раньше:
|
||||
- при повторном выборе этого SSID старый пароль сразу подставляется в editor screen;
|
||||
- сохранение пароля для другой сети не удаляет уже сохранённые пароли остальных сетей.
|
||||
|
||||
Если сеть раньше уже была успешно подключена и помечена как валидная:
|
||||
- после потери связи устройство автоматически пытается переподключиться;
|
||||
|
||||
Reference in New Issue
Block a user