Repository: thunderbird/thunderbird-android (language: kotlin)

Issue:
Update Koin to 4.1.0
Koin 4.1 will be released soon, for better dependency graph verification we should update as soon as the stable version is available.

See: https://github.com/InsertKoinIO/koin/releases/tag/4.1.0-Beta8


Discussion hints:
nan

Pull request: Bump koin to 4.1.0
Resolves #9129 

Depends on #9128 


Test command: ./gradlew :app-thunderbird:testFossDebugUnitTest --tests "net.thunderbird.android.DependencyInjectionTest" :app-k9mail:testFossDebugUnitTest --tests "app.k9mail.DependencyInjectionTest"

Fix patch:
diff --git a/app-k9mail/badging/fossRelease-badging.txt b/app-k9mail/badging/fossRelease-badging.txt
index c0c57c1a959..3d8022ec8d1 100644
--- a/app-k9mail/badging/fossRelease-badging.txt
+++ b/app-k9mail/badging/fossRelease-badging.txt
@@ -1,24 +1,10 @@
-package: name='com.fsck.k9' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='com.fsck.k9.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'K-9 Mail'
+application-icon-120:'res/drawable-v26/ic_launcher.xml'
+application-icon-160:'res/drawable-v26/ic_launcher.xml'
+application-icon-240:'res/drawable-v26/ic_launcher.xml'
+application-icon-320:'res/drawable-v26/ic_launcher.xml'
+application-icon-480:'res/drawable-v26/ic_launcher.xml'
+application-icon-640:'res/drawable-v26/ic_launcher.xml'
+application-icon-65534:'res/drawable-v26/ic_launcher.xml'
 application-label-ar:'بريد K-9'
 application-label-be:'Пошта K-9'
 application-label-bg:'K-9 Mail'
@@ -29,8 +15,8 @@ application-label-cy:'K-9 Mail'
 application-label-da:'K-9 Mail'
 application-label-de:'K-9 Mail'
 application-label-el:'K-9 Mail'
-application-label-en:'K-9 Mail'
 application-label-en-GB:'K-9 Mail'
+application-label-en:'K-9 Mail'
 application-label-eo:'K-9 Retpoŝtilo'
 application-label-es:'K-9 Mail'
 application-label-et:'K-9 Mail'
@@ -55,9 +41,9 @@ application-label-nb:'K-9 e-post'
 application-label-nl:'K-9 Mail'
 application-label-nn:'K-9 e-post'
 application-label-pl:'K-9 Mail'
-application-label-pt:'Email K-9'
 application-label-pt-BR:'K-9 Mail'
 application-label-pt-PT:'K-9 Mail'
+application-label-pt:'Email K-9'
 application-label-ro:'K-9 Mail'
 application-label-ru:'Почта K-9'
 application-label-sk:'K-9 Mail'
@@ -68,32 +54,46 @@ application-label-sv:'K-9 Mail'
 application-label-tr:'K-9 Posta'
 application-label-uk:'K-9 Mail'
 application-label-vi:'Thư K-9'
-application-label-zh:'K-9 Mail'
 application-label-zh-CN:'K-9 Mail'
 application-label-zh-TW:'K-9 Mail'
-application-icon-120:'res/drawable-v26/ic_launcher.xml'
-application-icon-160:'res/drawable-v26/ic_launcher.xml'
-application-icon-240:'res/drawable-v26/ic_launcher.xml'
-application-icon-320:'res/drawable-v26/ic_launcher.xml'
-application-icon-480:'res/drawable-v26/ic_launcher.xml'
-application-icon-640:'res/drawable-v26/ic_launcher.xml'
-application-icon-65534:'res/drawable-v26/ic_launcher.xml'
+application-label-zh:'K-9 Mail'
+application-label:'K-9 Mail'
 application: label='K-9 Mail' icon='res/drawable-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='com.fsck.k9' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='com.fsck.k9.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-k9mail/badging/fullRelease-badging.txt b/app-k9mail/badging/fullRelease-badging.txt
index 3d224d5d096..a2490f6da91 100644
--- a/app-k9mail/badging/fullRelease-badging.txt
+++ b/app-k9mail/badging/fullRelease-badging.txt
@@ -1,25 +1,10 @@
-package: name='com.fsck.k9' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='com.android.vending.BILLING'
-uses-permission: name='com.fsck.k9.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'K-9 Mail'
+application-icon-120:'res/drawable-v26/ic_launcher.xml'
+application-icon-160:'res/drawable-v26/ic_launcher.xml'
+application-icon-240:'res/drawable-v26/ic_launcher.xml'
+application-icon-320:'res/drawable-v26/ic_launcher.xml'
+application-icon-480:'res/drawable-v26/ic_launcher.xml'
+application-icon-640:'res/drawable-v26/ic_launcher.xml'
+application-icon-65534:'res/drawable-v26/ic_launcher.xml'
 application-label-ar:'بريد K-9'
 application-label-be:'Пошта K-9'
 application-label-bg:'K-9 Mail'
@@ -30,8 +15,8 @@ application-label-cy:'K-9 Mail'
 application-label-da:'K-9 Mail'
 application-label-de:'K-9 Mail'
 application-label-el:'K-9 Mail'
-application-label-en:'K-9 Mail'
 application-label-en-GB:'K-9 Mail'
+application-label-en:'K-9 Mail'
 application-label-eo:'K-9 Retpoŝtilo'
 application-label-es:'K-9 Mail'
 application-label-et:'K-9 Mail'
@@ -56,9 +41,9 @@ application-label-nb:'K-9 e-post'
 application-label-nl:'K-9 Mail'
 application-label-nn:'K-9 e-post'
 application-label-pl:'K-9 Mail'
-application-label-pt:'Email K-9'
 application-label-pt-BR:'K-9 Mail'
 application-label-pt-PT:'K-9 Mail'
+application-label-pt:'Email K-9'
 application-label-ro:'K-9 Mail'
 application-label-ru:'Почта K-9'
 application-label-sk:'K-9 Mail'
@@ -69,32 +54,47 @@ application-label-sv:'K-9 Mail'
 application-label-tr:'K-9 Posta'
 application-label-uk:'K-9 Mail'
 application-label-vi:'Thư K-9'
-application-label-zh:'K-9 Mail'
 application-label-zh-CN:'K-9 Mail'
 application-label-zh-TW:'K-9 Mail'
-application-icon-120:'res/drawable-v26/ic_launcher.xml'
-application-icon-160:'res/drawable-v26/ic_launcher.xml'
-application-icon-240:'res/drawable-v26/ic_launcher.xml'
-application-icon-320:'res/drawable-v26/ic_launcher.xml'
-application-icon-480:'res/drawable-v26/ic_launcher.xml'
-application-icon-640:'res/drawable-v26/ic_launcher.xml'
-application-icon-65534:'res/drawable-v26/ic_launcher.xml'
+application-label-zh:'K-9 Mail'
+application-label:'K-9 Mail'
 application: label='K-9 Mail' icon='res/drawable-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='com.fsck.k9' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='com.android.vending.BILLING'
+uses-permission: name='com.fsck.k9.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-k9mail/build.gradle.kts b/app-k9mail/build.gradle.kts
index 75b68628969..a7842fa86e2 100644
--- a/app-k9mail/build.gradle.kts
+++ b/app-k9mail/build.gradle.kts
@@ -162,7 +162,11 @@ dependencies {
     debugImplementation(projects.backend.demo)
     debugImplementation(projects.feature.autodiscovery.demo)
 
-    testImplementation(libs.robolectric)
+    // Required for DependencyInjectionTest
+    testImplementation(projects.feature.account.api)
+    testImplementation(projects.feature.account.common)
+    testImplementation(projects.plugins.openpgpApiLib.openpgpApi)
+    testImplementation(libs.appauth)
 }
 
 dependencyGuard {
diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt
index 808fad3e7cb..38a8ba07598 100644
--- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt
+++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -79,9 +79,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -90,27 +90,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -128,8 +129,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -198,17 +200,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
 org.apache.commons:commons-lang3:3.7
@@ -218,15 +220,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt
index e6f673786f4..458120e0a42 100644
--- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt
+++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -79,9 +79,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -90,27 +90,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -128,8 +129,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -211,17 +213,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 javax.inject:javax.inject:1
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
@@ -232,15 +234,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt b/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt
index de101b81017..958ae2a8a32 100644
--- a/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt
+++ b/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt
@@ -9,6 +9,7 @@ import app.k9mail.provider.providerModule
 import app.k9mail.widget.widgetModule
 import com.fsck.k9.AppConfig
 import com.fsck.k9.BuildConfig
+import com.fsck.k9.DefaultAppConfig
 import com.fsck.k9.activity.MessageCompose
 import com.fsck.k9.provider.UnreadWidgetProvider
 import com.fsck.k9.widget.list.MessageListWidgetProvider
@@ -34,7 +35,7 @@ val appModule = module {
     developmentModuleAdditions()
 }
 
-val appConfig = AppConfig(
+val appConfig = DefaultAppConfig(
     componentsToDisable = listOf(
         MessageCompose::class.java,
         LauncherShortcutActivity::class.java,
diff --git a/app-thunderbird/badging/fossBeta-badging.txt b/app-thunderbird/badging/fossBeta-badging.txt
index b549b80bf63..2b40b099f52 100644
--- a/app-thunderbird/badging/fossBeta-badging.txt
+++ b/app-thunderbird/badging/fossBeta-badging.txt
@@ -1,24 +1,10 @@
-package: name='net.thunderbird.android.beta' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='net.thunderbird.android.beta.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'Thunderbird Beta'
+application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
 application-label-ar:'Thunderbird Beta'
 application-label-be:'Thunderbird Beta'
 application-label-bg:'Thunderbird Beta'
@@ -29,8 +15,8 @@ application-label-cy:'Thunderbird Beta'
 application-label-da:'Thunderbird Beta'
 application-label-de:'Thunderbird Beta'
 application-label-el:'Thunderbird Beta'
-application-label-en:'Thunderbird Beta'
 application-label-en-GB:'Thunderbird Beta'
+application-label-en:'Thunderbird Beta'
 application-label-eo:'Thunderbird Beta'
 application-label-es:'Thunderbird Beta'
 application-label-et:'Thunderbird Beta'
@@ -55,9 +41,9 @@ application-label-nb:'Thunderbird Beta'
 application-label-nl:'Thunderbird Beta'
 application-label-nn:'Thunderbird Beta'
 application-label-pl:'Thunderbird Beta'
-application-label-pt:'Thunderbird Beta'
 application-label-pt-BR:'Thunderbird Beta'
 application-label-pt-PT:'Thunderbird Beta'
+application-label-pt:'Thunderbird Beta'
 application-label-ro:'Thunderbird Beta'
 application-label-ru:'Thunderbird Beta'
 application-label-sk:'Thunderbird Beta'
@@ -68,32 +54,46 @@ application-label-sv:'Thunderbird Beta'
 application-label-tr:'Thunderbird Beta'
 application-label-uk:'Thunderbird Beta'
 application-label-vi:'Thunderbird Beta'
-application-label-zh:'Thunderbird Beta'
 application-label-zh-CN:'Thunderbird Beta'
 application-label-zh-TW:'Thunderbird Beta'
-application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-label-zh:'Thunderbird Beta'
+application-label:'Thunderbird Beta'
 application: label='Thunderbird Beta' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='net.thunderbird.android.beta' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='net.thunderbird.android.beta.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-thunderbird/badging/fossDaily-badging.txt b/app-thunderbird/badging/fossDaily-badging.txt
index b556c86b4a5..6ce07802e89 100644
--- a/app-thunderbird/badging/fossDaily-badging.txt
+++ b/app-thunderbird/badging/fossDaily-badging.txt
@@ -1,24 +1,10 @@
-package: name='net.thunderbird.android.daily' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='net.thunderbird.android.daily.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'Thunderbird Daily'
+application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
 application-label-ar:'Thunderbird Daily'
 application-label-be:'Thunderbird Daily'
 application-label-bg:'Thunderbird Daily'
@@ -29,8 +15,8 @@ application-label-cy:'Thunderbird Daily'
 application-label-da:'Thunderbird Daily'
 application-label-de:'Thunderbird Daily'
 application-label-el:'Thunderbird Daily'
-application-label-en:'Thunderbird Daily'
 application-label-en-GB:'Thunderbird Daily'
+application-label-en:'Thunderbird Daily'
 application-label-eo:'Thunderbird Daily'
 application-label-es:'Thunderbird Daily'
 application-label-et:'Thunderbird Daily'
@@ -55,9 +41,9 @@ application-label-nb:'Thunderbird Daily'
 application-label-nl:'Thunderbird Daily'
 application-label-nn:'Thunderbird Daily'
 application-label-pl:'Thunderbird Daily'
-application-label-pt:'Thunderbird Daily'
 application-label-pt-BR:'Thunderbird Daily'
 application-label-pt-PT:'Thunderbird Daily'
+application-label-pt:'Thunderbird Daily'
 application-label-ro:'Thunderbird Daily'
 application-label-ru:'Thunderbird Daily'
 application-label-sk:'Thunderbird Daily'
@@ -68,32 +54,46 @@ application-label-sv:'Thunderbird Daily'
 application-label-tr:'Thunderbird Daily'
 application-label-uk:'Thunderbird Daily'
 application-label-vi:'Thunderbird Daily'
-application-label-zh:'Thunderbird Daily'
 application-label-zh-CN:'Thunderbird Daily'
 application-label-zh-TW:'Thunderbird Daily'
-application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-label-zh:'Thunderbird Daily'
+application-label:'Thunderbird Daily'
 application: label='Thunderbird Daily' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='net.thunderbird.android.daily' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='net.thunderbird.android.daily.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-thunderbird/badging/fossRelease-badging.txt b/app-thunderbird/badging/fossRelease-badging.txt
index 7aa4878e217..a25cf76ae88 100644
--- a/app-thunderbird/badging/fossRelease-badging.txt
+++ b/app-thunderbird/badging/fossRelease-badging.txt
@@ -1,24 +1,10 @@
-package: name='net.thunderbird.android' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='net.thunderbird.android.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'Thunderbird'
+application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
 application-label-ar:'Thunderbird'
 application-label-be:'Thunderbird'
 application-label-bg:'Thunderbird'
@@ -29,8 +15,8 @@ application-label-cy:'Thunderbird'
 application-label-da:'Thunderbird'
 application-label-de:'Thunderbird'
 application-label-el:'Thunderbird'
-application-label-en:'Thunderbird'
 application-label-en-GB:'Thunderbird'
+application-label-en:'Thunderbird'
 application-label-eo:'Thunderbird'
 application-label-es:'Thunderbird'
 application-label-et:'Thunderbird'
@@ -55,9 +41,9 @@ application-label-nb:'Thunderbird'
 application-label-nl:'Thunderbird'
 application-label-nn:'Thunderbird'
 application-label-pl:'Thunderbird'
-application-label-pt:'Thunderbird'
 application-label-pt-BR:'Thunderbird'
 application-label-pt-PT:'Thunderbird'
+application-label-pt:'Thunderbird'
 application-label-ro:'Thunderbird'
 application-label-ru:'Thunderbird'
 application-label-sk:'Thunderbird'
@@ -68,32 +54,46 @@ application-label-sv:'Thunderbird'
 application-label-tr:'Thunderbird'
 application-label-uk:'Thunderbird'
 application-label-vi:'Thunderbird'
-application-label-zh:'Thunderbird'
 application-label-zh-CN:'Thunderbird'
 application-label-zh-TW:'Thunderbird'
-application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-label-zh:'Thunderbird'
+application-label:'Thunderbird'
 application: label='Thunderbird' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='net.thunderbird.android' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='net.thunderbird.android.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-thunderbird/badging/fullBeta-badging.txt b/app-thunderbird/badging/fullBeta-badging.txt
index 6ee40c72017..e915c9ced5d 100644
--- a/app-thunderbird/badging/fullBeta-badging.txt
+++ b/app-thunderbird/badging/fullBeta-badging.txt
@@ -1,25 +1,10 @@
-package: name='net.thunderbird.android.beta' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='com.android.vending.BILLING'
-uses-permission: name='net.thunderbird.android.beta.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'Thunderbird Beta'
+application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
 application-label-ar:'Thunderbird Beta'
 application-label-be:'Thunderbird Beta'
 application-label-bg:'Thunderbird Beta'
@@ -30,8 +15,8 @@ application-label-cy:'Thunderbird Beta'
 application-label-da:'Thunderbird Beta'
 application-label-de:'Thunderbird Beta'
 application-label-el:'Thunderbird Beta'
-application-label-en:'Thunderbird Beta'
 application-label-en-GB:'Thunderbird Beta'
+application-label-en:'Thunderbird Beta'
 application-label-eo:'Thunderbird Beta'
 application-label-es:'Thunderbird Beta'
 application-label-et:'Thunderbird Beta'
@@ -56,9 +41,9 @@ application-label-nb:'Thunderbird Beta'
 application-label-nl:'Thunderbird Beta'
 application-label-nn:'Thunderbird Beta'
 application-label-pl:'Thunderbird Beta'
-application-label-pt:'Thunderbird Beta'
 application-label-pt-BR:'Thunderbird Beta'
 application-label-pt-PT:'Thunderbird Beta'
+application-label-pt:'Thunderbird Beta'
 application-label-ro:'Thunderbird Beta'
 application-label-ru:'Thunderbird Beta'
 application-label-sk:'Thunderbird Beta'
@@ -69,32 +54,47 @@ application-label-sv:'Thunderbird Beta'
 application-label-tr:'Thunderbird Beta'
 application-label-uk:'Thunderbird Beta'
 application-label-vi:'Thunderbird Beta'
-application-label-zh:'Thunderbird Beta'
 application-label-zh-CN:'Thunderbird Beta'
 application-label-zh-TW:'Thunderbird Beta'
-application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-label-zh:'Thunderbird Beta'
+application-label:'Thunderbird Beta'
 application: label='Thunderbird Beta' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='net.thunderbird.android.beta' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='com.android.vending.BILLING'
+uses-permission: name='net.thunderbird.android.beta.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-thunderbird/badging/fullDaily-badging.txt b/app-thunderbird/badging/fullDaily-badging.txt
index 650c9d7ea30..a42f760dbea 100644
--- a/app-thunderbird/badging/fullDaily-badging.txt
+++ b/app-thunderbird/badging/fullDaily-badging.txt
@@ -1,25 +1,10 @@
-package: name='net.thunderbird.android.daily' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='com.android.vending.BILLING'
-uses-permission: name='net.thunderbird.android.daily.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'Thunderbird Daily'
+application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
 application-label-ar:'Thunderbird Daily'
 application-label-be:'Thunderbird Daily'
 application-label-bg:'Thunderbird Daily'
@@ -30,8 +15,8 @@ application-label-cy:'Thunderbird Daily'
 application-label-da:'Thunderbird Daily'
 application-label-de:'Thunderbird Daily'
 application-label-el:'Thunderbird Daily'
-application-label-en:'Thunderbird Daily'
 application-label-en-GB:'Thunderbird Daily'
+application-label-en:'Thunderbird Daily'
 application-label-eo:'Thunderbird Daily'
 application-label-es:'Thunderbird Daily'
 application-label-et:'Thunderbird Daily'
@@ -56,9 +41,9 @@ application-label-nb:'Thunderbird Daily'
 application-label-nl:'Thunderbird Daily'
 application-label-nn:'Thunderbird Daily'
 application-label-pl:'Thunderbird Daily'
-application-label-pt:'Thunderbird Daily'
 application-label-pt-BR:'Thunderbird Daily'
 application-label-pt-PT:'Thunderbird Daily'
+application-label-pt:'Thunderbird Daily'
 application-label-ro:'Thunderbird Daily'
 application-label-ru:'Thunderbird Daily'
 application-label-sk:'Thunderbird Daily'
@@ -69,32 +54,47 @@ application-label-sv:'Thunderbird Daily'
 application-label-tr:'Thunderbird Daily'
 application-label-uk:'Thunderbird Daily'
 application-label-vi:'Thunderbird Daily'
-application-label-zh:'Thunderbird Daily'
 application-label-zh-CN:'Thunderbird Daily'
 application-label-zh-TW:'Thunderbird Daily'
-application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-label-zh:'Thunderbird Daily'
+application-label:'Thunderbird Daily'
 application: label='Thunderbird Daily' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='net.thunderbird.android.daily' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='com.android.vending.BILLING'
+uses-permission: name='net.thunderbird.android.daily.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-thunderbird/badging/fullRelease-badging.txt b/app-thunderbird/badging/fullRelease-badging.txt
index c05492f979e..caf47049a5d 100644
--- a/app-thunderbird/badging/fullRelease-badging.txt
+++ b/app-thunderbird/badging/fullRelease-badging.txt
@@ -1,25 +1,10 @@
-package: name='net.thunderbird.android' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
-install-location:'auto'
-minSdkVersion:'21'
-targetSdkVersion:'34'
-uses-permission: name='android.permission.CAMERA'
-uses-permission: name='android.permission.READ_CONTACTS'
-uses-permission: name='android.permission.POST_NOTIFICATIONS'
-uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
-uses-permission: name='android.permission.READ_SYNC_SETTINGS'
-uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
-uses-permission: name='android.permission.INTERNET'
-uses-permission: name='android.permission.VIBRATE'
-uses-permission: name='android.permission.WAKE_LOCK'
-uses-permission: name='android.permission.FOREGROUND_SERVICE'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
-uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
-uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
-uses-permission: name='android.permission.USE_BIOMETRIC'
-uses-permission: name='android.permission.USE_FINGERPRINT'
-uses-permission: name='com.android.vending.BILLING'
-uses-permission: name='net.thunderbird.android.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
-application-label:'Thunderbird'
+application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
 application-label-ar:'Thunderbird'
 application-label-be:'Thunderbird'
 application-label-bg:'Thunderbird'
@@ -30,8 +15,8 @@ application-label-cy:'Thunderbird'
 application-label-da:'Thunderbird'
 application-label-de:'Thunderbird'
 application-label-el:'Thunderbird'
-application-label-en:'Thunderbird'
 application-label-en-GB:'Thunderbird'
+application-label-en:'Thunderbird'
 application-label-eo:'Thunderbird'
 application-label-es:'Thunderbird'
 application-label-et:'Thunderbird'
@@ -56,9 +41,9 @@ application-label-nb:'Thunderbird'
 application-label-nl:'Thunderbird'
 application-label-nn:'Thunderbird'
 application-label-pl:'Thunderbird'
-application-label-pt:'Thunderbird'
 application-label-pt-BR:'Thunderbird'
 application-label-pt-PT:'Thunderbird'
+application-label-pt:'Thunderbird'
 application-label-ro:'Thunderbird'
 application-label-ru:'Thunderbird'
 application-label-sk:'Thunderbird'
@@ -69,32 +54,47 @@ application-label-sv:'Thunderbird'
 application-label-tr:'Thunderbird'
 application-label-uk:'Thunderbird'
 application-label-vi:'Thunderbird'
-application-label-zh:'Thunderbird'
 application-label-zh-CN:'Thunderbird'
 application-label-zh-TW:'Thunderbird'
-application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
-application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
+application-label-zh:'Thunderbird'
+application-label:'Thunderbird'
 application: label='Thunderbird' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
-uses-library-not-required:'com.sec.android.app.multiwindow'
-launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
-property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
-uses-library-not-required:'androidx.window.extensions'
-uses-library-not-required:'androidx.window.sidecar'
+densities: '120' '160' '240' '320' '480' '640' '65534'
 feature-group: label=''
-  uses-feature-not-required: name='android.hardware.camera'
-  uses-feature-not-required: name='android.hardware.touchscreen'
-provides-component:'app-widget'
+install-location:'auto'
+launchable-activity: name='com.fsck.k9.activity.MessageList'  label='' icon=''
+locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
 main
+minSdkVersion:'21'
+native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
 other-activities
 other-receivers
 other-services
-supports-screens: 'small' 'normal' 'large' 'xlarge'
+package: name='net.thunderbird.android' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+property: name='android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE' value='This service is used to maintain a continuous connection to an IMAP server to be able to provide instant notifications to the user when a new email arrives. Firebase Cloud Messaging is not suitable for this task, neither are mechanisms like AndroidX WorkManager. Other foreground service types aren't a good fit for this use case.' 
+provides-component:'app-widget'
 supports-any-density: 'true'
-locales: '--_--' 'ar' 'be' 'bg' 'ca' 'co' 'cs' 'cy' 'da' 'de' 'el' 'en' 'en-GB' 'eo' 'es' 'et' 'eu' 'fa' 'fi' 'fr' 'fy' 'ga' 'gl' 'hr' 'hu' 'in' 'is' 'it' 'iw' 'ja' 'ko' 'lt' 'lv' 'nb' 'nl' 'nn' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'sk' 'sl' 'sq' 'sr' 'sv' 'tr' 'uk' 'vi' 'zh' 'zh-CN' 'zh-TW'
-densities: '120' '160' '240' '320' '480' '640' '65534'
-native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
+supports-screens: 'small' 'normal' 'large' 'xlarge'
+targetSdkVersion:'34'
+uses-feature-not-required: name='android.hardware.camera'
+uses-feature-not-required: name='android.hardware.touchscreen'
+uses-library-not-required:'androidx.window.extensions'
+uses-library-not-required:'androidx.window.sidecar'
+uses-library-not-required:'com.sec.android.app.multiwindow'
+uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
+uses-permission: name='android.permission.CAMERA'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_DATA_SYNC' maxSdkVersion='33'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_SPECIAL_USE'
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+uses-permission: name='android.permission.READ_CONTACTS'
+uses-permission: name='android.permission.READ_SYNC_SETTINGS'
+uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
+uses-permission: name='android.permission.SCHEDULE_EXACT_ALARM'
+uses-permission: name='android.permission.USE_BIOMETRIC'
+uses-permission: name='android.permission.USE_FINGERPRINT'
+uses-permission: name='android.permission.VIBRATE'
+uses-permission: name='android.permission.WAKE_LOCK'
+uses-permission: name='com.android.vending.BILLING'
+uses-permission: name='net.thunderbird.android.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app-thunderbird/build.gradle.kts b/app-thunderbird/build.gradle.kts
index c0f0c986077..426b7f0809b 100644
--- a/app-thunderbird/build.gradle.kts
+++ b/app-thunderbird/build.gradle.kts
@@ -243,7 +243,11 @@ dependencies {
     "betaImplementation"(libs.appauth)
     releaseImplementation(libs.appauth)
 
-    testImplementation(libs.robolectric)
+    // Required for DependencyInjectionTest
+    testImplementation(projects.feature.account.api)
+    testImplementation(projects.feature.account.common)
+    testImplementation(projects.plugins.openpgpApiLib.openpgpApi)
+    testImplementation(libs.appauth)
 }
 
 dependencyGuard {
diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt
index 5bef6f53349..5ce6b6a76e0 100644
--- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -84,9 +84,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -95,27 +95,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -133,8 +134,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -205,17 +207,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
 org.apache.commons:commons-lang3:3.7
@@ -225,15 +227,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt
index 5bef6f53349..5ce6b6a76e0 100644
--- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -84,9 +84,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -95,27 +95,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -133,8 +134,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -205,17 +207,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
 org.apache.commons:commons-lang3:3.7
@@ -225,15 +227,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt
index 5bef6f53349..5ce6b6a76e0 100644
--- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -84,9 +84,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -95,27 +95,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -133,8 +134,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -205,17 +207,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
 org.apache.commons:commons-lang3:3.7
@@ -225,15 +227,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt
index 1f31e664409..f78d8baf0fe 100644
--- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -84,9 +84,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -95,27 +95,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -133,8 +134,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -218,17 +220,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 javax.inject:javax.inject:1
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
@@ -239,15 +241,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt
index 1f31e664409..f78d8baf0fe 100644
--- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -84,9 +84,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -95,27 +95,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -133,8 +134,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -218,17 +220,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 javax.inject:javax.inject:1
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
@@ -239,15 +241,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt
index 1f31e664409..f78d8baf0fe 100644
--- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt
@@ -4,8 +4,8 @@ androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
-androidx.appcompat:appcompat-resources:1.7.0
-androidx.appcompat:appcompat:1.7.0
+androidx.appcompat:appcompat-resources:1.7.1
+androidx.appcompat:appcompat:1.7.1
 androidx.arch.core:core-common:2.2.0
 androidx.arch.core:core-runtime:2.2.0
 androidx.autofill:autofill:1.3.0-rc01
@@ -84,9 +84,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0
 androidx.emoji2:emoji2-views-helper:1.4.0
 androidx.emoji2:emoji2:1.4.0
 androidx.exifinterface:exifinterface:1.3.7
-androidx.fragment:fragment-compose:1.8.6
-androidx.fragment:fragment-ktx:1.8.6
-androidx.fragment:fragment:1.8.6
+androidx.fragment:fragment-compose:1.8.8
+androidx.fragment:fragment-ktx:1.8.8
+androidx.fragment:fragment:1.8.8
 androidx.glance:glance-appwidget-external-protobuf:1.1.1
 androidx.glance:glance-appwidget-proto:1.1.1
 androidx.glance:glance-appwidget:1.1.1
@@ -95,27 +95,28 @@ androidx.glance:glance:1.1.1
 androidx.graphics:graphics-path:1.0.1
 androidx.interpolator:interpolator:1.0.0
 androidx.legacy:legacy-support-core-utils:1.0.0
-androidx.lifecycle:lifecycle-common-java8:2.8.7
-androidx.lifecycle:lifecycle-common-jvm:2.8.7
-androidx.lifecycle:lifecycle-common:2.8.7
-androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata-core:2.8.7
-androidx.lifecycle:lifecycle-livedata-ktx:2.8.7
-androidx.lifecycle:lifecycle-livedata:2.8.7
-androidx.lifecycle:lifecycle-process:2.8.7
-androidx.lifecycle:lifecycle-runtime-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-compose:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.7
-androidx.lifecycle:lifecycle-runtime-ktx:2.8.7
-androidx.lifecycle:lifecycle-runtime:2.8.7
-androidx.lifecycle:lifecycle-service:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7
-androidx.lifecycle:lifecycle-viewmodel:2.8.7
+androidx.lifecycle:lifecycle-common-java8:2.9.0
+androidx.lifecycle:lifecycle-common-jvm:2.9.0
+androidx.lifecycle:lifecycle-common:2.9.0
+androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata-core:2.9.0
+androidx.lifecycle:lifecycle-livedata-ktx:2.9.0
+androidx.lifecycle:lifecycle-livedata:2.9.0
+androidx.lifecycle:lifecycle-process:2.9.0
+androidx.lifecycle:lifecycle-runtime-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0
+androidx.lifecycle:lifecycle-runtime-ktx:2.9.0
+androidx.lifecycle:lifecycle-runtime:2.9.0
+androidx.lifecycle:lifecycle-service:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0
+androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+androidx.lifecycle:lifecycle-viewmodel:2.9.0
 androidx.loader:loader:1.0.0
 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
 androidx.navigation:navigation-common-ktx:2.8.9
@@ -133,8 +134,9 @@ androidx.resourceinspection:resourceinspection-annotation:1.0.1
 androidx.room:room-common:2.6.1
 androidx.room:room-ktx:2.6.1
 androidx.room:room-runtime:2.6.1
-androidx.savedstate:savedstate-ktx:1.2.1
-androidx.savedstate:savedstate:1.2.1
+androidx.savedstate:savedstate-android:1.3.0
+androidx.savedstate:savedstate-ktx:1.3.0
+androidx.savedstate:savedstate:1.3.0
 androidx.slidingpanelayout:slidingpanelayout:1.2.0
 androidx.sqlite:sqlite-framework:2.4.0
 androidx.sqlite:sqlite:2.4.0
@@ -218,17 +220,17 @@ io.coil-kt.coil3:coil-network-core:3.1.0
 io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0
 io.coil-kt.coil3:coil-network-okhttp:3.1.0
 io.coil-kt.coil3:coil:3.1.0
-io.insert-koin:koin-android:4.0.4
-io.insert-koin:koin-androidx-compose:4.0.4
-io.insert-koin:koin-bom:4.0.4
-io.insert-koin:koin-compose-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel-jvm:4.0.4
-io.insert-koin:koin-compose-viewmodel:4.0.4
-io.insert-koin:koin-compose:4.0.4
-io.insert-koin:koin-core-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel-jvm:4.0.4
-io.insert-koin:koin-core-viewmodel:4.0.4
-io.insert-koin:koin-core:4.0.4
+io.insert-koin:koin-android:4.1.0
+io.insert-koin:koin-androidx-compose:4.1.0
+io.insert-koin:koin-bom:4.1.0
+io.insert-koin:koin-compose-android:4.1.0
+io.insert-koin:koin-compose-viewmodel-android:4.1.0
+io.insert-koin:koin-compose-viewmodel:4.1.0
+io.insert-koin:koin-compose:4.1.0
+io.insert-koin:koin-core-jvm:4.1.0
+io.insert-koin:koin-core-viewmodel-android:4.1.0
+io.insert-koin:koin-core-viewmodel:4.1.0
+io.insert-koin:koin-core:4.1.0
 javax.inject:javax.inject:1
 net.jcip:jcip-annotations:1.0
 net.openid:appauth:0.11.1
@@ -239,15 +241,13 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.3.4
 org.apache.httpcomponents.core5:httpcore5:5.3.4
 org.apache.james:apache-mime4j-core:0.8.12
 org.apache.james:apache-mime4j-dom:0.8.12
-org.jetbrains.androidx.core:core-bundle-android:1.0.1
-org.jetbrains.androidx.core:core-bundle:1.0.1
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.3
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
-org.jetbrains.androidx.savedstate:savedstate:1.2.2
+org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0
+org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0
+org.jetbrains.androidx.savedstate:savedstate:1.3.0
 org.jetbrains.compose.animation:animation-core:1.8.1
 org.jetbrains.compose.animation:animation:1.8.1
 org.jetbrains.compose.annotation-internal:annotation:1.8.1
diff --git a/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt b/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt
index fe66eb3f8b5..c8dc26e9088 100644
--- a/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt
+++ b/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt
@@ -2,6 +2,7 @@ package net.thunderbird.android
 
 import app.k9mail.feature.widget.shortcut.LauncherShortcutActivity
 import com.fsck.k9.AppConfig
+import com.fsck.k9.DefaultAppConfig
 import com.fsck.k9.activity.MessageCompose
 import net.thunderbird.android.auth.TbOAuthConfigurationFactory
 import net.thunderbird.android.dev.developmentModuleAdditions
@@ -33,7 +34,7 @@ val appModule = module {
     developmentModuleAdditions()
 }
 
-val appConfig = AppConfig(
+val appConfig = DefaultAppConfig(
     componentsToDisable = listOf(
         MessageCompose::class.java,
         LauncherShortcutActivity::class.java,
diff --git a/build-plugin/src/main/kotlin/thunderbird.quality.badging.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.quality.badging.gradle.kts
index 22d138d3afc..c134335d5b4 100644
--- a/build-plugin/src/main/kotlin/thunderbird.quality.badging.gradle.kts
+++ b/build-plugin/src/main/kotlin/thunderbird.quality.badging.gradle.kts
@@ -37,7 +37,7 @@ androidComponents {
                 )
                 badging.set(
                     project.layout.buildDirectory.file(
-                        "outputs/apk_from_bundle/${variant.name}/${variant.name}-badging.txt",
+                        "outputs/badging/${variant.name}/${variant.name}-badging.txt",
                     ),
                 )
             }
@@ -81,7 +81,7 @@ abstract class GenerateBadgingTask : DefaultTask() {
     @get:OutputFile
     abstract val badging: RegularFileProperty
 
-    @get:PathSensitive(PathSensitivity.NONE)
+    @get:PathSensitive(PathSensitivity.RELATIVE)
     @get:InputFile
     abstract val apk: RegularFileProperty
 
@@ -112,7 +112,7 @@ abstract class GenerateBadgingTask : DefaultTask() {
         return ByteArrayInputStream(outputStream.toByteArray()).bufferedReader().use { reader ->
             reader.lineSequence().map { line ->
                 line.cleanBadgingLine()
-            }.joinToString("\n")
+            }.sorted().joinToString("\n")
         }
     }
 
@@ -122,6 +122,8 @@ abstract class GenerateBadgingTask : DefaultTask() {
                 .replace(Regex("versionCode='[^']*'"), "")
                 .replace(Regex("\\s+"), " ")
                 .trim()
+        } else if (trim().startsWith("uses-feature-not-required:")) {
+            trim()
         } else {
             this
         }
@@ -137,12 +139,12 @@ abstract class CheckBadgingTask : DefaultTask() {
     @get:OutputDirectory
     abstract val output: DirectoryProperty
 
-    @get:PathSensitive(PathSensitivity.NONE)
+    @get:PathSensitive(PathSensitivity.RELATIVE)
     @get:Optional
     @get:InputFile
     abstract val goldenBadging: RegularFileProperty
 
-    @get:PathSensitive(PathSensitivity.NONE)
+    @get:PathSensitive(PathSensitivity.RELATIVE)
     @get:InputFile
     abstract val generatedBadging: RegularFileProperty
 
diff --git a/config/lint/lint.xml b/config/lint/lint.xml
index 10bc101a5e3..b17c6187f6a 100644
--- a/config/lint/lint.xml
+++ b/config/lint/lint.xml
@@ -15,6 +15,10 @@
 
     <issue id="UnusedResources" severity="warning" />
 
+    <issue id="ViewModelConstructorInComposable">
+        <ignore path="**/debug/**" />
+    </issue>
+
     <issue id="all">
         <ignore path="**/ui-utils/ItemTouchHelper/**"/>
         <ignore path="**/ui-utils/LinearLayoutManager/**"/>
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1dcab99d201..aec8e13476d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -65,7 +65,7 @@ javaDiffUtils = "4.12"
 jcipAnnotations = "1.0"
 jetbrainsAnnotations = "26.0.2"
 jetbrainsCompose = "1.8.1"
-jetbrainsComposeLifecycle = "2.8.4"
+jetbrainsComposeLifecycle = "2.9.0"
 jetbrainsComposeNavigation = "2.9.0-beta01"
 jdom = "2.0.6.1"
 jmapClient = "0.3.1"
@@ -73,7 +73,7 @@ jsoup = "1.19.1"
 junit = "4.13.2"
 jutf7 = "1.0.0"
 jzlib = "1.0.7"
-koinBom = "4.0.4"
+koinBom = "4.1.0"
 konsist = "0.17.3"
 kotlinBom = "2.1.20"
 # Needs to match the version used by Gradle, just check with `./gradlew --version`
@@ -212,6 +212,8 @@ icu4j-charset = { module = "com.ibm.icu:icu4j-charset", version.ref = "icu4j" }
 jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" }
 jetbrains-compose-lifecycle-runtime = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "jetbrainsComposeLifecycle" }
 jetbrains-compose-lifecycle-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "jetbrainsComposeLifecycle" }
+jetbrains-compose-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "jetbrainsComposeLifecycle" }
+jetbrains-compose-lifecycle-viewmodel-savedstate = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "jetbrainsComposeLifecycle" }
 jetbrains-compose-navigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "jetbrainsComposeNavigation" }
 jcip-annotations = { module = "net.jcip:jcip-annotations", version.ref = "jcipAnnotations" }
 jdom2 = { module = "org.jdom:jdom2", version.ref = "jdom" }
@@ -286,6 +288,8 @@ shared-kmp-android = [
 shared-kmp-compose = [
   "jetbrains-compose-lifecycle-runtime",
   "jetbrains-compose-lifecycle-viewmodel",
+  "jetbrains-compose-lifecycle-viewmodel-compose",
+  "jetbrains-compose-lifecycle-viewmodel-savedstate",
   # Disabled, as it's still in beta
 #  "jetbrains-compose-navigation",
 ]
diff --git a/legacy/common/src/main/java/com/fsck/k9/LegacyCommonAppModule.kt b/legacy/common/src/main/java/com/fsck/k9/LegacyCommonAppModule.kt
index affe0fbab97..895ffda9a6e 100644
--- a/legacy/common/src/main/java/com/fsck/k9/LegacyCommonAppModule.kt
+++ b/legacy/common/src/main/java/com/fsck/k9/LegacyCommonAppModule.kt
@@ -19,9 +19,9 @@ import org.koin.core.qualifier.named
 import org.koin.dsl.module
 
 val legacyCommonAppModule = module {
-    single {
-        MessagingListenerProvider(
-            listOf(
+    single<MessagingListenerProvider> {
+        DefaultMessagingListenerProvider(
+            listeners = listOf(
                 get<UnreadWidgetUpdateListener>(),
             ),
         )
diff --git a/legacy/common/src/main/java/com/fsck/k9/MessagingListenerProvider.kt b/legacy/common/src/main/java/com/fsck/k9/MessagingListenerProvider.kt
index cfbdaad462e..dff4d9cc881 100644
--- a/legacy/common/src/main/java/com/fsck/k9/MessagingListenerProvider.kt
+++ b/legacy/common/src/main/java/com/fsck/k9/MessagingListenerProvider.kt
@@ -2,4 +2,10 @@ package com.fsck.k9
 
 import app.k9mail.legacy.message.controller.MessagingListener
 
-class MessagingListenerProvider(val listeners: List<MessagingListener>)
+interface MessagingListenerProvider {
+    val listeners: List<MessagingListener>
+}
+
+class DefaultMessagingListenerProvider(
+    override val listeners: List<MessagingListener>,
+) : MessagingListenerProvider
diff --git a/legacy/core/src/main/java/com/fsck/k9/AppConfig.kt b/legacy/core/src/main/java/com/fsck/k9/AppConfig.kt
index 4d3e0e9bf9c..270bdb74569 100644
--- a/legacy/core/src/main/java/com/fsck/k9/AppConfig.kt
+++ b/legacy/core/src/main/java/com/fsck/k9/AppConfig.kt
@@ -1,5 +1,9 @@
 package com.fsck.k9
 
-data class AppConfig(
-    val componentsToDisable: List<Class<*>>,
-)
+interface AppConfig {
+    val componentsToDisable: List<Class<*>>
+}
+
+class DefaultAppConfig(
+    override val componentsToDisable: List<Class<*>>,
+) : AppConfig
diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/view/K9WebViewClient.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/view/K9WebViewClient.kt
index 00b98fbe150..e2e102d851c 100644
--- a/legacy/ui/legacy/src/main/java/com/fsck/k9/view/K9WebViewClient.kt
+++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/view/K9WebViewClient.kt
@@ -21,7 +21,7 @@ import net.thunderbird.core.logging.legacy.Log
 /**
  * [WebViewClient] that intercepts requests for `cid:` URIs to load the respective body part.
  */
-internal class K9WebViewClient(
+class K9WebViewClient(
     private val clipboardManager: ClipboardManager,
     private val attachmentResolver: AttachmentResolver?,
     private val onPageFinishedListener: OnPageFinishedListener?,


Test patch:
diff --git a/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt b/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt
index 1d7197f291e..f94fcc2ad8a 100644
--- a/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt
+++ b/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt
@@ -1,59 +1,59 @@
 package app.k9mail
 
-import android.view.ContextThemeWrapper
+import android.app.Application
+import android.app.NotificationManager
+import android.content.Context
+import android.content.res.AssetManager
+import android.content.res.Configuration
+import android.content.res.Resources
+import android.util.DisplayMetrics
 import androidx.lifecycle.LifecycleOwner
 import androidx.work.WorkerParameters
-import app.k9mail.legacy.ui.folder.FolderIconProvider
-import app.k9mail.legacy.ui.folder.FolderNameFormatter
-import com.fsck.k9.R
-import com.fsck.k9.mail.oauth.AuthStateStorage
+import app.k9mail.feature.account.common.domain.entity.InteractionMode
+import com.fsck.k9.account.AccountRemoverWorker
+import com.fsck.k9.job.MailSyncWorker
+import com.fsck.k9.mailstore.AttachmentResolver
+import com.fsck.k9.message.html.DisplayHtml
+import com.fsck.k9.message.html.HtmlSettings
 import com.fsck.k9.ui.changelog.ChangeLogMode
 import com.fsck.k9.ui.changelog.ChangelogViewModel
-import com.fsck.k9.ui.endtoend.AutocryptKeyTransferActivity
-import com.fsck.k9.ui.endtoend.AutocryptKeyTransferPresenter
-import com.fsck.k9.ui.helper.SizeFormatter
+import com.fsck.k9.view.K9WebViewClient
+import com.fsck.k9.view.MessageWebView
+import net.openid.appauth.AppAuthConfiguration
 import net.thunderbird.feature.account.api.AccountId
 import org.junit.Test
-import org.junit.runner.RunWith
-import org.koin.core.annotation.KoinInternalApi
-import org.koin.core.logger.PrintLogger
-import org.koin.core.parameter.parametersOf
-import org.koin.java.KoinJavaComponent
-import org.koin.test.AutoCloseKoinTest
-import org.koin.test.check.checkModules
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.mock
-import org.robolectric.RobolectricTestRunner
-import org.robolectric.RuntimeEnvironment
+import org.koin.core.annotation.KoinExperimentalAPI
+import org.koin.test.verify.definition
+import org.koin.test.verify.injectedParameters
+import org.koin.test.verify.verify
+import org.openintents.openpgp.OpenPgpApiManager
 
-@RunWith(RobolectricTestRunner::class)
-class DependencyInjectionTest : AutoCloseKoinTest() {
-    private val lifecycleOwner = mock<LifecycleOwner> {
-        on { lifecycle } doReturn mock()
-    }
-    private val autocryptTransferView = mock<AutocryptKeyTransferActivity>()
-    private val authStateStorage = mock<AuthStateStorage>()
+class DependencyInjectionTest {
 
-    @KoinInternalApi
+    @OptIn(KoinExperimentalAPI::class)
     @Test
     fun testDependencyTree() {
-        KoinJavaComponent.getKoin().setupLogger(PrintLogger())
-
-        getKoin().checkModules {
-            withParameters<AutocryptKeyTransferPresenter> { parametersOf(lifecycleOwner, autocryptTransferView) }
-            withParameter<FolderNameFormatter> { RuntimeEnvironment.getApplication() }
-            withParameter<SizeFormatter> { RuntimeEnvironment.getApplication() }
-            withParameter<ChangelogViewModel> { ChangeLogMode.CHANGE_LOG }
-            withParameter<FolderIconProvider> {
-                ContextThemeWrapper(RuntimeEnvironment.getApplication(), R.style.Theme_K9_DayNight).theme
-            }
-            withParameters(clazz = Class.forName("com.fsck.k9.view.K9WebViewClient").kotlin) {
-                parametersOf(null, null)
-            }
-            withInstance(authStateStorage)
-            withInstance(lifecycleOwner)
-            withInstance(mock<WorkerParameters>())
-            withInstance(AccountId.create())
-        }
+        appModule.verify(
+            extraTypes = listOf(
+                AccountId::class,
+                AppAuthConfiguration::class,
+                Application::class,
+                AssetManager::class,
+                Configuration::class,
+                Context::class,
+                DisplayMetrics::class,
+                InteractionMode::class,
+                NotificationManager::class,
+                Resources::class,
+            ),
+            injections = injectedParameters(
+                definition<AccountRemoverWorker>(WorkerParameters::class),
+                definition<ChangelogViewModel>(ChangeLogMode::class),
+                definition<DisplayHtml>(HtmlSettings::class),
+                definition<K9WebViewClient>(AttachmentResolver::class, MessageWebView.OnPageFinishedListener::class),
+                definition<MailSyncWorker>(WorkerParameters::class),
+                definition<OpenPgpApiManager>(LifecycleOwner::class),
+            ),
+        )
     }
 }
diff --git a/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt b/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt
index 1c6b32e73e4..81003020b02 100644
--- a/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt
+++ b/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt
@@ -1,58 +1,59 @@
 package net.thunderbird.android
 
-import android.view.ContextThemeWrapper
+import android.app.Application
+import android.app.NotificationManager
+import android.content.Context
+import android.content.res.AssetManager
+import android.content.res.Configuration
+import android.content.res.Resources
+import android.util.DisplayMetrics
 import androidx.lifecycle.LifecycleOwner
 import androidx.work.WorkerParameters
-import app.k9mail.legacy.ui.folder.FolderIconProvider
-import app.k9mail.legacy.ui.folder.FolderNameFormatter
-import com.fsck.k9.mail.oauth.AuthStateStorage
+import app.k9mail.feature.account.common.domain.entity.InteractionMode
+import com.fsck.k9.account.AccountRemoverWorker
+import com.fsck.k9.job.MailSyncWorker
+import com.fsck.k9.mailstore.AttachmentResolver
+import com.fsck.k9.message.html.DisplayHtml
+import com.fsck.k9.message.html.HtmlSettings
 import com.fsck.k9.ui.changelog.ChangeLogMode
 import com.fsck.k9.ui.changelog.ChangelogViewModel
-import com.fsck.k9.ui.endtoend.AutocryptKeyTransferActivity
-import com.fsck.k9.ui.endtoend.AutocryptKeyTransferPresenter
-import com.fsck.k9.ui.helper.SizeFormatter
+import com.fsck.k9.view.K9WebViewClient
+import com.fsck.k9.view.MessageWebView
+import net.openid.appauth.AppAuthConfiguration
 import net.thunderbird.feature.account.api.AccountId
 import org.junit.Test
-import org.junit.runner.RunWith
-import org.koin.core.annotation.KoinInternalApi
-import org.koin.core.logger.PrintLogger
-import org.koin.core.parameter.parametersOf
-import org.koin.java.KoinJavaComponent
-import org.koin.test.AutoCloseKoinTest
-import org.koin.test.check.checkModules
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.mock
-import org.robolectric.RobolectricTestRunner
-import org.robolectric.RuntimeEnvironment
+import org.koin.core.annotation.KoinExperimentalAPI
+import org.koin.test.verify.definition
+import org.koin.test.verify.injectedParameters
+import org.koin.test.verify.verify
+import org.openintents.openpgp.OpenPgpApiManager
 
-@RunWith(RobolectricTestRunner::class)
-class DependencyInjectionTest : AutoCloseKoinTest() {
-    private val lifecycleOwner = mock<LifecycleOwner> {
-        on { lifecycle } doReturn mock()
-    }
-    private val autocryptTransferView = mock<AutocryptKeyTransferActivity>()
-    private val authStateStorage = mock<AuthStateStorage>()
+class DependencyInjectionTest {
 
-    @KoinInternalApi
+    @OptIn(KoinExperimentalAPI::class)
     @Test
     fun testDependencyTree() {
-        KoinJavaComponent.getKoin().setupLogger(PrintLogger())
-
-        getKoin().checkModules {
-            withParameters<AutocryptKeyTransferPresenter> { parametersOf(lifecycleOwner, autocryptTransferView) }
-            withParameter<FolderNameFormatter> { RuntimeEnvironment.getApplication() }
-            withParameter<SizeFormatter> { RuntimeEnvironment.getApplication() }
-            withParameter<ChangelogViewModel> { ChangeLogMode.CHANGE_LOG }
-            withParameter<FolderIconProvider> {
-                ContextThemeWrapper(RuntimeEnvironment.getApplication(), R.style.Theme_Thunderbird_DayNight).theme
-            }
-            withParameters(clazz = Class.forName("com.fsck.k9.view.K9WebViewClient").kotlin) {
-                parametersOf(null, null)
-            }
-            withInstance(authStateStorage)
-            withInstance(lifecycleOwner)
-            withInstance(mock<WorkerParameters>())
-            withInstance(AccountId.create())
-        }
+        appModule.verify(
+            extraTypes = listOf(
+                AccountId::class,
+                AppAuthConfiguration::class,
+                Application::class,
+                AssetManager::class,
+                Configuration::class,
+                Context::class,
+                DisplayMetrics::class,
+                InteractionMode::class,
+                NotificationManager::class,
+                Resources::class,
+            ),
+            injections = injectedParameters(
+                definition<AccountRemoverWorker>(WorkerParameters::class),
+                definition<ChangelogViewModel>(ChangeLogMode::class),
+                definition<DisplayHtml>(HtmlSettings::class),
+                definition<K9WebViewClient>(AttachmentResolver::class, MessageWebView.OnPageFinishedListener::class),
+                definition<MailSyncWorker>(WorkerParameters::class),
+                definition<OpenPgpApiManager>(LifecycleOwner::class),
+            ),
+        )
     }
 }
diff --git a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt
index 907d266f1fc..0bfbd2becfe 100644
--- a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt
+++ b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt
@@ -49,7 +49,7 @@ class TestApp : Application() {
 
 val testModule = module {
     single<Logger> { TestApp.logger }
-    single { AppConfig(emptyList()) }
+    single<AppConfig> { DefaultAppConfig(emptyList()) }
     single { mock<CoreResourceProvider>() }
     single { mock<EncryptionExtractor>() }
     single<StoragePersister> { InMemoryStoragePersister() }
diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt
index 9f86d3ddab7..262a1e3c931 100644
--- a/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt
+++ b/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt
@@ -6,6 +6,7 @@ import app.k9mail.legacy.di.DI
 import com.fsck.k9.AppConfig
 import com.fsck.k9.Core
 import com.fsck.k9.CoreResourceProvider
+import com.fsck.k9.DefaultAppConfig
 import com.fsck.k9.K9
 import com.fsck.k9.backend.BackendManager
 import com.fsck.k9.crypto.EncryptionExtractor
@@ -45,7 +46,7 @@ class TestApp : Application() {
 
 val testModule = module {
     single<Logger> { TestApp.logger }
-    single { AppConfig(emptyList()) }
+    single<AppConfig> { DefaultAppConfig(emptyList()) }
     single { mock<CoreResourceProvider>() }
     single { mock<EncryptionExtractor>() }
     single<StoragePersister> { K9StoragePersister(get()) }
diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt b/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt
index 39286670efe..fda27249459 100644
--- a/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt
+++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt
@@ -40,7 +40,7 @@ class TestApp : Application() {
 
 val testModule = module {
     single<Logger> { TestApp.logger }
-    single { AppConfig(emptyList()) }
+    single<AppConfig> { DefaultAppConfig(componentsToDisable = emptyList()) }
     single<CoreResourceProvider> { TestCoreResourceProvider() }
     single<StoragePersister> { InMemoryStoragePersister() }
     single<AccountDefaultsProvider> { mock<AccountDefaultsProvider>() }