Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Jun 19:59
· 68 commits to master since this release

Etonify 0.2.0

Главное

  • Улучшена стабильность запуска, остановки и перезапуска VPN.
  • Исправлены гонки stop/start, из-за которых клиент мог зависать на “Запуск ядра”.
  • Улучшено восстановление после смены сети, сна устройства и пересоздания приложения.
  • Переработана система проверки пинга и статусов прокси.
  • Добавлены live РФ-маршруты из runetfreedom/russia-v2ray-rules-dat.
  • Добавлен Split DNS для российских direct-ресурсов.
  • Добавлены настройки User-Agent и HWID/X-HWID для подписок.
  • Добавлены backup/export/import профилей и настроек.
  • Начат большой разбор монолитного app.dart на отдельные контроллеры.

VPN и стабильность

  • Улучшен lifecycle Android VPN service.
  • Добавлена защита от stale start/stop токенов.
  • Старый stop больше не должен ломать новый start при быстром перезапуске.
  • Добавлены watchdog и timeout для запуска runtime.
  • Исправлены сценарии, где UI мог показывать неправильное состояние после смерти/пересоздания процесса.
  • Улучшена диагностика native start/reload/stop.
  • Добавлена проверка и переутверждение default network interface.
  • Улучшено поведение при смене Wi-Fi ↔ mobile network.
  • Добавлен controlled recovery, если core теряет рабочий network interface.
  • Улучшена обработка stop timeout и stale runtime state.

Пинг и проверка прокси

  • URLTest events больше не должны теряться при быстрых обновлениях.
  • Пинг замораживается во время start/restart/stop, чтобы UI не портился временными ошибками.
  • Добавлен fallback health-check прокси endpoint.
  • Улучшены статусы checking, reachable, unreachable, stale.
  • Старый рабочий ping сохраняется во время transition.
  • Добавлена диагностика больших задержек и unavailable-событий.
  • Добавлена защита от ложных ping-обновлений во время нестабильного runtime.
  • Улучшена ручная проверка всех серверов.
  • Добавлены тесты для ProxyRuntimeController и ProxyHealthController.

Выбор сервера

  • Улучшена синхронизация выбранного сервера между UI, metadata, config и runtime.
  • Добавлен ProxySelectionController.
  • Перед стартом VPN выбранный proxy tag синхронизируется с подпиской.
  • Runtime selection больше не должен молча перетирать выбор пользователя без подтверждения.
  • Добавлен timeout ожидания runtime-confirm для выбранного сервера.
  • Исправлены случаи, когда после выбора сервера запускался старый сервер.

Подписки

  • Новый flow добавления подписки через bottom sheet.
  • Поддержка добавления через QR, буфер обмена, файл и ручной ввод.
  • Исправлен счётчик серверов в подписке.
  • Счётчик теперь считает пользовательские прокси, без внутренних _group_only записей.
  • Данные подписки догружаются из payload storage, чтобы список не показывал старое количество.
  • Добавлены настройки User-Agent при добавлении подписки.
  • Добавлена отправка HWID/X-HWID при добавлении подписки.
  • Добавлена возможность указать свой HWID.
  • Default User-Agent обновлён до Etonify/0.2.0.
  • Улучшена обработка Happ-ссылок и сценариев, где подписка требует HWID.
  • Добавлены настройки автообновления подписки.
  • Улучшено сохранение selected proxy при refresh подписки.
  • Добавлены тесты для fetcher/store/subscription flow.

РФ-маршруты и DNS

  • Добавлена загрузка live sing-box.zip из latest release runetfreedom/russia-v2ray-rules-dat.
  • Bundled route-data остаётся fallback, если live download недоступен.
  • Добавлены новые rule-set:
    • geosite-category-ru
    • geoip-ru-whitelist
    • geoip-ru
  • Улучшен порядок правил:
    • ru-blocked идёт через VPN
    • российские direct/whitelist ресурсы идут напрямую
    • остальное идёт через выбранный proxy
  • Добавлен отдельный DNS resolver для российских direct-доменов.
  • Добавлен Split DNS для РФ-ресурсов.
  • Добавлена настройка RU direct DNS resolver.
  • Добавлена диагностика источника route-data: live/bundled, release tag, verified files.
  • Добавлены тесты порядка route rules и DNS rules.

Split tunneling

Split tunneling в этой версии не считается рабочей стабильной функцией.

Что изменилось технически:

  • Начата переработка split tunneling под Android-level VpnService модель.
  • Добавлены нормализация и ограничения списка выбранных приложений.
  • Убрана часть конфликтующей логики package_name routing внутри sing-box config.
  • Добавлены тесты на ожидаемый config behavior.

Текущий статус:

  • функция в версии 0.2.0 временно выключена и вернётся позже;
  • стабильная реализация split tunneling будет отдельной задачей после 0.2.0.

Настройки

  • Добавлен режим производительности:
    • Standard
    • Economy
  • Standard теперь использует более спокойные значения URLTest/lookup.
  • Economy уменьшает лишние фоновые проверки и location lookup.
  • Добавлена настройка memory limit для libbox/core.
  • При отключении memory limit показывается предупреждение.
  • Добавлена настройка TLS fragmentation:
    • disabled
    • record fragmentation
    • fragment mode
  • Добавлены DNS-настройки для РФ-маршрутов.
  • Настройки вынесены в AppSettingsController.
  • Добавлены тесты миграции и сохранения новых настроек.

Backup / Import / Export

  • Добавлен экспорт настроек.
  • Добавлен экспорт профиля.
  • Поддерживается encrypted profile backup.
  • Поддерживается plain profile backup с предупреждением.
  • Добавлен импорт backup-файлов.
  • Добавлена проверка формата и минимальной версии клиента.
  • Добавлена AES-256-GCM + PBKDF2 логика для encrypted backup.
  • Добавлены тесты backup service.

Обновления приложения

  • Версия проекта обновлена до 0.2.0+4.
  • Улучшен экран проверки обновлений.
  • Добавлены режимы установки APK:
    • спросить
    • вручную
    • автоматически
  • Добавлена проверка SHA256 скачанного APK.
  • Добавлена проверка текущей установленной версии через native PackageInfo.
  • GitHub release workflow теперь валидирует pubspec.yaml, build number и Android metadata.
  • Исправлена путаница со старым Etonify/0.1.1 в User-Agent.

UI / UX

  • IP внизу теперь можно обновлять нажатием.
  • Добавлена новая анимация обновления IP.
  • Улучшены статусы proxy latency.
  • Добавлена сортировка прокси.
  • Улучшено отображение unavailable/error состояния прокси.
  • Улучшен экран подписок.
  • Улучшены About/Team блоки.
  • Добавлена ссылка на Telegram.
  • Добавлены Terms of Use и Privacy Policy.
  • Добавлен экран принятия legal-документов.
  • Улучшены тексты локализации RU/EN.

Внутренняя архитектура

  • Начат разбор большого app.dart.
  • Вынесены отдельные контроллеры:
    • RuntimeLifecycleController
    • RuntimeEventController
    • ProxyRuntimeController
    • ProxyHealthController
    • ProxySelectionController
    • ActiveProxyIpController
    • SubscriptionRuntimeController
    • SingboxConfigCoordinator
    • AppSettingsController
  • app.dart теперь меньше отвечает за ping/runtime/settings/subscription orchestration напрямую.
  • Config build/apply logic частично вынесена в coordinator.
  • Runtime events приведены к typed event handling.
  • Добавлена диагностика config apply policy:
    • logOnly
    • safeCoreRestart
    • fullServiceRestart
  • Добавлена диагностика route-data, выбранной подписки, route rule count и runtime health.

Android / Native

  • Улучшен MeowBoxService.
  • Улучшен MeowDefaultNetworkMonitor.
  • Улучшен SingboxController.
  • Добавлены runtime intent/state diagnostics.
  • Добавлена диагностика memory limit.
  • Добавлены методы для network interface state.
  • Улучшено поведение Quick Settings tile.
  • Добавлена защита от stale service stop.
  • Улучшено восстановление command/runtime state после process recreate.

Тесты и проверка

Проверено:

  • flutter analyze
  • flutter test
  • android/gradlew.bat app:compileDebugKotlin

Добавлены/обновлены тесты для:

  • runtime lifecycle
  • runtime events
  • proxy runtime
  • proxy health
  • proxy selection
  • active proxy IP
  • subscription runtime
  • subscription fetcher/store
  • Russia route data
  • settings migrations
  • backup service
  • widget/UI behavior
  • release workflow
  • sing-box config builder

Notes

Это обновление в первую очередь про стабильность и фундамент. Обновление имеет недочёты и ошибки которые будут исправляться с обновлениями. Часть внутренних изменений сделана, чтобы дальше быстрее чинить VPN/runtime баги без риска ломать весь app.dart.