github thejaustin/ShizukuPlus 13.7.0.r3210

pre-release2 hours ago

13.7.0.r3210

What's new

✨ Features

  • Quick safety check when an app asks for access — the Shizuku+ request now shows where the app came from (Play Store, F-Droid, an APK file or unknown), when it was installed and its signing certificate. Add a VirusTotal or Pithus key in Settings → App safety check to also see whether scanners flag that exact APK. Only the APK's hash is looked up, never the file. Everything is off by default; turn on what you want in Settings → App safety check. This replaces the old "Verified installation" switches, which didn't check anything yet.
  • Problems show in one place instead of a pile of notifications — with the Watchdog on, its notification says whether Shizuku+ is running and shows what's wrong (port discovery failing, a failed start, a crash, debugging left open on an untrusted network) with a button to fix it, then goes back to normal once it's sorted. With the Watchdog off, one notification that updates in place is posted instead, as far as the new Helper notifications setting allows: Off, When Shizuku+ stops or needs you (default), or For every problem. You'll find it in Service Doctor, next to self-healing, and in Behavior › Notifications. It replaces "Crash notifications", and nothing pops up over the app you're using.
  • More control over the background helpers — Service Doctor's self-healing card now has switches to let self-healing turn the Pairing Helper back on (off by default) and to tell you when a fix it tried in the background didn't work (off by default). Stopped-service and failed-start problems get an "Open Service Doctor" button. In Behavior: Restart automatically under Watchdog keeps its status notification without restarting Shizuku+ for you, Show problems on Home puts the current problem on the status card even with helper notifications off, and Messages over other apps (off by default) decides whether Shizuku+'s short messages can show while you're in another app. With it off, the Pairing Helper's result shows as a notification instead.
  • "All cards hidden" shows on Home — when every card except the status card is hidden, a card under it brings them back in one tap.
  • Sorting in the app list is one tap away — a sort chip now leads the filter row and shows the current order, instead of sorting being hidden two menus deep. Tap it to pick Name, Last installed, Last updated or the new Granted first; pick the current order again (or "Reverse order") to flip it, and the arrow turns to show which way. The list also sorts faster with many apps installed. Apps without access show a softened icon like a switched-off setting, so granted apps stand out, and the Shape thumb switch design applies here too.
  • Shizuku+ icons in Android's own screens — the Shizuku+ permission in Settings › Apps › Permissions, the Quick Settings tile and the automation plugin now show the Shizuku+ cat-and-hexagon with its "+", instead of a generic shield or bolt. The compatibility permission for stock Shizuku apps shows the same logo without the "+".
  • Experimental: switch row designs — Experimental › Look & motion › Switch row design adds "Icon is the switch", where the icon fills in when on and there's no separate switch (the row says On or Off, and TalkBack reads it as a switch), and "Shape thumb", where the switch thumb takes your icon shapes and morphs as it slides. Screens built with the newer UI keep the standard switch for now.
  • Updated translations — Azerbaijani (thanks @Figim), plus newer strings filled in for Arabic, German, Spanish and French.

🔒 Security & privacy

  • Security: risky APIs for other apps are off until you turn them on — any app you authorized could use Shizuku+'s Plus APIs to read and change other apps' private data, or read your SMS, contacts, call log, location, clipboard and notifications, take screenshots, inject input and reboot the device. Those are now off for other apps (Shizuku+ itself keeps using them). Storage Bridge can no longer read other apps' content providers either. Two new switches in Developer options → Unrestricted access bring them back: Unrestricted app data access (Neo Backup and SD Maid need it for app data, including Android/data and Android/obb) and Personal data & device control. Shared storage access and reading installed APKs keep working, turning a switch off takes effect right away, and a restored backup can't write outside its target folder. AICore+ keeps its screen and input access while AICore+ is on. Apps you authorize can still run shell commands with Shizuku's usual access, so only authorize apps you trust.
  • The open debugging port warning always shows — with Helper notifications set to Off, you weren't told when Wireless ADB was left open on a public or untrusted network. That warning now shows anyway; other helper notifications still follow the setting.
  • Security: Fake Local ADB checks who's connecting — an app that sent the public key of an already-allowed client got a shell without proving it held the matching private key, and a second connection could take over the Allow you tapped for the first. Every new key now gets its own prompt, which shows the same key fingerprint as Android's USB debugging dialog and counts as Deny after a minute. Signatures are fully checked, and a client that stops talking during sign-in is disconnected.
  • Security: per-app API scopes are harder to get around — an app with a scope turned off could still slip past it by not registering with Shizuku+, by writing p"m" instead of pm, by opening an interactive shell and typing the command, or through its own background services and the Plus APIs. Scopes now apply to unregistered apps too, and quoting tricks are caught. While any scope is off for an app, it can't open an interactive shell or run commands that build what they run. Turning off Shell also stops the app's background services, and the matching Plus APIs follow each scope.
  • Security: crafted names can't sneak commands into Shizuku+'s shortcuts — the backup shortcut for tar/cp on app data pasted the package name and archive path into a shell command as written, so a name like x;reboot ran extra commands. Those are now validated and quoted. The backup API no longer accepts an option such as -all as a package name, and pkill/killall only force-stop real package names.
  • Privacy: crash reports don't reveal your other apps — manual crash reports, which usually end up in public GitHub issues, listed the apps that used Shizuku+ by package name. Other apps now show as "app 1", "app 2" and so on, and addresses, network names and emails are stripped from the whole report.
  • Privacy: backups keep your secrets out, and say what they leave behind — Google backup, device transfer and the plain export no longer include your VirusTotal and Pithus API keys, trusted Wi-Fi names or the list of apps you hide; only the encrypted export keeps them. After a restore, Shizuku+ now tells you what a backup never brings back (which apps you allowed, the ADB key, crash-reporting consent) before asking about sensitive settings. A new privacy page lists everything the app sends, stores and backs up.
  • Privacy: copied logs stay out of clipboard previews — copying script output, the activity log or a crash report now marks the clip as sensitive, so Android doesn't show it in the clipboard preview or keyboard suggestions. Crash reports no longer include your device's address while pairing.
  • Privacy: crash reports no longer include other apps' commands — when crash reporting is on, warnings from the Shizuku+ service were sent as written, which could include commands other apps ran, their package names and file paths. Those details are now removed before anything is sent.
  • Security: other apps can only ask Shizuku+ to start, not steer how — the start screen accepted a port, root mode and a "user tapped" flag from any app. A malicious app could point Shizuku+ at a port it was listening on and get Shizuku+'s trusted ADB key to sign for it. Apps and automations can still start the service; Shizuku+ now picks root or ADB itself and ignores what the caller passes.
  • Security: your ADB key stays on the device — settings backups (Google backup, device transfer and the copy kept for reinstalls, which other apps could read) included the private key your device trusts for ADB. It's no longer backed up; after restoring onto a fresh install, approve the "Allow USB debugging" prompt once.
  • Security: apps can no longer give themselves Shizuku+ access — an app could declare one of the Shizuku permission names itself, have Android grant it at install, and be treated as authorized without you ever seeing the request. Shizuku+ now only trusts that permission when Shizuku+, the Compat Hub or stock Shizuku defines it.
  • Security: root mode asks before granting access — when started with root, Shizuku+ allowed every app that connected, so any app on a rooted device could get root without asking. Apps now get the same Allow/Deny request as in ADB mode, so apps that were let in automatically will ask once; apps you allowed yourself keep their access.
  • Security: release builds are harder to tamper with — a release can no longer go out signed with anything but the official key; if the key is missing, the build fails instead of quietly using a stand-in. The build also refuses a tampered Gradle wrapper, every third-party build step is pinned to an exact reviewed version, and signing passwords are no longer pasted into build scripts.

🛠 Fixes

  • No second server after a crash, and a reboot isn't a crash — background self-healing no longer restarts the service on its own (that raced Watchdog into two servers and could raise an ADB prompt in the background). Restarting after a reboot is no longer logged as an unexpected drop, a start that never connects is retried instead of staying on "Starting…", and starting with root no longer freezes the app while su answers.
  • Failed starts are reported — when a background start failed or Wireless ADB couldn't be found, the default helper notifications setting showed nothing. They now count as "Shizuku+ stopped or needs you". When Watchdog holds a restart back because the service crashed again too soon, it now tells you and tries again after the wait, instead of leaving the service down.
  • Pairing results stay visible — the pairing result notification no longer disappears the moment the pairing service closes.
  • Stopping Shizuku+ keeps it stopped — a status check running at the same moment as a stop could undo it, and Watchdog then restarted the service you had just stopped. Stops from the Quick Settings tile, its options and automation now count as deliberate too, and a stop that never completes no longer leaves "Stopping…" on screen forever.
  • No more "Shizuku+ pairing service timed out" toasts while you're in another app — the background auto-repair could switch the pairing helper on, and the helper showed that toast a minute later when it switched itself off. Auto-repair leaves the helper alone now, and it no longer shows toasts on connect or timeout. If you swipe a problem notification away, it stays away until something new goes wrong, and losing Wi-Fi while using Wireless ADB isn't reported as Shizuku+ stopping.
  • "Turn on TCP Mode" on the port discovery problem does it, then tries starting again (it used to just open the app).
  • The "prompt was not accepted in time" notice no longer comes back after the service has been started another way (root, or adb from a computer). It used to reappear every time that service stopped.
  • The firewall automation no longer changes your Binder Firewall switch — trusted networks and per-app Block/Allow profiles now apply on top of your setting instead of rewriting it, so turning the firewall off stays off and the trusted-networks list no longer greys itself out on a trusted network. If you set up trusted networks and an older version had left the switch off, it's turned back on once.
  • rish no longer prints "Waiting for Shizuku authorization…" on every command; the line only appears when authorization is actually taking a while.
  • Bottom cards are no longer hidden behind the floating navigation bar (thanks @udmodz0).
  • Samsung Auto Blocker is detected properly — Shizuku+ looked for settings that One UI doesn't use, so it could never tell whether Auto Blocker was on. It now reads the real switch (and Maximum restrictions on One UI 8), asking the Shizuku service when the app itself isn't allowed to read it. The "Auto Blocker may be blocking ADB" message on Home now only appears when Auto Blocker is actually on, instead of on every launch, and Service Doctor says "Needs manual check" when it can't tell instead of claiming it's off. Its Fix button opens Auto Blocker's settings rather than writing a setting that doesn't turn it off.

🎨 Look & feel

  • The original expressive icon shapes are back — switching to Material's shape set replaced the cookie, clover, sunny, gem, flower and burst shapes you could pick before. They're now available again as "classic" options next to the new ones.
  • Icon morphs have styles, and Spin is the new default — when a setting turns on, its icon container now spins one point's turn as it morphs into its shape. Pick Morph (the previous straight morph), Pop, Sweep or Liquid under Personalization › Morph style, and choose the shape a setting shows while it's off ("Shape when off": a circle by default, or any icon shape). The regular rounded-square shape styles morph too now, so every Two-tone icon gets it; Zen and Cut keep their fixed shapes. Home's status icon uses your off shape while Shizuku+ is stopped.
  • Card borders apply across the app — the setting (formerly "Home card borders") now outlines settings groups, the app list, Service Doctor and System Hub cards too, not just Home.
  • Simpler switches — the "Toggle switch style" option is gone; its styles only changed a faint background and looked almost the same. Every switch now uses the standard Material 3 Expressive switch with a check or ✕ in the thumb. A setting that's off dims its icon less, so it no longer looks unavailable, and titles no longer turn bold when switched on. Instead, an off setting's icon sits in a circle that morphs into your icon shape when you turn it on. This now works with the regular shape styles too, not only with a picked icon shape.
  • The icon shape picker shows every shape as it really is — options you hadn't selected were drawn half-morphed, so they looked like blobs.
  • Floating navigation bar icons are centered in the bar instead of sitting near its top edge.
  • Messages sit properly on the floating navigation bar — they line up with the bar's width and corners, and when the bar hides as you scroll they slide down with it and come back up with it, instead of hanging where the bar used to be or sitting too high above it.
All commits in this release

Security

  • Open-port warning alerts even with helper notifications Off (b3bd005)
  • Validate and quote names in shell-building interceptors (3cba98e)
  • Storage Bridge openContentUri needs the personal-data option (9e4198e)
  • Close per-app scope bypasses (d7c7852)
  • Fake Local ADB proves key possession and isolates prompts (0cf6b0a)
  • Gate risky third-party APIs behind two developer options (f850e52)
  • StarterActivity is no longer exported; external starts go through a trampoline (3c6605a)
  • Keep the ADB private key out of settings backups (9385a7c)

Added

  • Quick safety check in the access request (b1137fe)
  • Unrestricted access developer options (954b629)
  • Shizuku+ glyph for permission, tile and plugin icons (0923e10)
  • Sort chip on the app list, granted-first order, shared switch designs (3535f34)
  • Morph styles with Spin by default, off-shape pairs, experimental switch rows (ded3986)
  • Off settings show a circle that morphs into the icon shape (49bb50f)
  • Classic icon shapes, app-wide card borders, one M3E switch (539e6d4)
  • Options for the background helpers and where they speak up (2dd1920)
  • Call problem alerts helper notifications and add them to Service Doctor (d159df2)
  • Route problems through one registry instead of separate notices (c3280ba)
  • Show "All cards hidden" under the Home status card (74a7862)

Fixed

  • App details in access requests are off by default (523a4e4)
  • SnackbarHelper holds its snackbar weakly (a1b61d1)
  • Anonymize other apps and scrub manual crash reports (#649) (3efa613)
  • Secrets stay out of unencrypted backups; restore summary; privacy doc (9606db5)
  • Sensitive clipboard copies; no host/port in pairing breadcrumb (6524c79)
  • Redact server events before they reach Sentry (b969ec1)
  • Start races from the concurrency review (5db4c5a)
  • Findings from the review of this session's changes (266fac4)
  • A stop can't be undone by a concurrent status check, and Watchdog honors it (2900dd4)
  • Segmented setting rows start from their own button shapes (65bbb01)
  • Stop squattable permissions and root auto-allow from authorizing apps (982c2e7)
  • Center floating nav bar items in the bar (01e3b23)
  • Read Samsung Auto Blocker from its real settings keys (9adc122)
  • Snackbars ride with the floating nav bar instead of anchoring to it (ec10bed)
  • Stop re-arming the pairing helper and its background toasts (b5df369)
  • Turn the firewall switch back on for users the old rule left off (a5f3bf2)
  • Keep firewall automation from rewriting the user's switch (8c91502)
  • Give MorphShapeDrawable a constant state (e35ca6f)
  • Stop repeating start notices and rish's waiting line (2cb73e9)

Other

  • Harden release signing and pin workflow actions (011aaeb)
  • Match the in-app menu name for manual crash reports (250fdce)
  • App-process and starter use the version catalog for hiddenapibypass and annotation (8c489cb)
  • README release badge shows the newest release, prereleases included (082d173)
  • Major release highlights list feature entries before fixes (78abe75)
  • README covers helper notifications, morphing icons and sorting; drops stale API claims (c2fa9b0)
  • Detect major releases from CHANGELOG entries, with a manual trailer override (0545376)
  • The release notes' major release is the latest functional release (08433a2)
  • Changelog for problem alerts and the pairing toast (814ad81)
  • Include every locale in local_translate_all.sh (e987f27)
  • Changelog for notices, firewall automation, Home and translations (aeb5414)
  • i18n: fill newer strings for Arabic, German, Spanish and French (fa82c10)
  • Drop gradle-daemon-jvm.properties from #644 (e5df8ca)

📦 Recent Releases

🚀 This is a major release.
Quick safety check when an app asks for access; The open debugging port warning always shows; Security: release builds are harder to tamper with; Privacy: crash reports don't reveal your other apps
Full changelog

Release Highlight
13.7.0.r3210 🚀 major (this release) Quick safety check when an app asks for access (+39 more)
13.7.0.r3159 fixing bottom navigation bar (#644)
13.7.0.r3158 Update Azerbaijani fixing strings in strings.xml (#652)
13.7.0.r3116 Merge pull request #647 from Figim/patch-1
13.7.0.r3102 feat(plus): per-app global feature hints (#631), DPM freeze fallback (#632), per-app freeform (#635) & tile/root fallbacks
13.7.0.r3085 fix(settings): fix title overlap and padding desync when toggling One UI style (#640)
13.7.0.r3084 fix(settings): resolve Appearance crash, fix LeakCanary leaks, and streamline App interactions
13.7.0.r3083 Harden preference change listeners with safe casts and enhance update download redirects
13.7.0.r3082 Fix in-app download installation, signature mismatch handling, and appearance settings crash
13.7.0.r3081 feat(ui,settings): add expressive system performance governors control deck

Changes in this release

Don't miss a new ShizukuPlus release

NewReleases is sending notifications on new releases.