Merge esp32-2-by-tbilisi into main #4

Merged
Aidar merged 56 commits from esp32-2-by-tbilisi into main 2026-06-18 12:21:37 +00:00
Owner

Что вошло в ветку

  • добавлено редактирование и удаление личных сообщений;
  • добавлен вход через другое подключённое устройство и настройки Trusted Device Login;
  • добавлен browser wallet extension / wallet plugin с текущим каркасом pairing и homeserver-логики;
  • проведён и добавлен аудит Solana smart contracts;
  • удалён устаревший и снятый с эксплуатации модуль SHiNE-promo-solana-devnet вместе с корневой deploy-задачей;
  • удалены закрытые записи из Dev_Docs/Pending_Features/.

Примечания

  • ручная проверка по этим доработкам уже проведена;
  • VERSION.properties обновлён: client.version=1.2.216, server.version=1.2.204.

Почему удалён SHiNE-promo-solana-devnet

  • сервис уже помечен как снятый с эксплуатации в server-backup/scheme/shineup.me/docs/RESTORE.md;
  • модуль не подключён в settings.gradle и использовался только через отдельную устаревшую deploy-задачу в корневом build.gradle.
## Что вошло в ветку - добавлено редактирование и удаление личных сообщений; - добавлен вход через другое подключённое устройство и настройки Trusted Device Login; - добавлен browser wallet extension / wallet plugin с текущим каркасом pairing и homeserver-логики; - проведён и добавлен аудит Solana smart contracts; - удалён устаревший и снятый с эксплуатации модуль `SHiNE-promo-solana-devnet` вместе с корневой deploy-задачей; - удалены закрытые записи из `Dev_Docs/Pending_Features/`. ## Примечания - ручная проверка по этим доработкам уже проведена; - `VERSION.properties` обновлён: `client.version=1.2.216`, `server.version=1.2.204`. ## Почему удалён `SHiNE-promo-solana-devnet` - сервис уже помечен как снятый с эксплуатации в `server-backup/scheme/shineup.me/docs/RESTORE.md`; - модуль не подключён в `settings.gradle` и использовался только через отдельную устаревшую deploy-задачу в корневом `build.gradle`.
Aidar added 55 commits 2026-06-18 11:58:37 +00:00
shine_payments + shine_users:
- create_pda_account переведён на «создание поверх предзаполненного»
  (allocate+assign+добор ренты), чтобы подсев лампортов на детерминированный
  адрес PDA (тикет/логин) не блокировал создание — закрыт LOW из аудита №1;
  в shine_payments is_uninitialized_account перестала зависеть от баланса.

shine_payments (HIGH из аудита №2):
- запрещён recipient == inflow_vault в buy_ticket*, manager_add_ticket и
  change_ticket_recipient; добавлена защита по умолчанию в transfer_from_vault
  (require vault.key != recipient.key). Это убирает алиасинг аккаунта в
  step_payout, который навсегда замораживал очередь выплат и средства вольта.

Документация и учёт:
- doc/programs/shine_payments.md §3.4, §10.1; doc/programs/shine_users.md §3.3;
- Dev_Docs/audit: добавлен аудит №2, обе закрытые находки помечены ИСПРАВЛЕНО;
- Dev_Docs/Pending_Features: две записи на ручную e2e-проверку на devnet;
- VERSION.properties: client 1.2.161, server 1.2.150.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Основное (наша работа в этой сессии):
- Переименование «subserver» → «homeserver» по всему проекту: основной ESP32-скетч
  (папка shine_subserver_ui → shine_homeserver_ui, .ino, flash-скрипт, режим burn.sh
  homeserver-ui), скетч lvgl_nav_minimal_test (ключ homeserver.key:<имя>), spec-доки
  reference/*, формат PDA (терминология session_type=100 «Homeserver пользователя»),
  константа SESSION_TYPE_HOMESERVER в JS и Rust (значение 100 не менялось, формат не затронут),
  pending/future доки, AGENTS.md, DAO-док. Сохранены отдельный lvgl_subserver_touch_test и
  историческая пометка о рендейме в DERIVATION.md.
- Новый источник истины по деривации ключей: Dev_Docs/Keys/DERIVATION.md (Argon2id-секрет из
  пароля, формула Ed25519(SHA-256(base64(secret)|suffix)), суффиксы root/bch/dev/homeserver.key,
  Solana-ключ = dev.key). Уточнены роли root (главный/master) и dev (пополняемый кошелёк) в
  Dev_Docs/Keys/README.md.
- UI: убран легаси-путь пустого пароля (derivePasswordSeed и др.), deriveMasterSecretFromPassword
  бросает ошибку на пустом пароле, register-view блокирует пустой пароль; экран пополнения
  переведён на канонический device-адрес из preGeneratedKeyBundle (удалён расходящийся
  deriveWalletFromPassword).

Включены также параллельные правки Solana-аудита №3 (были в рабочем дереве, переплетены в lib.rs):
- shine_users: defense-in-depth «строгий список аккаунтов» (require!(it.next().is_none()))
  в init/update economy config и create/update user PDA, плюс описание в doc/programs/shine_users.md;
- Dev_Docs/audit/Solana-audit-3-by-Claude-12июня2026.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Что сделано:\n- публичный API сценария входа через доверенное устройство переведён на TrustedDeviceLogin\n- добавлен GetTrustedDeviceLoginSettings\n- отсутствие записи настроек на сервере теперь трактуется как enabled=true и hasPassword=false\n- ttlSeconds убран из клиентского API, TTL заявки фиксирован на сервере: 300 секунд\n- в shine-UI добавлен отдельный экран настроек входа через устройство и статус на основном экране\n- browser wallet переведён на новые TrustedDeviceLogin операции\n- в wallet добавлен выбор rootKey/deviceKey для будущего запроса подписи\n- документация API обновлена\n\nЧто ещё не проверено вручную end-to-end:\n- полный сценарий UI/plugin после этого деплоя не прогонялся руками до конца\n- сам signaling подписи в wallet всё ещё не реализован
Aidar added 1 commit 2026-06-18 12:11:44 +00:00
Aidar reviewed 2026-06-18 12:21:17 +00:00
Aidar left a comment
Author
Owner

Проверил ветку перед merge в main.

Что зафиксировано по составу изменений:

  • в UI и серверной части добавлен сценарий входа через другое подключённое устройство (TrustedDeviceLogin) и связанные настройки;
  • в личных сообщениях добавлены редактирование, удаление и сопутствующие доработки по ревизиям/вложениям;
  • добавлен browser wallet extension / wallet plugin с текущим рабочим каркасом pairing, wallet-session и выбором homeserver;
  • в Solana-части добавлены материалы по аудиту смарт-контрактов;
  • из репозитория убран снятый с эксплуатации модуль SHiNE-promo-solana-devnet и удалены закрытые записи Dev_Docs/Pending_Features/.

Отдельно проверено по репозиторию:

  • PR собирается поверх main и сейчас помечен Gitea как mergeable=true;
  • ветка esp32-2-by-tbilisi уже запушена целиком;
  • описание PR приведено в соответствие текущему состоянию ветки;
  • pending-записи удалены по факту ручной проверки.

Замечание по scope:

  • PR крупный и затрагивает UI, сервер, ESP32, wallet plugin, документацию и Solana-часть, поэтому после merge разумно отдельно пройти post-merge smoke-check по основным пользовательским сценариям на main.

Со стороны сопровождения ветка готова к merge.

Проверил ветку перед merge в `main`. Что зафиксировано по составу изменений: - в UI и серверной части добавлен сценарий входа через другое подключённое устройство (`TrustedDeviceLogin`) и связанные настройки; - в личных сообщениях добавлены редактирование, удаление и сопутствующие доработки по ревизиям/вложениям; - добавлен browser wallet extension / wallet plugin с текущим рабочим каркасом pairing, wallet-session и выбором homeserver; - в Solana-части добавлены материалы по аудиту смарт-контрактов; - из репозитория убран снятый с эксплуатации модуль `SHiNE-promo-solana-devnet` и удалены закрытые записи `Dev_Docs/Pending_Features/`. Отдельно проверено по репозиторию: - PR собирается поверх `main` и сейчас помечен Gitea как `mergeable=true`; - ветка `esp32-2-by-tbilisi` уже запушена целиком; - описание PR приведено в соответствие текущему состоянию ветки; - pending-записи удалены по факту ручной проверки. Замечание по scope: - PR крупный и затрагивает UI, сервер, ESP32, wallet plugin, документацию и Solana-часть, поэтому после merge разумно отдельно пройти post-merge smoke-check по основным пользовательским сценариям на `main`. Со стороны сопровождения ветка готова к merge.
Aidar merged commit 722d055e2d into main 2026-06-18 12:21:37 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Aidar/SHiNE-server#4
No description provided.