v0.2.0
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 releaserunetfreedom/russia-v2ray-rules-dat. - Bundled route-data остаётся fallback, если live download недоступен.
- Добавлены новые rule-set:
geosite-category-rugeoip-ru-whitelistgeoip-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_namerouting внутри 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. - Вынесены отдельные контроллеры:
RuntimeLifecycleControllerRuntimeEventControllerProxyRuntimeControllerProxyHealthControllerProxySelectionControllerActiveProxyIpControllerSubscriptionRuntimeControllerSingboxConfigCoordinatorAppSettingsController
app.dartтеперь меньше отвечает за ping/runtime/settings/subscription orchestration напрямую.- Config build/apply logic частично вынесена в coordinator.
- Runtime events приведены к typed event handling.
- Добавлена диагностика config apply policy:
logOnlysafeCoreRestartfullServiceRestart
- Добавлена диагностика 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 analyzeflutter testandroid/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.