Repository navigation
Releases
SetEdit v4.6
SetEdit v4.6 — every hidden switch, in the open
The Apps Manager now reaches past the short list of well-known operations. An app's Advanced
section opens two dedicated screens: AppOps, for the hidden switches Android keeps per app,
and App compat, for the behaviour changes it applies as a target SDK moves forward.
Added
- AppOps screen. Every operation the platform knows — 162 of them — with the mode currently
in force, the platform default next to it, a search box and a changed only filter. Tapping a
row setsallow,ignore,deny,defaultor, on Android 10+,foreground. Reset all
clears every override in one command, which is the clean way to undo a bad setting. - App compat screen. Lists the platform-compat changes this app overrides, read from
dumpsys platform_compat, each with a switch to enable or disable it, plus Reset all.
Toggling usesam compat enable|disable --no-kill, so changing a switch never force-stops the
app behind your back. - Both screens show the package as the toolbar subtitle and reach the shell the same way the rest
of the app does: root, then Shizuku, then the remembered ADB connection.
Changed
- The AppOps action no longer opens a ten-item dialog of hand-picked ops; it opens the full
screen. versionCode26,versionName4.6.
Fixed
- A fresh op change prints a
; time=+2m agosuffix after its mode; the parser now keeps only the
mode, so a recently touched op no longer shows up as changed by a phantom value. - Both new screens re-read their data once privileged access comes up, so the first load on a
device that has not been connected yet cannot leave a stale list behind.
Under the hood
utils/AppOpCatalogbundles the op table with each op's default mode and parses the single
cmd appops get <pkg>call the screen makes, so a load is one shell round trip rather than one
per op.utils/CompatChangesparses the platform-compat dump and keeps only the rows the viewed
package overrides; change ids are validated before they reach a shell line.- Eleven new unit tests cover the catalogue, both parsers and the exact command strings (67 total).
Verify the download
sha256sum SetEdit-4.6-release.apk
# 785169f93c7aa3b847467c51a7130980bb013ca6b3716c80403271ae85cbd206Package io.github.netodev66.setedit · Version 4.6 (versionCode 26) · Requires Android 7.0+ · Signed release
SetEdit v4.5
SetEdit v4.5 — privileged access, granted once
Connect once and stay connected. SetEdit now grants itself every permission it needs after a
single connection, and remembers it, so a paired device stops asking you to connect again.
Fixed
- Shizuku was never actually asked. The app only checked whether Shizuku was already
approved, never requested permission, so a device running Shizuku was still told to use
wireless debugging. SetEdit now asks Shizuku directly and waits for your answer. - The ADB endpoint is remembered. Every reconnect used to fall back to mDNS discovery, which
gives up after three seconds when the phone is busy and sent you back to the pairing dialog.
The host and port of the last successful connect are now saved and tried first, so a paired
device reconnects with a single TCP handshake. - A failed action reconnects instead of nagging. Tapping an action used to show
"grant privileged access first" and nothing else. It now restores access silently — root, a
Shizuku grant, or a reconnect from the remembered endpoint — and retries once. The connect
screen only opens when the device has genuinely never had privileged access. - One grant covers everything. A single connect now grants
WRITE_SECURE_SETTINGS,
WRITE_SETTINGSand usage access, and sets the matching AppOps, so settings edits and the
Apps Manager work without keeping the connection alive.
Changed
versionCode25,versionName4.5.- A Shizuku refusal is remembered, so the prompt is not repeated on every screen; the connect
screen still offers it explicitly.
Under the hood
- New
utils/PrivilegedAccessis the single entry point for restoring access: root, then
Shizuku, then ADB. It coalesces concurrent callers onto one attempt on its own thread. AdbConnectortries the remembered endpoint first, then discovers the TLS connect service and
finally the plain ADB service. A stale endpoint that refuses this app's key is treated as
stale rather than as a pairing problem.- Six new unit tests cover endpoint persistence and the granted flags (51 total).
Verify the download
sha256sum SetEdit-4.5-release.apk
# b636f2bb01b2831c6024580e658354dffad256812ac34e349cfeb0100b41c8edPackage io.github.netodev66.setedit · Version 4.5 (versionCode 25) · Requires Android 7.0+ · Signed release
SetEdit v4.4
SetEdit v4.4 — the Apps Manager
Manage the other apps on your device, right from SetEdit.
Added
- Apps screen. Browse every installed package with its icon, label, package
name, size and a System badge. Search by name or package, and filter to user or
system apps. - Per-app actions. Open an app, force stop it, jump to its system info page,
clear its cache, or clear all its data. Disable or enable it, freeze or unfreeze
it, and uninstall it. System apps are removed for the current user only, so the
APK stays safe in/system. - Permissions, in one list. See the runtime permissions an app asks for and
grant or revoke any of them. - AppOps switches. Flip hidden switches such as
WAKE_LOCK,
RUN_IN_BACKGROUND,POST_NOTIFICATIONandSCHEDULE_EXACT_ALARM. - Battery and standby. Exempt an app from battery optimisation, or move it
between the Active, Frequent, Rare and Restricted standby buckets. - A new Apps quick action on the Home tab.
Changed
versionCode24,versionName4.4.
Safety
Destructive actions confirm first, and every shell command is built in one place
with the package, permission, op and mode values validated before they are used,
so a malformed value cannot run anything unexpected.
Verify the download
sha256sum SetEdit-4.4-release.apk
# bb98d851a713b55d4c62dfd655642b3bb2ee7f2f0088ab64e64f79d43cc54555SetEdit v4.3
A big one — sort, history, widgets and smarter recipes.
- Sort any table. Order a list by name or by value, A-Z or Z-A, straight
from the toolbar. - Change history. Every edit is recorded, newest first. Open the history
and tap an entry to put the old value back. - Copy anything. Long-press a row, or use the editor, to copy a key, a
value or a whole row to the clipboard. - Search values too. A new switch in search also matches setting values,
not just key names. - Sensitive keys stand out. Risky keys now show a small warning badge in
the list and inside the editor, so you know before you touch them. - Recipes, organised. Recipes are grouped into Animations, Display, Touch,
Accessibility and Custom, and you can search them. You can also write
your own recipes and keep them alongside the built-ins. - Auto-backup. Turn it on and SetEdit saves a snapshot before changing a
sensitive key, so you can always get back. - Quick Settings tile. Flip straight into SetEdit from the notification
shade. - Home-screen widget. Pin your starred settings keys to the home screen
and open them with one tap. - Reduce motion. A new setting turns off the bouncy screen and list
animations if you prefer things calm.
SetEdit v4.2
SetEdit v4.2
The recipes work, and the shell behaves.
🍳 Recipes now take effect
The animation presets wrote their keys to the wrong settings table, so Android ignored them and nothing changed. settings put creates the row without complaint, which is why the recipes looked like they worked but did nothing.
- The animation presets now write to the table Android actually reads.
- Every recipe reads its value back after applying it, so a recipe that cannot take effect reports a failure instead of a false success.
⬅️ Back returns to Home
Pressing back from any tab other than Home now takes you to the dashboard instead of closing the app. Back from Home still leaves the app, as you would expect.
🖥️ Full-screen, edge-to-edge
The status and navigation bars are hidden and the app draws behind them. Swipe from an edge to bring the bars back transiently, so Home, Back and Recents stay reachable.
🔧 Under the hood
Tables.readValuefalls back to the settings ContentProvider when no shell is available, so recipe verification works withWRITE_SECURE_SETTINGSalone.- Added Robolectric with two
MainActivityback-button tests and fiveRecipeTesttable-mapping tests.
Package io.github.netodev66.setedit · Version 4.2 (versionCode 22) · Requires Android 7.0+ · Signed release
sha256sum SetEdit-4.2-release.apk
# 0df5c12b868828b978cb9467809f2dc2c21b54852c13e60b8f27ea7f5b35cbafSetEdit v4.1
SetEdit v4.1
SetEdit can now update itself, and the whole app feels springier.
⬆️ In-app updates
SetEdit checks GitHub Releases for a newer build, downloads the APK and hands it to the system package installer — all without leaving the app.
- Open it from Settings → Check for updates, the Home quick actions, or the prompt that appears when a new version is found.
- The launch check runs at most once a day and can be turned off in Settings.
- If the device has not allowed installs from SetEdit yet, the app sends you to the right screen and lets you retry.
✨ Springy motion
One shared overshoot easing now drives list rows, whole screens, the editor sheet and bottom-nav taps, so navigation feels alive instead of abrupt.
⚡ Faster, smoother tables
- The table list keeps its scroll position when you come back from the editor instead of jumping to the top.
- Starring a key rebinds only that row, not the whole list.
🔧 Under the hood
- New
update/package:UpdateChecker,UpdateInfo,UpdateManager,ApkInstaller,UpdateActivityand a unit-testedVersionComparator. - Added
REQUEST_INSTALL_PACKAGESand aFileProviderfor the cached APK.
Package io.github.netodev66.setedit · Version 4.1 (versionCode 21) · Requires Android 7.0+ · Signed release
sha256sum SetEdit-4.1-release.apk
# 3607ed3563108ac0d810b52c96f58d402704eed8e4985be8c91baf80de903d67SetEdit v4.0
SetEdit v4.0
A full UI overhaul: the one-long-list-per-table screen is replaced by a
bottom-navigation dashboard, and the features that make the settings tables
usable day to day are now built in.
New UI
- Bottom navigation — Home, Search, Favorites, Backup and Settings.
- Home dashboard — quick actions plus a card for every table
(system,secure,global, Android properties, Java properties, Linux
environment, boot items and shortcuts). - Editor bottom sheet — create, edit and delete a key from a Material 3
modal sheet, with a favourite star and a one-tap revert to the previous value. - Onboarding — a short first-run tour that explains the privileged-access
model. - Recipes — apply a bundle of well-known tweaks together, after a confirmation.
New behaviour
- Search everywhere — one box scans
system,secureandglobaland
jumps straight to a match. - Favorites — star any key and reach it again from the Favorites tab.
- Backup & restore — export the tables to a file and restore them later,
key by key. - History & revert — every change is recorded so an earlier value can be
restored from the editor. - Risky-key warnings — keys that can destabilise a device are flagged
before they are written. - Theme & dynamic colour — theme mode and dynamic colour follow the saved
preference.
Cleanup
- Removed the old
EditorActivity, theadapters/andcursor/packages,
and the layouts only they used. Tables.readValuenow reads a single key withsettings getinstead of
loading the whole table.
Verified
Clean ./gradlew clean :app:assembleDebug :app:assembleRelease build passes;
the release APK is signed and installs and launches on API 34.
Install
| Package | io.github.netodev66.setedit |
| Version | 4.0 (versionCode 20) |
| Requires | Android 7.0 (API 24) or newer |
| Size | ~2.0 MB |
sha256sum SetEdit-4.0-release.apk
# 424d4aa018bac2053a7f8cf511022fc4baead64e7c93ac393bb913c98088de29This release was prepared by an AI agent (OpenHands) on behalf of NETO-DEV66.
SetEdit v3.10
SetEdit v3.10
The system table now keeps working after the one-time wireless-debugging
connection, even with WiFi and mobile data switched off.
What was wrong
ShellExecutor.isAvailable() trusted a cached "connected" flag, but the ADB
connection is a raw TCP socket whose isConnected() keeps returning true
after the other end is gone. Once WiFi dropped, every write opened a stream on
the dead socket and blocked — the edit appeared to do nothing or froze for tens
of seconds — instead of falling back to the settings provider. Reads could
stall the same way.
What changed
- A dead transport is now detected and marked: the first command after the
drop recovers, and every later read/write goes straight to the provider. - Every shell command is bounded by a timeout that closes the connection, so
a dead socket can never block the UI. - The permission gate accepts
WRITE_SECURE_SETTINGS(which the one-time ADB
connection grants) for every table, so the system table no longer asks for
the role-managedWRITE_SETTINGStoggle it cannot get over ADB. - The "add item" action uses the same gate.
Verified
On Android 34: connect once, then block the adb port (the same thing that
happens when WiFi is turned off). The first write recovered in about 3
seconds; every following write and read finished in well under 2 seconds,
readAll(system) kept returning all 39 rows, and the written value persisted.
This release was prepared by an AI agent (OpenHands) on behalf of NETO-DEV66.
SetEdit v3.9
SetEdit v3.9
The system table now works offline too. v3.8 made the secure and global
tables keep working after the WiFi dropped, but the system table stayed
read-only: its permission check asks for WRITE_SETTINGS, which Android
manages as a special app access and which pm grant cannot grant, so the
write bailed out before it ever looked at the permission the ADB connection
had actually granted.
Fixed
- System-table edits work offline. The write path now checks
WRITE_SECURE_SETTINGSfirst — the permission the one-time ADB connection
grants, and the one the settings provider accepts for every table including
system— and only falls back to the per-table check when it is missing.
Create, update and delete all take this path.
Changed
versionCode18,versionName3.9.
Verify the download
sha256sum SetEdit-3.9-release.apk
# 10393c21c395025b5a443a8f204a7572ca3e438723a9f7f4e10cc295912946fdSetEdit v3.8
SetEdit v3.8
After SetEdit connects over wireless debugging, it keeps working when the
WiFi drops. The one-time connection grants the permission the app needs to
write settings, so edits no longer fail with SecurityException once the
device is offline.
Fixed
- Writes keep working offline. The first successful ADB connection grants
WRITE_SECURE_SETTINGSto SetEdit. When the shell is no longer reachable,
edits fall back to the content provider, which that permission authorises.
This also covers the system table, whose usualWRITE_SETTINGSpermission
cannot be granted over ADB. - Reads keep full coverage offline. The last complete table seen through
the shell is saved and merged under the live values, so the keys the
provider hides from apps stay visible after a reboot with no network.
Changed
versionCode17,versionName3.8.
Verify the download
sha256sum SetEdit-3.8-release.apk
# 388ba3ef20e5cc7e084ebc44958e833ee70967bf4af2a07f2b1dee879b316067