Repository navigation
Releases: LyraVoid/Aster
Release list
11425
This release replaces 11424 and fixes the long-changelog layout in the module update dialog.
Fixes
- Long module changelogs now scroll inside their own area instead of pushing the dialog actions off screen.
- Cancel and update remain visible at the bottom of the confirmation dialog.
Included from 11424
- Added SELinux mode control with Enforcing and Permissive choices plus a confirmation step.
- Added separate switches for hiding KernelPatch and system patch update prompts on Home.
- Blocking an update prompt does not make the installed patch unavailable; module access, security actions and uninstall remain usable.
- KernelPatch is updated to 0.13.9.
- The APatch manager fix for the terminal
clearcommand is included.
Full changelog
11416
A fix for a manager that has lost root and cannot get it back.
What was happening
The report came in as "the manager lost root". It had not. The privileged process the manager starts was aborting before it could run, and the device's own log held the reason:
SecurityException: Writable dex file
'/data/user_de/0/me.yuki.aster/cache/main.jar' is not allowed
at dalvik.system.DexFile.openDexFileNative
at java.lang.ClassLoader.createSystemClassLoader
Three attempts, three aborts, and nothing on screen to say why. The same device had killed the root process of the other manager installed on it the day before, in the same place.
Why it does not go away on its own
The file only has to be written once with a mode the platform refuses. Writing it again truncates it and leaves the mode alone — so the state survives every restart, every update, and a reinstall of the manager on top of the old one.
What changed
- The file the root process is made of is looked at before anything asks for a root service, in both caches, because which one it was put in is not something this app controls.
- On the first launch of this version it is removed whatever it looks like — a bad one left by an older install cannot be told from a good one by inspection. After that, only a file that is writable by group or other, unreadable by its owner, or not this app's is replaced.
- Its mode goes to the log every time it is looked at. That is the one fact a report of this needs, and nothing else in the app recorded it.
If you are affected
Installing this version is enough: the first launch replaces the file. Clearing the manager's app cache does the same thing by hand, if you would rather not wait for it.
Full changelog
11415
New in this version
Pick several apps at once. The Superuser page can now work on more than one app at a time. Tap the button in the top bar, or long-press any app, then tick the ones you want. One tap grants root, restores them to normal, or excludes all of them together — and you are asked to confirm before anything changes.
The status bar over the panorama Home is readable again. Its icons now follow the wallpaper instead of the scene, so they stay visible on a bright photo and no longer change colour on their own.
本次更新
超级用户支持多选。 现在可以一次操作多个应用。点顶栏的多选按钮,或者长按任意一个应用进入,然后勾选想要的应用 —— 一次点击就能给它们统一授予 Root、恢复正常或排除模块,执行前会先确认。
全景首页的状态栏能看清了。 图标改为跟着壁纸的明暗走,亮色照片上也看得清,不会再自己变来变去。
11413
Six changes since 11405, and four of them are fixes: two that only showed up on other people's devices, two that only showed up on a tablet, and two about the update check itself.
Superuser
Tapping a switch could look like it turned every switch off. It did not — the file, the kernel's list and the "Authorized" count all stayed right — but the list puts the allowed rows first, so the row that was just switched moved to another section, and the screen followed it there. You were left looking at a section of switches that were never yours. Which section a row belongs to is now decided when the list loads, so a switch changes the switch and nothing else.
The other one was reported from a device whose package_config was empty. An empty file was read as a file that could not be understood, so every authorization was refused — silently, because a refusal reported nothing. An empty file is an empty configuration, and a refusal now says what it was refused for.
Tablets
A tablet in landscape put the page in a narrow strip against a wide empty right side, and its portrait hero grew until the state and the cards below it were pushed off the screen. Both came from the same rule, which described a phone held sideways and nothing else. Landscape now uses the two panes it always had room for, and the hero stops growing at 520dp so what is under it stays within reach.
Home slogan
The line under the greeting on the panorama Home can be yours now. It lives in the appearance sheet's panorama section: one line per entry, and several take turns by the day. Clearing the field puts the scene back on the lines it ships with, so there is nothing separate to reset.
The update check
- The release notes shown in the update dialog are drawn as the Markdown they are written in. They were being put through a plain text field, so bold arrived as asterisks and a code block read as an indented sentence.
- The version is now read from the release tag rather than its title. It worked before only because the release workflow happens to set the title to the same number; a title edited by hand would have left every reader quietly told they were up to date.
Full changelog
11407
A bug fix for the Superuser page.
What was wrong
On some devices nothing on that page could be authorized. Every switch did nothing at all — no error, no movement — and it depended on the device, so it could not be reproduced where it worked.
The report that came in carried the device's own listing of /data/adb/ap, and that showed why:
-rw------- 1 root root u:object_r:adb_data_file:s0 0 2026-09-16 21:11 package_config
The file was empty. The manager reads it strictly before rewriting it — deliberately, because rewriting a file it cannot read in full would drop the grants of the records it skipped — and an empty file has no first line, so it was turned away as having an invalid header.
The list itself is read leniently, which is why it went on rendering normally while every change to it was refused. And since the write that would have put a header in that file was the very thing being refused, the device stayed that way.
What changed
- An empty file is read as an empty configuration, which is what it is. The refusal still stands for a file whose header is not the one this version writes.
- A refusal now says so instead of doing nothing. An unreadable file, no root, or a lock that will not clear each produce a message naming the reason.
- The root escalation sat outside the error handling with its result discarded. It is inside it now, and its answer is checked.
- The configuration lock was taken without a timeout, which waits forever on a holder that never lets go. It gives up after five seconds and reports that too.
- Files carrying a byte-order mark, CRLF line endings or a blank first line are accepted. None of those changes what a record means, and each of them used to cost the whole file.
If you were affected
Your package_config was emptied at some point, so any grants made before that are gone and have to be made again.
Full changelog
11405
Aster's first release.
Aster is a Root control surface for the APatch capability chain, built on KernelPatch. Its job is to answer one question first — is Root working right now — and then to say what is running and what needs attention, in a single Miuix interface rather than a dashboard.
The shell
Five destinations — Home, KPModule, Superuser, APModule, Settings — live in a permanent left rail on phones. A destination never disappears because Root state changed: it dims, says why, and offers a way back. The foot of the rail names the running mode directly: No Root, KernelPatch only, Full Aster or Jailbreak.
Modules
- APM — a Magisk-like module system, with batch install and full backup.
- KPM — kernel modules, using
inline-hookandsyscall-table-hook, with automatic loading. - A module repository for browsing and installing popular modules, and WebUI support for modules.
Protected runtime operations
Changes to system properties do not take effect directly. A pre-check shows the actual changes, every change runs as a 60-second trial, and a failed apply, an expired trial or a detected safe mode triggers an automatic recovery attempt. Keeping a change is valid only for the current boot ID; after a reboot it is off again, and a recovery that fails says so instead of reporting success.
Looks
Colours can follow the wallpaper, the system Material You palette, or a preset you pick. A font of your own, and the app's own display size. The desktop icon can be the Aster mark or the APatch one, and can take the app's colours instead of the platform's.
Languages
Eighteen. The twelve real languages are complete, and six Chinese rewrites say the same things in a different voice: 中文(喵), 中文(圣光), 中文(后厨), 中文(Minecraft), 中文(魔法) and 中文(修仙).
Requirements
- An ARM64 Android device
- Android kernel 3.18 – 6.18
- Kernel config
CONFIG_KALLSYMS=y;CONFIG_KALLSYMS_ALL=yis recommended as well
About this download
The APK is signed with the project's release key using APK Signature Scheme v2 and v3, with a single signer and no v1 signature. That is deliberate rather than an oversight: the kernel side reads the certificate in the v2 block to decide that this app is the manager, and it rejects an APK that carries a v1 signature.
The SuperKey has higher privileges than root access. Use a strong one, and keep it to yourself.
Full changelog: https://github.com/LyraVoid/Aster/commits/11405