PRO1VPN Android 1.0.17 — 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode4000018; minSdk24, targetSdk37.

Изменена только вёрстка страницы «Подключить телевизор»:
— системные отступы для строки состояния, навигации, вырезов и клавиатуры;
— фирменный фон и логотип, заголовок и ввод кода в отдельных блоках;
— промежутки 12–24 dp, отдельная карточка статуса;
— ограничение ширины 600 dp для планшетов, прокрутка, гибкая высота текста;
— светлая/тёмная/зелёная темы, доступное озвучивание статуса.
Обработчики сканирования, подтверждения, API и восстановления кода
побайтово совпадают с исходным снимком 1.0.16.

Проверки: release-сборка с lintVital, 119 JVM-тестов;
5 APK проверены по подписи, пакету, версии, ZIP/DEX/ELF/16K;
локализации 899 сообщений × 9; исходники сверены по SHA256.
Физического Android-устройства нет; экран и клавиатура на устройстве
не проверялись. Скриншоты запущенной новой версии не получены.

Сборка выполнена из изолированного снимка актуальных исходников,
чтобы не затрагивать одновременный выпуск Android TV 1.0.16.
Этот выпуск обновляет только мобильный канал Android.

--- Предыдущий отчёт ---
PRO1VPN TV 1.0.16 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.tv; versionCode 4000017.

Изменения:
- Плоское боковое меню без внешней рамки, выделена текущая вкладка.
- Кнопка VPN с одним кругом и отдельным контуром при фокусе пульта.
- Статус VPN с цветной точкой, сервер и сведения о подписке в своей карточке.
- У кнопок нет постоянных обводок; сфокусированный элемент выделяется цветом.
- Крупнее код подключения; QR и способы привязки через телефон/кабинет сохранены.
- Фон, общий мобильный Pro1Ui, баннер, обработчики VPN и привязки не изменены.
- Для узких экранов предусмотрена вертикальная компоновка и прокрутка.

Проверено:
- assembleTvRelease, lintVital и 119 JVM-тестов: успешно, без ошибок/пропусков.
- Локализации: 899 сообщений/вариантов на 9 языках.
- 474 входных файла сборки: SHA256 до/после совпали.
- 5 APK: прежний сертификат, ZIP/DEX, архитектуры и выравнивание 16KB.
- Баннер PRO1VPN TV 320x180 и manifest готового APK проверены через aapt2.

Физический ТВ не подключён к рабочей среде; нативный интерфейс 1.0.16 и
VPN на устройстве здесь не проверялись. Пользователь прислал фото 1.0.15
со статусом «VPN включён» и подтвердил установку через Downloader.
Мобильный канал обновления сохраняет ранее опубликованную 1.0.14.

--- Предыдущие отчёты ---
PRO1VPN Android 1.0.13 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000014; minSdk24, targetSdk37.

Изменения:
- Новые плоские вкладки: акцент на значке, без отдельных выпуклых кнопок.
  Панель ограничена 560dp на планшетах, отступ 12dp над системной навигацией.
  У всех фирменных кнопок отключены стандартные elevation/stateListAnimator.
- Подписка: одна карточка срока, трафика и продления, шириной до 600dp.
  Настройки ссылки, обновление, автообновление и удаление раскрываются отдельно.
  Код входа скрыт до нажатия, в диалоге доступно копирование.
  Пустое состояние, неизвестный/нулевой лимит, истёкший срок сохранены.
- При выборе другого сервера во время VPN применяется штатный MSG_STATE_RESTART.
  Ручное отключение не требуется. В UI отображается процесс подключения.
  Блокировка повторных нажатий сохраняется во ViewModel при повороте экрана;
  промежуточный STOP не снимает её; успех/ошибка либо таймаут 15 секунд снимают.
  Запоздалый таймаут не отменяет последующее переключение. Проверки сервера
  отменяются при выборе; текущий профиль повторно не перезапускается.
- Работа импорта, автоматический первый выбор и механизм оплаты сохранены.

Проверено:
- Release, debug и instrumentation APK собраны; lintVital успешно.
- 117 JVM-тестов, без ошибок и пропусков, включая 3 сценария защиты переключения.
- 899 текстов/вариантов на 9 языках; locale checker успешно.
- Пять APK: прежний сертификат, package/version/ABI, CRC/DEX, ZIP/ELF64 16K,
  провайдеры, launcher aliases, изолированный Probe-процесс, адрес обновлений.
- SHA входов сборки совпадают с исходниками и ZIP исходников.
- Встроенный фон совпадает по пикселям с оригиналом; контроль контраста сохранён.

Ограничения:
- Нативная визуальная проверка и реальное переключение VPN на устройстве
  в этой среде не выполнены. Предыдущий запуск эмулятора завершился сбоем
  системного PackageManager до установки APK; физическое устройство недоступно.
- UI-тесты обновлены: панель, отступы, скрытый код, раскрываемое управление.
  Они скомпилированы, но не выполнялись. JVM-тесты не заменяют проверку туннеля.
- Дизайн переработан по присланным пользователем скриншотам версии 1.0.12.
  Реальные аккаунты, оплаты и ключи пользователей не использовались.

Бекап текущих исходников (включая незакоммиченные файлы) сохранён локально и
на VPS /root/backups/android-navigation-20261006/source; SHA-256 совпал.

--- Предыдущая версия ---
PRO1VPN Android 1.0.12 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000013; minSdk24, targetSdk37.

Изменения:
- Общий стиль Windows и кабинета: встроенный глобус, светлая/тёмная палитры,
  градиентные кнопки, единая толщина текста, короткие переходы между вкладками.
  Отключение анимаций в Android учитывается. Прежние ручные темы/стили сохранены.
- Главная: VPN, выбор сервера, компактный пинг, обновление и продление подписки.
  Круглая кнопка — новый default без перезаписи явно сохранённого выбора.
  Сводка аккаунта — в «Подписке», остальные функции и версия — в «Ещё».
- Нижнее меню: 12dp снизу сверх системной области жестов, 16dp по бокам.
  Крупный шрифт: быстрые действия располагаются вертикально; высоты не фиксированы.
- Серверы: компактные строки, избранное и отклик; фильтры/сортировка раскрываются.
  Подписка без повторяющейся шапки. «Ещё» разделено на три группы.
  Вторичные экраны получили общие цвета, фон и ограничение ширины на планшете.
- Первый успешный импорт выбирает первый видимый профиль подписки (автоматический).
  Исправлены оба пути: полный JSON и список ссылок. Обновление сохраняет ручной
  выбор; исчезнувший профиль заменяется верхним. Существующий выбор при обновлении
  приложения не сбрасывается. Замена ссылки сохраняет профиль по имени/адресу.

Проверено:
- Release, debug и instrumentation APK собраны, lintVital успешно.
- 114 JVM-тестов, 0 ошибок/пропусков; 11 новых сценариев выбора сервера.
- 898 текстов/вариантов на 9 языках: locale checker успешно.
- Проверены 13 сочетаний текста/фона, минимум 4.52:1; мелкий текст на реальном
  фоновом изображении после коррекции: минимум 4.90:1 (720×1600) и 4.80:1
  (1536×1152). Это расчёт контраста, не скриншоты из Android.
- Пять подписанных APK: прежний сертификат, package/version/ABI, CRC/DEX,
  ZIP/ELF64 16K, провайдеры, launcher aliases, изолированный Probe-процесс,
  встроенный сервер обновлений и девять языков. SHA входов сборки совпали.
- Фоновое изображение в APK совпадает с оригиналом по каждому пикселю.
  Исходник 1672×941, не заявляется как 4K.

Ограничения проверки устройства:
- Эмулятор без KVM: первый запуск не завершился в отведённое время.
  Повторно AOSP Android 9 загрузился, затем упал SystemServer: DeadSystemException
  в системных процессах; PackageManager отсутствовал до установки приложения.
  APK передан в эмулятор, установка отклонена: Can't find service: package.
- Native instrumentation, screenshots, визуальная оценка всех экранов и реальная
  работа VPN на Android не подтверждены. Физическое устройство недоступно.
  Тесты реального парсера/MMKV и экранов подготовлены и скомпилированы; не запускались.
- Реальные аккаунты, оплаты, ключи пользователей и донорские VPN не использовались.

Резервная копия прежних исходников, сведения о Git HEAD и feed сохранены до правок.
Архивы старых APK сохранены на VPS с проверкой SHA-256.

--- Предыдущая версия ---
PRO1VPN Android 1.0.11 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode4000012; minSdk24, targetSdk37.

Одна HTTPS-подписка PRO1VPN на sub.pro1technology.ru. Общая валидация
импорта, записи и HTTP-перенаправлений; текущая ссылка заменяется только после
загрузки новой. Поддержка серверного Happ JSON/балансировщиков сохранена.
Старые лишние/сторонние группы архивируются локально перед удалением.
Обновлённая карточка, срок/трафик, код входа с копированием. По уточнению владельца
«Продлить подписку» открывает страницу подписки в браузере. Остальные кнопки ЛК
исправлены на lk.pro1technology.ru. Новые подписи переведены на 9 языков.

Проверки: release/lintVital, 103 JVM-теста без ошибок/пропусков,
instrumentation APK собран; всего 4m 44s. Locale checker897x9.
Пять APK с прежним сертификатом, пакет/код/ABI, CRC/DEX/ELF64/16K, уникальные
FileProvider/aliases/Probe process. SHA входов сборки совпали с исходниками.
Source ZIP совпадает с исходниками, ключи/кеши/бинарники исключены.

Границы: физическое устройство и instrumentation не запускались.
Кнопки/буфер/переход в браузер на POCO требуют проверки на устройстве.
Никаких входов в реальные аккаунты, оплат, изменений пользователей или
подключений к донорским VPN с рабочей VPS не выполняли. Подробнее ACCOUNT.txt.

--- Предыдущая версия ---
PRO1VPN Android 1.0.10 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000011; minSdk24, targetSdk37.

По отдельному изображению владельца воссоздан ленточный щит: три векторные
поверхности с градиентами, прозрачный центр. Это реконструкция по изображению,
не исходный авторский SVG. Те же кривые в Android VectorDrawable и SVG.
Двухцветная надпись PRO1VPN, LTR и масштабирование по ширине. Новый знак в шапке,
на экране обновлений, launcher (4 варианта) и уведомлениях. Светлая палитра
с лавандовым фоном; тёмная надпись светлая. Предпросмотр brand/preview.png
создан из SVG в Chromium; визуально просмотрен. Это НЕ скриншот Android UI.

На телефоне кнопка темы рядом с логотипом, на планшете — в боковой панели.
Как в системе / Светлая / Тёмная; прежняя Зелёная сохранена. Default=auto во всех
точках чтения, ранее сохранённый выбор не перезаписывается. BaseActivity обновляет
тему при возврате к ранее открытому экрану. Команды остановки/старта VPN при смене
темы не добавлялись. Локализованные названия тем повторно используются (9 языков).

Проверено:
- Release, lintVital, testPlaystoreDebugUnitTest и instrumentation APK собраны
  за 11m 36s. Существующие 94 JVM-теста прошли, 0 ошибок/пропусков.
- Locale checker: 887 текстов/вариантов в9языках; новых непереведённых подписей нет.
- Пять APK: прежний сертификат, пакет/код/ABI, CRC/DEX, ELF64/ZIP16K, FileProvider,
  aliases и Probe process. SHA входов сборки совпали с конечными исходниками.
- Source ZIP совпадает со всеми входами сборки и документами, ключи/кеши исключены.

Границы:
Физический POCO/эмулятор не проверены, instrumentation APK не запускался.
Реальные переключения темы Android, launcher cache и установка требуют проверки
на устройстве. Логотип/надпись по референсу могут отличаться от исходной геометрии
и шрифта. Никаких подключений к реальным донорским VPN с рабочей VPS не делали.
Подробнее BRANDING.txt. Остальные возможности/ограничения сохранены.

--- Предыдущая версия ---
PRO1VPN Android 1.0.9 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000010; minSdk24, targetSdk37.

Подписки автоматически обновляются при открытии/возврате главного экрана.
Настройка включена по умолчанию, явное прежнее отключение сохраняется.
ForegroundSession исключает дубли при навигации/повороте; незавершённые операции
откладывают refresh. ViewModel сохраняет запросы/занятость при повороте. Ошибка загрузки сохраняет прежний список. VPN не отключается.
Проверка версии при открытии и фоновая (~12ч) работают в любой сети; отдельный
worker скачивает APK только без тарификации. WorkManager UPDATE мигрирует ограничения
старого периодического задания без сброса расписания. При выключении автообновлений
оба задания отменяются. Установку подтверждает Android.
Уведомление сразу после обнаружения версии, до APK; дедупликация по versionCode
с файловой межпроцессной блокировкой. Запрет разрешения/канала не записывает показ.
На главной есть кнопка новой версии, включая случай запрета уведомлений.
Пояснения обновлены во всех9языках,887строк/вариантов.

Проверено:
- Release, lintVital, testPlaystoreDebugUnitTest, instrumentation APK: успешно
  за 9m 26s. 94 JVM-теста, 0 ошибок/пропусков.
- Новые5тестов foreground: холодный старт/возврат, навигация, медленная ротация,
  короткий промежуток и отложенный claim. Новые3теста политики уведомлений:
  одна версия/следующая, уже установленная/старая, запрет и последующее разрешение.
- Locale checker887x9; пятьAPK: прежнийсертификат, пакет/версия, ZIP/CRC, DEX, ABI,
  ELF64/ZIP16K, FileProvider, aliases, Probeпроцесс; SHAисходников=входысборки.
- Source ZIP совпадает со всеми входами сборки; секреты/ключи/кеши исключены.

Границы:
Физический POCO/эмулятор не проверены, instrumentation APK не запускался.
Системный показ уведомления, реальные фоновые расписания Android, открытие и
VPN на устройстве требуют runtime-проверки. Donor VPN-адреса с рабочей VPS не
проверялись. Сборка/тесты не означают проверки установки на конкретном POCO.
Остальные возможности/ограничения прежние. См. AUTO-UPDATES.md.

--- Предыдущая версия ---
PRO1VPN Android 1.0.8 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000009; minSdk24, targetSdk37.

Подключение автоматически отменяет текущую проверку пинга. Уже полученные значения
сохраняются. На устройстве сценарий нажатия ещё не проверен.

Подписка в формате Happ:
Прежний User-Agent PRO1VPN/версия/Android не попадал в распознавание JSON и групп
на сервере. Новый стандартный запрос: Happ/1.0 PRO1VPN/1.0.8 (Android),
Accept: application/json, text/plain. Старый автоматически сформированный UA
мигрирует; явно заданные другие UA провайдера сохраняются и имеют приоритет.

Полные JSON-профили хранятся как JSON-деревья без преобразования в Any/Double:
routing, balancers, DNS, observatory, burstObservatory, policy, неизвестные
поля и точные числа сохранены. Все элементы массива проверяются до удаления
прежних серверов. Поддержаны одиночный JSON, массив, base64-JSON и обычные URI.
Для отображения отдельно читается название и первый прокси; сохранённый полный
JSON передаётся штатному CUSTOM-пути Xray. JSON-маршрутизация профиля не заменяется
глобальными правилами редактора обычных URI-профилей. Режим Xray-TUN сохраняет
существующую адаптацию tun/process. После установки обновить подписки в приложении.

Проверено:
- Release, lintVital, testPlaystoreDebugUnitTest, instrumentation APK: успешно
  за 5m 13s. 86 JVM-тестов, 0 ошибок и пропусков.
- 8 новых тестов: Happ UA/старые настройки/приоритет пользователя, полный JSON
  с группой/маршрутами/DNS/наблюдением/неизвестными полями, точность >2^53,
  отказ от всего повреждённого массива, одиночный JSON и метаданные профиля.
- Отмена проверки сохраняет готовые результаты, не запускает оставшиеся серверы
  и отбрасывает поздний результат занятого потока (JVM). Кнопки подключения доступны
  при проверке: нажатие останавливает CoreTestService перед запуском VPN/запросом
  разрешения. На время разрешения повторное подключение/проверка заблокированы.
- HTTP-тест проверяет UA/Accept на обоих шагах редиректа и заголовки подписки.
- На действующем сервере serveJsonAtBaseSubscription=true. Вызов существующего
  transform на синтетических профилях без соединений к VPN: старый UA grouping=false,
  balancers=0; новый UA grouping=true, balancers=1. Боевой код/аккаунты не менялись.
- 887 строк/вариантов в девяти языках сохранены; locale checker прошёл.
- Все 5 APK: прежний сертификат, версия, пакет, ZIP/CRC, DEX, ABI, ELF64/ZIP16K,
  update FileProvider, launcher aliases, :Probe изоляция и HTTPS-канал проверены.
- Хеши исходных входов сборки совпали с конечными файлами.

Границы:
На физическом POCO установка, отображение групп и соединение через автовыбор
не проверены; instrumentation APK не запускался. Реальные донорские VPN-адреса
с рабочей VPS не проверялись. Общее число серверов зависит от подписки/сервера.
Копия полной функциональности Happ не заявляется: исправлен формат подписки.
Подробнее SUBSCRIPTIONS.md. Остальные возможности/ограничения сохраняются.

--- Предыдущая версия ---
PRO1VPN Android 1.0.7 — результат сборки, 06.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000008; minSdk 24, targetSdk 37.

Языки из присланного экрана INCY:
Русский, английский, упрощённый китайский, персидский, корейский, туркменский,
узбекский (латиница), азербайджанский (латиница), казахский и режим «Как в системе».
887 переводимых сообщений/вариантов списков в каждом из девяти каталогов.
315 сообщений вынесены из Kotlin: главная, подписки, серверы, диагностика,
обновления и ошибки установки. Локализованы уведомления и статусы служб.
Предыдущие дополнительные языки компонентов сохранены, новые сообщения для
них могут отображаться по-английски. Подробнее и происхождение переводов:
LANGUAGES.md. Машинный черновик вычитан для основных кнопок, технических терминов
и ошибок; полной проверки носителями всех языков не было.

Выбор языка пересоздаёт экраны без перезапуска VPN. Системный язык читается из
системных ресурсов; персидский использует RTL. Даты и сортировка учитывают
выбранную локаль, текст круглой кнопки вписывается по ширине. Переводы входят
в APK: приложение не обращается к сервису перевода.

Проверено:
- assemblePlaystoreRelease, testPlaystoreDebugUnitTest,
  assemblePlaystoreDebugAndroidTest: BUILD SUCCESSFUL за 1m 7s; lintVital пройден.
- 78 JVM-тестов, 0 ошибок/пропусков. Добавлены проверки девяти языков, Auto,
  прежних кодов, форматирования динамических текстов и русских bootstrap-строк.
- check-locales.py: 887 текстов/вариантов в девяти каталогах, совпадение
  подстановок, отсутствие дубликатов/маркеров, целостность примеров ссылок.
- Все девять языков найдены в скомпилированных ресурсах APK.
- Пять APK: прежний сертификат, пакет/версия, minSdk, debuggable=false,
  ZIP CRC, самостоятельность, ABI, DEX и 16-КБ выравнивание ELF64/ZIP.
- Уникальный update FileProvider, четыре launcher-alias, изоляция службы проб,
  встроенный HTTPS-канал обновлений. SHA-256 входов финальной сборки совпали.
- Серверный приёмник reports/metrics и Windows-клиент этой работой не менялись.

Границы проверки:
На физическом POCO Pad M1 установка и отображение не проверены. Instrumentation
APK собран, но не выполнен. Скриншоты новых языков не получены: предыдущие
попытки запуска программного эмулятора зависали в менеджере пакетов.
Реальные донорские VPN-адреса с рабочей VPS не проверялись; сетевые JVM-тесты
используют localhost. Имена серверов, тарифов, серверные заметки и логи ядра
сохраняют язык источника. Прежние ограничения функций — FEATURES-ANDROID.md.

--- Предыдущая версия ---
PRO1VPN Android 1.0.6 — результат сборки, 05.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000007; minSdk 24, targetSdk 37.

Настройки по присланным экранам INCY:
Четыре темы и иконки, три стиля подключения. Разделы соединения, туннеля,
провайдеров, пинга, памяти/производительности и системы. Новые настройки RU/EN;
главный экран пока RU. Маршрутизация, DNS, Mux, фрагментация, SOCKS5, HEV/Xray
TUN, MTU, таймауты и общий лимит сессий используют действующие параметры ядра.
GOMEMLIMIT/GOGC задаются до загрузки JNI; применяются при новом запуске процесса.
Уведомление на экране блокировки, отключение при screen-off, монитор памяти.
Сброс сохраняет серверы/подписки; резервные копии имеют ограничение распаковки.

Автоматизация:
Автоподключение при открытии/после перезагрузки. On-Demand в отдельной видимой
службе: любая проверенная сеть, Wi-Fi или мобильная; ручное отключение ставит
автоматику на паузу. Повторная оценка раз в минуту. Системные ограничения Android
сохраняются. Kill switch включается пользователем в системных настройках VPN.
Автообновление подписок 1/2/6/12/24 ч.; пинг при открытии и после обновления
в открытом приложении. Глобальный User-Agent. HWID выключен по умолчанию,
случайный и привязан к домену; только HTTPS, без пересылки на другой домен.

Проверки:
Xray/TCP/ICMP/HTTP GET/HTTP HEAD, 2–16 одновременных проверок; время/шкала/оба.
HTTP-запрос через отдельный локальный прокси профиля с временным паролем.
Процесс :Probe отделён от процесса действующего VPN, чтобы нативная настройка
TUN fd не затрагивала туннель. HTTP-таймаут относится к запросу, не к созданию
ядра; штатный Xray использует собственный таймаут. Нет прямого fallback,
редиректов и бесконечного чтения тела. TCP/ICMP не отправляются как качество
конкретного VPN-сервера. Смена метода отменяет старый пакет и очищает значения.

Проверено:
- assemblePlaystoreRelease, testPlaystoreDebugUnitTest,
  assemblePlaystoreDebugAndroidTest: BUILD SUCCESSFUL за 5m 5s; lintVital пройден.
- 73 JVM-теста, 0 ошибок/пропусков. Новые проверки: правила сетей,
  HTTPS/HWID, безопасная распаковка, HTTP/HEAD через прокси, CONNECT с авторизацией,
  отсутствие прямого fallback/редиректов, таймаут застрявшего запроса.
- Пять подписанных APK: прежний сертификат, ZIP CRC, пакет/версия, minSdk,
  debuggable=false, самостоятельность, ABI, DEX и 16-КБ выравнивание ELF64/ZIP.
- Уникальные FileProvider, адрес обновлений, четыре launcher-alias,
  изоляция процесса проверки и отсутствие экспортированной службы автоматики.
- SHA-256 исходных входов сборки сопоставлены с файлами перед упаковкой.
- Серверный приёмник reports/metrics и Windows-релиз не изменялись.

Границы:
Полная таблица по 12 скриншотам: FEATURES-ANDROID.md. Автоматическая облачная
синхронизация, полный набор языков INCY, правила по SSID, скрытие системного
VPN-индикатора и отдельные лимиты TCP/UDP не заявлены. APNs/iCloud/Live Activity
заменены доступными возможностями Android там, где есть аналог.
Физический POCO Pad M1 недоступен: установка, фоновые правила, нативные новые
HTTP-пробы и реальный VPN не проверены на устройстве. Instrumentation APK
собран, но не выполнен. Новых скриншотов нет: предыдущие попытки запуска
программного эмулятора зависали в менеджере пакетов. Реальные донорские
VPN-адреса с рабочей VPS не проверялись; сетевые JVM-тесты используют localhost.

--- Предыдущая версия ---
PRO1VPN Android 1.0.5 — результат сборки, 05.10.2026 UTC
Пакет ru.pro1vpn.android; versionCode 4000006; minSdk 24, targetSdk 37.

Интерфейс:
Светлая палитра Windows-клиента, читаемые статусы, иконки вкладок, отдельные
кнопки избранного, цветной пинг, поиск/сброс фильтров, сохранение состояния при
повороте. Сводка подписки и шкала расхода при известных данных. Боковая
прокручиваемая навигация от 840 dp; основной контент до 1120 dp; две колонки
от 1100 dp при подходящем масштабе шрифта. Отдельные экраны настроек/диагностики.

Проверки серверов:
Выбор 2/4/8/16 одновременных запросов, по умолчанию 8; общий пул не более 16.
Вместо задачи на каждый сервер — ограниченное число потребителей очереди.
Ошибки учитываются в результатах и прогрессе. Отмена не запускает новые задания
и отбрасывает поздние результаты; выполняющийся нативный запрос завершается
по собственному тайм-ауту. Для WireGuard/Hysteria отключён ложный TCP precheck.

Диагностика:
Закрытая схема Windows; только числовые значения, разрешённые статусы и коды
ошибок. Подключения/отключения, длительность сессий, выход ядра, ошибки,
проверки и минутный объём VPN-трафика при включённом мониторе скорости.
Ссылки подписки, пароли, ключи, исходные логи и история сайтов не отправляются.
Серверы в измерениях обозначаются хешами, ID пользователя/устройства нет.
Сложные маршруты и цепочки не приписываются одному серверу.

Журнал: до 200 замеров и 200 остальных событий, не старше 7 дней.
Очередь: до 8 подробных отчётов и 20 пакетов по 50 измерений, срок 7 дней.
Атомарный файл в noBackupFilesDir и межпроцессная блокировка. WorkManager:
ограничение по наличию сети, повторная доставка, периодическая страховочная
проверка очереди каждые 15 минут (Android может отложить). Редиректы запрещены,
лимит ответа 4096 байт; удаление из очереди только после HTTP 201 с тем же UUID.
Измерения включены по умолчанию, подробные автоотчёты выключены, как в Windows.
Переключатели и ручная отправка: Ещё → Диагностика и отчёты.

Сервер:
HTTPS /client-reports/v1 и /client-reports/metrics на cabinet.pro1technology.ru.
Совместимость Android добавлена поверх действующего образа приёмника; metrics.py,
данные Windows и Caddy сохранены. Образ pro1-client-reports:android-1.0.5.
Предыдущий контейнер сохранён для отката:
pro1-client-reports-backup-android-105-20261005194639.
Данные приватны: /var/lib/pro1-client-reports. Получение отчётов по HTTP запрещено.

Проверено:
- assemblePlaystoreRelease, testPlaystoreDebugUnitTest,
  assemblePlaystoreDebugAndroidTest: BUILD SUCCESSFUL за 5m; lintVital пройден.
- 65 JVM-тестов, 0 ошибок, 0 пропусков. Новые тесты: ограничение параллелизма,
  отсутствие поздних результатов после отмены, исключения проверки, закрытая
  схема/классификация ошибок, очередь после перезапуска, одновременная запись,
  срок/размер очереди, настройки, неверный receipt, редиректы и большой ответ.
- 11 тестов действующего серверного обработчика (Android + Windows reports/metrics).
- Синтетические JSON из JVM-кода Android отправлены на действующий HTTPS-приёмник:
  оба метода дали 201 с совпавшим UUID, повторная доставка засчитана один раз,
  GET дал 405. Проверено приватное хранение; удалены только собственные тестовые
  UUID и строка агрегата с уникальным синтетическим ключом.
- Все пять подписанных APK: прежний сертификат, ZIP CRC, пакет/версия, minSdk,
  debuggable=false, самостоятельность, ABI, DEX, 16-КБ выравнивание ELF64/ZIP,
  уникальные FileProvider, адрес обновлений, новая схема и строки интерфейса.

Ограничения:
Физический POCO Pad M1 недоступен: установка, фоновая работа Android и VPN через
пользовательскую подписку не проверены на устройстве. Instrumentation APK только
собран. Новых скриншотов нет: доступный программный эмулятор ранее зависал при
установке предыдущей версии. Старые снимки относятся к 1.0.0. Прямые проверки
донорских VPN-адресов с рабочей VPS не запускались.

--- Предыдущая версия ---
PRO1VPN Android 1.0.4 — результат сборки, 05.10.2026 UTC
Пакет: ru.pro1vpn.android; versionCode 4000005.
Android 7.0+ (minSdk 24), targetSdk 37; release, debuggable=false.
Сервер обновлений: https://cabinet.pro1technology.ru/updates/android/update.json

Изменения:
- Установка обновлений через системную сессию PackageInstaller вместо ACTION_VIEW
  с content URI. Копия в установщике проверяется повторным чтением, по SHA-256
  и размеру; запись синхронизируется перед подтверждением установки.
- Проверки пакета, версии и сертификата сохранены. Повреждённая или неполная
  передача отменяет сессию до commit. Пользователь подтверждает установку.
- Результат установки возвращается в приложение: отмена, запрет, конфликт,
  недостаток памяти, несовместимость, недействительный пакет; сохраняется код
  Android без произвольных путей/URL из системного сообщения.
- Добавлены повторное скачивание APK и прямая загрузка через браузер.
- Перед публикацией проверяются ZIP CRC, подпись прежним ключом, самостоятельность
  APK, ABI относительно имени файла, DEX для Android 7, выравнивание ZIP/ELF64.

Проверено:
- assemblePlaystoreRelease, assemblePlaystoreDebug, assemblePlaystoreDebugAndroidTest
  и testPlaystoreDebugUnitTest: BUILD SUCCESSFUL, 8m16s. lintVital пройден.
- 53 JVM-теста, 0 ошибок/пропусков. Включены повреждение данных при передаче
  в установщик, обрезанный источник, отказ commit при ошибке, классификация отказов.
- Все пять APK: пакет/версия, minSdk, debuggable=false, встроенный сервер,
  уникальные компоненты FileProvider, целостность ZIP, подписи v2/v3,
  архитектуры, ресурсы, DEX и ELF64 с выравниванием 16 КБ.
- Сертификат совпадает с опубликованной 1.0.0:
  8d5f8209cfa172fce5f5d1d37ae477099b2c6a8aa9515ab0d727075c551b9943.
- ARM64 APK 1.0.3 заново скачан по HTTPS 05.10: 28798141 байт,
  SHA-256 a30689305de1d6dfd4895dcfca05a4f6c138993f2b1ba2d7aa4c81891f6d69d6.
  Совпадает с оригиналом. Повреждение серверного файла не воспроизведено.

Проверка Android во время выполнения:
- Чистый AOSP Android 9 x86_64 запущен без KVM, с новым ext4 userdata;
  boot завершён за 329562 мс. Попытка pm install подписанной предыдущей 1.0.3
  не вернула результат за 180 с. До установки новой 1.0.4 тест не дошёл.
- Нельзя считать эту проверку успешной или причиной ошибки на POCO.
  Эмулятор остановлен; новые скриншоты не получены. Instrumentation APK собран,
  но Android-тесты и реальный диалог PackageInstaller не выполнены.

Ограничение: точная причина повторной ошибки на POCO Pad M1 не подтверждена:
пользователь указал модель, но не уточнил браузер/старый встроенный установщик
и точный текст ошибки. Физического POCO для проверки здесь нет.
При ошибке в старой версии нужно один раз скачать новый ARM64 APK через браузер
и установить поверх приложения, без удаления данных.

--- Предыдущая версия ---
PRO1VPN Android 1.0.3 — результат сборки, 01.10.2026 UTC
Пакет: ru.pro1vpn.android; versionCode 4000004.
Android 7.0+ (minSdk 24), targetSdk 37; release, debuggable=false.
Сервер обновлений: https://cabinet.pro1technology.ru/updates/android/update.json

Изменения:
- Исправлен конфликт компонентов FileProvider между cache и updates.
  У updates теперь собственный класс UpdateFileProvider. Перед передачей APK
  установщику также проверяются размер и SHA-256 данных через content URI.
- Текущий стиль Windows 0.3.6: большая кнопка VPN, выбранный сервер,
  отдельные вкладки VPN / Серверы / Подписка / Ещё.
- Пинг всех серверов или выбранного через ядро на устройстве, прогресс,
  остановка; сортировка по пингу/имени, поиск, доступные и избранные.
  Избранное привязано к подписке и названию, а не меняющемуся GUID сервера.
- Сохраняются заголовки subscription-userinfo и profile-title конечного
  ответа сервера, в том числе после редиректа; показаны трафик, лимит и срок.
  Отсутствующие данные явно обозначены, они не заменяются нулём/бессрочностью.
- На карточке подписки доступны обновление, замена HTTPS-ссылки и удаление.
  Новая ссылка сначала загружается во временную группу; при неуспешной
  загрузке старая подписка сохраняется. Удаление касается только её данных,
  включая исходные JSON-конфигурации серверов. Фоновые обновления и операции
  сериализованы файловой блокировкой между процессами приложения.
- Автообновление серверов настраивается по подпискам, для новых — 6 часов.
- Кабинет открывается в браузере; расширенная маршрутизация и журнал доступны.
- Идентификатор, ключ подписи и ядро VPN сохранены.

Проверки сборки:
- assemblePlaystoreRelease + lintVital: успешно.
- testPlaystoreDebugUnitTest: 47 тестов, 0 ошибок, 0 пропусков.
- Регрессионный тест дублирующихся компонентов FileProvider воспроизвёл
  ошибку на старом манифесте и прошёл после исправления.
- Проверены разбор метаданных, отсутствие/нулевые значения, переполнение,
  заголовки после HTTP-редиректа на локальном тестовом сервере,
  порядок успешных/непроверенных/неответивших серверов и фильтры.
- Все 5 APK подписаны прежним ключом; apksigner verify успешно.
- Проверены package ID, версия, min/target SDK, отсутствие debuggable,
  встроенный HTTPS-адрес обновлений и нативный туннель.
- Во всех пяти итоговых манифестах компоненты провайдеров уникальны.
- Тестовый debug APK и Android instrumentation APK собраны успешно.

Проверка устройства и ограничения:
- Android 9 без аппаратного ускорения загрузился, но системный менеджер
  пакетов не завершил удаление прежнего тестового APK за 90 секунд; затем
  обращения ADB к системным службам перестали отвечать в заданные сроки.
  Попытка установки и instrumentation-тесты не завершены. Ошибка произошла
  до запуска новой версии приложения; успешную установку этим не подтверждаем.
- Android-тесты чтения content URI, сохранения старой подписки при неудачной
  замене, удаления её данных и снимков UI подготовлены и скомпилированы,
  но в этой среде не выполнены. Новых скриншотов 1.0.3 нет.
- Подключение VPN, пинг настоящих серверов и установка через интерфейс
  Android на физическом телефоне не проверены. Подписки владельца и доноры
  с рабочей VPS для тестирования не использовались.

Обновление с 1.0.0–1.0.2: один раз открыть APK 1.0.3 в браузере и установить
поверх существующего приложения. 1.0.0 не имеет встроенных обновлений;
в 1.0.1/1.0.2 старая передача APK установщику может не работать.
Исходники: PRO1VPN-1.0.3-source.zip, корневая папка android-client/.
Основа: v2rayNG 2.2.6 и AndroidLibXrayLite v26.7.5; GPL-3.0.
