Skip to content

Releases: Foxlape/GhostMode

Ghost Mode v0.2.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 17:54

Fixed

  • "On" while calls still came through (#6). IMS packages are disabled with || true, so when the system refused, the app still reported success. Ghost Mode now checks the result and warns that the IMS service is still active and VoLTE / Wi-Fi Calling calls may get through.
  • Samsung One UI preset also disables the IMS service package the system actually uses, in case newer One UI releases ship it under a different name.
🇷🇺 На русском

Исправление для Samsung и других телефонов, где не удавалось отключить IMS.
• Если система не даёт отключить службу IMS, Ghost Mode больше не делает вид, что всё в порядке, а предупреждает: звонки по VoLTE / Wi-Fi Calling могут доходить
• Пресет Samsung One UI также отключает IMS-пакет, который реально использует система


Verify: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 17:18

A rework of the core and a new interface. The main goal of this release is that turning Ghost Mode off always returns the phone to exactly the state it was in before — whatever happens in between.

Fixed

  • Restore after switching preset or SIM. Turning off used the preset and SIM mode selected at that moment. Switching them while the mode was on ran the wrong restore commands — for example, Samsung IMS packages stayed disabled. The app now records what it applied and reverts exactly that.
  • Universal preset left VoLTE broken. It disabled the detected IMS service (e.g. com.shannon.imsservice on Pixel) but never re-enabled it. Disabled packages are now tracked and re-enabled on turn-off; packages you had disabled yourself stay untouched. Diagnostics offer a one-tap repair for packages left disabled by older versions.
  • preferred_network_mode restored to 0. Samsung and Android 9–11 presets wrote 0 (GSM/WCDMA only, no LTE) on turn-off. Every settings put key is now restored to its original value (or deleted if it did not exist); the same applies to the Samsung VoLTE switches, which were always forced back on.
  • Stale network mask. The original mask was captured once and reused forever. It is now captured on every activation; an LTE-only reading is never taken as the original. Android builds that print network type names instead of a bitmask are parsed correctly instead of falling back to "all networks".
  • Reboot handling. After a reboot the app reset its state to "off", although most changes (mask, settings, disabled packages) survive a reboot — the phone could stay LTE-only or unreachable without the app knowing. Now the mode is re-applied automatically when root or Sui is available; otherwise a notification offers Re-apply or
    Turn off.
  • Schedule, timer, widget, notification action and shortcuts failed silently on Shizuku when the app process was not running, because the Shizuku binder arrives asynchronously. They now wait for it.
  • One shell connection for the whole app. Every component created its own Shizuku connection; when one of them unbound, it killed the service used by the others. Toggles from the tile and the app could also run at the same time. Everything now shares one connection and one lock.
  • Shizuku restarts. After Shizuku was restarted, all commands timed out until the app was restarted. A race while binding the service could also cause 10-second timeouts.
  • Root command timeout was never enforced: output was read before waiting, so a hanging command blocked forever.
  • Auto turn-off timer was not cancelled by a manual turn-off and could switch off a later session.
  • Launcher shortcuts ran again on every screen rotation, theme or language change.
  • Leaving the app during a toggle could cancel the command sequence halfway.
  • Update check never worked — the INTERNET permission was missing.
  • English UI showed Russian texts for built-in presets, log notes and import messages.
  • About showed a stale version number; duration units were not translated.
  • Diagnostics always reported mobile data as active — it is now actually checked.
  • Statistics ignored sessions crossing midnight or the 7-day boundary.
  • The chosen language was lost after a restart on Android 12 and older.
  • White flash on start in the dark theme; missing edge-to-edge layout before Android 15.
  • An unexpected error in the schedule receiver could crash the app.
  • Removed the empty "Buy me a coffee" dialog.
  • "Both SIMs" on a single-SIM phone ran every slot-specific command against the empty slot and reported errors; slots without a ready SIM card are now skipped.
  • "Add Quick Settings tile" did nothing when the tile was already added or the firmware does not support the request; the result is now shown, with manual instructions when needed.

Added

  • New interface. Three tabs (Home, Presets, Settings); a large animated switch; live status (active time, preset, SIM); auto turn-off timer on the home screen; quick tiles for SIM, schedule, statistics and diagnostics; alert cards only when something needs attention (access, reboot, exact alarms, battery, update).
  • Presets: every command is visible; placeholders {{SAVED_MASK}}, {{IMS_PACKAGES}} and -s 0 are documented in the editor.
  • Diagnostics per SIM: network types, bound IMS service, mobile data, disabled IMS packages with a repair action.
  • Statistics: 7-day chart and recent sessions.
  • Command log: full-screen, copy the whole log for bug reports.
  • Dynamic colors (Android 12+), redesigned widget, launcher icon and Quick Settings tile states.
  • Fastlane metadata for F-Droid / IzzyOnDroid (#3).

Changed

  • The update check is opt-in and off by default; without it the app never accesses the network.
  • Download Shizuku opens the latest release on GitHub instead of Google Play, which is missing or disabled on many phones.
  • The preset and SIM selection are locked while the mode is on.
  • Importing presets shows every command and requires confirmation — imported commands run with shell/root rights.
  • The Quick Settings tile asks to unlock the device first on a secure lock screen.
  • A partial failure is reported ("some commands failed") with a shortcut to the log.
  • The dependency-metadata block is no longer embedded in the APK; app data is excluded from backups and device transfer (it is device-specific modem state).
  • versionCode scheme is now major × 10000 + minor × 100 + patch (0.2.0 → 200).
🇷🇺 На русском

Полная переработка и новый дизайн.
• Выключение возвращает ровно то, что было изменено, даже после смены пресета/SIM или перезагрузки
• Исправлено: «Универсальный» оставлял VoLTE отключённым; preferred_network_mode восстанавливался в 3G
• После перезагрузки режим применяется заново (root/Sui) или приходит уведомление
• Расписание, таймер, виджет и плитка надёжно работают с Shizuku
• Новый интерфейс: вкладки, диагностика по SIM, статистика за 7 дней
• Проверка обновлений — только по желанию


Verify: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.16

Choose a tag to compare

@Foxlape Foxlape released this 30 Aug 22:15

Changed

  • Samsung One UI preset: turns off volte_vt_enabled and enhanced_4g_mode_enabled and sends CARRIER_CONFIG_CHANGED so the modem drops VoLTE registration without a reboot. Both keys are set back to 1 on turn-off.
🇷🇺 На русском

Изменено

  • Пресет Samsung One UI выключает volte_vt_enabled и enhanced_4g_mode_enabled и отправляет CARRIER_CONFIG_CHANGED, чтобы модем снял регистрацию VoLTE без перезагрузки. При выключении режима оба ключа возвращаются в 1.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.15

Choose a tag to compare

@Foxlape Foxlape released this 29 Aug 13:01

Added

  • Diagnostics dump volte/ims keys from the secure, global and system settings tables.

Changed

  • Samsung One UI preset description mentions that some models drop VoLTE registration only after a reboot.
🇷🇺 На русском

Добавлено

  • Диагностика выгружает ключи volte/ims из таблиц настроек secure, global и system.

Изменено

  • В описании пресета Samsung One UI указано, что некоторые модели снимают регистрацию VoLTE только после перезагрузки.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.14

Choose a tag to compare

@Foxlape Foxlape released this 28 Aug 18:46

Added

  • Diagnostics list installed IMS packages (pm list packages | grep -i ims).

Removed

  • com.sec.ims from the Samsung preset — the package does not exist on the S24 Ultra.
🇷🇺 На русском

Добавлено

  • Диагностика выводит список установленных IMS-пакетов (pm list packages | grep -i ims).

Удалено

  • com.sec.ims из пресета Samsung — такого пакета нет на S24 Ultra.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.13

Choose a tag to compare

@Foxlape Foxlape released this 26 Aug 19:56

Changed

  • Samsung One UI preset disables both Samsung IMS stacks (com.sec.imsservice and com.samsung.android.imsservice); missing packages no longer fail the preset.
🇷🇺 На русском

Изменено

  • Пресет Samsung One UI отключает оба IMS-стека Samsung (com.sec.imsservice и com.samsung.android.imsservice); отсутствующие пакеты больше не приводят к ошибке.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.12

Choose a tag to compare

@Foxlape Foxlape released this 25 Aug 20:29

Fixed

  • Diagnostics read the real modem state instead of assuming "blocked" while the mode was on.

Changed

  • Samsung One UI preset for S24-class devices: IMS disabled at the telephony level, LTE-only mask and preferred_network_mode LTE-only for every subscription.
🇷🇺 На русском

Исправлено

  • Диагностика читает реальное состояние модема, а не считает звонки заблокированными, пока режим включён.

Изменено

  • Пресет Samsung One UI для устройств класса S24: IMS отключается на уровне телефонии, маска LTE-only и preferred_network_mode LTE-only для всех подписок.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.11

Choose a tag to compare

@Foxlape Foxlape released this 21 Aug 19:46

Added

  • Update check against GitHub Releases.
  • Theme selection: system, dark, light.
  • Prompt to disable battery optimization so the schedule and timer fire on time.
  • Auto turn-off timer: 30 min, 1 h, 2 h, until morning.
  • Launcher shortcuts: turn on, turn off, turn on for 1 hour.
🇷🇺 На русском

Добавлено

  • Проверка обновлений на GitHub.
  • Выбор темы: системная, тёмная, светлая.
  • Предложение отключить оптимизацию батареи, чтобы расписание и таймер срабатывали вовремя.
  • Таймер автовыключения: 30 мин, 1 ч, 2 ч, до утра.
  • Ярлыки: включить, выключить, включить на 1 час.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.10

Choose a tag to compare

@Foxlape Foxlape released this 21 Aug 17:29

Security

  • Signing passwords removed from the repository; release signing reads keystore.properties or environment variables. The signing key itself did not change.

Fixed

  • Shell commands (su, sh, Shizuku) time out instead of hanging the app in the "running" state.
  • Shizuku user service reconnects after a disconnect; binding times out after 10 s.
  • Simultaneous toggles from the tile, widget and schedule no longer corrupt the state.
  • The mode is reported as off only when restore commands actually succeeded.
  • Statistics no longer show negative durations while the mode is on.
🇷🇺 На русском

Безопасность

  • Пароли подписи удалены из репозитория; подпись читается из keystore.properties или переменных окружения. Сам ключ не менялся.

Исправлено

  • Shell-команды (su, sh, Shizuku) завершаются по таймауту, а не вешают приложение в состоянии «Выполняется».
  • Пользовательский сервис Shizuku переподключается после разрыва; привязка ограничена 10 секундами.
  • Одновременные переключения из плитки, виджета и расписания больше не ломают состояние.
  • Режим считается выключенным, только если команды восстановления действительно выполнились.
  • Статистика не показывает отрицательную длительность, пока режим включён.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md

Ghost Mode v0.1.9

Choose a tag to compare

@Foxlape Foxlape released this 21 Aug 14:36

Added

  • Dual SIM: block calls on SIM 1, SIM 2 or both. Network masks are saved and restored per SIM.
🇷🇺 На русском

Добавлено

  • Две SIM: блокировать звонки на SIM 1, SIM 2 или обеих. Маски сетей сохраняются и восстанавливаются для каждой SIM отдельно.

Verify / Проверка: apksigner verify --print-certs must show SHA-256 FB:2A:E9:C4:80:BB:0F:04:55:65:F7:B5:CA:BF:01:7D:98:18:21:A9:33:F0:78:53:DD:47:12:28:D5:71:B0:50; checksums are in SHA256SUMS.txt.

Full changelog: CHANGELOG.md