EN
Freeze rewritten to Binder IPC — should fix HyperOS / MIUI / HiOS
The freeze/unfreeze path was rewritten to use Shizuku Binder IPC directly (IPackageManager.setApplicationEnabledSetting, IActivityManager.forceStopPackage) instead of shell commands. OEM shells on HyperOS, MIUI, and HiOS silently no-op or time out pm disable-user; the Binder path is untouched by vendor sandboxes — so this should make freeze work on those builds. This is a beta precisely because we haven't been able to confirm the fix on real devices. If you're on HyperOS / MIUI / HiOS, please test and report back in the relevant issue (#7, #33, #44, #58) — confirmation or "still broken, here's the log".
Home screen widget
One-tap stealth toggle on the home screen. Shows live status ("Stealth ON / OFF") with intermediate states during freeze and VPN connect. Widget and QS tile now always return to the real VPN state even if an operation hangs — freeze calls have a 5 s per-app timeout, and the whole toggle has a 90 s hard ceiling.
NeverRestrictApps — keyboards, IMS, 2FA are never frozen
A built-in blocklist prevents system input methods, accessibility services, and authenticator apps from being frozen regardless of group assignment.
anubis:// URL scheme (#9)
Launch any managed app directly via anubis://<packageName> — works with Tasker, AppFolderWidget, and other launchers. Unmanaged packages are silently rejected.
Multi-select app assignment (#80)
Assign multiple apps to a group in one operation.
Shizuku status — clearer states and one-tap recovery (#84, #85)
The single "unavailable" status was split into NOT_INSTALLED / NOT_RUNNING / NO_PERMISSION / READY. The Shizuku card on Home and Settings is now clickable in every non-ready state — opens the download page, launches the Shizuku app, or requests permission. Eliminates the duplicate status banners that appeared when Shizuku was missing.
Manual unfreeze warning for LOCAL apps (#81)
When VPN is active, unfreezing an app that belongs to a "local-only" group now shows a confirmation dialog explaining that the app will leak through the active VPN. The freeze action and bulk operations are unaffected.
Lint pass — KTX idioms (PR #83 by @elagin)
Codebase-wide cleanup: Uri.parse(...) → .toUri(), Bitmap.createBitmap(...) → createBitmap(...), prefs.edit().putX().apply() → prefs.edit { putX() }, removed Context./Activity. prefixes on constants, dropped unused imports across 12 files.
Other
- QS tile and all entry points replaced
delay(200)workarounds withawaitUserService()— noticeably faster on warm Shizuku - Default app sort changed to GROUP → PACKAGE (groups stay together)
- Own dummy VPN is now filtered by
ownerUidinstead of a time-based flag — more reliable force-disconnect detection
RU
Заморозка переписана на Binder IPC — должно починить HyperOS / MIUI / HiOS
Заморозка и разморозка переписаны на Shizuku Binder IPC напрямую (IPackageManager.setApplicationEnabledSetting, IActivityManager.forceStopPackage) вместо shell-команд. OEM-оболочки на HyperOS, MIUI и HiOS молча игнорируют или зависают на pm disable-user; Binder-путь вендорными sandbox-ами не затрагивается — это и должно починить заморозку на таких прошивках. Это beta именно потому, что подтвердить фикс на реальных устройствах пока не удалось. Если у вас HyperOS / MIUI / HiOS — пожалуйста, проверьте и отпишитесь в соответствующем issue (#7, #33, #44, #58): «работает» или «не работает, вот лог».
Виджет на рабочий стол
Включение/отключение stealth одним нажатием прямо с рабочего стола. Показывает текущее состояние ("Stealth ON / OFF") и промежуточные статусы в процессе заморозки и подключения VPN. Виджет и плитка всегда возвращаются в реальное состояние VPN, даже если операция зависла — у каждого binder-вызова таймаут 5 с, у всей операции — 90 с.
NeverRestrictApps — клавиатуры, IMS, 2FA никогда не замораживаются
Встроенный блок-лист защищает системные методы ввода, accessibility-сервисы и приложения аутентификации от заморозки вне зависимости от назначенной группы.
URL-схема anubis:// (#9)
Запуск любого управляемого приложения через anubis://<packageName> — совместимо с Tasker, AppFolderWidget и другими лаунчерами. Неуправляемые приложения отклоняются без каких-либо действий.
Множественный выбор при назначении группы (#80)
Назначать несколько приложений в группу теперь можно за одну операцию.
Статус Shizuku — понятные состояния и действие в один тап (#84, #85)
Единый «недоступен» разнесён на NOT_INSTALLED / NOT_RUNNING / NO_PERMISSION / READY. Карточка Shizuku на главном экране и в настройках теперь кликабельна в любом не-готовом состоянии — открывает страницу загрузки, запускает Shizuku или запрашивает разрешение. Убраны дублирующиеся плашки статуса, которые появлялись при отсутствии Shizuku.
Предупреждение при ручной разморозке LOCAL-приложений (#81)
При активном VPN разморозка приложения из группы «только локально» теперь показывает диалог-подтверждение с предупреждением, что трафик утечёт через активный VPN. Заморозка и массовые операции не затронуты.
Lint-проход — KTX-идиомы (PR #83, @elagin)
Чистка по всей кодовой базе: Uri.parse(...) → .toUri(), Bitmap.createBitmap(...) → createBitmap(...), prefs.edit().putX().apply() → prefs.edit { putX() }, убраны префиксы Context./Activity. у констант, удалены неиспользуемые импорты в 12 файлах.
Прочее
- Плитка QS и все точки входа заменили
delay(200)наawaitUserService()— заметно быстрее при тёплом Shizuku - Дефолтная сортировка приложений GROUP → PACKAGE (группы остаются вместе)
- Собственный dummy VPN теперь фильтруется по
ownerUidвместо флага по времени — более надёжное определение принудительного отключения