### v21.0
- [General] Support Android 11 🎉
- [General] Add Safe Mode detection. Disable all modules when the device
is booting into Safe Mode.
- [General] Increase `post-fs-data` mode timeout from 10 seconds to 40
seconds
- [MagiskInit] Rewritten 2SI support from scratch
- [MagiskInit] Support when no `/sbin` folder exists (Android 11)
- [MagiskInit] Dump fstab from device-tree to rootfs and force `init` to
use it for 2SI devices
- [MagiskInit] Strip out AVB for 2SI as it may cause bootloop
- [Modules] Rewritten module mounting logic from scratch
- [MagiskSU] For Android 8.0+, a completely new policy setup is used.
This reduces compromises in Android's sandbox, providing more policy
isolation and better security for root users.
- [MagiskSU] Isolated mount namespace will now first inherit from parent
process, then isolate itself from the world
- [MagiskSU] Update communication protocol with Magisk Manager to work
with the hardened SELinux setup
- [MagiskPolicy] Optimize match all rules. This will significantly
reduce policy binary size and save memory and improve general kernel
performance.
- [MagiskPolicy] Support declaring new types and attributes
- [MagiskPolicy] Make policy statement closer to stock `*.te` format.
Please check updated documentation or `magiskpolicy --help` for more
details.
- [MagiskBoot] Support compressed `extra` blobs
- [MagiskBoot] Pad boot images to original size with zeros
- [MagiskHide] Manipulate additional vendor properties
### v20.4
- [MagiskInit] Fix potential bootloop in A-only 2SI devices
- [MagiskInit] Properly support Tegra partition naming
- [General] Load libsqlite.so dynamically, which removes the need to use
wrapper scripts on Android 10+
- [General] Detect API level with a fallback method on some devices
- [General] Workaround possible bug in x86 kernel readlinkat system call
- [BusyBox] Enable SELinux features. Add chcon/runcon etc., and '-Z'
option to many applets
- [BusyBox] Introduce standalone mode. More details in release notes
- [MagiskHide] Disable MagiskHide by default
- [MagiskHide] Add more potential detectable system properties
- [MagiskHide] Add workaround for Xiaomi devices bootloop when
MagiskHide is enabled on cross region ROMs
- [MagiskBoot] Support patching special Motorolla DTB format
- [MagiskPolicy] Support 'genfscon' sepolicy rules
- [Scripts] Support NAND based boot images (character nodes in
/dev/block)
- [Scripts] Better addon.d (both v1 and v2) support
- [Scripts] Support Lineage Recovery for Android 10+
### v20.3
- [MagiskBoot] Fix `lz4_legacy` decompression
### v20.2
- [MagiskSU] Properly handle communication between daemon and
application (root request prompt)
- [MagiskInit] Fix logging in kmsg
- [MagiskBoot] Support patching dtb/dtbo partition formats
- [General] Support pre-init sepolicy patch in modules
- [Scripts] Update magisk stock image backup format
### v20.1
- [MagiskSU] Support component name agnostic communication (for stub
APK)
- [MagiskBoot] Set proper `header_size` in boot image headers (fix
vbmeta error on Samsung devices)
- [MagiskHide] Scan zygote multiple times
- [MagiskInit] Support recovery images without /sbin/recovery binary.
This will fix some A/B devices unable to boot to recovery after flashing
Magisk
- [General] Move acct to prevent daemon being killed
- [General] Make sure "--remove-modules" will execute uninstall.sh after
removal