Commit Graph

7610 Commits

Author SHA1 Message Date
topjohnwu
fb8e5b569e Extract environment setup into its own script
This simplifies environment setup for shell operations
2026-04-08 05:29:57 +00:00
topjohnwu
da512b9b1f Delete previously generated component classes in stub 2026-04-08 05:29:57 +00:00
topjohnwu
d95918dc15 Cleanup PreferenceConfig 2026-04-08 05:29:57 +00:00
topjohnwu
fd1f403bac Use tools:sdk-common for build-logic 2026-04-08 05:29:57 +00:00
Neebe3289
9dc9b20292 Update Indonesian translations
Change-Id: I8243d30f8df1fb9c9aabff85c081db3dba9695b1
2026-03-31 20:55:59 +00:00
Arbri çoçka
8a014412c5 Update strings.xml sq 2026-03-31 18:59:05 +00:00
topjohnwu
122a0a3349 Fix Gradle dependencies cache restore 2026-03-27 08:40:46 +00:00
topjohnwu
3cb18d6c1e Disable Kotlin for stub
We need to do it after switching to built-in Kotlin
2026-03-27 08:40:46 +00:00
topjohnwu
d5476e1321 Switch over to use composite build-logic
Using buildSrc comes with too many caveats, switch over to a composite
build-logic solves a lot of buildSrc's issue.
2026-03-27 08:40:46 +00:00
topjohnwu
6f93f74f80 app-ng: Fix several compile warnings 2026-03-21 06:57:09 +00:00
topjohnwu
3021ef46ee Redesign status card
Assist-by: Gemini
2026-03-20 19:38:34 +00:00
topjohnwu
945c83f4af Update gradle dependencies 2026-03-20 19:38:34 +00:00
topjohnwu
b9d64bfdf9 Remove all legacy themes and AppCompatActivity 2026-03-20 19:38:34 +00:00
topjohnwu
a59e651269 Manual UI tweaking 2026-03-20 19:38:34 +00:00
topjohnwu
4eba69c892 Redesign the home screen
Assist-by: Gemini
2026-03-20 19:38:34 +00:00
topjohnwu
e2a437ebfc Switch to Google Material 3 library
Made-with: Gemini
2026-03-20 19:38:34 +00:00
topjohnwu
9035a94804 Make build.py generate flags.prop for app projects
Reduce logic duplication in build.py and app/buildSrc. The ground truth
is always build.py, so dump all information into a file so the gradle
projects are always in sync with the rest of the project.
2026-03-18 01:49:38 -07:00
Neebe3289
59eca3fd0a Update Indonesian translations
Change-Id: I5677410a0d767f54f0fe7fe74695d117d33d69c0
2026-03-18 00:11:11 -07:00
topjohnwu
2be3caa7c3 Update GitHub actions 2026-03-17 20:13:53 -07:00
topjohnwu
5cb025e7cc Setup CI for app-ng 2026-03-17 20:04:47 -07:00
topjohnwu
e4f4239f5c Re-integrate old app implementation into project 2026-03-16 03:36:43 -07:00
topjohnwu
debf1800d8 Merge next generation app impl into master 2026-03-16 03:35:08 -07:00
topjohnwu
7008c563e8 Rename apk to preserve history after future merge 2026-03-16 03:34:32 -07:00
topjohnwu
62c6ab8c0a Move apk module to apk-ng
In preparation to preserve the existing old apk module codebase so
that the old implementation can live side-by-side the next generation.
2026-03-16 03:25:47 -07:00
topjohnwu
6242a605f5 Optimize imports 2026-03-16 02:56:03 -07:00
LoveSy
2a5ff26e22 Fix module install showing script help due to unescaped single quotes
The command passed to busybox `script -c '...'` contained embedded
single quotes (from echo and file path), breaking the outer quoting.
Escape them with the standard POSIX `'\''` technique before wrapping.

Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
4bfb9d820f Add padding and center alignment to log empty state text
Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
b02f52f283 Add windowSoftInputMode adjustResize to MainActivity
Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
6771f1141b Improve Core/App card alignment and exclude unused native lib
- Use Box with weight(1f) for card content so text gets full width
- Pin Install/Reinstall button to bottom with fixed height for alignment
- Exclude libandroidx.graphics.path.so from APK (Java fallback exists)

Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
c4ddebfa73 Remove bottom action buttons from Log tabs, keep only TopAppBar actions
Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
a211541fc3 Use tristate checkbox for denylist package toggle
Bump miuix to 0.8.6 and migrate Checkbox to the new ToggleableState
API. The package-level checkbox now shows indeterminate state when
only some processes are selected.

Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
4d758f871b Replace Termux terminal libraries with custom read-only Kotlin implementation
Fork and heavily simplify terminal-emulator/terminal-view from Termux into
a self-contained Kotlin terminal package. Remove all library-style abstractions
(TerminalOutput, TerminalSessionClient, Logger) and dead code (mouse events,
paste, key input) since the terminal is read-only. The emulator creates a PTY
via busybox script for proper escape sequence support. The UI is a pure Compose
Canvas with scroll support, replacing the old AndroidView-based approach.

Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
162b84661b Fix blank flash screen and crash when flashing module zips
FlashScreen's useTerminal was a plain getter on flashAction, which was
only set in LaunchedEffect (after first composition). Since it wasn't
a Compose State, no recomposition occurred, leaving the screen stuck on
an empty LazyColumn. The unreachable TerminalComposeView meant
onEmulatorReady was never called, hanging the coroutine and eventually
crashing the process.

Pass the action from the route key directly to FlashScreen so it can
pick the correct UI path on the very first composition.

Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
b087cb2876 Use MarkdownText for release notes in core install bottom sheet
Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
299350cb7b Remove watermark icon and background color from CoreCard
Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
ab93c22750 Hide Modules and Superuser tabs when Magisk is not activated
Filter out disabled tabs from the pager and navigation bar instead
of showing them as greyed-out, preventing swipe access to unavailable
screens.

Made-with: Cursor
2026-03-16 02:56:03 -07:00
LoveSy
24b16e3609 Replace timeout dropdown with discrete slider in SU request dialog
Use miuix Slider with key points and haptic feedback for timeout
selection. Order: Once → 10/20/30/60 mins → Forever. Also reduce
app icon size from 48dp to 40dp.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
a6f0cb20af Redesign SU request dialog and add SharedUID badge to title row
Move SharedUID badge next to app title in superuser list, detail, and
SU request screens. Consolidate SU request dialog: remove top title,
combine warning text into single string, widen dialog, style buttons
with larger corner radius and height, and adjust spacing.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
f4dd504eeb Replace SU log action icon with themed badge
Use "Approved"/"Rejected" text badges with primary/error theme colors
instead of the canvas-drawn tick/cross icons in the superuser log.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
bcffc941bb Display SharedUID as badge in superuser screens
Replace the "[SharedUID]" text prefix on app names with a styled badge
shown next to the package name on both the superuser list and detail pages.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
41059e8d69 Simplify denylist isolated process handling with wildcard matching
Use a single prefix entry (e.g. "com.example:") to match all isolated
processes of a package instead of listing each service individually.
This avoids needing to reselect isolated processes after app updates.
Also simplify the package-level toggle to always select all processes.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
b89589ee0c Redirect stdin to PTY for terminal size queries
Use `<>$ptyPath >&0 2>&0` to connect all three fds (stdin/stdout/stderr)
to the PTY slave, so scripts can query terminal dimensions via stty size.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
741eff8c50 Remove redundant switch descriptions from superuser detail screen
The "Enabled"/"Disabled" summary text under each switch is redundant
since the toggle state is already visually conveyed by the switch itself.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
bc3f6b1a99 Add terminal view for module flash/action screens with TTY support
Replace plain text LazyColumn with com.termux:terminal-view for module
install (FlashZip) and module action screens, enabling real TTY control
(ANSI escape sequences, cursor movement, colors) for third-party module
scripts. Uses libsu's initialized shell environment with stdout/stderr
redirected to a PTY slave, preserving the full Magisk environment while
giving scripts a real terminal.

MagiskInstaller operations (Direct/Patch/Uninstall/SecondSlot) retain
the original LazyColumn plain-text display since they use our own
scripts that don't need TTY features.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
6a9bd4531f Bump Kotlin to 2.3.10 to fix release build
Fixes produceReleaseComposeMapping failing with "Unsupported class file
major version 69" (KT-83266). The compose-group-mapping library in
Kotlin 2.3.0 used an ASM version that couldn't handle Java 25 class
files from dependencies.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
2ce0fdebe6 Redesign Home screen and improve SU request dialog
- Replace stacked Magisk/Manager cards with side-by-side Core/App cards
  featuring status-based colors, watermark icons, and update badges
- Add Status card showing Ramdisk, Zygisk, and DenyList states
- Restructure Support Us and Follow Us sections with SuperArrow and
  bottom sheets for donate links and developer social links
- Redesign NoticeCard with subtle tertiary container styling
- Move Hide/Restore app action from Settings to Home App card
- Use primary color for SU request Grant button
- Fix DevelopersCard crash caused by null selectedDev during sheet dismiss

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
6e9e12e4b2 Fix SU log and notification missing for first-time/denied requests
The native daemon skips app_log/app_notify callbacks when the stored
RootSettings defaults log=false and notify=false (first-time requests).
Handle logging and notification directly from SuRequestHandler.respond()
on the Java side so both grants and denials are always recorded.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
73c3cfc7f3 Add SU live-reload, status bar notifications, Monet theming, and UI improvements
- Add SuEvents shared flow for live-reloading Superuser and Log tabs
  when root decisions are made
- Add status bar notification option for SU grant/deny with auto-dismiss
- Add Monet/Material You theme support with instant theme switching
- Replace install page navigation with bottom sheet from Home screen
- Replace deprecated ProgressDialog with MiUIX loading dialog for
  app hide/restore
- Move save log and reboot to top bar action buttons in flash/action screens
- Fix dialog button layout to use evenly distributed buttons with
  primary color on positive actions

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
3b73a0ea2c Remove legacy UI infrastructure and migrate dialogs to Compose
Replace the imperative MagiskDialog/DialogBuilder system with
Compose-idiomatic dialogs using miuix SuperDialog. Remove ViewEvent,
UIActivity, ViewModelHolder, and all old dialog classes. Migrate
ViewModels to expose dialog state via StateFlow instead of holding
Activity references. Remove LiveData from FlashViewModel and
ActionViewModel. Delete orphaned resources (XML menus, drawables,
styles). Provide LocalContentColor in MagiskTheme to fix dark theme
text visibility across all miuix components.

Made-with: Cursor
2026-03-16 02:56:02 -07:00
LoveSy
d8d64c8a75 Add Compose reboot menu to Home and fix navigation icon padding
Replace the View-based RebootMenu with a native Compose
SuperListPopup in the Home top bar, with proper state tracking
for the safe mode toggle. Remove the now-unused RebootMenu.kt.

Also fix missing start padding on the SuperuserDetail back button
to match all other sub-screens.

Made-with: Cursor
2026-03-16 02:56:02 -07:00