Skip to content

feat: Various misc QoL enchancements - #3459

Draft
oSumAtrIX wants to merge 28 commits into
devfrom
feat/fate-weir
Draft

feat: Various misc QoL enchancements#3459
oSumAtrIX wants to merge 28 commits into
devfrom
feat/fate-weir

Conversation

@oSumAtrIX

Copy link
Copy Markdown
Member

What was added

Live updates for patcher screen

Implemented live updates for: Decoding resources
  • Ticks Decoding resources [space] Xs) every second, replacing in place
  • Final Decoded resources in Xs replaces the live tick
  • Final summary also written to the exported log file
Live updates: In progress Live updates: Finished Logs snippet
image image [INFO] Applying patches
[INFO] Decoded resources in 31s
[INFO] Writing patched files...
Implemented live updates for: Downloading APK file
Live updates: In progress Live updates: Finished Logs snippet
image image [INFO] Applying patches
[INFO] Decoded resources in 31s
[INFO] Writing patched files...

CI: Skip automatic builds for drafts

As the title implies, it just prevents GitHub Actions to build on PR drafts, everything else it unchanged (i.e. keeps building on commits)

Clear downloaded APK cache

Just a button under Settings => Developer options to clear the cache of downloaded APKs

Image preview image

Fix network memory leak

The flow for donwloads is:

  1. Read chunk
  2. Write chunk
  3. Repeat

Every read operation allocates a small byte container, everything writes correctly, but the containers are never freed from memory after use, causing them to persist and accumulate

To fix this, we wrap each chunk inside a .use { } blocks for automatic resource management:

  • Read chunks: containers are automatically freed from memory once processed
  • Output sink: ensure it is properly flushed and closed, preventing the memory leak

Instead of wrapping the main logic in an if (success) check, it now throws early if it fails
It keeps the exact same behavior but saves us a level of indentation and its better practice

Fixes #3392

Dedicated dialogs for patcher kills and native crashes

ProcessRuntime throws a generic Exception for any non-zero exit code from the patcher subprocess, leaving users with the generic "Process exited with nonzero exit code X"
A good example is on #3060 which on low-RAM devices is almost always Android's LowMemoryKiller, not a real bug

Added signal exit codes to two typed exceptions routed to dedicated InstallerStatusDialog kinds:

  • PatcherKilledException for when the system terminates the process
  • PatcherCrashedException for when the process crashed natively

And InstallerModel now has a retry() so the dialog button can a clean install attempt can be tried from the installer screen

Soft-skip failed patches - WIP!

When a patch fails, the entire process dies, this addition makes it so keeps patching, skipping the failed patch

Image preview
image image

Fix step icons not aligned

Image preview
Before After
image image

Removed useless prefix

The prefix [INFO] is useless and shouldn't be there, removed only for the INFO level

Styling and refactor

`strings.xml` has style tags like `` but it doesn't work, now it does!
Screenshot_20260606_175300 Screenshot_20260606_210058

Now these components animate:

  • Notifications in the dashboard
  • Battery optimization warning
  • Onboarding permission items

secp192k1 added 28 commits June 4, 2026 21:39
Replacing the last line (heartbeat-tick case) avoids splitting the whole message into a list and rejoining it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants