Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
be0b868
feat: Store merged APK from split archives as original for repatching…
MarcaDian Apr 17, 2026
005a818
chore: Release v1.16.0-dev.1 [skip ci]
semantic-release-bot Apr 17, 2026
28289e6
chore: Update legacy release files
semantic-release-bot Apr 17, 2026
ab390cd
chore: Add contribution guide we keep meaning to add
LisoUseInAIKyrios Apr 17, 2026
e73c63c
feat: Add fast bytecode mode setting to expert mode (#403)
MarcaDian Apr 18, 2026
598f662
chore: Release v1.16.0-dev.2 [skip ci]
semantic-release-bot Apr 18, 2026
170ab0e
chore: Update legacy release files
semantic-release-bot Apr 18, 2026
aa7207d
feat: Migrate to `Ackpine` for package installation/uninstallation (#…
MarcaDian Apr 18, 2026
a4d1eb8
fix: Handle `InstallFailure` result when installing manager update
MarcaDian Apr 18, 2026
c3f4b53
chore: Update translations from Crowdin
crowdin-bot Apr 18, 2026
a8563f6
chore: Release v1.16.0-dev.3 [skip ci]
semantic-release-bot Apr 18, 2026
f670734
chore: Update legacy release files
semantic-release-bot Apr 18, 2026
2edb15f
fix: Merge 'Filter split APKs' and `Remove unused native libraries` i…
MarcaDian Apr 18, 2026
0330699
feat: Add swipe gestures and multi-select to app buttons on main scre…
MarcaDian Apr 19, 2026
78b5aee
fix: Add logging and fix stale installer cache
MarcaDian Apr 19, 2026
f53ad64
feat: Add toggle to disable home screen patching phrases (#443)
jaival-11 Apr 19, 2026
ec6532b
chore: Update translations from Crowdin
crowdin-bot Apr 19, 2026
97aedb6
chore: Release v1.16.0-dev.4 [skip ci]
semantic-release-bot Apr 19, 2026
fb70b66
chore: Update legacy release files
semantic-release-bot Apr 19, 2026
5df6dfa
Merge remote-tracking branch 'origin/main' into dev
LisoUseInAIKyrios Apr 19, 2026
92ee197
ci: Remove legacy app update json action
LisoUseInAIKyrios Apr 19, 2026
d4e74e3
fix: Shizuku installer couldn't update an already installed app (#454)
MarcaDian Apr 19, 2026
1b8e172
chore: Release v1.16.0-dev.5 [skip ci]
semantic-release-bot Apr 19, 2026
adc93e4
fix: System installer couldn't update an already installed app (#455)
MarcaDian Apr 20, 2026
2b3b3f4
chore: Update translations from Crowdin
crowdin-bot Apr 20, 2026
6900cc2
fix: When greeting message is disabled, show a small top spacer so th…
MarcaDian Apr 20, 2026
eac672e
feat: Sort universal patches to bottom of each bundle in patches dialog
MarcaDian Apr 20, 2026
5829d51
chore: Release v1.16.0-dev.6 [skip ci]
semantic-release-bot Apr 20, 2026
0702144
chore: Update to latest patcher
LisoUseInAIKyrios Apr 20, 2026
1e4631e
ci: Add gradle cache
LisoUseInAIKyrios Apr 20, 2026
6c88ff4
ci: Consolidate actions together
LisoUseInAIKyrios Apr 20, 2026
9631a15
ci: Fix Crowdin pull
LisoUseInAIKyrios Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/build_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@ name: Build pull request

on:
workflow_dispatch:
push:
pull_request:
branches:
- dev

concurrency:
group: compile-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
Expand Down
35 changes: 0 additions & 35 deletions .github/workflows/compile_pull_request.yml

This file was deleted.

7 changes: 3 additions & 4 deletions .github/workflows/crowdin_pull.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,6 @@ jobs:
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

- name: Push crowdin branch
run: |
git checkout -B crowdin
git push --force origin crowdin
merge:
name: Squash merge Crowdin into Dev
if: github.event_name == 'workflow_dispatch'
Expand All @@ -53,6 +49,9 @@ jobs:
fetch-depth: 0
clean: true

- name: Cache Gradle
uses: burrunan/gradle-cache-action@v3

# Step 2: Compile Android app to check string resources
- name: Compile Android app to check resources
env:
Expand Down
36 changes: 8 additions & 28 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: Release

on:
workflow_dispatch:
inputs:
send_fcm:
description: 'Send FCM push notification'
type: boolean
default: true
push:
branches:
- main
Expand Down Expand Up @@ -60,31 +65,6 @@ jobs:
KEYSTORE_ENTRY_ALIAS: ${{ secrets.KEYSTORE_ENTRY_ALIAS }}
KEYSTORE_ENTRY_PASSWORD: ${{ secrets.KEYSTORE_ENTRY_PASSWORD }}

- name: Copy release files to legacy path
# TODO: Eventually delete this logic
if: steps.release.outputs.new_release_published == 'true'
run: |
git config user.name "semantic-release-bot"
git config user.email "semantic-release-bot@martynus.net"

# Make sure we're rebasing onto the latest remote branch
git fetch origin

# Hard reset to latest remote branch
git checkout ${GITHUB_REF_NAME}
git reset --hard origin/${GITHUB_REF_NAME}

cp app-release.json app/app-release.json
cp CHANGELOG.md app/CHANGELOG.md

git add app/app-release.json
git add app/CHANGELOG.md

git commit -m "chore: Update legacy release files"

# Push explicitly to the branch that triggered the workflow
git push origin HEAD:${GITHUB_REF_NAME}

- name: Attest
if: steps.release.outputs.new_release_published == 'true'
uses: actions/attest-build-provenance@v2
Expand Down Expand Up @@ -114,17 +94,17 @@ jobs:
})

- name: Wait before sending FCM
if: steps.release.outputs.new_release_published == 'true'
if: steps.release.outputs.new_release_published == 'true' && inputs.send_fcm != false
run: sleep 480

- name: Setup Python for FCM
if: steps.release.outputs.new_release_published == 'true'
if: steps.release.outputs.new_release_published == 'true' && inputs.send_fcm != false
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Send FCM push notification
if: steps.release.outputs.new_release_published == 'true'
if: steps.release.outputs.new_release_published == 'true' && inputs.send_fcm != false
env:
FCM_PROJECT_ID: ${{ secrets.FCM_PROJECT_ID }}
FCM_SERVICE_ACCOUNT_JSON: ${{ secrets.FCM_SERVICE_ACCOUNT_JSON }}
Expand Down
60 changes: 60 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,63 @@
# [1.16.0-dev.6](https://github.com/MorpheApp/morphe-manager/compare/v1.16.0-dev.5...v1.16.0-dev.6) (2026-04-20)


### Bug Fixes

* System installer couldn't update an already installed app ([#455](https://github.com/MorpheApp/morphe-manager/issues/455)) ([adc93e4](https://github.com/MorpheApp/morphe-manager/commit/adc93e4bab2d9b153b2aecd9f0671b393e42d309))
* When greeting message is disabled, show a small top spacer so the app cards don't sit flush against the top of the screen ([6900cc2](https://github.com/MorpheApp/morphe-manager/commit/6900cc226e189b97c747d6d53f5fba98ade6ccf0))


### Features

* Sort universal patches to bottom of each bundle in patches dialog ([eac672e](https://github.com/MorpheApp/morphe-manager/commit/eac672e51f1fe3007bba46af6321d833ac20fb4b))

# [1.16.0-dev.5](https://github.com/MorpheApp/morphe-manager/compare/v1.16.0-dev.4...v1.16.0-dev.5) (2026-04-19)


### Bug Fixes

* Shizuku installer couldn't update an already installed app ([#454](https://github.com/MorpheApp/morphe-manager/issues/454)) ([d4e74e3](https://github.com/MorpheApp/morphe-manager/commit/d4e74e3a84ca34529f8d20005c19b2b0e7c9136f))

# [1.16.0-dev.4](https://github.com/MorpheApp/morphe-manager/compare/v1.16.0-dev.3...v1.16.0-dev.4) (2026-04-19)


### Bug Fixes

* Add logging and fix stale installer cache ([78b5aee](https://github.com/MorpheApp/morphe-manager/commit/78b5aee8dca5f1f51fb6bb46c9d9cab8bd1f7c0a))
* Merge 'Filter split APKs' and `Remove unused native libraries` into 'Optimize for device architecture' setting ([2edb15f](https://github.com/MorpheApp/morphe-manager/commit/2edb15fcfb0fd018ffcafc0f7203930a203ab4d4))


### Features

* Add swipe gestures and multi-select to app buttons on main screen ([#446](https://github.com/MorpheApp/morphe-manager/issues/446)) ([0330699](https://github.com/MorpheApp/morphe-manager/commit/033069989d24c437798bb5a7bf248afe9f30ae89))
* Add toggle to disable home screen patching phrases ([#443](https://github.com/MorpheApp/morphe-manager/issues/443)) ([f53ad64](https://github.com/MorpheApp/morphe-manager/commit/f53ad646c90700af17b3d58b0a2651cdfb87aab9))

# [1.16.0-dev.3](https://github.com/MorpheApp/morphe-manager/compare/v1.16.0-dev.2...v1.16.0-dev.3) (2026-04-18)


### Bug Fixes

* Handle `InstallFailure` result when installing manager update ([a4d1eb8](https://github.com/MorpheApp/morphe-manager/commit/a4d1eb8a99dc53d59f23df3d7bb8ad3725edd1c4))


### Features

* Migrate to `Ackpine` for package installation/uninstallation ([#444](https://github.com/MorpheApp/morphe-manager/issues/444)) ([aa7207d](https://github.com/MorpheApp/morphe-manager/commit/aa7207d486427753eb56c18ddd29d481f1a3605e))

# [1.16.0-dev.2](https://github.com/MorpheApp/morphe-manager/compare/v1.16.0-dev.1...v1.16.0-dev.2) (2026-04-18)


### Features

* Add fast bytecode mode setting to expert mode ([#403](https://github.com/MorpheApp/morphe-manager/issues/403)) ([e73c63c](https://github.com/MorpheApp/morphe-manager/commit/e73c63c7fcce14d5d38ce8b8cde26feed4a6e5e4))

# [1.16.0-dev.1](https://github.com/MorpheApp/morphe-manager/compare/v1.15.0...v1.16.0-dev.1) (2026-04-17)


### Features

* Store merged APK from split archives as original for repatching ([#438](https://github.com/MorpheApp/morphe-manager/issues/438)) ([be0b868](https://github.com/MorpheApp/morphe-manager/commit/be0b86866f5e9f5e8aad4b596158084d03189fa3))

# [1.15.0](https://github.com/MorpheApp/morphe-manager/compare/v1.14.0...v1.15.0) (2026-04-17)


Expand Down
16 changes: 16 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 👋 Contribution guidelines

This document describes how to contribute to the Morphe Manager.

## 📝 How to contribute

1. Before contributing, it is recommended to [open an issue](https://github.com/MorpheApp/morphe-manager/issues/new?labels=Feature+request&projects=&template=feature_request.yml&title=feat%3A+)
to discuss your change. This will help you determine whether your change is worth your time to implement it.
2. Development happens on the `dev` branch. Fork the repository and create your branch from `dev`.
3. Commit your changes.
4. Submit a pull request to the `dev` branch of the repository and reference issues
that your pull request closes in the description of your pull request.
5. Our team will review your pull request and provide feedback. Once your pull request is approved,
it will be merged into the `dev` branch and will be included in the next pre-release of Morphe.

❤️ Thank you for considering contributing to the Morphe Manager.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,11 @@ That's it. Once Morphe is installed, everything else happens inside the app.

For guides, FAQs, and troubleshooting, visit **[morphe.software](https://morphe.software)** or join the community on **[Reddit](https://www.reddit.com/r/MorpheApp)**.

## 📙 Contributing

Thank you for considering contributing to Morphe Manager.
You can find the contribution guidelines [here](CONTRIBUTING.md).

## ❗ About

Morphe is built on the foundation of [ReVanced Manager](https://github.com/ReVanced/revanced-manager) and [URV](https://github.com/Jman-Github/Universal-ReVanced-Manager). All changes made by Morphe are documented in the Git history.
Expand Down
10 changes: 5 additions & 5 deletions app-release.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"created_at": "2026-04-17T06:32:20.437Z",
"description": "# [1.15.0](https://github.com/MorpheApp/morphe-manager/compare/v1.14.0...v1.15.0) (2026-04-17)\n\n\n### Bug Fixes\n\n* Adjust wording ([482c1d1](https://github.com/MorpheApp/morphe-manager/commit/482c1d18945cfdc63bb54d7d112b0ec7ce4f58ba))\n* Cancel patcher worker immediately on user cancellation ([4f0b312](https://github.com/MorpheApp/morphe-manager/commit/4f0b3124052a0975a94a38f0a519ab8e340ec318))\n* Don't count empty patch selections in package badge ([e073ecf](https://github.com/MorpheApp/morphe-manager/commit/e073ecf279d5d605198a039b6325226f1d3feec2))\n* Improve APK load error messages with distinct failure reasons ([3174f28](https://github.com/MorpheApp/morphe-manager/commit/3174f28480e1857ae689dee26806ed513ad980f9))\n* Interrupt split APK merger immediately on cancellation ([0f7feca](https://github.com/MorpheApp/morphe-manager/commit/0f7fecabfd24ea588755c2ddfc2a4661c0783b83))\n* Re-download bundle if version matches but createdAt differs ([2e77833](https://github.com/MorpheApp/morphe-manager/commit/2e77833cca08fb1c5c52bebe11dd032269099f9c))\n* Refresh patch options only once on bundle load ([bf04846](https://github.com/MorpheApp/morphe-manager/commit/bf0484648ea76dfedbd778716fd75c65f1538f4f))\n* Serialize `StringList` options based on patcher type ([8464f34](https://github.com/MorpheApp/morphe-manager/commit/8464f34f280b02beab4965dd62f3d9cfc3653979))\n* Show failing bundle name in error toast and auto-disable bundles on fetch failure ([1c3a384](https://github.com/MorpheApp/morphe-manager/commit/1c3a3843f3989621764dfb8582e926170e686fa9))\n* Show full patching log in error dialog when no specific error is captured ([f18d826](https://github.com/MorpheApp/morphe-manager/commit/f18d8267cc0b356139ce4a9299548d45097624d5))\n* Show success toast after bundle import completes ([74d05cb](https://github.com/MorpheApp/morphe-manager/commit/74d05cb46d74ea489ad2c454706a9c0a4cf4a1c5))\n* Skip disabled installed apps in AppDataResolver ([8eaa88b](https://github.com/MorpheApp/morphe-manager/commit/8eaa88bda6e4fe657924355eaed1b3fe87f045b1))\n* Use `GetContent` instead of `OpenDocument` for APK/bundle pickers ([cb3551d](https://github.com/MorpheApp/morphe-manager/commit/cb3551d13ac490b2e74eb7ec111369e278e32efe))\n\n\n### Features\n\n* Add Android TV launcher support ([38f2703](https://github.com/MorpheApp/morphe-manager/commit/38f27030d4c80b1873af37c21454206fc86ec372))\n* Add Expert badge to patch bundle viewer ([169ff75](https://github.com/MorpheApp/morphe-manager/commit/169ff751ba839b50aeebb03c07801688a8dd2cbe))\n* Add import/export selection buttons in patch selection dialog ([c5b4ef6](https://github.com/MorpheApp/morphe-manager/commit/c5b4ef658e05a34198233ffe897e05499454ca18))\n* Add saved selection button in expert mode dialog ([ee336d8](https://github.com/MorpheApp/morphe-manager/commit/ee336d865e71e4a597924a302326ef2d5c638805))\n* Export/import third-party bundles with manager settings ([e5c826f](https://github.com/MorpheApp/morphe-manager/commit/e5c826fb81c725cb6ea3b614f2a04a924350f05a))\n* Group compatible versions by bundle in APK availability dialog ([#432](https://github.com/MorpheApp/morphe-manager/issues/432)) ([362d097](https://github.com/MorpheApp/morphe-manager/commit/362d09744c51844774c1e9555580e0ed7fcdbfa1))\n* Show bottom bar labels in main screen ([2d4fd8d](https://github.com/MorpheApp/morphe-manager/commit/2d4fd8d3c2180c9443e65c8d0a9c23bcb2586e13))\n* Show update date for single default bundle in management sheet ([16e81bb](https://github.com/MorpheApp/morphe-manager/commit/16e81bbde5eff647742eee5414033a4bcce4c98d))",
"download_url": "https://github.com/MorpheApp/morphe-manager/releases/download/v1.15.0/morphe-manager-1.15.0.apk",
"signature_download_url": "https://github.com/MorpheApp/morphe-manager/releases/download/v1.15.0/morphe-manager-1.15.0.apk.asc",
"version": "1.15.0"
"created_at": "2026-04-20T07:55:47.744Z",
"description": "# [1.16.0-dev.6](https://github.com/MorpheApp/morphe-manager/compare/v1.16.0-dev.5...v1.16.0-dev.6) (2026-04-20)\n\n\n### Bug Fixes\n\n* System installer couldn't update an already installed app ([#455](https://github.com/MorpheApp/morphe-manager/issues/455)) ([adc93e4](https://github.com/MorpheApp/morphe-manager/commit/adc93e4bab2d9b153b2aecd9f0671b393e42d309))\n* When greeting message is disabled, show a small top spacer so the app cards don't sit flush against the top of the screen ([6900cc2](https://github.com/MorpheApp/morphe-manager/commit/6900cc226e189b97c747d6d53f5fba98ade6ccf0))\n\n\n### Features\n\n* Sort universal patches to bottom of each bundle in patches dialog ([eac672e](https://github.com/MorpheApp/morphe-manager/commit/eac672e51f1fe3007bba46af6321d833ac20fb4b))",
"download_url": "https://github.com/MorpheApp/morphe-manager/releases/download/v1.16.0-dev.6/morphe-manager-1.16.0-dev.6.apk",
"signature_download_url": "https://github.com/MorpheApp/morphe-manager/releases/download/v1.16.0-dev.6/morphe-manager-1.16.0-dev.6.apk.asc",
"version": "1.16.0-dev.6"
}
2 changes: 1 addition & 1 deletion app/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -1287,4 +1287,4 @@

### Features

* Custom Morphe home screen ([515d08c](https://github.com/MorpheApp/morphe-manager/commit/515d08ce741752d06cbabb7be57bac9fe692d8a6))
* Custom Morphe home screen ([515d08c](https://github.com/MorpheApp/morphe-manager/commit/515d08ce741752d06cbabb7be57bac9fe692d8a6))
12 changes: 11 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ dependencies {
// Exclude xmlpull as it's included in Android already
configurations.configureEach {
exclude(group = "xmlpull", module = "xmlpull")
// Ackpine uses android-stubs as compileOnly internally — exclude the transitive
// dependency since the project already provides hidden API stubs via hidden-api-stub
exclude(group = "ru.solrudev.ackpine", module = "android-stubs")
}

implementation(libs.androidx.documentfile)
Expand All @@ -80,6 +83,12 @@ dependencies {
implementation(libs.shizuku.api)
implementation(libs.shizuku.provider)

// Ackpine
implementation(libs.ackpine.core)
implementation(libs.ackpine.ktx)
implementation(libs.ackpine.shizuku)
implementation(libs.ackpine.shizuku.ktx)

// LibSU
implementation(libs.libsu.core)
implementation(libs.libsu.service)
Expand Down Expand Up @@ -155,6 +164,7 @@ android {

buildTypes {
debug {
applicationIdSuffix = ".debug"
buildConfigField("long", "BUILD_ID", "${Random.nextLong()}L")
}

Expand Down Expand Up @@ -218,7 +228,6 @@ android {
)

jniLibs {
excludes += "/lib/x86/*.so"
useLegacyPackaging = true
}
}
Expand Down Expand Up @@ -258,6 +267,7 @@ kotlin {
freeCompilerArgs.addAll(
"-Xexplicit-backing-fields",
"-Xcontext-parameters",
"-opt-in=kotlin.time.ExperimentalTime"
)
}
}
Expand Down
19 changes: 19 additions & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,25 @@
"other_platform_oauth_client": []
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:574971415597:android:5acf99d4cc8260eedc7ca4",
"android_client_info": {
"package_name": "app.morphe.manager.debug"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyAICrE-tnEhNKXh1vEbfucYWWxOr7NSr_g"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
Expand Down
2 changes: 1 addition & 1 deletion app/gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version = 1.15.0
version = 1.16.0-dev.6
4 changes: 4 additions & 0 deletions app/src/debug/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name" translatable="false">Morphe Debug</string>
</resources>
14 changes: 4 additions & 10 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -188,16 +188,6 @@
</intent-filter>
</activity-alias>

<service android:name="app.morphe.manager.service.InstallService" />
<service android:name="app.morphe.manager.service.UninstallService" />

<receiver
android:name="app.morphe.manager.receiver.InstallReceiver"
android:exported="false" />
<receiver
android:name="app.morphe.manager.receiver.UninstallReceiver"
android:exported="false" />

<service
android:name="androidx.work.impl.foreground.SystemForegroundService"
android:foregroundServiceType="specialUse"
Expand Down Expand Up @@ -232,6 +222,10 @@
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
<!-- Disable Ackpine's notification channel -->
<meta-data
android:name="ru.solrudev.ackpine.AckpineInitializer"
tools:node="remove" />
</provider>

<!-- Firebase Cloud Messaging — receives push notifications bypassing Doze mode -->
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/java/app/morphe/manager/ManagerApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import org.koin.android.ext.koin.androidLogger
import org.koin.androidx.workmanager.koin.workManagerFactory
import org.koin.core.context.startKoin
import org.lsposed.hiddenapibypass.HiddenApiBypass
import ru.solrudev.ackpine.Ackpine

class ManagerApplication : Application() {
private val scope = MainScope()
Expand Down Expand Up @@ -61,6 +62,9 @@ class ManagerApplication : Application() {
)
}

// Enable Ackpine logging so install failures (session-dead, conflict codes, etc.)
Ackpine.enableLogcatLogger()

// App icon loader (Coil)
val pixels = 512
Coil.setImageLoader(
Expand Down Expand Up @@ -170,5 +174,9 @@ class ManagerApplication : Application() {
deleteRecursively()
mkdirs()
}
// Logs all app-private directories and their contents with file sizes on fresh start
scope.launch(Dispatchers.IO) {
fs.logStorageContents()
}
}
}
Loading