Repo created

This commit is contained in:
Fr4nz D13trich 2025-11-22 13:56:56 +01:00
parent 75dc487a7a
commit 39c29d175b
6317 changed files with 388324 additions and 2 deletions

View file

@ -0,0 +1,3 @@
# Thunderbird for Android
This is the source code of the Thunderbird Android app.

View file

@ -0,0 +1,99 @@
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'
application-label-ca:'Thunderbird Beta'
application-label-co:'Thunderbird Beta'
application-label-cs:'Thunderbird Beta'
application-label-cy:'Thunderbird Beta'
application-label-da:'Thunderbird Beta'
application-label-de:'Thunderbird Beta'
application-label-el:'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'
application-label-eu:'Thunderbird Beta'
application-label-fa:'Thunderbird Beta'
application-label-fi:'Thunderbird Beta'
application-label-fr:'Thunderbird Beta'
application-label-fy:'Thunderbird Beta'
application-label-ga:'Thunderbird Beta'
application-label-gl:'Thunderbird Beta'
application-label-hr:'Thunderbird Beta'
application-label-hu:'Thunderbird Beta'
application-label-in:'Thunderbird Beta'
application-label-is:'Thunderbird Beta'
application-label-it:'Thunderbird Beta'
application-label-iw:'Thunderbird Beta'
application-label-ja:'Thunderbird Beta'
application-label-ko:'Thunderbird Beta'
application-label-lt:'Thunderbird Beta'
application-label-lv:'Thunderbird Beta'
application-label-nb:'Thunderbird Beta'
application-label-nl:'Thunderbird Beta'
application-label-nn:'Thunderbird Beta'
application-label-pl:'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'
application-label-sl:'Thunderbird Beta'
application-label-sq:'Thunderbird Beta'
application-label-sr:'Thunderbird Beta'
application-label-sv:'Thunderbird Beta'
application-label-tr:'Thunderbird Beta'
application-label-uk:'Thunderbird Beta'
application-label-vi:'Thunderbird Beta'
application-label-zh-CN:'Thunderbird Beta'
application-label-zh-TW:'Thunderbird Beta'
application-label-zh:'Thunderbird Beta'
application-label:'Thunderbird Beta'
application: label='Thunderbird Beta' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
densities: '120' '160' '240' '320' '480' '640' '65534'
feature-group: label=''
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
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'
supports-screens: 'small' 'normal' 'large' 'xlarge'
targetSdkVersion:'35'
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'

View file

@ -0,0 +1,99 @@
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'
application-label-ca:'Thunderbird Daily'
application-label-co:'Thunderbird Daily'
application-label-cs:'Thunderbird Daily'
application-label-cy:'Thunderbird Daily'
application-label-da:'Thunderbird Daily'
application-label-de:'Thunderbird Daily'
application-label-el:'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'
application-label-eu:'Thunderbird Daily'
application-label-fa:'Thunderbird Daily'
application-label-fi:'Thunderbird Daily'
application-label-fr:'Thunderbird Daily'
application-label-fy:'Thunderbird Daily'
application-label-ga:'Thunderbird Daily'
application-label-gl:'Thunderbird Daily'
application-label-hr:'Thunderbird Daily'
application-label-hu:'Thunderbird Daily'
application-label-in:'Thunderbird Daily'
application-label-is:'Thunderbird Daily'
application-label-it:'Thunderbird Daily'
application-label-iw:'Thunderbird Daily'
application-label-ja:'Thunderbird Daily'
application-label-ko:'Thunderbird Daily'
application-label-lt:'Thunderbird Daily'
application-label-lv:'Thunderbird Daily'
application-label-nb:'Thunderbird Daily'
application-label-nl:'Thunderbird Daily'
application-label-nn:'Thunderbird Daily'
application-label-pl:'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'
application-label-sl:'Thunderbird Daily'
application-label-sq:'Thunderbird Daily'
application-label-sr:'Thunderbird Daily'
application-label-sv:'Thunderbird Daily'
application-label-tr:'Thunderbird Daily'
application-label-uk:'Thunderbird Daily'
application-label-vi:'Thunderbird Daily'
application-label-zh-CN:'Thunderbird Daily'
application-label-zh-TW:'Thunderbird Daily'
application-label-zh:'Thunderbird Daily'
application-label:'Thunderbird Daily'
application: label='Thunderbird Daily' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
densities: '120' '160' '240' '320' '480' '640' '65534'
feature-group: label=''
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
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'
supports-screens: 'small' 'normal' 'large' 'xlarge'
targetSdkVersion:'35'
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'

View file

@ -0,0 +1,99 @@
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'
application-label-ca:'Thunderbird'
application-label-co:'Thunderbird'
application-label-cs:'Thunderbird'
application-label-cy:'Thunderbird'
application-label-da:'Thunderbird'
application-label-de:'Thunderbird'
application-label-el:'Thunderbird'
application-label-en-GB:'Thunderbird'
application-label-en:'Thunderbird'
application-label-eo:'Thunderbird'
application-label-es:'Thunderbird'
application-label-et:'Thunderbird'
application-label-eu:'Thunderbird'
application-label-fa:'Thunderbird'
application-label-fi:'Thunderbird'
application-label-fr:'Thunderbird'
application-label-fy:'Thunderbird'
application-label-ga:'Thunderbird'
application-label-gl:'Thunderbird'
application-label-hr:'Thunderbird'
application-label-hu:'Thunderbird'
application-label-in:'Thunderbird'
application-label-is:'Thunderbird'
application-label-it:'Thunderbird'
application-label-iw:'Thunderbird'
application-label-ja:'Thunderbird'
application-label-ko:'Thunderbird'
application-label-lt:'Thunderbird'
application-label-lv:'Thunderbird'
application-label-nb:'Thunderbird'
application-label-nl:'Thunderbird'
application-label-nn:'Thunderbird'
application-label-pl:'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'
application-label-sl:'Thunderbird'
application-label-sq:'Thunderbird'
application-label-sr:'Thunderbird'
application-label-sv:'Thunderbird'
application-label-tr:'Thunderbird'
application-label-uk:'Thunderbird'
application-label-vi:'Thunderbird'
application-label-zh-CN:'Thunderbird'
application-label-zh-TW:'Thunderbird'
application-label-zh:'Thunderbird'
application-label:'Thunderbird'
application: label='Thunderbird' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
densities: '120' '160' '240' '320' '480' '640' '65534'
feature-group: label=''
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
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'
supports-screens: 'small' 'normal' 'large' 'xlarge'
targetSdkVersion:'35'
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'

View file

@ -0,0 +1,100 @@
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'
application-label-ca:'Thunderbird Beta'
application-label-co:'Thunderbird Beta'
application-label-cs:'Thunderbird Beta'
application-label-cy:'Thunderbird Beta'
application-label-da:'Thunderbird Beta'
application-label-de:'Thunderbird Beta'
application-label-el:'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'
application-label-eu:'Thunderbird Beta'
application-label-fa:'Thunderbird Beta'
application-label-fi:'Thunderbird Beta'
application-label-fr:'Thunderbird Beta'
application-label-fy:'Thunderbird Beta'
application-label-ga:'Thunderbird Beta'
application-label-gl:'Thunderbird Beta'
application-label-hr:'Thunderbird Beta'
application-label-hu:'Thunderbird Beta'
application-label-in:'Thunderbird Beta'
application-label-is:'Thunderbird Beta'
application-label-it:'Thunderbird Beta'
application-label-iw:'Thunderbird Beta'
application-label-ja:'Thunderbird Beta'
application-label-ko:'Thunderbird Beta'
application-label-lt:'Thunderbird Beta'
application-label-lv:'Thunderbird Beta'
application-label-nb:'Thunderbird Beta'
application-label-nl:'Thunderbird Beta'
application-label-nn:'Thunderbird Beta'
application-label-pl:'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'
application-label-sl:'Thunderbird Beta'
application-label-sq:'Thunderbird Beta'
application-label-sr:'Thunderbird Beta'
application-label-sv:'Thunderbird Beta'
application-label-tr:'Thunderbird Beta'
application-label-uk:'Thunderbird Beta'
application-label-vi:'Thunderbird Beta'
application-label-zh-CN:'Thunderbird Beta'
application-label-zh-TW:'Thunderbird Beta'
application-label-zh:'Thunderbird Beta'
application-label:'Thunderbird Beta'
application: label='Thunderbird Beta' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
densities: '120' '160' '240' '320' '480' '640' '65534'
feature-group: label=''
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
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'
supports-screens: 'small' 'normal' 'large' 'xlarge'
targetSdkVersion:'35'
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'

View file

@ -0,0 +1,100 @@
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'
application-label-ca:'Thunderbird Daily'
application-label-co:'Thunderbird Daily'
application-label-cs:'Thunderbird Daily'
application-label-cy:'Thunderbird Daily'
application-label-da:'Thunderbird Daily'
application-label-de:'Thunderbird Daily'
application-label-el:'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'
application-label-eu:'Thunderbird Daily'
application-label-fa:'Thunderbird Daily'
application-label-fi:'Thunderbird Daily'
application-label-fr:'Thunderbird Daily'
application-label-fy:'Thunderbird Daily'
application-label-ga:'Thunderbird Daily'
application-label-gl:'Thunderbird Daily'
application-label-hr:'Thunderbird Daily'
application-label-hu:'Thunderbird Daily'
application-label-in:'Thunderbird Daily'
application-label-is:'Thunderbird Daily'
application-label-it:'Thunderbird Daily'
application-label-iw:'Thunderbird Daily'
application-label-ja:'Thunderbird Daily'
application-label-ko:'Thunderbird Daily'
application-label-lt:'Thunderbird Daily'
application-label-lv:'Thunderbird Daily'
application-label-nb:'Thunderbird Daily'
application-label-nl:'Thunderbird Daily'
application-label-nn:'Thunderbird Daily'
application-label-pl:'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'
application-label-sl:'Thunderbird Daily'
application-label-sq:'Thunderbird Daily'
application-label-sr:'Thunderbird Daily'
application-label-sv:'Thunderbird Daily'
application-label-tr:'Thunderbird Daily'
application-label-uk:'Thunderbird Daily'
application-label-vi:'Thunderbird Daily'
application-label-zh-CN:'Thunderbird Daily'
application-label-zh-TW:'Thunderbird Daily'
application-label-zh:'Thunderbird Daily'
application-label:'Thunderbird Daily'
application: label='Thunderbird Daily' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
densities: '120' '160' '240' '320' '480' '640' '65534'
feature-group: label=''
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
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'
supports-screens: 'small' 'normal' 'large' 'xlarge'
targetSdkVersion:'35'
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'

View file

@ -0,0 +1,100 @@
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'
application-label-ca:'Thunderbird'
application-label-co:'Thunderbird'
application-label-cs:'Thunderbird'
application-label-cy:'Thunderbird'
application-label-da:'Thunderbird'
application-label-de:'Thunderbird'
application-label-el:'Thunderbird'
application-label-en-GB:'Thunderbird'
application-label-en:'Thunderbird'
application-label-eo:'Thunderbird'
application-label-es:'Thunderbird'
application-label-et:'Thunderbird'
application-label-eu:'Thunderbird'
application-label-fa:'Thunderbird'
application-label-fi:'Thunderbird'
application-label-fr:'Thunderbird'
application-label-fy:'Thunderbird'
application-label-ga:'Thunderbird'
application-label-gl:'Thunderbird'
application-label-hr:'Thunderbird'
application-label-hu:'Thunderbird'
application-label-in:'Thunderbird'
application-label-is:'Thunderbird'
application-label-it:'Thunderbird'
application-label-iw:'Thunderbird'
application-label-ja:'Thunderbird'
application-label-ko:'Thunderbird'
application-label-lt:'Thunderbird'
application-label-lv:'Thunderbird'
application-label-nb:'Thunderbird'
application-label-nl:'Thunderbird'
application-label-nn:'Thunderbird'
application-label-pl:'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'
application-label-sl:'Thunderbird'
application-label-sq:'Thunderbird'
application-label-sr:'Thunderbird'
application-label-sv:'Thunderbird'
application-label-tr:'Thunderbird'
application-label-uk:'Thunderbird'
application-label-vi:'Thunderbird'
application-label-zh-CN:'Thunderbird'
application-label-zh-TW:'Thunderbird'
application-label-zh:'Thunderbird'
application-label:'Thunderbird'
application: label='Thunderbird' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
densities: '120' '160' '240' '320' '480' '640' '65534'
feature-group: label=''
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
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'
supports-screens: 'small' 'normal' 'large' 'xlarge'
targetSdkVersion:'35'
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'

View file

@ -0,0 +1,279 @@
plugins {
id(ThunderbirdPlugins.App.androidCompose)
alias(libs.plugins.dependency.guard)
id("thunderbird.app.version.info")
id("thunderbird.quality.badging")
}
val testCoverageEnabled: Boolean by extra
if (testCoverageEnabled) {
apply(plugin = "jacoco")
}
android {
namespace = "net.thunderbird.android"
defaultConfig {
applicationId = "net.thunderbird.android"
testApplicationId = "net.thunderbird.android.tests"
versionCode = 16
versionName = "13.0"
buildConfigField("String", "CLIENT_INFO_APP_NAME", "\"Thunderbird for Android\"")
}
androidResources {
// Keep in sync with the resource string array "supported_languages"
localeFilters += listOf(
"ar",
"be",
"bg",
"ca",
"co",
"cs",
"cy",
"da",
"de",
"el",
"en",
"en-rGB",
"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-rBR",
"pt-rPT",
"ro",
"ru",
"sl",
"sk",
"sq",
"sr",
"sv",
"tr",
"uk",
"vi",
"zh-rCN",
"zh-rTW",
)
}
signingConfigs {
val useUploadKey = properties.getOrDefault("tb.useUploadKey", "true") == "true"
createSigningConfig(project, SigningType.TB_RELEASE, isUpload = useUploadKey)
createSigningConfig(project, SigningType.TB_BETA, isUpload = useUploadKey)
createSigningConfig(project, SigningType.TB_DAILY, isUpload = useUploadKey)
}
buildTypes {
debug {
applicationIdSuffix = ".debug"
versionNameSuffix = "-SNAPSHOT"
isMinifyEnabled = false
isShrinkResources = false
isDebuggable = true
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "null")
}
release {
signingConfig = signingConfigs.getByType(SigningType.TB_RELEASE)
isMinifyEnabled = true
isShrinkResources = true
isDebuggable = false
proguardFiles(
getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro",
)
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "\"release\"")
}
create("beta") {
signingConfig = signingConfigs.getByType(SigningType.TB_BETA)
applicationIdSuffix = ".beta"
isMinifyEnabled = true
isShrinkResources = true
isDebuggable = false
matchingFallbacks += listOf("release")
proguardFiles(
getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro",
)
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "\"beta\"")
}
create("daily") {
signingConfig = signingConfigs.getByType(SigningType.TB_DAILY)
applicationIdSuffix = ".daily"
versionNameSuffix = "a1"
isMinifyEnabled = true
isShrinkResources = true
isDebuggable = false
matchingFallbacks += listOf("release")
proguardFiles(
getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro",
)
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1918151
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "\"nightly\"")
}
}
flavorDimensions += listOf("app")
productFlavors {
create("foss") {
dimension = "app"
buildConfigField("String", "PRODUCT_FLAVOR_APP", "\"foss\"")
}
create("full") {
dimension = "app"
buildConfigField("String", "PRODUCT_FLAVOR_APP", "\"full\"")
}
}
@Suppress("UnstableApiUsage")
bundle {
language {
// Don't split by language. Otherwise our in-app language switcher won't work.
enableSplit = false
}
}
packaging {
jniLibs {
excludes += listOf("kotlin/**")
}
resources {
excludes += listOf(
"META-INF/*.kotlin_module",
"kotlin/**",
"DebugProbesKt.bin",
)
}
}
}
androidComponents {
onVariants(selector().withBuildType("release")) { variant ->
variant.packaging.resources.excludes.addAll(
"META-INF/*.version",
)
}
}
// Initialize placeholders for the product flavor and build type combinations needed for dependency declarations.
// They are required to avoid "Unresolved configuration" errors.
val fullDebugImplementation by configurations.creating
val fullDailyImplementation by configurations.creating
val fullBetaImplementation by configurations.creating
val fullReleaseImplementation by configurations.creating
dependencies {
implementation(projects.appCommon)
implementation(projects.core.ui.compose.theme2.thunderbird)
implementation(projects.core.ui.legacy.theme2.thunderbird)
implementation(projects.feature.launcher)
implementation(projects.legacy.core)
implementation(projects.legacy.ui.legacy)
implementation(projects.core.featureflag)
implementation(projects.feature.account.settings.impl)
implementation(projects.feature.mail.message.list)
implementation(projects.feature.widget.messageList)
implementation(projects.feature.widget.messageListGlance)
implementation(projects.feature.widget.shortcut)
implementation(projects.feature.widget.unread)
debugImplementation(projects.feature.telemetry.noop)
"dailyImplementation"(projects.feature.telemetry.noop)
"betaImplementation"(projects.feature.telemetry.noop)
releaseImplementation(projects.feature.telemetry.noop)
implementation(libs.androidx.work.runtime)
implementation(projects.feature.autodiscovery.api)
debugImplementation(projects.backend.demo)
debugImplementation(projects.feature.autodiscovery.demo)
"fossImplementation"(projects.feature.funding.link)
fullDebugImplementation(projects.feature.funding.googleplay)
fullDailyImplementation(projects.feature.funding.googleplay)
fullBetaImplementation(projects.feature.funding.googleplay)
fullReleaseImplementation(projects.feature.funding.googleplay)
implementation(projects.feature.onboarding.migration.thunderbird)
implementation(projects.feature.migration.launcher.thunderbird)
// TODO remove once OAuth ids have been moved from TBD to TBA
"betaImplementation"(libs.appauth)
releaseImplementation(libs.appauth)
// Required for DependencyInjectionTest
testImplementation(projects.feature.account.api)
testImplementation(projects.feature.account.common)
testImplementation(projects.plugins.openpgpApiLib.openpgpApi)
testImplementation(libs.appauth)
}
dependencyGuard {
configuration("fossDailyRuntimeClasspath")
configuration("fossBetaRuntimeClasspath")
configuration("fossReleaseRuntimeClasspath")
configuration("fullDailyRuntimeClasspath")
configuration("fullBetaRuntimeClasspath")
configuration("fullReleaseRuntimeClasspath")
}
tasks.register("printConfigurations") {
doLast {
configurations.forEach { configuration ->
println("Configuration: ${configuration.name}")
configuration.dependencies.forEach { dependency ->
println(" - ${dependency.group}:${dependency.name}:${dependency.version}")
}
}
}
}

View file

@ -0,0 +1,293 @@
androidx.activity:activity-compose:1.10.1
androidx.activity:activity-ktx:1.10.1
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.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
androidx.biometric:biometric:1.1.0
androidx.browser:browser:1.3.0
androidx.camera:camera-camera2:1.4.2
androidx.camera:camera-core:1.4.2
androidx.camera:camera-lifecycle:1.4.2
androidx.camera:camera-video:1.4.2
androidx.camera:camera-view:1.4.2
androidx.cardview:cardview:1.0.0
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
androidx.compose.animation:animation-android:1.8.3
androidx.compose.animation:animation-core-android:1.8.3
androidx.compose.animation:animation-core:1.8.3
androidx.compose.animation:animation:1.8.3
androidx.compose.foundation:foundation-android:1.8.3
androidx.compose.foundation:foundation-layout-android:1.8.3
androidx.compose.foundation:foundation-layout:1.8.3
androidx.compose.foundation:foundation:1.8.3
androidx.compose.material3.adaptive:adaptive-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
androidx.compose.material3.adaptive:adaptive:1.1.0
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
androidx.compose.material:material-icons-core-android:1.7.8
androidx.compose.material:material-icons-core:1.7.8
androidx.compose.material:material-icons-extended-android:1.7.8
androidx.compose.material:material-icons-extended:1.7.8
androidx.compose.material:material-ripple-android:1.8.3
androidx.compose.material:material-ripple:1.8.3
androidx.compose.runtime:runtime-android:1.8.3
androidx.compose.runtime:runtime-saveable-android:1.8.3
androidx.compose.runtime:runtime-saveable:1.8.3
androidx.compose.runtime:runtime:1.8.3
androidx.compose.ui:ui-android:1.8.3
androidx.compose.ui:ui-geometry-android:1.8.3
androidx.compose.ui:ui-geometry:1.8.3
androidx.compose.ui:ui-graphics-android:1.8.3
androidx.compose.ui:ui-graphics:1.8.3
androidx.compose.ui:ui-text-android:1.8.3
androidx.compose.ui:ui-text:1.8.3
androidx.compose.ui:ui-tooling-preview-android:1.8.3
androidx.compose.ui:ui-tooling-preview:1.8.3
androidx.compose.ui:ui-unit-android:1.8.3
androidx.compose.ui:ui-unit:1.8.3
androidx.compose.ui:ui-util-android:1.8.3
androidx.compose.ui:ui-util:1.8.3
androidx.compose.ui:ui:1.8.3
androidx.compose:compose-bom:2025.07.00
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.constraintlayout:constraintlayout-core:1.1.1
androidx.constraintlayout:constraintlayout:2.2.1
androidx.coordinatorlayout:coordinatorlayout:1.3.0
androidx.core:core-ktx:1.16.0
androidx.core:core-remoteviews:1.1.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
androidx.datastore:datastore:1.0.0
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.1.1
androidx.dynamicanimation:dynamicanimation:1.0.0
androidx.emoji2:emoji2-views-helper:1.4.0
androidx.emoji2:emoji2:1.4.0
androidx.exifinterface:exifinterface:1.4.1
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
androidx.glance:glance-material3:1.1.1
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.9.2
androidx.lifecycle:lifecycle-common-jvm:2.9.2
androidx.lifecycle:lifecycle-common:2.9.2
androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata-core:2.9.2
androidx.lifecycle:lifecycle-livedata-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata:2.9.2
androidx.lifecycle:lifecycle-process:2.9.2
androidx.lifecycle:lifecycle-runtime-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx:2.9.2
androidx.lifecycle:lifecycle-runtime:2.9.2
androidx.lifecycle:lifecycle-service:2.9.2
androidx.lifecycle:lifecycle-viewmodel-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2
androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.2
androidx.lifecycle:lifecycle-viewmodel:2.9.2
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
androidx.navigation:navigation-common-android:2.9.3
androidx.navigation:navigation-common:2.9.3
androidx.navigation:navigation-compose-android:2.9.3
androidx.navigation:navigation-compose:2.9.3
androidx.navigation:navigation-fragment:2.9.3
androidx.navigation:navigation-runtime-android:2.9.3
androidx.navigation:navigation-runtime:2.9.3
androidx.navigation:navigation-ui:2.9.3
androidx.preference:preference:1.2.1
androidx.print:print:1.0.0
androidx.profileinstaller:profileinstaller:1.4.1
androidx.recyclerview:recyclerview:1.4.0
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-android:1.3.1
androidx.savedstate:savedstate-compose-android:1.3.1
androidx.savedstate:savedstate-compose:1.3.1
androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.transition:transition:1.5.0
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager2:viewpager2:1.1.0-beta02
androidx.viewpager:viewpager:1.0.0
androidx.webkit:webkit:1.14.0
androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
androidx.work:work-runtime-ktx:2.10.3
androidx.work:work-runtime:2.10.3
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.beetstra.jutf7:jutf7:1.0.0
com.github.ByteHamster:SearchPreference:2.7.3
com.github.bumptech.glide:annotations:4.16.0
com.github.bumptech.glide:disklrucache:4.16.0
com.github.bumptech.glide:gifdecoder:4.16.0
com.github.bumptech.glide:glide:4.16.0
com.github.skydoves:landscapist-android:2.5.1
com.github.skydoves:landscapist-coil3-android:2.5.1
com.github.skydoves:landscapist-coil3:2.5.1
com.github.skydoves:landscapist:2.5.1
com.google.android.flexbox:flexbox:3.0.0
com.google.android.material:material:1.12.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.errorprone:error_prone_annotations:2.15.0
com.google.guava:listenablefuture:1.0
com.google.zxing:core:3.5.3
com.jakewharton.timber:timber:5.0.1
com.jcraft:jzlib:1.0.7
com.mikepenz:fastadapter-extensions-drag:5.7.0
com.mikepenz:fastadapter-extensions-expandable:5.7.0
com.mikepenz:fastadapter-extensions-swipe:5.7.0
com.mikepenz:fastadapter-extensions-utils:5.7.0
com.mikepenz:fastadapter:5.7.0
com.squareup.moshi:moshi:1.15.2
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.16.0
com.squareup.okio:okio:3.16.0
com.takisoft.colorpicker:colorpicker:1.0.0
com.takisoft.datetimepicker:datetimepicker:1.0.2
com.takisoft.preferencex:preferencex-colorpicker:1.1.0
com.takisoft.preferencex:preferencex-datetimepicker:1.1.0
com.takisoft.preferencex:preferencex:1.1.0
commons-io:commons-io:2.20.0
de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02
de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0
de.hdodenhof:circleimageview:3.1.0
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-core-android:3.2.0
io.coil-kt.coil3:coil-core:3.2.0
io.coil-kt.coil3:coil-gif:3.2.0
io.coil-kt.coil3:coil-network-core-android:3.2.0
io.coil-kt.coil3:coil-network-core:3.2.0
io.coil-kt.coil3:coil-network-okhttp-jvm:3.2.0
io.coil-kt.coil3:coil-network-okhttp:3.2.0
io.coil-kt.coil3:coil-video:3.2.0
io.coil-kt.coil3:coil:3.2.0
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
org.apache.commons:commons-text:1.3
org.apache.httpcomponents.client5:httpclient5:5.5
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.13
org.apache.james:apache-mime4j-dom:0.8.13
org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.1
org.jetbrains.androidx.savedstate:savedstate:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
org.jetbrains.compose.collection-internal:collection:1.8.2
org.jetbrains.compose.components:components-resources-android:1.8.2
org.jetbrains.compose.components:components-resources:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
org.jetbrains.compose.runtime:runtime-saveable:1.8.2
org.jetbrains.compose.runtime:runtime:1.8.2
org.jetbrains.compose.ui:ui-geometry:1.8.2
org.jetbrains.compose.ui:ui-graphics:1.8.2
org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-tooling-preview:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.2.0
org.jetbrains.kotlin:kotlin-bom:2.2.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0
org.jetbrains.kotlin:kotlin-stdlib:2.2.0
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0
org.jetbrains:annotations:26.0.2
org.jsoup:jsoup:1.19.1
org.jspecify:jspecify:1.0.0
org.minidns:minidns-client:1.1.1
org.minidns:minidns-core:1.1.1
org.minidns:minidns-dnssec:1.1.1
org.minidns:minidns-hla:1.1.1
org.minidns:minidns-iterative-resolver:1.1.1
org.slf4j:slf4j-api:1.7.36

View file

@ -0,0 +1,293 @@
androidx.activity:activity-compose:1.10.1
androidx.activity:activity-ktx:1.10.1
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.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
androidx.biometric:biometric:1.1.0
androidx.browser:browser:1.3.0
androidx.camera:camera-camera2:1.4.2
androidx.camera:camera-core:1.4.2
androidx.camera:camera-lifecycle:1.4.2
androidx.camera:camera-video:1.4.2
androidx.camera:camera-view:1.4.2
androidx.cardview:cardview:1.0.0
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
androidx.compose.animation:animation-android:1.8.3
androidx.compose.animation:animation-core-android:1.8.3
androidx.compose.animation:animation-core:1.8.3
androidx.compose.animation:animation:1.8.3
androidx.compose.foundation:foundation-android:1.8.3
androidx.compose.foundation:foundation-layout-android:1.8.3
androidx.compose.foundation:foundation-layout:1.8.3
androidx.compose.foundation:foundation:1.8.3
androidx.compose.material3.adaptive:adaptive-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
androidx.compose.material3.adaptive:adaptive:1.1.0
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
androidx.compose.material:material-icons-core-android:1.7.8
androidx.compose.material:material-icons-core:1.7.8
androidx.compose.material:material-icons-extended-android:1.7.8
androidx.compose.material:material-icons-extended:1.7.8
androidx.compose.material:material-ripple-android:1.8.3
androidx.compose.material:material-ripple:1.8.3
androidx.compose.runtime:runtime-android:1.8.3
androidx.compose.runtime:runtime-saveable-android:1.8.3
androidx.compose.runtime:runtime-saveable:1.8.3
androidx.compose.runtime:runtime:1.8.3
androidx.compose.ui:ui-android:1.8.3
androidx.compose.ui:ui-geometry-android:1.8.3
androidx.compose.ui:ui-geometry:1.8.3
androidx.compose.ui:ui-graphics-android:1.8.3
androidx.compose.ui:ui-graphics:1.8.3
androidx.compose.ui:ui-text-android:1.8.3
androidx.compose.ui:ui-text:1.8.3
androidx.compose.ui:ui-tooling-preview-android:1.8.3
androidx.compose.ui:ui-tooling-preview:1.8.3
androidx.compose.ui:ui-unit-android:1.8.3
androidx.compose.ui:ui-unit:1.8.3
androidx.compose.ui:ui-util-android:1.8.3
androidx.compose.ui:ui-util:1.8.3
androidx.compose.ui:ui:1.8.3
androidx.compose:compose-bom:2025.07.00
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.constraintlayout:constraintlayout-core:1.1.1
androidx.constraintlayout:constraintlayout:2.2.1
androidx.coordinatorlayout:coordinatorlayout:1.3.0
androidx.core:core-ktx:1.16.0
androidx.core:core-remoteviews:1.1.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
androidx.datastore:datastore:1.0.0
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.1.1
androidx.dynamicanimation:dynamicanimation:1.0.0
androidx.emoji2:emoji2-views-helper:1.4.0
androidx.emoji2:emoji2:1.4.0
androidx.exifinterface:exifinterface:1.4.1
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
androidx.glance:glance-material3:1.1.1
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.9.2
androidx.lifecycle:lifecycle-common-jvm:2.9.2
androidx.lifecycle:lifecycle-common:2.9.2
androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata-core:2.9.2
androidx.lifecycle:lifecycle-livedata-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata:2.9.2
androidx.lifecycle:lifecycle-process:2.9.2
androidx.lifecycle:lifecycle-runtime-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx:2.9.2
androidx.lifecycle:lifecycle-runtime:2.9.2
androidx.lifecycle:lifecycle-service:2.9.2
androidx.lifecycle:lifecycle-viewmodel-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2
androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.2
androidx.lifecycle:lifecycle-viewmodel:2.9.2
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
androidx.navigation:navigation-common-android:2.9.3
androidx.navigation:navigation-common:2.9.3
androidx.navigation:navigation-compose-android:2.9.3
androidx.navigation:navigation-compose:2.9.3
androidx.navigation:navigation-fragment:2.9.3
androidx.navigation:navigation-runtime-android:2.9.3
androidx.navigation:navigation-runtime:2.9.3
androidx.navigation:navigation-ui:2.9.3
androidx.preference:preference:1.2.1
androidx.print:print:1.0.0
androidx.profileinstaller:profileinstaller:1.4.1
androidx.recyclerview:recyclerview:1.4.0
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-android:1.3.1
androidx.savedstate:savedstate-compose-android:1.3.1
androidx.savedstate:savedstate-compose:1.3.1
androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.transition:transition:1.5.0
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager2:viewpager2:1.1.0-beta02
androidx.viewpager:viewpager:1.0.0
androidx.webkit:webkit:1.14.0
androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
androidx.work:work-runtime-ktx:2.10.3
androidx.work:work-runtime:2.10.3
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.beetstra.jutf7:jutf7:1.0.0
com.github.ByteHamster:SearchPreference:2.7.3
com.github.bumptech.glide:annotations:4.16.0
com.github.bumptech.glide:disklrucache:4.16.0
com.github.bumptech.glide:gifdecoder:4.16.0
com.github.bumptech.glide:glide:4.16.0
com.github.skydoves:landscapist-android:2.5.1
com.github.skydoves:landscapist-coil3-android:2.5.1
com.github.skydoves:landscapist-coil3:2.5.1
com.github.skydoves:landscapist:2.5.1
com.google.android.flexbox:flexbox:3.0.0
com.google.android.material:material:1.12.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.errorprone:error_prone_annotations:2.15.0
com.google.guava:listenablefuture:1.0
com.google.zxing:core:3.5.3
com.jakewharton.timber:timber:5.0.1
com.jcraft:jzlib:1.0.7
com.mikepenz:fastadapter-extensions-drag:5.7.0
com.mikepenz:fastadapter-extensions-expandable:5.7.0
com.mikepenz:fastadapter-extensions-swipe:5.7.0
com.mikepenz:fastadapter-extensions-utils:5.7.0
com.mikepenz:fastadapter:5.7.0
com.squareup.moshi:moshi:1.15.2
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.16.0
com.squareup.okio:okio:3.16.0
com.takisoft.colorpicker:colorpicker:1.0.0
com.takisoft.datetimepicker:datetimepicker:1.0.2
com.takisoft.preferencex:preferencex-colorpicker:1.1.0
com.takisoft.preferencex:preferencex-datetimepicker:1.1.0
com.takisoft.preferencex:preferencex:1.1.0
commons-io:commons-io:2.20.0
de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02
de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0
de.hdodenhof:circleimageview:3.1.0
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-core-android:3.2.0
io.coil-kt.coil3:coil-core:3.2.0
io.coil-kt.coil3:coil-gif:3.2.0
io.coil-kt.coil3:coil-network-core-android:3.2.0
io.coil-kt.coil3:coil-network-core:3.2.0
io.coil-kt.coil3:coil-network-okhttp-jvm:3.2.0
io.coil-kt.coil3:coil-network-okhttp:3.2.0
io.coil-kt.coil3:coil-video:3.2.0
io.coil-kt.coil3:coil:3.2.0
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
org.apache.commons:commons-text:1.3
org.apache.httpcomponents.client5:httpclient5:5.5
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.13
org.apache.james:apache-mime4j-dom:0.8.13
org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.1
org.jetbrains.androidx.savedstate:savedstate:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
org.jetbrains.compose.collection-internal:collection:1.8.2
org.jetbrains.compose.components:components-resources-android:1.8.2
org.jetbrains.compose.components:components-resources:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
org.jetbrains.compose.runtime:runtime-saveable:1.8.2
org.jetbrains.compose.runtime:runtime:1.8.2
org.jetbrains.compose.ui:ui-geometry:1.8.2
org.jetbrains.compose.ui:ui-graphics:1.8.2
org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-tooling-preview:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.2.0
org.jetbrains.kotlin:kotlin-bom:2.2.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0
org.jetbrains.kotlin:kotlin-stdlib:2.2.0
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0
org.jetbrains:annotations:26.0.2
org.jsoup:jsoup:1.19.1
org.jspecify:jspecify:1.0.0
org.minidns:minidns-client:1.1.1
org.minidns:minidns-core:1.1.1
org.minidns:minidns-dnssec:1.1.1
org.minidns:minidns-hla:1.1.1
org.minidns:minidns-iterative-resolver:1.1.1
org.slf4j:slf4j-api:1.7.36

View file

@ -0,0 +1,293 @@
androidx.activity:activity-compose:1.10.1
androidx.activity:activity-ktx:1.10.1
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.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
androidx.biometric:biometric:1.1.0
androidx.browser:browser:1.3.0
androidx.camera:camera-camera2:1.4.2
androidx.camera:camera-core:1.4.2
androidx.camera:camera-lifecycle:1.4.2
androidx.camera:camera-video:1.4.2
androidx.camera:camera-view:1.4.2
androidx.cardview:cardview:1.0.0
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
androidx.compose.animation:animation-android:1.8.3
androidx.compose.animation:animation-core-android:1.8.3
androidx.compose.animation:animation-core:1.8.3
androidx.compose.animation:animation:1.8.3
androidx.compose.foundation:foundation-android:1.8.3
androidx.compose.foundation:foundation-layout-android:1.8.3
androidx.compose.foundation:foundation-layout:1.8.3
androidx.compose.foundation:foundation:1.8.3
androidx.compose.material3.adaptive:adaptive-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
androidx.compose.material3.adaptive:adaptive:1.1.0
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
androidx.compose.material:material-icons-core-android:1.7.8
androidx.compose.material:material-icons-core:1.7.8
androidx.compose.material:material-icons-extended-android:1.7.8
androidx.compose.material:material-icons-extended:1.7.8
androidx.compose.material:material-ripple-android:1.8.3
androidx.compose.material:material-ripple:1.8.3
androidx.compose.runtime:runtime-android:1.8.3
androidx.compose.runtime:runtime-saveable-android:1.8.3
androidx.compose.runtime:runtime-saveable:1.8.3
androidx.compose.runtime:runtime:1.8.3
androidx.compose.ui:ui-android:1.8.3
androidx.compose.ui:ui-geometry-android:1.8.3
androidx.compose.ui:ui-geometry:1.8.3
androidx.compose.ui:ui-graphics-android:1.8.3
androidx.compose.ui:ui-graphics:1.8.3
androidx.compose.ui:ui-text-android:1.8.3
androidx.compose.ui:ui-text:1.8.3
androidx.compose.ui:ui-tooling-preview-android:1.8.3
androidx.compose.ui:ui-tooling-preview:1.8.3
androidx.compose.ui:ui-unit-android:1.8.3
androidx.compose.ui:ui-unit:1.8.3
androidx.compose.ui:ui-util-android:1.8.3
androidx.compose.ui:ui-util:1.8.3
androidx.compose.ui:ui:1.8.3
androidx.compose:compose-bom:2025.07.00
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.constraintlayout:constraintlayout-core:1.1.1
androidx.constraintlayout:constraintlayout:2.2.1
androidx.coordinatorlayout:coordinatorlayout:1.3.0
androidx.core:core-ktx:1.16.0
androidx.core:core-remoteviews:1.1.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
androidx.datastore:datastore:1.0.0
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.1.1
androidx.dynamicanimation:dynamicanimation:1.0.0
androidx.emoji2:emoji2-views-helper:1.4.0
androidx.emoji2:emoji2:1.4.0
androidx.exifinterface:exifinterface:1.4.1
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
androidx.glance:glance-material3:1.1.1
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.9.2
androidx.lifecycle:lifecycle-common-jvm:2.9.2
androidx.lifecycle:lifecycle-common:2.9.2
androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata-core:2.9.2
androidx.lifecycle:lifecycle-livedata-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata:2.9.2
androidx.lifecycle:lifecycle-process:2.9.2
androidx.lifecycle:lifecycle-runtime-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx:2.9.2
androidx.lifecycle:lifecycle-runtime:2.9.2
androidx.lifecycle:lifecycle-service:2.9.2
androidx.lifecycle:lifecycle-viewmodel-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2
androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.2
androidx.lifecycle:lifecycle-viewmodel:2.9.2
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
androidx.navigation:navigation-common-android:2.9.3
androidx.navigation:navigation-common:2.9.3
androidx.navigation:navigation-compose-android:2.9.3
androidx.navigation:navigation-compose:2.9.3
androidx.navigation:navigation-fragment:2.9.3
androidx.navigation:navigation-runtime-android:2.9.3
androidx.navigation:navigation-runtime:2.9.3
androidx.navigation:navigation-ui:2.9.3
androidx.preference:preference:1.2.1
androidx.print:print:1.0.0
androidx.profileinstaller:profileinstaller:1.4.1
androidx.recyclerview:recyclerview:1.4.0
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-android:1.3.1
androidx.savedstate:savedstate-compose-android:1.3.1
androidx.savedstate:savedstate-compose:1.3.1
androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.transition:transition:1.5.0
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager2:viewpager2:1.1.0-beta02
androidx.viewpager:viewpager:1.0.0
androidx.webkit:webkit:1.14.0
androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
androidx.work:work-runtime-ktx:2.10.3
androidx.work:work-runtime:2.10.3
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.beetstra.jutf7:jutf7:1.0.0
com.github.ByteHamster:SearchPreference:2.7.3
com.github.bumptech.glide:annotations:4.16.0
com.github.bumptech.glide:disklrucache:4.16.0
com.github.bumptech.glide:gifdecoder:4.16.0
com.github.bumptech.glide:glide:4.16.0
com.github.skydoves:landscapist-android:2.5.1
com.github.skydoves:landscapist-coil3-android:2.5.1
com.github.skydoves:landscapist-coil3:2.5.1
com.github.skydoves:landscapist:2.5.1
com.google.android.flexbox:flexbox:3.0.0
com.google.android.material:material:1.12.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.errorprone:error_prone_annotations:2.15.0
com.google.guava:listenablefuture:1.0
com.google.zxing:core:3.5.3
com.jakewharton.timber:timber:5.0.1
com.jcraft:jzlib:1.0.7
com.mikepenz:fastadapter-extensions-drag:5.7.0
com.mikepenz:fastadapter-extensions-expandable:5.7.0
com.mikepenz:fastadapter-extensions-swipe:5.7.0
com.mikepenz:fastadapter-extensions-utils:5.7.0
com.mikepenz:fastadapter:5.7.0
com.squareup.moshi:moshi:1.15.2
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.16.0
com.squareup.okio:okio:3.16.0
com.takisoft.colorpicker:colorpicker:1.0.0
com.takisoft.datetimepicker:datetimepicker:1.0.2
com.takisoft.preferencex:preferencex-colorpicker:1.1.0
com.takisoft.preferencex:preferencex-datetimepicker:1.1.0
com.takisoft.preferencex:preferencex:1.1.0
commons-io:commons-io:2.20.0
de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02
de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0
de.hdodenhof:circleimageview:3.1.0
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-core-android:3.2.0
io.coil-kt.coil3:coil-core:3.2.0
io.coil-kt.coil3:coil-gif:3.2.0
io.coil-kt.coil3:coil-network-core-android:3.2.0
io.coil-kt.coil3:coil-network-core:3.2.0
io.coil-kt.coil3:coil-network-okhttp-jvm:3.2.0
io.coil-kt.coil3:coil-network-okhttp:3.2.0
io.coil-kt.coil3:coil-video:3.2.0
io.coil-kt.coil3:coil:3.2.0
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
org.apache.commons:commons-text:1.3
org.apache.httpcomponents.client5:httpclient5:5.5
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.13
org.apache.james:apache-mime4j-dom:0.8.13
org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.1
org.jetbrains.androidx.savedstate:savedstate:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
org.jetbrains.compose.collection-internal:collection:1.8.2
org.jetbrains.compose.components:components-resources-android:1.8.2
org.jetbrains.compose.components:components-resources:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
org.jetbrains.compose.runtime:runtime-saveable:1.8.2
org.jetbrains.compose.runtime:runtime:1.8.2
org.jetbrains.compose.ui:ui-geometry:1.8.2
org.jetbrains.compose.ui:ui-graphics:1.8.2
org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-tooling-preview:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.2.0
org.jetbrains.kotlin:kotlin-bom:2.2.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0
org.jetbrains.kotlin:kotlin-stdlib:2.2.0
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0
org.jetbrains:annotations:26.0.2
org.jsoup:jsoup:1.19.1
org.jspecify:jspecify:1.0.0
org.minidns:minidns-client:1.1.1
org.minidns:minidns-core:1.1.1
org.minidns:minidns-dnssec:1.1.1
org.minidns:minidns-hla:1.1.1
org.minidns:minidns-iterative-resolver:1.1.1
org.slf4j:slf4j-api:1.7.36

View file

@ -0,0 +1,307 @@
androidx.activity:activity-compose:1.10.1
androidx.activity:activity-ktx:1.10.1
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.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
androidx.biometric:biometric:1.1.0
androidx.browser:browser:1.3.0
androidx.camera:camera-camera2:1.4.2
androidx.camera:camera-core:1.4.2
androidx.camera:camera-lifecycle:1.4.2
androidx.camera:camera-video:1.4.2
androidx.camera:camera-view:1.4.2
androidx.cardview:cardview:1.0.0
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
androidx.compose.animation:animation-android:1.8.3
androidx.compose.animation:animation-core-android:1.8.3
androidx.compose.animation:animation-core:1.8.3
androidx.compose.animation:animation:1.8.3
androidx.compose.foundation:foundation-android:1.8.3
androidx.compose.foundation:foundation-layout-android:1.8.3
androidx.compose.foundation:foundation-layout:1.8.3
androidx.compose.foundation:foundation:1.8.3
androidx.compose.material3.adaptive:adaptive-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
androidx.compose.material3.adaptive:adaptive:1.1.0
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
androidx.compose.material:material-icons-core-android:1.7.8
androidx.compose.material:material-icons-core:1.7.8
androidx.compose.material:material-icons-extended-android:1.7.8
androidx.compose.material:material-icons-extended:1.7.8
androidx.compose.material:material-ripple-android:1.8.3
androidx.compose.material:material-ripple:1.8.3
androidx.compose.runtime:runtime-android:1.8.3
androidx.compose.runtime:runtime-saveable-android:1.8.3
androidx.compose.runtime:runtime-saveable:1.8.3
androidx.compose.runtime:runtime:1.8.3
androidx.compose.ui:ui-android:1.8.3
androidx.compose.ui:ui-geometry-android:1.8.3
androidx.compose.ui:ui-geometry:1.8.3
androidx.compose.ui:ui-graphics-android:1.8.3
androidx.compose.ui:ui-graphics:1.8.3
androidx.compose.ui:ui-text-android:1.8.3
androidx.compose.ui:ui-text:1.8.3
androidx.compose.ui:ui-tooling-preview-android:1.8.3
androidx.compose.ui:ui-tooling-preview:1.8.3
androidx.compose.ui:ui-unit-android:1.8.3
androidx.compose.ui:ui-unit:1.8.3
androidx.compose.ui:ui-util-android:1.8.3
androidx.compose.ui:ui-util:1.8.3
androidx.compose.ui:ui:1.8.3
androidx.compose:compose-bom:2025.07.00
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.constraintlayout:constraintlayout-core:1.1.1
androidx.constraintlayout:constraintlayout:2.2.1
androidx.coordinatorlayout:coordinatorlayout:1.3.0
androidx.core:core-ktx:1.16.0
androidx.core:core-remoteviews:1.1.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
androidx.datastore:datastore:1.0.0
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.1.1
androidx.dynamicanimation:dynamicanimation:1.0.0
androidx.emoji2:emoji2-views-helper:1.4.0
androidx.emoji2:emoji2:1.4.0
androidx.exifinterface:exifinterface:1.4.1
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
androidx.glance:glance-material3:1.1.1
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.9.2
androidx.lifecycle:lifecycle-common-jvm:2.9.2
androidx.lifecycle:lifecycle-common:2.9.2
androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata-core:2.9.2
androidx.lifecycle:lifecycle-livedata-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata:2.9.2
androidx.lifecycle:lifecycle-process:2.9.2
androidx.lifecycle:lifecycle-runtime-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx:2.9.2
androidx.lifecycle:lifecycle-runtime:2.9.2
androidx.lifecycle:lifecycle-service:2.9.2
androidx.lifecycle:lifecycle-viewmodel-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2
androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.2
androidx.lifecycle:lifecycle-viewmodel:2.9.2
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
androidx.navigation:navigation-common-android:2.9.3
androidx.navigation:navigation-common:2.9.3
androidx.navigation:navigation-compose-android:2.9.3
androidx.navigation:navigation-compose:2.9.3
androidx.navigation:navigation-fragment:2.9.3
androidx.navigation:navigation-runtime-android:2.9.3
androidx.navigation:navigation-runtime:2.9.3
androidx.navigation:navigation-ui:2.9.3
androidx.preference:preference:1.2.1
androidx.print:print:1.0.0
androidx.profileinstaller:profileinstaller:1.4.1
androidx.recyclerview:recyclerview:1.4.0
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-android:1.3.1
androidx.savedstate:savedstate-compose-android:1.3.1
androidx.savedstate:savedstate-compose:1.3.1
androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.transition:transition:1.5.0
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager2:viewpager2:1.1.0-beta02
androidx.viewpager:viewpager:1.0.0
androidx.webkit:webkit:1.14.0
androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
androidx.work:work-runtime-ktx:2.10.3
androidx.work:work-runtime:2.10.3
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.android.billingclient:billing-ktx:7.1.1
com.android.billingclient:billing:7.1.1
com.beetstra.jutf7:jutf7:1.0.0
com.github.ByteHamster:SearchPreference:2.7.3
com.github.bumptech.glide:annotations:4.16.0
com.github.bumptech.glide:disklrucache:4.16.0
com.github.bumptech.glide:gifdecoder:4.16.0
com.github.bumptech.glide:glide:4.16.0
com.github.skydoves:landscapist-android:2.5.1
com.github.skydoves:landscapist-coil3-android:2.5.1
com.github.skydoves:landscapist-coil3:2.5.1
com.github.skydoves:landscapist:2.5.1
com.google.android.datatransport:transport-api:3.0.0
com.google.android.datatransport:transport-backend-cct:3.1.8
com.google.android.datatransport:transport-runtime:3.1.8
com.google.android.flexbox:flexbox:3.0.0
com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-location:19.0.0
com.google.android.gms:play-services-places-placereport:17.0.0
com.google.android.gms:play-services-tasks:18.2.0
com.google.android.material:material:1.12.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.errorprone:error_prone_annotations:2.15.0
com.google.firebase:firebase-encoders-json:18.0.0
com.google.firebase:firebase-encoders-proto:16.0.0
com.google.firebase:firebase-encoders:17.0.0
com.google.guava:listenablefuture:1.0
com.google.zxing:core:3.5.3
com.jakewharton.timber:timber:5.0.1
com.jcraft:jzlib:1.0.7
com.mikepenz:fastadapter-extensions-drag:5.7.0
com.mikepenz:fastadapter-extensions-expandable:5.7.0
com.mikepenz:fastadapter-extensions-swipe:5.7.0
com.mikepenz:fastadapter-extensions-utils:5.7.0
com.mikepenz:fastadapter:5.7.0
com.squareup.moshi:moshi:1.15.2
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.16.0
com.squareup.okio:okio:3.16.0
com.takisoft.colorpicker:colorpicker:1.0.0
com.takisoft.datetimepicker:datetimepicker:1.0.2
com.takisoft.preferencex:preferencex-colorpicker:1.1.0
com.takisoft.preferencex:preferencex-datetimepicker:1.1.0
com.takisoft.preferencex:preferencex:1.1.0
commons-io:commons-io:2.20.0
de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02
de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0
de.hdodenhof:circleimageview:3.1.0
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-core-android:3.2.0
io.coil-kt.coil3:coil-core:3.2.0
io.coil-kt.coil3:coil-gif:3.2.0
io.coil-kt.coil3:coil-network-core-android:3.2.0
io.coil-kt.coil3:coil-network-core:3.2.0
io.coil-kt.coil3:coil-network-okhttp-jvm:3.2.0
io.coil-kt.coil3:coil-network-okhttp:3.2.0
io.coil-kt.coil3:coil-video:3.2.0
io.coil-kt.coil3:coil:3.2.0
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
org.apache.commons:commons-lang3:3.7
org.apache.commons:commons-text:1.3
org.apache.httpcomponents.client5:httpclient5:5.5
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.13
org.apache.james:apache-mime4j-dom:0.8.13
org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.1
org.jetbrains.androidx.savedstate:savedstate:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
org.jetbrains.compose.collection-internal:collection:1.8.2
org.jetbrains.compose.components:components-resources-android:1.8.2
org.jetbrains.compose.components:components-resources:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
org.jetbrains.compose.runtime:runtime-saveable:1.8.2
org.jetbrains.compose.runtime:runtime:1.8.2
org.jetbrains.compose.ui:ui-geometry:1.8.2
org.jetbrains.compose.ui:ui-graphics:1.8.2
org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-tooling-preview:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.2.0
org.jetbrains.kotlin:kotlin-bom:2.2.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0
org.jetbrains.kotlin:kotlin-stdlib:2.2.0
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0
org.jetbrains:annotations:26.0.2
org.jsoup:jsoup:1.19.1
org.jspecify:jspecify:1.0.0
org.minidns:minidns-client:1.1.1
org.minidns:minidns-core:1.1.1
org.minidns:minidns-dnssec:1.1.1
org.minidns:minidns-hla:1.1.1
org.minidns:minidns-iterative-resolver:1.1.1
org.slf4j:slf4j-api:1.7.36

View file

@ -0,0 +1,307 @@
androidx.activity:activity-compose:1.10.1
androidx.activity:activity-ktx:1.10.1
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.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
androidx.biometric:biometric:1.1.0
androidx.browser:browser:1.3.0
androidx.camera:camera-camera2:1.4.2
androidx.camera:camera-core:1.4.2
androidx.camera:camera-lifecycle:1.4.2
androidx.camera:camera-video:1.4.2
androidx.camera:camera-view:1.4.2
androidx.cardview:cardview:1.0.0
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
androidx.compose.animation:animation-android:1.8.3
androidx.compose.animation:animation-core-android:1.8.3
androidx.compose.animation:animation-core:1.8.3
androidx.compose.animation:animation:1.8.3
androidx.compose.foundation:foundation-android:1.8.3
androidx.compose.foundation:foundation-layout-android:1.8.3
androidx.compose.foundation:foundation-layout:1.8.3
androidx.compose.foundation:foundation:1.8.3
androidx.compose.material3.adaptive:adaptive-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
androidx.compose.material3.adaptive:adaptive:1.1.0
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
androidx.compose.material:material-icons-core-android:1.7.8
androidx.compose.material:material-icons-core:1.7.8
androidx.compose.material:material-icons-extended-android:1.7.8
androidx.compose.material:material-icons-extended:1.7.8
androidx.compose.material:material-ripple-android:1.8.3
androidx.compose.material:material-ripple:1.8.3
androidx.compose.runtime:runtime-android:1.8.3
androidx.compose.runtime:runtime-saveable-android:1.8.3
androidx.compose.runtime:runtime-saveable:1.8.3
androidx.compose.runtime:runtime:1.8.3
androidx.compose.ui:ui-android:1.8.3
androidx.compose.ui:ui-geometry-android:1.8.3
androidx.compose.ui:ui-geometry:1.8.3
androidx.compose.ui:ui-graphics-android:1.8.3
androidx.compose.ui:ui-graphics:1.8.3
androidx.compose.ui:ui-text-android:1.8.3
androidx.compose.ui:ui-text:1.8.3
androidx.compose.ui:ui-tooling-preview-android:1.8.3
androidx.compose.ui:ui-tooling-preview:1.8.3
androidx.compose.ui:ui-unit-android:1.8.3
androidx.compose.ui:ui-unit:1.8.3
androidx.compose.ui:ui-util-android:1.8.3
androidx.compose.ui:ui-util:1.8.3
androidx.compose.ui:ui:1.8.3
androidx.compose:compose-bom:2025.07.00
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.constraintlayout:constraintlayout-core:1.1.1
androidx.constraintlayout:constraintlayout:2.2.1
androidx.coordinatorlayout:coordinatorlayout:1.3.0
androidx.core:core-ktx:1.16.0
androidx.core:core-remoteviews:1.1.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
androidx.datastore:datastore:1.0.0
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.1.1
androidx.dynamicanimation:dynamicanimation:1.0.0
androidx.emoji2:emoji2-views-helper:1.4.0
androidx.emoji2:emoji2:1.4.0
androidx.exifinterface:exifinterface:1.4.1
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
androidx.glance:glance-material3:1.1.1
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.9.2
androidx.lifecycle:lifecycle-common-jvm:2.9.2
androidx.lifecycle:lifecycle-common:2.9.2
androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata-core:2.9.2
androidx.lifecycle:lifecycle-livedata-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata:2.9.2
androidx.lifecycle:lifecycle-process:2.9.2
androidx.lifecycle:lifecycle-runtime-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx:2.9.2
androidx.lifecycle:lifecycle-runtime:2.9.2
androidx.lifecycle:lifecycle-service:2.9.2
androidx.lifecycle:lifecycle-viewmodel-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2
androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.2
androidx.lifecycle:lifecycle-viewmodel:2.9.2
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
androidx.navigation:navigation-common-android:2.9.3
androidx.navigation:navigation-common:2.9.3
androidx.navigation:navigation-compose-android:2.9.3
androidx.navigation:navigation-compose:2.9.3
androidx.navigation:navigation-fragment:2.9.3
androidx.navigation:navigation-runtime-android:2.9.3
androidx.navigation:navigation-runtime:2.9.3
androidx.navigation:navigation-ui:2.9.3
androidx.preference:preference:1.2.1
androidx.print:print:1.0.0
androidx.profileinstaller:profileinstaller:1.4.1
androidx.recyclerview:recyclerview:1.4.0
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-android:1.3.1
androidx.savedstate:savedstate-compose-android:1.3.1
androidx.savedstate:savedstate-compose:1.3.1
androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.transition:transition:1.5.0
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager2:viewpager2:1.1.0-beta02
androidx.viewpager:viewpager:1.0.0
androidx.webkit:webkit:1.14.0
androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
androidx.work:work-runtime-ktx:2.10.3
androidx.work:work-runtime:2.10.3
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.android.billingclient:billing-ktx:7.1.1
com.android.billingclient:billing:7.1.1
com.beetstra.jutf7:jutf7:1.0.0
com.github.ByteHamster:SearchPreference:2.7.3
com.github.bumptech.glide:annotations:4.16.0
com.github.bumptech.glide:disklrucache:4.16.0
com.github.bumptech.glide:gifdecoder:4.16.0
com.github.bumptech.glide:glide:4.16.0
com.github.skydoves:landscapist-android:2.5.1
com.github.skydoves:landscapist-coil3-android:2.5.1
com.github.skydoves:landscapist-coil3:2.5.1
com.github.skydoves:landscapist:2.5.1
com.google.android.datatransport:transport-api:3.0.0
com.google.android.datatransport:transport-backend-cct:3.1.8
com.google.android.datatransport:transport-runtime:3.1.8
com.google.android.flexbox:flexbox:3.0.0
com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-location:19.0.0
com.google.android.gms:play-services-places-placereport:17.0.0
com.google.android.gms:play-services-tasks:18.2.0
com.google.android.material:material:1.12.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.errorprone:error_prone_annotations:2.15.0
com.google.firebase:firebase-encoders-json:18.0.0
com.google.firebase:firebase-encoders-proto:16.0.0
com.google.firebase:firebase-encoders:17.0.0
com.google.guava:listenablefuture:1.0
com.google.zxing:core:3.5.3
com.jakewharton.timber:timber:5.0.1
com.jcraft:jzlib:1.0.7
com.mikepenz:fastadapter-extensions-drag:5.7.0
com.mikepenz:fastadapter-extensions-expandable:5.7.0
com.mikepenz:fastadapter-extensions-swipe:5.7.0
com.mikepenz:fastadapter-extensions-utils:5.7.0
com.mikepenz:fastadapter:5.7.0
com.squareup.moshi:moshi:1.15.2
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.16.0
com.squareup.okio:okio:3.16.0
com.takisoft.colorpicker:colorpicker:1.0.0
com.takisoft.datetimepicker:datetimepicker:1.0.2
com.takisoft.preferencex:preferencex-colorpicker:1.1.0
com.takisoft.preferencex:preferencex-datetimepicker:1.1.0
com.takisoft.preferencex:preferencex:1.1.0
commons-io:commons-io:2.20.0
de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02
de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0
de.hdodenhof:circleimageview:3.1.0
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-core-android:3.2.0
io.coil-kt.coil3:coil-core:3.2.0
io.coil-kt.coil3:coil-gif:3.2.0
io.coil-kt.coil3:coil-network-core-android:3.2.0
io.coil-kt.coil3:coil-network-core:3.2.0
io.coil-kt.coil3:coil-network-okhttp-jvm:3.2.0
io.coil-kt.coil3:coil-network-okhttp:3.2.0
io.coil-kt.coil3:coil-video:3.2.0
io.coil-kt.coil3:coil:3.2.0
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
org.apache.commons:commons-lang3:3.7
org.apache.commons:commons-text:1.3
org.apache.httpcomponents.client5:httpclient5:5.5
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.13
org.apache.james:apache-mime4j-dom:0.8.13
org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.1
org.jetbrains.androidx.savedstate:savedstate:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
org.jetbrains.compose.collection-internal:collection:1.8.2
org.jetbrains.compose.components:components-resources-android:1.8.2
org.jetbrains.compose.components:components-resources:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
org.jetbrains.compose.runtime:runtime-saveable:1.8.2
org.jetbrains.compose.runtime:runtime:1.8.2
org.jetbrains.compose.ui:ui-geometry:1.8.2
org.jetbrains.compose.ui:ui-graphics:1.8.2
org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-tooling-preview:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.2.0
org.jetbrains.kotlin:kotlin-bom:2.2.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0
org.jetbrains.kotlin:kotlin-stdlib:2.2.0
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0
org.jetbrains:annotations:26.0.2
org.jsoup:jsoup:1.19.1
org.jspecify:jspecify:1.0.0
org.minidns:minidns-client:1.1.1
org.minidns:minidns-core:1.1.1
org.minidns:minidns-dnssec:1.1.1
org.minidns:minidns-hla:1.1.1
org.minidns:minidns-iterative-resolver:1.1.1
org.slf4j:slf4j-api:1.7.36

View file

@ -0,0 +1,307 @@
androidx.activity:activity-compose:1.10.1
androidx.activity:activity-ktx:1.10.1
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.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
androidx.biometric:biometric:1.1.0
androidx.browser:browser:1.3.0
androidx.camera:camera-camera2:1.4.2
androidx.camera:camera-core:1.4.2
androidx.camera:camera-lifecycle:1.4.2
androidx.camera:camera-video:1.4.2
androidx.camera:camera-view:1.4.2
androidx.cardview:cardview:1.0.0
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
androidx.compose.animation:animation-android:1.8.3
androidx.compose.animation:animation-core-android:1.8.3
androidx.compose.animation:animation-core:1.8.3
androidx.compose.animation:animation:1.8.3
androidx.compose.foundation:foundation-android:1.8.3
androidx.compose.foundation:foundation-layout-android:1.8.3
androidx.compose.foundation:foundation-layout:1.8.3
androidx.compose.foundation:foundation:1.8.3
androidx.compose.material3.adaptive:adaptive-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
androidx.compose.material3.adaptive:adaptive-layout:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
androidx.compose.material3.adaptive:adaptive:1.1.0
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
androidx.compose.material:material-icons-core-android:1.7.8
androidx.compose.material:material-icons-core:1.7.8
androidx.compose.material:material-icons-extended-android:1.7.8
androidx.compose.material:material-icons-extended:1.7.8
androidx.compose.material:material-ripple-android:1.8.3
androidx.compose.material:material-ripple:1.8.3
androidx.compose.runtime:runtime-android:1.8.3
androidx.compose.runtime:runtime-saveable-android:1.8.3
androidx.compose.runtime:runtime-saveable:1.8.3
androidx.compose.runtime:runtime:1.8.3
androidx.compose.ui:ui-android:1.8.3
androidx.compose.ui:ui-geometry-android:1.8.3
androidx.compose.ui:ui-geometry:1.8.3
androidx.compose.ui:ui-graphics-android:1.8.3
androidx.compose.ui:ui-graphics:1.8.3
androidx.compose.ui:ui-text-android:1.8.3
androidx.compose.ui:ui-text:1.8.3
androidx.compose.ui:ui-tooling-preview-android:1.8.3
androidx.compose.ui:ui-tooling-preview:1.8.3
androidx.compose.ui:ui-unit-android:1.8.3
androidx.compose.ui:ui-unit:1.8.3
androidx.compose.ui:ui-util-android:1.8.3
androidx.compose.ui:ui-util:1.8.3
androidx.compose.ui:ui:1.8.3
androidx.compose:compose-bom:2025.07.00
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
androidx.constraintlayout:constraintlayout-core:1.1.1
androidx.constraintlayout:constraintlayout:2.2.1
androidx.coordinatorlayout:coordinatorlayout:1.3.0
androidx.core:core-ktx:1.16.0
androidx.core:core-remoteviews:1.1.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
androidx.datastore:datastore:1.0.0
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.1.1
androidx.dynamicanimation:dynamicanimation:1.0.0
androidx.emoji2:emoji2-views-helper:1.4.0
androidx.emoji2:emoji2:1.4.0
androidx.exifinterface:exifinterface:1.4.1
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
androidx.glance:glance-material3:1.1.1
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.9.2
androidx.lifecycle:lifecycle-common-jvm:2.9.2
androidx.lifecycle:lifecycle-common:2.9.2
androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata-core:2.9.2
androidx.lifecycle:lifecycle-livedata-ktx:2.9.2
androidx.lifecycle:lifecycle-livedata:2.9.2
androidx.lifecycle:lifecycle-process:2.9.2
androidx.lifecycle:lifecycle-runtime-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.2
androidx.lifecycle:lifecycle-runtime-ktx:2.9.2
androidx.lifecycle:lifecycle-runtime:2.9.2
androidx.lifecycle:lifecycle-service:2.9.2
androidx.lifecycle:lifecycle-viewmodel-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2
androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.2
androidx.lifecycle:lifecycle-viewmodel:2.9.2
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
androidx.navigation:navigation-common-android:2.9.3
androidx.navigation:navigation-common:2.9.3
androidx.navigation:navigation-compose-android:2.9.3
androidx.navigation:navigation-compose:2.9.3
androidx.navigation:navigation-fragment:2.9.3
androidx.navigation:navigation-runtime-android:2.9.3
androidx.navigation:navigation-runtime:2.9.3
androidx.navigation:navigation-ui:2.9.3
androidx.preference:preference:1.2.1
androidx.print:print:1.0.0
androidx.profileinstaller:profileinstaller:1.4.1
androidx.recyclerview:recyclerview:1.4.0
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-android:1.3.1
androidx.savedstate:savedstate-compose-android:1.3.1
androidx.savedstate:savedstate-compose:1.3.1
androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.sqlite:sqlite-framework:2.4.0
androidx.sqlite:sqlite:2.4.0
androidx.startup:startup-runtime:1.1.1
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
androidx.transition:transition:1.5.0
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager2:viewpager2:1.1.0-beta02
androidx.viewpager:viewpager:1.0.0
androidx.webkit:webkit:1.14.0
androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
androidx.work:work-runtime-ktx:2.10.3
androidx.work:work-runtime:2.10.3
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
co.touchlab:stately-concurrent-collections:2.1.0
co.touchlab:stately-strict-jvm:2.1.0
co.touchlab:stately-strict:2.1.0
com.android.billingclient:billing-ktx:7.1.1
com.android.billingclient:billing:7.1.1
com.beetstra.jutf7:jutf7:1.0.0
com.github.ByteHamster:SearchPreference:2.7.3
com.github.bumptech.glide:annotations:4.16.0
com.github.bumptech.glide:disklrucache:4.16.0
com.github.bumptech.glide:gifdecoder:4.16.0
com.github.bumptech.glide:glide:4.16.0
com.github.skydoves:landscapist-android:2.5.1
com.github.skydoves:landscapist-coil3-android:2.5.1
com.github.skydoves:landscapist-coil3:2.5.1
com.github.skydoves:landscapist:2.5.1
com.google.android.datatransport:transport-api:3.0.0
com.google.android.datatransport:transport-backend-cct:3.1.8
com.google.android.datatransport:transport-runtime:3.1.8
com.google.android.flexbox:flexbox:3.0.0
com.google.android.gms:play-services-base:18.5.0
com.google.android.gms:play-services-basement:18.4.0
com.google.android.gms:play-services-location:19.0.0
com.google.android.gms:play-services-places-placereport:17.0.0
com.google.android.gms:play-services-tasks:18.2.0
com.google.android.material:material:1.12.0
com.google.auto.value:auto-value-annotations:1.6.3
com.google.errorprone:error_prone_annotations:2.15.0
com.google.firebase:firebase-encoders-json:18.0.0
com.google.firebase:firebase-encoders-proto:16.0.0
com.google.firebase:firebase-encoders:17.0.0
com.google.guava:listenablefuture:1.0
com.google.zxing:core:3.5.3
com.jakewharton.timber:timber:5.0.1
com.jcraft:jzlib:1.0.7
com.mikepenz:fastadapter-extensions-drag:5.7.0
com.mikepenz:fastadapter-extensions-expandable:5.7.0
com.mikepenz:fastadapter-extensions-swipe:5.7.0
com.mikepenz:fastadapter-extensions-utils:5.7.0
com.mikepenz:fastadapter:5.7.0
com.squareup.moshi:moshi:1.15.2
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.16.0
com.squareup.okio:okio:3.16.0
com.takisoft.colorpicker:colorpicker:1.0.0
com.takisoft.datetimepicker:datetimepicker:1.0.2
com.takisoft.preferencex:preferencex-colorpicker:1.1.0
com.takisoft.preferencex:preferencex-datetimepicker:1.1.0
com.takisoft.preferencex:preferencex:1.1.0
commons-io:commons-io:2.20.0
de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02
de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0
de.hdodenhof:circleimageview:3.1.0
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-core-android:3.2.0
io.coil-kt.coil3:coil-core:3.2.0
io.coil-kt.coil3:coil-gif:3.2.0
io.coil-kt.coil3:coil-network-core-android:3.2.0
io.coil-kt.coil3:coil-network-core:3.2.0
io.coil-kt.coil3:coil-network-okhttp-jvm:3.2.0
io.coil-kt.coil3:coil-network-okhttp:3.2.0
io.coil-kt.coil3:coil-video:3.2.0
io.coil-kt.coil3:coil:3.2.0
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
org.apache.commons:commons-lang3:3.7
org.apache.commons:commons-text:1.3
org.apache.httpcomponents.client5:httpclient5:5.5
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.13
org.apache.james:apache-mime4j-dom:0.8.13
org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.1
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.1
org.jetbrains.androidx.savedstate:savedstate:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
org.jetbrains.compose.collection-internal:collection:1.8.2
org.jetbrains.compose.components:components-resources-android:1.8.2
org.jetbrains.compose.components:components-resources:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
org.jetbrains.compose.runtime:runtime-saveable:1.8.2
org.jetbrains.compose.runtime:runtime:1.8.2
org.jetbrains.compose.ui:ui-geometry:1.8.2
org.jetbrains.compose.ui:ui-graphics:1.8.2
org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-tooling-preview:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.2.0
org.jetbrains.kotlin:kotlin-bom:2.2.0
org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.0
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0
org.jetbrains.kotlin:kotlin-stdlib:2.2.0
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0
org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0
org.jetbrains:annotations:26.0.2
org.jsoup:jsoup:1.19.1
org.jspecify:jspecify:1.0.0
org.minidns:minidns-client:1.1.1
org.minidns:minidns-core:1.1.1
org.minidns:minidns-dnssec:1.1.1
org.minidns:minidns-hla:1.1.1
org.minidns:minidns-iterative-resolver:1.1.1
org.slf4j:slf4j-api:1.7.36

64
app-thunderbird/proguard-rules.pro vendored Normal file
View file

@ -0,0 +1,64 @@
# Add project specific ProGuard rules here.
-dontobfuscate
# Preserve the line number information for debugging stack traces.
-keepattributes SourceFile,LineNumberTable
# Library specific rules
-dontnote android.net.http.*
-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**
-dontnote com.squareup.moshi.**
-dontnote com.github.amlcurran.showcaseview.**
-dontnote de.cketti.safecontentresolver.**
-dontnote com.tokenautocomplete.**
-dontwarn okio.**
-dontwarn com.squareup.moshi.**
# Glide
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public class * extends com.bumptech.glide.module.LibraryGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# Project specific rules
-dontnote com.fsck.k9.ui.messageview.**
-dontnote com.fsck.k9.view.**
-assumevalues class * extends android.view.View {
boolean isInEditMode() return false;
}
-keep public class org.openintents.openpgp.**
-keepclassmembers class * extends androidx.appcompat.widget.SearchView {
public <init>(android.content.Context);
}
-keep class com.fsck.k9.mail.oauth.XOAuth2Response { *; }
# okhttp rules
# see: https://github.com/square/okhttp/blob/master/okhttp/src/main/resources/META-INF/proguard/okhttp3.pro
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform
-dontwarn kotlinx.serialization.KSerializer
-dontwarn kotlinx.serialization.Serializable
-dontwarn org.apache.http.client.methods.CloseableHttpResponse
-dontwarn org.slf4j.impl.StaticLoggerBinder
-keep,allowshrinking class com.tokenautocomplete.TokenCompleteTextView

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?><!-- TODO remove once OAuth ids have been moved from TBD to TBA -->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
>
<application>
<activity
android:name="net.openid.appauth.RedirectUriReceiverActivity"
android:exported="true"
>
<!-- The library's default intent filter with `appAuthRedirectScheme` replaced by `applicationId` -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="${applicationId}" />
<data android:scheme="${applicationId}.mobile" />
</intent-filter>
<!-- Microsoft uses a special redirect URI format for Android apps -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="${applicationId}"
android:scheme="msauth"
/>
</intent-filter>
</activity>
</application>
</manifest>

View file

@ -0,0 +1,93 @@
package net.thunderbird.android.auth
import net.thunderbird.android.BuildConfig
import net.thunderbird.core.common.oauth.OAuthConfiguration
import net.thunderbird.core.common.oauth.OAuthConfigurationFactory
@Suppress("ktlint:standard:max-line-length")
class TbOAuthConfigurationFactory : OAuthConfigurationFactory {
override fun createConfigurations(): Map<List<String>, OAuthConfiguration> {
return mapOf(
createAolConfiguration(),
createFastmailConfiguration(),
createGmailConfiguration(),
createMicrosoftConfiguration(),
createYahooConfiguration(),
)
}
private fun createAolConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.aol.com",
"smtp.aol.com",
) to OAuthConfiguration(
clientId = "dj0yJmk9UjJhdndGbFpCUnlxJmQ9WVdrOU9GbHVUVkpoT1d3bWNHbzlNQT09JnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PWU3",
scopes = listOf("mail-w"),
authorizationEndpoint = "https://api.login.aol.com/oauth2/request_auth",
tokenEndpoint = "https://api.login.aol.com/oauth2/get_token",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
private fun createFastmailConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.fastmail.com",
"smtp.fastmail.com",
) to OAuthConfiguration(
clientId = "353e41ae",
scopes = listOf("https://www.fastmail.com/dev/protocol-imap", "https://www.fastmail.com/dev/protocol-smtp"),
authorizationEndpoint = "https://api.fastmail.com/oauth/authorize",
tokenEndpoint = "https://api.fastmail.com/oauth/refresh",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
// TODO: Update clientId and redirectUri once new client ID is available
private fun createGmailConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.gmail.com",
"imap.googlemail.com",
"smtp.gmail.com",
"smtp.googlemail.com",
) to OAuthConfiguration(
clientId = "560629489500-rvmv3suifbrl1888pl6ppulog8krnlcp.apps.googleusercontent.com",
scopes = listOf("https://mail.google.com/"),
authorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth",
tokenEndpoint = "https://oauth2.googleapis.com/token",
redirectUri = "${BuildConfig.APPLICATION_ID}.mobile:/oauth2redirect",
)
}
private fun createMicrosoftConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"outlook.office365.com",
"smtp.office365.com",
"smtp-mail.outlook.com",
) to OAuthConfiguration(
clientId = "e6f8716e-299d-4ed9-bbf3-453f192f44e5",
scopes = listOf(
"openid",
"email",
"https://outlook.office.com/IMAP.AccessAsUser.All",
"https://outlook.office.com/SMTP.Send",
"offline_access",
),
authorizationEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
tokenEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/token",
redirectUri = "msauth://net.thunderbird.android.beta/oXQR8QkspkdQCotvApfiBQiPQBU%3D",
)
}
private fun createYahooConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.mail.yahoo.com",
"smtp.mail.yahoo.com",
) to OAuthConfiguration(
clientId = "dj0yJmk9Rjc5SXlhQjltcjhnJmQ9WVdrOVkxTmtZbmxDVjNrbWNHbzlNQT09JnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PThm",
scopes = listOf("mail-w"),
authorizationEndpoint = "https://api.login.yahoo.com/oauth2/request_auth",
tokenEndpoint = "https://api.login.yahoo.com/oauth2/get_token",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
}

View file

@ -0,0 +1,15 @@
package net.thunderbird.android.dev
import app.k9mail.autodiscovery.api.AutoDiscovery
import com.fsck.k9.backend.BackendFactory
import org.koin.core.module.Module
import org.koin.core.qualifier.named
fun Module.developmentModuleAdditions() {
single<Map<String, BackendFactory>>(named("developmentBackends")) {
emptyMap()
}
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
emptyList()
}
}

View file

@ -0,0 +1,24 @@
package net.thunderbird.android.featureflag
import net.thunderbird.core.featureflag.FeatureFlag
import net.thunderbird.core.featureflag.FeatureFlagFactory
import net.thunderbird.core.featureflag.FeatureFlagKey
import net.thunderbird.core.featureflag.toFeatureFlagKey
/**
* Feature flags for Thunderbird Beta
*/
class TbFeatureFlagFactory : FeatureFlagFactory {
override fun createFeatureCatalog(): List<FeatureFlag> {
return listOf(
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true),
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true),
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true),
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true),
FeatureFlag("enable_dropdown_drawer".toFeatureFlagKey(), enabled = true),
FeatureFlag("enable_dropdown_drawer_ui".toFeatureFlagKey(), enabled = true),
FeatureFlag(FeatureFlagKey.DisplayInAppNotifications, enabled = true),
FeatureFlag(FeatureFlagKey.UseNotificationSenderForSystemNotifications, enabled = false),
)
}
}

View file

@ -0,0 +1,326 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="72dp"
android:height="72dp"
android:viewportWidth="1024"
android:viewportHeight="1024"
>
<path
android:fillColor="#008787"
android:pathData="M866.3,634H493.4C482.5,634 473.6,642.9 473.6,653.8V713.5C473.6,801.4 544.8,872.6 632.6,872.6H839C904.8,872.6 958.3,819.2 958.3,753.3V701.1C958.3,671.2 928.4,634 866.3,634Z"
/>
<path android:pathData="M439.5,260.2L439.6,260.2C466.3,167 582.5,121.5 700.9,121.5C782.7,121.5 856.2,147.4 906.5,188.5C875.3,190.1 845.7,196.2 818.5,206C859.2,221.1 894.2,244.4 920.1,273.2C902.9,270.2 885,268.7 866.8,268.7C864.8,268.7 862.8,268.7 860.9,268.7C907.9,337 935.5,419.7 935.5,508.9C935.5,742.8 745.9,932.4 512,932.4C281.7,932.4 88.5,739.5 88.5,508.9C88.5,472.4 93.3,434.8 102.7,399.5C105.2,392.1 108.6,385 113.2,382.4C118.9,379.2 124.1,388.9 125,392C131.2,415.3 139.5,437.9 149.8,459.5C148.9,411.1 169.6,367.1 198,329C217,303.6 234.5,280 242.6,212.1C243.2,207.6 247.5,204.3 251.9,205.7C313.5,225.9 346.5,328.6 341.4,414.4C375.4,419.3 375.3,383.7 375.3,383.7C364.4,350.2 371.6,288 439.4,260.2L439.5,260.2Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="832.5"
android:endY="817.9"
android:startX="235.5"
android:startY="261.1"
android:type="linear"
>
<item
android:color="#FF1B91F3"
android:offset="0"
/>
<item
android:color="#FF0B68CB"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.9"
android:pathData="M921.6,401C931.9,633.9 740.5,834.8 507,834.8C288.4,834.8 109.3,665.8 93.1,451.4C90.2,471.2 88.7,491.4 88.5,512C90.2,741.5 282.9,932.4 512,932.4C745.9,932.4 935.5,742.8 935.5,508.9C935.5,471.6 930.7,435.5 921.6,401Z"
android:strokeAlpha="0.9"
>
<aapt:attr name="android:fillColor">
<gradient
android:centerX="234.4"
android:centerY="452.7"
android:gradientRadius="358.1"
android:type="radial"
>
<item
android:color="#000B4186"
android:offset="0.5"
/>
<item
android:color="#720B4186"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M501.7,291.1C497.1,283 476,271.1 466.8,269C501.7,157.4 679.2,123.1 787.9,142.8C833.1,151.1 889.4,175.7 906.5,188.5C856.2,147.4 782.7,121.5 700.9,121.5C582.5,121.5 466.3,167 439.6,260.2L439.5,260.2L439.4,260.2C371.6,288 364.4,350.3 375.3,383.7C385.7,343.8 435.5,294.8 501.7,291.1Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="522.9"
android:centerY="305.6"
android:gradientRadius="76.6"
android:type="radial"
>
<item
android:color="#00A29CF6"
android:offset="0"
/>
<item
android:color="#FFA39BF6"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M624.7,214C529.6,232.7 498.5,238.8 466.7,269.1C502.4,174.4 593.7,155.3 702.5,198.4C672.5,204.6 646.9,209.6 624.7,214Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="616.4"
android:endY="164.5"
android:startX="401.6"
android:startY="403.6"
android:type="linear"
>
<item
android:color="#FF0F5DB0"
android:offset="0"
/>
<item
android:color="#000F5DB0"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M111.5,386.6C85.5,493 105.6,618 223.7,723C188.5,684.6 145.6,542.6 240.3,441.2C246.7,434.4 257.6,439.4 258,448.8C265.8,659.5 435.8,788.2 631.9,764.1C571.1,760.7 370.3,690.4 519.7,662.5C597.8,648 720.3,625.2 720.3,515.3C720.3,337.1 582.5,285 499,292.8C441.8,298.1 391,334.4 375.3,383.7C381.3,403.1 357.4,416.8 341.4,414.5C346.5,328.6 313.5,225.9 251.9,205.7C247.5,204.3 243.2,207.6 242.6,212.1C234.5,280 217,303.6 198,329C169.6,367.1 148.9,411.1 149.8,459.5C139.5,437.9 131.2,415.3 125,392C124.3,389.4 120.5,382.1 115.9,381.8C113.4,381.6 112.1,384 111.5,386.6Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="352.3"
android:centerY="739.6"
android:gradientRadius="558.7"
android:type="radial"
>
<item
android:color="#FF094188"
android:offset="0"
/>
<item
android:color="#000B4186"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M467.2,673.3C582.2,766.7 813.5,696.7 813.5,469.6C720.1,611.2 601.2,708.8 467.2,673.3Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="709.2"
android:endY="769.6"
android:startX="778.1"
android:startY="576.8"
android:type="linear"
>
<item
android:color="#007B8BE9"
android:offset="0"
/>
<item
android:color="#FF7B8BE9"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M240.3,441.2C242.7,438.6 245.8,437.7 248.7,438.1C164,541.5 232.3,723.1 279.3,767.7C281.9,775.1 234.8,736.5 228.3,727.5C192.6,697.2 141.4,547.1 240.3,441.2Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="240.8"
android:endY="713.3"
android:startX="182.9"
android:startY="437.5"
android:type="linear"
>
<item
android:color="#FFC59FF9"
android:offset="0.1"
/>
<item
android:color="#00C59FF9"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M512,681.9C627,681.9 720.3,605.8 720.3,511.9C720.3,418.1 627,342 512,342C413.9,342 303.7,405.8 303.7,514.4C303.8,682.2 481,778.7 632.1,764.1C620.8,762.8 550,759 502.1,704.9C497.8,700 490.3,691.5 493.7,686C497.1,680.4 506.5,681.9 512,681.9Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="512"
android:endY="762.4"
android:startX="512"
android:startY="404.2"
android:type="linear"
>
<item
android:color="#FFFFFFFF"
android:offset="0"
/>
<item
android:color="#FFBEE1FE"
android:offset="0.9"
/>
<item
android:color="#FF96CEFD"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.7"
android:pathData="M512,681.9C627,681.9 720.3,605.8 720.3,511.9C720.3,483.3 711.6,456.3 696.2,432.6L530.9,582.7C519.4,593.2 499.9,593.2 488.4,582.7L326.2,435.4C312,458.1 303.7,484.5 303.7,514.4C303.8,682.2 481,778.7 632.1,764.1C631.5,764 630.6,763.9 629.5,763.8L629.5,763.8C612.3,762.2 547.1,755.8 502.1,704.9C497.8,700 490.3,691.5 493.7,686C496.6,681.3 503.6,681.6 509.1,681.8C510.1,681.8 511.1,681.9 512,681.9Z"
android:strokeAlpha="0.7"
>
<aapt:attr name="android:fillColor">
<gradient
android:endX="518.7"
android:endY="756.9"
android:startX="518.7"
android:startY="606.9"
android:type="linear"
>
<item
android:color="#FFBCE0FD"
android:offset="0"
/>
<item
android:color="#FF88CCFC"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#B5DBF9"
android:fillType="evenOdd"
android:pathData="M446.7,602.8C408.5,561.7 326.5,435.5 326.5,435.5L328,432L487.9,568.5C498.7,576.3 514,576.3 524.7,568.3L680.6,435.2H697C697,435.2 612.2,555.6 568.7,602.8C525.1,650 484.8,644 446.7,602.8Z"
/>
<path
android:fillColor="#A8D3F6"
android:fillType="evenOdd"
android:pathData="M463.9,598.6C433.3,566.7 326.3,435.1 326.3,435.1L331.7,432L492.3,568.3C503.1,576.2 518.4,576.1 529.1,568.1L685,435.1H697.1C697.1,435.1 588.8,564 554.7,598.1C520.7,632.2 494.6,630.5 463.9,598.6Z"
/>
<path
android:fillColor="#93C5ED"
android:fillType="evenOdd"
android:pathData="M463.9,593.7C433.3,561.8 335.9,444.7 335.9,444.7L348.5,456.1L492.3,563.5C503.1,571.3 518.4,571.2 529.1,563.3L670.1,456.2L682.6,449C682.6,449 588.8,559.2 554.7,593.3C520.7,627.4 494.6,625.7 463.9,593.7Z"
/>
<path
android:fillColor="#7DB6E4"
android:fillType="evenOdd"
android:pathData="M463.7,583.7C433,551.8 341.1,445.7 341.1,445.7L348.2,446L492,553.5C502.8,561.3 518.2,561.2 528.8,553.3L669.9,446.2L677.4,445.6C677.4,445.6 588.5,549.1 554.5,583.2C520.4,617.4 494.3,615.6 463.7,583.7Z"
/>
<path android:pathData="M532.4,592.4L697.4,434.9C662.5,381 598.1,342 512.1,342C441,342 363.4,375.5 326.2,435.3L486,592.4C497.5,602.9 520.9,602.9 532.4,592.4Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="511.8"
android:endY="771.6"
android:startX="511.3"
android:startY="378.5"
android:type="linear"
>
<item
android:color="#FFFFFFFF"
android:offset="0"
/>
<item
android:color="#FFBEE1FE"
android:offset="0.9"
/>
<item
android:color="#FF96CEFD"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.6"
android:fillColor="#ffffff"
android:pathData="M697.6,434.7L533,592.2C518.4,602.6 502.8,603.3 487.5,593.9L326.1,435.3C330.6,427.9 335.8,420.9 341.5,414.2C347.3,419.7 353,425 358.5,430.1C400.9,469.8 435.2,501.9 483.5,543.2C505.3,561.8 512.1,561.4 533.4,543.2C588.7,496 629.1,460.3 681.7,413.4C687.6,420.1 692.9,427.3 697.6,434.7Z"
android:strokeAlpha="0.6"
/>
<path
android:fillColor="#ffffff"
android:pathData="M541.2,257C563.5,249.9 561.6,227.9 561.6,227.9C561.6,227.9 550.4,214.8 528.3,222C507.7,228.8 504.4,243.6 504.4,243.6C504.4,243.6 515.7,265 541.2,257Z"
/>
<path
android:fillAlpha="0.2"
android:fillColor="#000000"
android:pathData="M891,698.4C821.5,837.2 677.9,932.4 512.1,932.4C483.8,932.4 456,929.5 429,924V859.4C429,770.5 497.3,698.4 581.5,698.4H891Z"
android:strokeAlpha="0.2"
/>
<path
android:fillAlpha="0.9"
android:pathData="M866.3,634H493.4C482.5,634 473.6,642.9 473.6,653.8V713.5C473.6,801.4 544.8,872.6 632.6,872.6H839C904.8,872.6 958.3,819.2 958.3,753.3V701.1C958.3,671.2 928.4,634 866.3,634Z"
android:strokeAlpha="0.9"
>
<aapt:attr name="android:fillColor">
<gradient
android:endX="727.4"
android:endY="740.7"
android:startX="856.4"
android:startY="862.9"
android:type="linear"
>
<item
android:color="#7F054096"
android:offset="0"
/>
<item
android:color="#700F3D9C"
android:offset="0.1"
/>
<item
android:color="#3F2F35B1"
android:offset="0.3"
/>
<item
android:color="#1C462FBF"
android:offset="0.5"
/>
<item
android:color="#07542BC8"
android:offset="0.7"
/>
<item
android:color="#00592ACB"
android:offset="0.9"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M938.4,720.9H595.6C514.5,720.9 448.7,786.7 448.7,867.8V939.7C448.7,950.7 457.6,959.6 468.6,959.6H811.4C892.5,959.6 958.3,893.8 958.3,812.7V701.1C958.3,712.1 949.4,720.9 938.4,720.9Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="970.6"
android:endY="940"
android:startX="504.7"
android:startY="742.8"
android:type="linear"
>
<item
android:color="#FF54FFBD"
android:offset="0"
/>
<item
android:color="#FF00DDFF"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#20123A"
android:pathData="M537,790.9H578.2C600.2,790.9 612.7,800.9 612.7,818.7C612.8,822.8 611.8,826.9 609.8,830.4C607.8,834 604.8,836.9 601.2,838.9C609.5,843.1 614.2,850.6 614.2,861C614.2,880.6 600.5,890.4 578.4,890.4H537V790.9ZM555.9,808V831H578.8C589.1,831 593.4,825.9 593.4,819.1C593.4,812.2 588.6,808 578.6,808H555.9ZM555.9,848.3V873.1H578.7C589.2,873.1 594.7,868.3 594.7,860.6C594.7,852.8 590,848.3 577.9,848.3H555.9ZM632.5,790.9H699.5V809H651.8V831.4H699.5V849.5H651.8V872.2H699.5V890.4H632.5V790.9ZM743.7,808.6H716V790.9H790V808.6H762.6V890.4H743.6L743.7,808.6ZM822.6,790.9H841.5L879.2,890.4H859.4L852.8,872.3H811.3L804.7,890.4H785L822.6,790.9ZM817.7,854.8H846.4L832.1,815.3L817.7,854.8Z"
/>
</vector>

View file

@ -0,0 +1,25 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="72dp"
android:height="72dp"
android:viewportWidth="1024"
android:viewportHeight="1024"
>
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M595.6,720.9H938.4C949.4,720.9 958.3,712 958.3,701.1V812.7C958.3,893.8 892.5,959.6 811.4,959.6H468.6C457.6,959.6 448.7,950.7 448.7,939.7V867.8C448.7,786.7 514.5,720.9 595.6,720.9ZM578.2,790.9H537V890.4H578.4C600.5,890.4 614.2,880.6 614.2,861C614.2,850.6 609.5,843.1 601.2,838.9C604.8,836.9 607.8,834 609.8,830.4C611.8,826.9 612.8,822.8 612.7,818.7C612.7,800.9 600.2,790.9 578.2,790.9ZM555.9,831V808H578.6C588.6,808 593.4,812.2 593.4,819.1C593.4,825.9 589.1,831 578.8,831H555.9ZM555.9,873.1V848.3H577.9C590,848.3 594.7,852.8 594.7,860.6C594.7,868.3 589.2,873.1 578.7,873.1H555.9ZM699.5,790.9H632.5V890.4H699.5V872.2H651.8V849.5H699.5V831.4H651.8V809H699.5V790.9ZM716,808.6H743.7L743.6,890.4H762.6V808.6H790V790.9H716V808.6ZM841.5,790.9H822.6L785,890.4H804.7L811.3,872.3H852.8L859.4,890.4H879.2L841.5,790.9ZM846.4,854.8H817.7L832.1,815.3L846.4,854.8Z"
/>
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M440,249.7L440.1,249.7C466.8,156.5 583,111 701.4,111C783.2,111 856.7,136.9 907,178C875.8,179.6 846.2,185.7 819,195.5C859.7,210.7 894.7,233.9 920.6,262.7C903.4,259.7 885.5,258.2 867.3,258.2C865.3,258.2 863.3,258.2 861.4,258.2C908.4,326.5 936,409.2 936,498.4C936,575 915.6,646.9 880,708.9H595.6C573.7,708.9 552.7,713.4 533.7,721.4C522.9,714.2 512.3,705.3 502.6,694.4C498.3,689.5 490.8,681 494.2,675.5C497.1,670.8 504.1,671.1 509.6,671.3L509.6,671.3C510.6,671.4 511.6,671.4 512.5,671.4C627.5,671.4 720.8,595.3 720.8,501.4C720.8,407.6 627.5,331.5 512.5,331.5C465.1,331.5 415,346.4 375.8,374C375.8,373.5 375.8,373.2 375.8,373.2C364.9,339.8 372.1,277.6 439.9,249.7L440,249.7ZM501.4,739.9C394.7,707.3 304.3,623.8 304.2,503.9C304.2,464.4 318.8,430.8 342.1,404L342,404L341.9,404C347,318.1 314,215.4 252.4,195.2C248,193.8 243.7,197.1 243.1,201.6C235,269.6 217.5,293.1 198.5,318.5C170.1,356.6 149.4,400.6 150.3,449C140,427.4 131.7,404.9 125.5,381.6C124.6,378.4 119.4,368.7 113.7,372C109.1,374.6 105.7,381.7 103.2,389.1C93.8,424.3 89,462 89,498.4C89,703.2 241.3,878.2 436.7,914.9V867.8C436.7,815.3 462.2,768.8 501.4,739.9ZM541.7,246.5C564,239.5 562.1,217.4 562.1,217.4C562.1,217.4 550.9,204.3 528.8,211.6C508.2,218.4 504.9,233.1 504.9,233.1C504.9,233.1 516.2,254.5 541.7,246.5ZM341.6,435.3C341.6,435.3 433.5,541.3 464.2,573.2C494.8,605.2 520.9,606.9 555,572.8C589,538.7 677.9,435.1 677.9,435.1L670.4,435.7L529.3,542.8C518.7,550.7 503.3,550.8 492.5,543L348.7,435.6L341.6,435.3Z"
/>
<path
android:fillAlpha="0.9"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M893.8,708.9C904.8,689.2 914.2,668.4 922,646.9C939.1,656.4 950.1,670 955.1,683.7C956.3,687 955.5,691.5 954,695C948.5,708 942.7,708.9 938.4,708.9H893.8ZM911.1,641.8C902.7,665.2 892.3,687.7 880,708.9L809,708.9V635.4L866.3,634C883.8,634 898.7,636.9 911.1,641.8ZM809,720.9V767H957.5C958,762.5 958.3,757.9 958.3,753.3V701.2C958.2,709.3 953.3,716.3 946.3,719.3C943.8,720.4 941.2,720.9 938.4,720.9L887,720.9L809,720.9Z"
android:strokeAlpha="0.9"
/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" translatable="false">Thunderbird Beta</string>
</resources>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
<application tools:ignore="MissingApplicationIcon">
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name must be -->
<!-- `net.thunderbird.feature.widget.message.list.MessageListWidgetReceiver` and can't be changed. -->
<receiver
android:name="net.thunderbird.feature.widget.message.list.MessageListWidgetReceiver"
android:exported="true"
android:label="@string/message_list_glance_widget_label"
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/message_list_glance_widget_info"
/>
</receiver>
</application>
</manifest>

View file

@ -0,0 +1,92 @@
package net.thunderbird.android.auth
import net.thunderbird.android.BuildConfig
import net.thunderbird.core.common.oauth.OAuthConfiguration
import net.thunderbird.core.common.oauth.OAuthConfigurationFactory
@Suppress("ktlint:standard:max-line-length")
class TbOAuthConfigurationFactory : OAuthConfigurationFactory {
override fun createConfigurations(): Map<List<String>, OAuthConfiguration> {
return mapOf(
createAolConfiguration(),
createGmailConfiguration(),
createFastmailConfiguration(),
createMicrosoftConfiguration(),
createYahooConfiguration(),
)
}
private fun createAolConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.aol.com",
"smtp.aol.com",
) to OAuthConfiguration(
clientId = "dj0yJmk9Rk11R2pTTlF0TlZGJmQ9WVdrOVYxcElTMHBwWVZBbWNHbzlNQT09JnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PWVm",
scopes = listOf("mail-w"),
authorizationEndpoint = "https://api.login.aol.com/oauth2/request_auth",
tokenEndpoint = "https://api.login.aol.com/oauth2/get_token",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
private fun createFastmailConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.fastmail.com",
"smtp.fastmail.com",
) to OAuthConfiguration(
clientId = "353e41ae",
scopes = listOf("https://www.fastmail.com/dev/protocol-imap", "https://www.fastmail.com/dev/protocol-smtp"),
authorizationEndpoint = "https://api.fastmail.com/oauth/authorize",
tokenEndpoint = "https://api.fastmail.com/oauth/refresh",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
private fun createGmailConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.gmail.com",
"imap.googlemail.com",
"smtp.gmail.com",
"smtp.googlemail.com",
) to OAuthConfiguration(
clientId = "560629489500-hbru1fssmec60eoa22b8k8l5tbmj0sc1.apps.googleusercontent.com",
scopes = listOf("https://mail.google.com/"),
authorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth",
tokenEndpoint = "https://oauth2.googleapis.com/token",
redirectUri = "${BuildConfig.APPLICATION_ID}:/oauth2redirect",
)
}
private fun createMicrosoftConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"outlook.office365.com",
"smtp.office365.com",
"smtp-mail.outlook.com",
) to OAuthConfiguration(
clientId = "e6f8716e-299d-4ed9-bbf3-453f192f44e5",
scopes = listOf(
"openid",
"email",
"https://outlook.office.com/IMAP.AccessAsUser.All",
"https://outlook.office.com/SMTP.Send",
"offline_access",
),
authorizationEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
tokenEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/token",
redirectUri = "msauth://net.thunderbird.android.daily/KUkL9b7kcXs%2FtgmDCGD54ka8Bow%3D",
)
}
private fun createYahooConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.mail.yahoo.com",
"smtp.mail.yahoo.com",
) to OAuthConfiguration(
clientId = "dj0yJmk9TTQ2U1JNTlBPQXdJJmQ9WVdrOWVIaHdkMFU0V0hZbWNHbzlNQT09JnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PTBi",
scopes = listOf("mail-w"),
authorizationEndpoint = "https://api.login.yahoo.com/oauth2/request_auth",
tokenEndpoint = "https://api.login.yahoo.com/oauth2/get_token",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
}

View file

@ -0,0 +1,15 @@
package net.thunderbird.android.dev
import app.k9mail.autodiscovery.api.AutoDiscovery
import com.fsck.k9.backend.BackendFactory
import org.koin.core.module.Module
import org.koin.core.qualifier.named
fun Module.developmentModuleAdditions() {
single<Map<String, BackendFactory>>(named("developmentBackends")) {
emptyMap()
}
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
emptyList()
}
}

View file

@ -0,0 +1,24 @@
package net.thunderbird.android.featureflag
import net.thunderbird.core.featureflag.FeatureFlag
import net.thunderbird.core.featureflag.FeatureFlagFactory
import net.thunderbird.core.featureflag.FeatureFlagKey
import net.thunderbird.core.featureflag.toFeatureFlagKey
/**
* Feature flags for Thunderbird Daily
*/
class TbFeatureFlagFactory : FeatureFlagFactory {
override fun createFeatureCatalog(): List<FeatureFlag> {
return listOf(
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true),
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true),
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true),
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true),
FeatureFlag("enable_dropdown_drawer".toFeatureFlagKey(), enabled = true),
FeatureFlag("enable_dropdown_drawer_ui".toFeatureFlagKey(), enabled = true),
FeatureFlag(FeatureFlagKey.DisplayInAppNotifications, enabled = true),
FeatureFlag(FeatureFlagKey.UseNotificationSenderForSystemNotifications, enabled = true),
)
}
}

View file

@ -0,0 +1,253 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="72dp"
android:height="72dp"
android:viewportWidth="1024"
android:viewportHeight="1024"
>
<path android:pathData="M439.5,260.2L439.6,260.2C466.3,167 582.5,121.5 700.9,121.5C782.7,121.5 856.2,147.4 906.5,188.5C875.3,190.1 845.7,196.2 818.5,206C859.2,221.1 894.2,244.4 920.1,273.2C902.9,270.2 885,268.7 866.8,268.7C864.8,268.7 862.8,268.7 860.9,268.7C907.9,337 935.5,419.7 935.5,508.9C935.5,742.8 745.9,932.4 512,932.4C281.7,932.4 88.5,739.5 88.5,508.9C88.5,472.4 93.3,434.8 102.7,399.5C105.2,392.1 108.6,385 113.2,382.4C118.9,379.2 124.1,388.9 125,392C131.2,415.3 139.5,437.9 149.8,459.5C148.9,411.1 169.6,367.1 198,329C217,303.6 234.5,280 242.6,212.1C243.2,207.6 247.5,204.3 251.9,205.7C313.5,225.9 346.5,328.6 341.4,414.4C375.4,419.3 375.3,383.7 375.3,383.7C364.4,350.2 371.6,288 439.4,260.2L439.5,260.2Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="832.5"
android:endY="817.9"
android:startX="396.6"
android:startY="288.4"
android:type="linear"
>
<item
android:color="#FFF53DB8"
android:offset="0"
/>
<item
android:color="#FF590DF2"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.9"
android:pathData="M921.6,401C931.9,633.9 740.5,834.8 507,834.8C288.4,834.8 109.3,665.8 93.1,451.4C90.2,471.2 88.7,491.4 88.5,512C90.2,741.5 282.9,932.4 512,932.4C745.9,932.4 935.5,742.8 935.5,508.9C935.5,471.6 930.7,435.5 921.6,401Z"
android:strokeAlpha="0.9"
>
<aapt:attr name="android:fillColor">
<gradient
android:centerX="234.4"
android:centerY="452.7"
android:gradientRadius="358.1"
android:type="radial"
>
<item
android:color="#000B4186"
android:offset="0.5"
/>
<item
android:color="#720B4186"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M502.2,291.3C497.6,283.2 476.5,271.3 467.3,269.2C502.2,157.6 679.7,123.3 788.4,143C833.6,151.3 889.9,175.9 907,188.7C856.7,147.6 783.2,121.7 701.4,121.7C583,121.7 466.7,167.2 440.1,260.4L440,260.4L439.9,260.4C372.1,288.2 364.9,350.5 375.8,383.9C386.2,344 436,295 502.2,291.3Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="442.3"
android:endY="231"
android:startX="587.8"
android:startY="332.8"
android:type="linear"
>
<item
android:color="#00D13AEF"
android:offset="0"
/>
<item
android:color="#E5F9D286"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M624.7,214C529.6,232.7 498.5,238.8 466.7,269.1C502.4,174.4 593.7,155.3 702.5,198.4C672.5,204.6 646.9,209.6 624.7,214Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="616.4"
android:endY="164.5"
android:startX="307.2"
android:startY="473.7"
android:type="linear"
>
<item
android:color="#FF450FB0"
android:offset="0"
/>
<item
android:color="#00450FB0"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M111.5,386.6C85.5,493 105.6,618 223.7,723C188.5,684.6 145.6,542.6 240.3,441.2C246.7,434.4 257.6,439.4 258,448.8C265.8,659.5 435.8,788.2 631.9,764.1C571.1,760.7 370.3,690.4 519.7,662.5C597.8,648 720.3,625.2 720.3,515.3C720.3,337.1 582.5,285 499,292.8C441.8,298.1 391,334.4 375.3,383.7C381.3,403.1 357.4,416.8 341.4,414.5C346.5,328.6 313.5,225.9 251.9,205.7C247.5,204.3 243.2,207.6 242.6,212.1C234.5,280 217,303.6 198,329C169.6,367.1 148.9,411.1 149.8,459.5C139.5,437.9 131.2,415.3 125,392C124.3,389.4 120.5,382.1 115.9,381.8C113.4,381.6 112.1,384 111.5,386.6Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="352.3"
android:centerY="739.6"
android:gradientRadius="558.7"
android:type="radial"
>
<item
android:color="#FF650877"
android:offset="0"
/>
<item
android:color="#00340B86"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M467.2,673.3C582.2,766.7 813.5,696.7 813.5,469.6C720.1,611.2 601.2,708.8 467.2,673.3Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="630.1"
android:endY="762.5"
android:startX="778.1"
android:startY="576.8"
android:type="linear"
>
<item
android:color="#00D647E2"
android:offset="0"
/>
<item
android:color="#A3E7BB65"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M240.3,441.2C242.7,438.6 245.8,437.7 248.7,438.1C164,541.5 232.3,723.1 279.3,767.7C281.9,775.1 234.8,736.5 228.3,727.5C192.6,697.2 141.4,547.1 240.3,441.2Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="241.4"
android:endY="712.5"
android:startX="173.2"
android:startY="429.1"
android:type="linear"
>
<item
android:color="#FFF9BF86"
android:offset="0.1"
/>
<item
android:color="#00D63AEF"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M512,681.9C627,681.9 720.3,605.8 720.3,511.9C720.3,418.1 627,342 512,342C413.9,342 303.7,405.8 303.7,514.4C303.8,682.2 481,778.7 632.1,764.1C620.8,762.8 550,759 502.1,704.9C497.8,700 490.3,691.5 493.7,686C497.1,680.4 506.5,681.9 512,681.9Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="512"
android:endY="762.4"
android:startX="512"
android:startY="404.2"
android:type="linear"
>
<item
android:color="#FFFFFFFF"
android:offset="0"
/>
<item
android:color="#FFBEE1FE"
android:offset="0.9"
/>
<item
android:color="#FF96CEFD"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.7"
android:pathData="M512,681.9C627,681.9 720.3,605.8 720.3,511.9C720.3,483.3 711.6,456.3 696.2,432.6L530.9,582.7C519.4,593.2 499.9,593.2 488.4,582.7L326.2,435.4C312,458.1 303.7,484.5 303.7,514.4C303.8,682.2 481,778.7 632.1,764.1C631.5,764 630.6,763.9 629.5,763.8L629.5,763.8C612.3,762.2 547.1,755.8 502.1,704.9C497.8,700 490.3,691.5 493.7,686C496.6,681.3 503.6,681.6 509.1,681.8C510.1,681.8 511.1,681.9 512,681.9Z"
android:strokeAlpha="0.7"
>
<aapt:attr name="android:fillColor">
<gradient
android:endX="518.7"
android:endY="756.9"
android:startX="518.7"
android:startY="606.9"
android:type="linear"
>
<item
android:color="#FFBCE0FD"
android:offset="0"
/>
<item
android:color="#FF88CCFC"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#B5DBF9"
android:fillType="evenOdd"
android:pathData="M446.7,602.8C408.5,561.7 326.5,435 326.5,435L328,432.5L487.9,568.5C498.7,576.3 514,576.3 524.7,568.3L680.6,435.2L697.5,435C697.5,435 612.2,555.6 568.7,602.8C525.1,650 484.8,644 446.7,602.8Z"
/>
<path
android:fillColor="#A8D3F6"
android:fillType="evenOdd"
android:pathData="M463.9,598.6C433.3,566.7 326.3,435.1 326.3,435.1L331.7,432L492.3,568.3C503.1,576.2 518.4,576.1 529.1,568.1L685,435.1H697.1C697.1,435.1 588.8,564 554.7,598.1C520.7,632.2 494.6,630.5 463.9,598.6Z"
/>
<path
android:fillColor="#93C5ED"
android:fillType="evenOdd"
android:pathData="M463.9,593.7C433.3,561.8 335.9,444.7 335.9,444.7L348.5,456.1L492.3,563.5C503.1,571.3 518.4,571.2 529.1,563.3L670.1,456.2L682.6,449C682.6,449 588.8,559.2 554.7,593.3C520.7,627.4 494.6,625.7 463.9,593.7Z"
/>
<path
android:fillColor="#7DB6E4"
android:fillType="evenOdd"
android:pathData="M463.7,583.7C433,551.8 341.1,445.7 341.1,445.7L348.2,446L492,553.5C502.8,561.3 518.2,561.2 528.8,553.3L669.9,446.2L677.4,445.6C677.4,445.6 588.5,549.1 554.5,583.2C520.4,617.4 494.3,615.6 463.7,583.7Z"
/>
<path android:pathData="M532.4,592.4L697.4,434.9C662.5,381 598.1,342 512.1,342C441,342 363.4,375.5 326.2,435.3L486,592.4C497.5,602.9 520.9,602.9 532.4,592.4Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="511.8"
android:endY="771.6"
android:startX="511.3"
android:startY="378.5"
android:type="linear"
>
<item
android:color="#FFFFFFFF"
android:offset="0"
/>
<item
android:color="#FFBEE1FE"
android:offset="0.9"
/>
<item
android:color="#FF96CEFD"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.6"
android:fillColor="#ffffff"
android:pathData="M697.6,434.7L533,592.2C518.4,602.6 502.8,603.3 487.5,593.9L326.1,435.3C330.6,427.9 335.8,420.9 341.5,414.2C347.3,419.7 353,425 358.5,430.1C400.9,469.8 435.2,501.9 483.5,543.2C505.3,561.8 512.1,561.4 533.4,543.2C588.7,496 629.1,460.3 681.7,413.4C687.6,420.1 692.9,427.3 697.6,434.7Z"
android:strokeAlpha="0.6"
/>
<path
android:fillColor="#ffffff"
android:pathData="M541.2,257C563.5,249.9 561.6,227.9 561.6,227.9C561.6,227.9 550.4,214.8 528.3,222C507.7,228.8 504.4,243.6 504.4,243.6C504.4,243.6 515.7,265 541.2,257Z"
/>
</vector>

View file

@ -0,0 +1,25 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="72dp"
android:height="72dp"
android:viewportWidth="1024"
android:viewportHeight="1024"
>
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M595.6,720.9H938.4C949.4,720.9 958.3,712 958.3,701.1V812.7C958.3,893.8 892.5,959.6 811.4,959.6H468.6C457.6,959.6 448.7,950.7 448.7,939.7V867.8C448.7,786.7 514.5,720.9 595.6,720.9ZM521.1,890H554.1C563.5,890 571.7,888.1 578.5,884.4C585.3,880.7 590.5,875.3 594.1,868.4C597.8,861.4 599.6,853.1 599.6,843.4C599.6,833.7 597.8,825.4 594.1,818.5C590.5,811.5 585.3,806.2 578.5,802.5C571.8,798.8 563.7,796.9 554.4,796.9H521.1V890ZM553.3,873.1H540.8V813.8H553.3C559.1,813.8 564,814.8 568,816.9C572,818.9 575,822.1 577,826.5C579,830.9 580,836.5 580,843.4C580,850.3 579,856 577,860.4C575,864.7 572,868 568,870C564,872.1 559.1,873.1 553.3,873.1ZM603.9,890H625L631.9,868.8H665.5L672.4,890H693.5L661.4,796.9H636.1L603.9,890ZM660.5,853.4L649.1,818.2H648.4L636.9,853.4H660.5ZM724.4,890V796.9H704.7V890H724.4ZM740.6,796.9V890H800.2V873.8H760.3V796.9H740.6ZM817.9,796.9H795.9L829.8,857.1V890H849.4V857.1L883.3,796.9H861.3L840.1,837H839.2L817.9,796.9Z"
/>
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M440,249.7L440.1,249.7C466.8,156.5 583,111 701.4,111C783.2,111 856.7,136.9 907,178C875.8,179.6 846.2,185.7 819,195.5C859.7,210.7 894.7,233.9 920.6,262.7C903.4,259.7 885.5,258.2 867.3,258.2C865.3,258.2 863.3,258.2 861.4,258.2C908.4,326.5 936,409.2 936,498.4C936,575 915.6,646.9 880,708.9H595.6C573.7,708.9 552.7,713.4 533.7,721.4C522.9,714.2 512.3,705.3 502.6,694.4C498.3,689.5 490.8,681 494.2,675.5C497.1,670.8 504.1,671.1 509.6,671.3L509.6,671.3C510.6,671.4 511.6,671.4 512.5,671.4C627.5,671.4 720.8,595.3 720.8,501.4C720.8,407.6 627.5,331.5 512.5,331.5C465.1,331.5 415,346.4 375.8,374C375.8,373.5 375.8,373.2 375.8,373.2C364.9,339.8 372.1,277.6 439.9,249.7L440,249.7ZM501.4,739.9C394.7,707.3 304.3,623.8 304.2,503.9C304.2,464.4 318.8,430.8 342.1,404L342,404L341.9,404C347,318.1 314,215.4 252.4,195.2C248,193.8 243.7,197.1 243.1,201.6C235,269.6 217.5,293.1 198.5,318.5C170.1,356.6 149.4,400.6 150.3,449C140,427.4 131.7,404.9 125.5,381.6C124.6,378.4 119.4,368.7 113.7,372C109.1,374.6 105.7,381.7 103.2,389.1C93.8,424.3 89,462 89,498.4C89,703.2 241.3,878.2 436.7,914.9V867.8C436.7,815.3 462.2,768.8 501.4,739.9ZM541.7,246.5C564,239.5 562.1,217.4 562.1,217.4C562.1,217.4 550.9,204.3 528.8,211.6C508.2,218.4 504.9,233.1 504.9,233.1C504.9,233.1 516.2,254.5 541.7,246.5ZM341.6,435.3C341.6,435.3 433.5,541.3 464.2,573.2C494.8,605.2 520.9,606.9 555,572.8C589,538.7 677.9,435.1 677.9,435.1L670.4,435.7L529.3,542.8C518.7,550.7 503.3,550.8 492.5,543L348.7,435.6L341.6,435.3Z"
/>
<path
android:fillAlpha="0.9"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M893.8,708.9C904.8,689.2 914.2,668.4 922,646.9C939.1,656.4 950.1,670 955.1,683.7C956.3,687 955.5,691.5 954,695C948.5,708 942.7,708.9 938.4,708.9H893.8ZM911.1,641.8C902.7,665.2 892.3,687.7 880,708.9L809,708.9V635.4L866.3,634C883.8,634 898.7,636.9 911.1,641.8ZM809,720.9V767H957.5C958,762.5 958.3,757.9 958.3,753.3V701.2C958.2,709.3 953.3,716.3 946.3,719.3C943.8,720.4 941.2,720.9 938.4,720.9L887,720.9L809,720.9Z"
android:strokeAlpha="0.9"
/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="changelog_style.xsl"?>
<changelog>
<release version="Daily" versioncode="1">
<change>Daily snapshot of github.com/thunderbird/thunderbird-android</change>
</release>
</changelog>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" translatable="false">Thunderbird Daily</string>
</resources>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
<application tools:ignore="MissingApplicationIcon">
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name must be -->
<!-- `net.thunderbird.feature.widget.message.list.MessageListWidgetReceiver` and can't be changed. -->
<receiver
android:name="net.thunderbird.feature.widget.message.list.MessageListWidgetReceiver"
android:exported="true"
android:label="@string/message_list_glance_widget_label"
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/message_list_glance_widget_info"
/>
</receiver>
</application>
</manifest>

View file

@ -0,0 +1,92 @@
package net.thunderbird.android.auth
import net.thunderbird.android.BuildConfig
import net.thunderbird.core.common.oauth.OAuthConfiguration
import net.thunderbird.core.common.oauth.OAuthConfigurationFactory
@Suppress("ktlint:standard:max-line-length")
class TbOAuthConfigurationFactory : OAuthConfigurationFactory {
override fun createConfigurations(): Map<List<String>, OAuthConfiguration> {
return mapOf(
createAolConfiguration(),
createFastmailConfiguration(),
createGmailConfiguration(),
createMicrosoftConfiguration(),
createYahooConfiguration(),
)
}
private fun createAolConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.aol.com",
"smtp.aol.com",
) to OAuthConfiguration(
clientId = "dj0yJmk9MVJGcHpSejNUcTU3JmQ9WVdrOWMwMHhjSFZqTkhRbWNHbzlNQT09JnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PWNk",
scopes = listOf("mail-w"),
authorizationEndpoint = "https://api.login.aol.com/oauth2/request_auth",
tokenEndpoint = "https://api.login.aol.com/oauth2/get_token",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
private fun createFastmailConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.fastmail.com",
"smtp.fastmail.com",
) to OAuthConfiguration(
clientId = "353e41ae",
scopes = listOf("https://www.fastmail.com/dev/protocol-imap", "https://www.fastmail.com/dev/protocol-smtp"),
authorizationEndpoint = "https://api.fastmail.com/oauth/authorize",
tokenEndpoint = "https://api.fastmail.com/oauth/refresh",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
private fun createGmailConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.gmail.com",
"imap.googlemail.com",
"smtp.gmail.com",
"smtp.googlemail.com",
) to OAuthConfiguration(
clientId = "560629489500-no2mlau7e4vn3psh5esaiodgri09jrj9.apps.googleusercontent.com",
scopes = listOf("https://mail.google.com/"),
authorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth",
tokenEndpoint = "https://oauth2.googleapis.com/token",
redirectUri = "${BuildConfig.APPLICATION_ID}:/oauth2redirect",
)
}
private fun createMicrosoftConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"outlook.office365.com",
"smtp.office365.com",
"smtp-mail.outlook.com",
) to OAuthConfiguration(
clientId = "e6f8716e-299d-4ed9-bbf3-453f192f44e5",
scopes = listOf(
"openid",
"email",
"https://outlook.office.com/IMAP.AccessAsUser.All",
"https://outlook.office.com/SMTP.Send",
"offline_access",
),
authorizationEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
tokenEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/token",
redirectUri = "msauth://net.thunderbird.android.debug/eaXDuh6T3KFWjcJhsoaObT9OayU%3D",
)
}
private fun createYahooConfiguration(): Pair<List<String>, OAuthConfiguration> {
return listOf(
"imap.mail.yahoo.com",
"smtp.mail.yahoo.com",
) to OAuthConfiguration(
clientId = "dj0yJmk9bXRhTkZod2xmY3JrJmQ9WVdrOVUyUTRXRGQ0Tlc4bWNHbzlNQT09JnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PTkx",
scopes = listOf("mail-w"),
authorizationEndpoint = "https://api.login.yahoo.com/oauth2/request_auth",
tokenEndpoint = "https://api.login.yahoo.com/oauth2/get_token",
redirectUri = "${BuildConfig.APPLICATION_ID}://oauth2redirect",
)
}
}

View file

@ -0,0 +1,17 @@
package net.thunderbird.android.dev
import app.k9mail.autodiscovery.api.AutoDiscovery
import app.k9mail.autodiscovery.demo.DemoAutoDiscovery
import com.fsck.k9.backend.BackendFactory
import org.koin.core.module.Module
import org.koin.core.qualifier.named
fun Module.developmentModuleAdditions() {
single { DemoBackendFactory(backendStorageFactory = get()) }
single<Map<String, BackendFactory>>(named("developmentBackends")) {
mapOf("demo" to get<DemoBackendFactory>())
}
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
listOf(DemoAutoDiscovery())
}
}

View file

@ -0,0 +1,14 @@
package net.thunderbird.android.dev
import app.k9mail.backend.demo.DemoBackend
import com.fsck.k9.backend.BackendFactory
import com.fsck.k9.backend.api.Backend
import com.fsck.k9.mailstore.K9BackendStorageFactory
import net.thunderbird.core.android.account.LegacyAccount
class DemoBackendFactory(private val backendStorageFactory: K9BackendStorageFactory) : BackendFactory {
override fun createBackend(account: LegacyAccount): Backend {
val backendStorage = backendStorageFactory.createBackendStorage(account)
return DemoBackend(backendStorage)
}
}

View file

@ -0,0 +1,24 @@
package net.thunderbird.android.featureflag
import net.thunderbird.core.featureflag.FeatureFlag
import net.thunderbird.core.featureflag.FeatureFlagFactory
import net.thunderbird.core.featureflag.FeatureFlagKey
import net.thunderbird.core.featureflag.toFeatureFlagKey
/**
* Feature flags for Thunderbird Debug
*/
class TbFeatureFlagFactory : FeatureFlagFactory {
override fun createFeatureCatalog(): List<FeatureFlag> {
return listOf(
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true),
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true),
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true),
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true),
FeatureFlag("enable_dropdown_drawer".toFeatureFlagKey(), enabled = true),
FeatureFlag("enable_dropdown_drawer_ui".toFeatureFlagKey(), enabled = true),
FeatureFlag(FeatureFlagKey.DisplayInAppNotifications, enabled = true),
FeatureFlag(FeatureFlagKey.UseNotificationSenderForSystemNotifications, enabled = true),
)
}
}

View file

@ -0,0 +1,343 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="72dp"
android:height="72dp"
android:viewportWidth="1024"
android:viewportHeight="1024"
>
<path
android:fillColor="#008787"
android:pathData="M866.3,634H493.4C482.5,634 473.6,642.9 473.6,653.8V713.5C473.6,801.4 544.8,872.6 632.6,872.6H839C904.8,872.6 958.3,819.2 958.3,753.3V701.1C958.3,671.2 928.4,634 866.3,634Z"
/>
<path android:pathData="M439.5,260.2L439.6,260.2C466.3,167 582.5,121.5 700.9,121.5C782.7,121.5 856.2,147.4 906.5,188.5C875.3,190.1 845.7,196.2 818.5,206C859.2,221.1 894.2,244.4 920.1,273.2C902.9,270.2 885,268.7 866.8,268.7C864.8,268.7 862.8,268.7 860.9,268.7C907.9,337 935.5,419.7 935.5,508.9C935.5,742.8 745.9,932.4 512,932.4C281.7,932.4 88.5,739.5 88.5,508.9C88.5,472.4 93.3,434.8 102.7,399.5C105.2,392.1 108.6,385 113.2,382.4C118.9,379.2 124.1,388.9 125,392C131.2,415.3 139.5,437.9 149.8,459.5C148.9,411.1 169.6,367.1 198,329C217,303.6 234.5,280 242.6,212.1C243.2,207.6 247.5,204.3 251.9,205.7C313.5,225.9 346.5,328.6 341.4,414.4C375.4,419.3 375.3,383.7 375.3,383.7C364.4,350.2 371.6,288 439.4,260.2L439.5,260.2Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="832.5"
android:endY="817.9"
android:startX="396.6"
android:startY="288.4"
android:type="linear"
>
<item
android:color="#FFF53DB8"
android:offset="0"
/>
<item
android:color="#FF590DF2"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.9"
android:pathData="M921.6,401C931.9,633.9 740.5,834.8 507,834.8C288.4,834.8 109.3,665.8 93.1,451.4C90.2,471.2 88.7,491.4 88.5,512C90.2,741.5 282.9,932.4 512,932.4C745.9,932.4 935.5,742.8 935.5,508.9C935.5,471.6 930.7,435.5 921.6,401Z"
android:strokeAlpha="0.9"
>
<aapt:attr name="android:fillColor">
<gradient
android:centerX="234.4"
android:centerY="452.7"
android:gradientRadius="358.1"
android:type="radial"
>
<item
android:color="#000B4186"
android:offset="0.5"
/>
<item
android:color="#720B4186"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M502.2,291.3C497.6,283.2 476.5,271.3 467.3,269.2C502.2,157.6 679.7,123.3 788.4,143C833.6,151.3 889.9,175.9 907,188.7C856.7,147.6 783.2,121.7 701.4,121.7C583,121.7 466.7,167.2 440.1,260.4L440,260.4L439.9,260.4C372.1,288.2 364.9,350.5 375.8,383.9C386.2,344 436,295 502.2,291.3Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="442.3"
android:endY="231"
android:startX="587.8"
android:startY="332.8"
android:type="linear"
>
<item
android:color="#00D13AEF"
android:offset="0"
/>
<item
android:color="#E5F9D286"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M624.7,214C529.6,232.7 498.5,238.8 466.7,269.1C502.4,174.4 593.7,155.2 702.5,198.4C672.5,204.6 646.9,209.6 624.7,214Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="616.4"
android:endY="164.5"
android:startX="307.2"
android:startY="473.7"
android:type="linear"
>
<item
android:color="#FF450FB0"
android:offset="0"
/>
<item
android:color="#00450FB0"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M111.5,386.6C85.5,493 105.6,618 223.7,723C188.5,684.6 145.6,542.6 240.3,441.2C246.7,434.4 257.6,439.4 258,448.8C265.8,659.5 435.8,788.2 631.9,764.1C571.1,760.7 370.3,690.4 519.7,662.5C597.8,648 720.3,625.2 720.3,515.3C720.3,337.1 582.5,285 499,292.8C441.8,298.1 391,334.4 375.3,383.7C381.3,403.1 357.4,416.8 341.4,414.5C346.5,328.6 313.5,225.9 251.9,205.7C247.5,204.3 243.2,207.6 242.6,212.1C234.5,280 217,303.6 198,329C169.6,367.1 148.9,411.1 149.8,459.5C139.5,437.9 131.2,415.3 125,392C124.3,389.4 120.5,382.1 115.9,381.8C113.4,381.6 112.1,384 111.5,386.6Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="352.3"
android:centerY="739.6"
android:gradientRadius="558.7"
android:type="radial"
>
<item
android:color="#FF650877"
android:offset="0"
/>
<item
android:color="#00340B86"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M467.2,673.3C582.2,766.7 813.5,696.7 813.5,469.6C720.1,611.2 601.2,708.8 467.2,673.3Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="630.1"
android:endY="762.5"
android:startX="778.1"
android:startY="576.8"
android:type="linear"
>
<item
android:color="#00D647E2"
android:offset="0"
/>
<item
android:color="#A3E7BB65"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M240.3,441.2C242.7,438.6 245.8,437.7 248.7,438.1C164,541.5 232.3,723.1 279.3,767.7C281.9,775.1 234.8,736.5 228.3,727.5C192.6,697.2 141.4,547.1 240.3,441.2Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="241.4"
android:endY="712.5"
android:startX="173.2"
android:startY="429.1"
android:type="linear"
>
<item
android:color="#FFF9BF86"
android:offset="0.1"
/>
<item
android:color="#00D63AEF"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M512,681.9C627,681.9 720.3,605.8 720.3,511.9C720.3,418.1 627,342 512,342C413.9,342 303.7,405.8 303.7,514.4C303.8,682.2 481,778.7 632.1,764.1C620.8,762.8 550,759 502.1,704.9C497.8,700 490.3,691.5 493.7,686C497.1,680.4 506.5,681.9 512,681.9Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="512"
android:endY="762.4"
android:startX="512"
android:startY="404.2"
android:type="linear"
>
<item
android:color="#FFFFFFFF"
android:offset="0"
/>
<item
android:color="#FFBEE1FE"
android:offset="0.9"
/>
<item
android:color="#FF96CEFD"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.7"
android:pathData="M512,681.9C627,681.9 720.3,605.8 720.3,511.9C720.3,483.3 711.6,456.3 696.2,432.6L530.9,582.7C519.4,593.2 499.9,593.2 488.4,582.7L326.2,435.4C312,458.1 303.7,484.5 303.7,514.4C303.8,682.2 481,778.7 632.1,764.1C631.5,764 630.6,763.9 629.5,763.8L629.4,763.8C612.3,762.2 547.1,755.8 502.1,704.9C497.8,700 490.3,691.5 493.7,686C496.6,681.3 503.6,681.6 509.1,681.8C510.1,681.8 511.1,681.9 512,681.9Z"
android:strokeAlpha="0.7"
>
<aapt:attr name="android:fillColor">
<gradient
android:endX="518.7"
android:endY="756.9"
android:startX="518.7"
android:startY="606.9"
android:type="linear"
>
<item
android:color="#FFBCE0FD"
android:offset="0"
/>
<item
android:color="#FF88CCFC"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#B5DBF9"
android:fillType="evenOdd"
android:pathData="M446.7,602.8C408.5,561.7 326.5,435.5 326.5,435.5L328,433L487.9,568.5C498.7,576.3 514,576.3 524.7,568.3L680.6,435.2H696.5C696.5,435.2 612.2,555.6 568.7,602.8C525.1,650 484.8,644 446.7,602.8Z"
/>
<path
android:fillColor="#A8D3F6"
android:fillType="evenOdd"
android:pathData="M463.9,598.6C433.3,566.7 326.3,435.1 326.3,435.1L331.7,432L492.3,568.3C503.1,576.2 518.4,576.1 529.1,568.1L685,435.1H697.1C697.1,435.1 588.8,564 554.7,598.1C520.7,632.2 494.6,630.5 463.9,598.6Z"
/>
<path
android:fillColor="#93C5ED"
android:fillType="evenOdd"
android:pathData="M463.9,593.7C433.3,561.8 335.9,444.7 335.9,444.7L348.5,456.1L492.3,563.5C503.1,571.3 518.4,571.2 529.1,563.3L670.1,456.2L682.6,449C682.6,449 588.8,559.2 554.7,593.3C520.7,627.4 494.6,625.7 463.9,593.7Z"
/>
<path
android:fillColor="#7DB6E4"
android:fillType="evenOdd"
android:pathData="M463.7,583.7C433,551.8 341.1,445.7 341.1,445.7L348.2,446L492,553.5C502.8,561.3 518.2,561.2 528.8,553.3L669.9,446.2L677.4,445.6C677.4,445.6 588.5,549.1 554.4,583.2C520.4,617.4 494.3,615.6 463.7,583.7Z"
/>
<path android:pathData="M532.4,592.4L697.4,434.9C662.5,381 598.1,342 512.1,342C441,342 363.4,375.5 326.2,435.3L486,592.4C497.5,602.9 520.9,602.9 532.4,592.4Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="511.8"
android:endY="771.6"
android:startX="511.3"
android:startY="378.5"
android:type="linear"
>
<item
android:color="#FFFFFFFF"
android:offset="0"
/>
<item
android:color="#FFBEE1FE"
android:offset="0.9"
/>
<item
android:color="#FF96CEFD"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillAlpha="0.6"
android:fillColor="#ffffff"
android:pathData="M697.6,434.7L533,592.2C518.4,602.6 502.8,603.3 487.5,593.9L326,435.3C330.6,427.9 335.8,420.9 341.5,414.2C347.3,419.7 353,425 358.5,430.1C400.9,469.8 435.2,501.9 483.5,543.2C505.3,561.8 512.1,561.4 533.4,543.2C588.7,496 629.1,460.3 681.7,413.4C687.6,420.1 692.9,427.3 697.6,434.7Z"
android:strokeAlpha="0.6"
/>
<path
android:fillColor="#ffffff"
android:pathData="M541.2,257C563.5,249.9 561.6,227.9 561.6,227.9C561.6,227.9 550.4,214.8 528.3,222C507.7,228.8 504.4,243.6 504.4,243.6C504.4,243.6 515.7,265 541.2,257Z"
/>
<path
android:fillAlpha="0.2"
android:fillColor="#000000"
android:pathData="M891,698.4C821.5,837.2 677.9,932.4 512.1,932.4C483.8,932.4 456,929.5 429,924V859.4C429,770.5 497.3,698.4 581.5,698.4H891Z"
android:strokeAlpha="0.2"
/>
<path
android:fillAlpha="0.9"
android:pathData="M866.3,634H493.4C482.5,634 473.6,642.9 473.6,653.8V713.5C473.6,801.4 544.8,872.6 632.6,872.6H839C904.8,872.6 958.3,819.2 958.3,753.3V701.1C958.3,671.2 928.4,634 866.3,634Z"
android:strokeAlpha="0.9"
>
<aapt:attr name="android:fillColor">
<gradient
android:endX="727.4"
android:endY="740.7"
android:startX="856.4"
android:startY="862.9"
android:type="linear"
>
<item
android:color="#7F054096"
android:offset="0"
/>
<item
android:color="#700F3D9C"
android:offset="0.1"
/>
<item
android:color="#3F2F35B1"
android:offset="0.3"
/>
<item
android:color="#1C462FBF"
android:offset="0.5"
/>
<item
android:color="#07542BC8"
android:offset="0.7"
/>
<item
android:color="#00592ACB"
android:offset="0.9"
/>
</gradient>
</aapt:attr>
</path>
<path android:pathData="M938.4,720.9H595.6C514.5,720.9 448.7,786.7 448.7,867.8V939.7C448.7,950.7 457.6,959.6 468.6,959.6H811.4C892.5,959.6 958.3,893.8 958.3,812.7V701.1C958.3,712.1 949.4,720.9 938.4,720.9Z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="970.6"
android:endY="940"
android:startX="504.7"
android:startY="742.8"
android:type="linear"
>
<item
android:color="#FF54FFBD"
android:offset="0"
/>
<item
android:color="#FF00DDFF"
android:offset="1"
/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#000000"
android:pathData="M526.1,887H493.1V793.9H526.4C535.7,793.9 543.8,795.8 550.5,799.5C557.3,803.2 562.5,808.5 566.1,815.5C569.8,822.4 571.6,830.7 571.6,840.4C571.6,850.1 569.8,858.4 566.1,865.4C562.5,872.3 557.3,877.7 550.5,881.4C543.7,885.1 535.5,887 526.1,887ZM512.8,870.1H525.3C531.1,870.1 536,869.1 540,867C544,865 547,861.7 549,857.4C551,853 552,847.3 552,840.4C552,833.5 551,827.9 549,823.5C547,819.1 544,815.9 540,813.9C536,811.8 531.1,810.8 525.3,810.8H512.8V870.1Z"
/>
<path
android:fillColor="#000000"
android:pathData="M586.2,887V793.9H648.9V810.1H605.9V832.3H645.7V848.5H605.9V870.8H649.1V887H586.2Z"
/>
<path
android:fillColor="#000000"
android:pathData="M664.6,887V793.9H701.9C708.7,793.9 714.4,794.9 719,797C723.6,799 727,801.8 729.3,805.4C731.6,809 732.8,813.1 732.8,817.8C732.8,821.4 732,824.6 730.6,827.4C729.1,830.1 727.1,832.3 724.6,834.1C722.1,835.8 719.2,837 716,837.8V838.7C719.5,838.8 722.8,839.8 725.9,841.7C729,843.5 731.6,846.1 733.5,849.5C735.4,852.8 736.4,856.7 736.4,861.3C736.4,866.2 735.2,870.6 732.7,874.5C730.3,878.3 726.7,881.4 722,883.6C717.2,885.9 711.3,887 704.4,887H664.6ZM684.3,870.9H700.3C705.8,870.9 709.8,869.9 712.3,867.8C714.8,865.7 716.1,862.8 716.1,859.3C716.1,856.7 715.5,854.5 714.2,852.5C713,850.5 711.2,849 708.9,847.9C706.6,846.7 703.9,846.2 700.8,846.2H684.3V870.9ZM684.3,832.9H698.9C701.6,832.9 704,832.4 706,831.5C708.2,830.5 709.8,829.1 711,827.4C712.3,825.6 712.9,823.5 712.9,821C712.9,817.7 711.7,815 709.3,812.9C707,810.8 703.6,809.8 699.2,809.8H684.3V832.9Z"
/>
<path
android:fillColor="#000000"
android:pathData="M806.7,793.9H826.4V854.4C826.4,861.2 824.8,867.1 821.5,872.2C818.3,877.3 813.8,881.2 808,884.1C802.2,886.9 795.5,888.3 787.8,888.3C780.1,888.3 773.3,886.9 767.5,884.1C761.7,881.2 757.2,877.3 754,872.2C750.8,867.1 749.2,861.2 749.2,854.4V793.9H768.9V852.7C768.9,856.2 769.7,859.4 771.2,862.1C772.8,864.9 775,867.1 777.9,868.6C780.7,870.2 784,871 787.8,871C791.6,871 794.9,870.2 797.8,868.6C800.6,867.1 802.8,864.9 804.4,862.1C805.9,859.4 806.7,856.2 806.7,852.7V793.9Z"
/>
<path
android:fillColor="#000000"
android:pathData="M904.3,824C903.7,821.8 902.8,819.8 901.6,818.1C900.5,816.4 899.1,815 897.4,813.8C895.8,812.6 893.9,811.6 891.8,811C889.7,810.4 887.4,810 884.8,810C880.1,810 875.9,811.2 872.3,813.6C868.7,816 865.9,819.4 863.9,823.9C861.9,828.4 860.9,833.9 860.9,840.4C860.9,846.8 861.9,852.4 863.9,856.9C865.8,861.5 868.6,864.9 872.2,867.3C875.8,869.7 880.1,870.9 885,870.9C889.5,870.9 893.3,870.1 896.4,868.5C899.6,866.9 902,864.6 903.7,861.7C905.4,858.8 906.2,855.4 906.2,851.4L910.2,852H886.2V837.2H925.2V848.9C925.2,857.1 923.5,864.1 920,870C916.5,875.8 911.8,880.4 905.7,883.5C899.7,886.7 892.7,888.3 884.9,888.3C876.2,888.3 868.5,886.3 861.9,882.5C855.3,878.6 850.2,873.1 846.5,866C842.8,858.8 841,850.4 841,840.5C841,833 842,826.3 844.2,820.4C846.4,814.4 849.5,809.4 853.5,805.3C857.5,801.2 862.1,798 867.4,795.9C872.6,793.7 878.3,792.6 884.5,792.6C889.8,792.6 894.7,793.4 899.2,795C903.8,796.5 907.8,798.6 911.3,801.4C914.9,804.2 917.8,807.5 920,811.4C922.2,815.2 923.7,819.4 924.3,824H904.3Z"
/>
</vector>

View file

@ -0,0 +1,25 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="72dp"
android:height="72dp"
android:viewportWidth="1024"
android:viewportHeight="1024"
>
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M595.6,720.9H938.4C949.4,720.9 958.3,712 958.3,701.1V812.7C958.3,893.8 892.5,959.6 811.4,959.6H468.6C457.6,959.6 448.7,950.7 448.7,939.7V867.8C448.7,786.7 514.5,720.9 595.6,720.9ZM504.6,887H535.5C544.4,887 552,885.3 558.4,881.8C564.8,878.3 569.7,873.3 573.1,866.7C576.5,860.2 578.2,852.4 578.2,843.3C578.2,834.2 576.5,826.4 573.1,819.9C569.7,813.4 564.8,808.4 558.4,805C552.1,801.5 544.6,799.7 535.8,799.7H504.6V887ZM534.8,871.2H523V815.5H534.8C540.3,815.5 544.8,816.5 548.6,818.4C552.3,820.4 555.1,823.4 557,827.5C558.9,831.6 559.8,836.8 559.8,843.3C559.8,849.8 558.9,855.1 557,859.2C555.1,863.3 552.3,866.3 548.5,868.3C544.8,870.2 540.2,871.2 534.8,871.2ZM591.9,799.7V887H650.9V871.8H610.3V850.9H647.7V835.7H610.3V814.9H650.7V799.7H591.9ZM665.4,799.7V887H702.7C709.2,887 714.7,885.9 719.1,883.8C723.6,881.7 727,878.9 729.2,875.3C731.5,871.6 732.7,867.5 732.7,862.9C732.7,858.6 731.8,854.9 730,851.8C728.2,848.7 725.8,846.2 722.9,844.5C720,842.8 716.8,841.8 713.5,841.7V840.8C716.6,840.2 719.3,839 721.6,837.4C724,835.8 725.9,833.6 727.2,831.1C728.6,828.5 729.3,825.5 729.3,822.1C729.3,817.7 728.2,813.9 726,810.5C723.9,807.1 720.7,804.5 716.4,802.6C712.1,800.7 706.7,799.7 700.3,799.7H665.4ZM698.9,871.9H683.8V848.7H699.3C702.2,848.7 704.8,849.3 706.9,850.3C709.1,851.4 710.7,852.8 711.9,854.7C713.1,856.5 713.6,858.6 713.6,861C713.6,864.3 712.5,867 710.1,869C707.8,870.9 704,871.9 698.9,871.9ZM697.5,836.2H683.8V814.6H697.8C701.9,814.6 705.1,815.6 707.3,817.5C709.5,819.5 710.7,822 710.7,825.2C710.7,827.5 710.1,829.4 708.9,831.1C707.8,832.7 706.2,834 704.2,834.9C702.3,835.8 700,836.2 697.5,836.2ZM817.1,799.7H798.6V854.8C798.6,858.2 797.9,861.1 796.4,863.7C794.9,866.3 792.9,868.3 790.2,869.8C787.6,871.3 784.5,872 780.9,872C777.3,872 774.2,871.3 771.5,869.8C768.9,868.3 766.8,866.3 765.3,863.7C763.9,861.1 763.2,858.2 763.2,854.8V799.7H744.7V856.4C744.7,862.8 746.2,868.3 749.2,873.1C752.2,877.9 756.5,881.6 761.9,884.3C767.3,886.9 773.6,888.2 780.9,888.2C788.1,888.2 794.4,886.9 799.8,884.3C805.3,881.6 809.5,877.9 812.5,873.1C815.5,868.3 817.1,862.8 817.1,856.4V799.7ZM887.6,822.4C888.7,824 889.5,825.9 890.1,827.9H908.9C908.3,823.6 906.9,819.7 904.8,816.1C902.7,812.5 900,809.4 896.7,806.8C893.4,804.1 889.6,802.1 885.3,800.7C881.1,799.3 876.5,798.5 871.5,798.5C865.8,798.5 860.4,799.5 855.5,801.6C850.5,803.6 846.2,806.5 842.5,810.4C838.7,814.2 835.8,819 833.8,824.5C831.7,830.1 830.7,836.4 830.7,843.4C830.7,852.7 832.4,860.6 835.9,867.3C839.3,874 844.2,879.1 850.4,882.8C856.5,886.4 863.7,888.2 871.9,888.2C879.2,888.2 885.8,886.7 891.4,883.8C897.1,880.8 901.6,876.5 904.8,871.1C908.1,865.6 909.7,859 909.7,851.3V840.3H873.2V854.2H891.9C891.8,857.7 891,860.7 889.5,863.3C888,866 885.7,868.2 882.7,869.7C879.7,871.1 876.2,871.9 872,871.9C867.4,871.9 863.4,870.8 860,868.5C856.6,866.3 854,863.1 852.2,858.8C850.3,854.5 849.4,849.4 849.4,843.3C849.4,837.2 850.4,832.1 852.2,827.9C854.1,823.6 856.7,820.4 860.1,818.2C863.4,816 867.4,814.9 871.8,814.9C874.2,814.9 876.4,815.2 878.3,815.8C880.3,816.3 882.1,817.2 883.6,818.3C885.2,819.5 886.5,820.8 887.6,822.4Z"
/>
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M440,249.7L440.1,249.7C466.8,156.5 583,111 701.4,111C783.2,111 856.7,136.9 907,178C875.8,179.6 846.2,185.7 819,195.5C859.7,210.7 894.7,233.9 920.6,262.7C903.4,259.7 885.5,258.2 867.3,258.2C865.3,258.2 863.3,258.2 861.4,258.2C908.4,326.5 936,409.2 936,498.4C936,575 915.6,646.9 880,708.9H595.6C573.7,708.9 552.7,713.4 533.7,721.4C522.9,714.2 512.3,705.3 502.6,694.4C498.3,689.5 490.8,681 494.2,675.5C497.1,670.8 504.1,671.1 509.6,671.3L509.6,671.3C510.6,671.4 511.6,671.4 512.5,671.4C627.5,671.4 720.8,595.3 720.8,501.4C720.8,407.6 627.5,331.5 512.5,331.5C465.1,331.5 415,346.4 375.8,374C375.8,373.5 375.8,373.2 375.8,373.2C364.9,339.8 372.1,277.6 439.9,249.7L440,249.7ZM501.4,739.9C394.7,707.3 304.3,623.8 304.2,503.9C304.2,464.4 318.8,430.8 342.1,404L342,404L341.9,404C347,318.1 314,215.4 252.4,195.2C248,193.8 243.7,197.1 243.1,201.6C235,269.6 217.5,293.1 198.5,318.5C170.1,356.6 149.4,400.6 150.3,449C140,427.4 131.7,404.9 125.5,381.6C124.6,378.4 119.4,368.7 113.7,372C109.1,374.6 105.7,381.7 103.2,389.1C93.8,424.3 89,462 89,498.4C89,703.2 241.3,878.2 436.7,914.9V867.8C436.7,815.3 462.2,768.8 501.4,739.9ZM541.7,246.5C564,239.5 562.1,217.4 562.1,217.4C562.1,217.4 550.9,204.3 528.8,211.6C508.2,218.4 504.9,233.1 504.9,233.1C504.9,233.1 516.2,254.5 541.7,246.5ZM341.6,435.3C341.6,435.3 433.5,541.3 464.2,573.2C494.8,605.2 520.9,606.9 555,572.8C589,538.7 677.9,435.1 677.9,435.1L670.4,435.7L529.3,542.8C518.7,550.7 503.3,550.8 492.5,543L348.7,435.6L341.6,435.3Z"
/>
<path
android:fillAlpha="0.9"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M893.8,708.9C904.8,689.2 914.2,668.4 922,646.9C939.1,656.4 950.1,670 955.1,683.7C956.3,687 955.5,691.5 954,695C948.5,708 942.7,708.9 938.4,708.9H893.8ZM911.1,641.8C902.7,665.2 892.3,687.7 880,708.9L809,708.9V635.4L866.3,634C883.8,634 898.7,636.9 911.1,641.8ZM809,720.9V767H957.5C958,762.5 958.3,757.9 958.3,753.3V701.2C958.2,709.3 953.3,716.3 946.3,719.3C943.8,720.4 941.2,720.9 938.4,720.9L887,720.9L809,720.9Z"
android:strokeAlpha="0.9"
/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="changelog_style.xsl"?>
<changelog>
<release version="Debug" versioncode="1">
<change>Debug snapshot of current development at github.com/thunderbird/thunderbird-android</change>
</release>
</changelog>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" translatable="false">Thunderbird Debug</string>
</resources>

View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto"
>
<application
android:name=".ThunderbirdApp"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Thunderbird.Startup"
>
<activity
android:name="com.fsck.k9.ui.settings.account.OpenPgpAppSelectDialog"
android:configChanges="locale"
android:theme="@style/Theme.Thunderbird.DayNight.Dialog.Translucent"
/>
<activity
android:name="com.fsck.k9.ui.notification.DeleteConfirmationActivity"
android:excludeFromRecents="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/Theme.Thunderbird.DayNight.Dialog.Translucent"
/>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge"
>
<!-- We're using on-demand initialization for WorkManager -->
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove"
/>
</provider>
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name must be `net.thunderbird.android.widget.provider.MessageListWidgetProvider` and can't be changed. -->
<receiver
android:name="net.thunderbird.android.widget.provider.MessageListWidgetProvider"
android:icon="@drawable/message_list_widget_preview"
android:label="@string/message_list_widget_label"
android:enabled="@bool/home_screen_widgets_enabled"
android:exported="false"
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/message_list_widget_info"
/>
</receiver>
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name and can't be changed and always must be:
`net.thunderbird.android.widget.provider.UnreadWidgetProvider`
-->
<receiver
android:name="net.thunderbird.android.widget.provider.UnreadWidgetProvider"
android:label="@string/unread_widget_label"
android:enabled="@bool/home_screen_widgets_enabled"
android:exported="false"
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/unread_widget_info"
/>
</receiver>
</application>
</manifest>

View file

@ -0,0 +1,28 @@
package net.thunderbird.android
import app.k9mail.feature.telemetry.api.TelemetryManager
import com.fsck.k9.K9
import net.thunderbird.app.common.BaseApplication
import org.koin.android.ext.android.inject
import org.koin.core.module.Module
class ThunderbirdApp : BaseApplication() {
private val telemetryManager: TelemetryManager by inject()
override fun provideAppModule(): Module = appModule
override fun onCreate() {
super.onCreate()
initializeTelemetry()
}
private fun initializeTelemetry() {
telemetryManager.init(
uploadEnabled = K9.isTelemetryEnabled,
releaseChannel = BuildConfig.GLEAN_RELEASE_CHANNEL,
versionCode = BuildConfig.VERSION_CODE,
versionName = BuildConfig.VERSION_NAME,
)
}
}

View file

@ -0,0 +1,44 @@
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
import net.thunderbird.android.feature.featureModule
import net.thunderbird.android.featureflag.TbFeatureFlagFactory
import net.thunderbird.android.provider.providerModule
import net.thunderbird.android.widget.provider.MessageListWidgetProvider
import net.thunderbird.android.widget.provider.UnreadWidgetProvider
import net.thunderbird.android.widget.widgetModule
import net.thunderbird.app.common.appCommonModule
import net.thunderbird.core.common.oauth.OAuthConfigurationFactory
import net.thunderbird.core.featureflag.FeatureFlagFactory
import org.koin.core.qualifier.named
import org.koin.dsl.module
val appModule = module {
includes(appCommonModule)
includes(widgetModule)
includes(featureModule)
includes(providerModule)
single(named("ClientInfoAppName")) { BuildConfig.CLIENT_INFO_APP_NAME }
single(named("ClientInfoAppVersion")) { BuildConfig.VERSION_NAME }
single<AppConfig> { appConfig }
single<OAuthConfigurationFactory> { TbOAuthConfigurationFactory() }
single<FeatureFlagFactory> { TbFeatureFlagFactory() }
developmentModuleAdditions()
}
val appConfig = DefaultAppConfig(
componentsToDisable = listOf(
MessageCompose::class.java,
LauncherShortcutActivity::class.java,
UnreadWidgetProvider::class.java,
MessageListWidgetProvider::class.java,
),
)

View file

@ -0,0 +1,21 @@
package net.thunderbird.android.feature
import app.k9mail.feature.funding.api.FundingSettings
import app.k9mail.feature.funding.featureFundingModule
import app.k9mail.feature.migration.launcher.featureMigrationModule
import app.k9mail.feature.onboarding.migration.onboardingMigrationModule
import app.k9mail.feature.telemetry.telemetryModule
import net.thunderbird.feature.account.settings.featureAccountSettingsModule
import net.thunderbird.feature.mail.message.list.featureMessageListModule
import org.koin.dsl.module
internal val featureModule = module {
includes(featureAccountSettingsModule)
includes(telemetryModule)
includes(featureFundingModule)
includes(onboardingMigrationModule)
includes(featureMigrationModule)
includes(featureMessageListModule)
single<FundingSettings> { TbFundingSettings() }
}

View file

@ -0,0 +1,27 @@
package net.thunderbird.android.feature
import app.k9mail.feature.funding.api.FundingSettings
import com.fsck.k9.K9
internal class TbFundingSettings : FundingSettings {
override fun getReminderReferenceTimestamp(): Long = K9.fundingReminderReferenceTimestamp
override fun setReminderReferenceTimestamp(timestamp: Long) {
K9.fundingReminderReferenceTimestamp = timestamp
K9.saveSettingsAsync()
}
override fun getReminderShownTimestamp() = K9.fundingReminderShownTimestamp
override fun setReminderShownTimestamp(timestamp: Long) {
K9.fundingReminderShownTimestamp = timestamp
K9.saveSettingsAsync()
}
override fun getActivityCounterInMillis(): Long = K9.fundingActivityCounterInMillis
override fun setActivityCounterInMillis(activeTime: Long) {
K9.fundingActivityCounterInMillis = activeTime
K9.saveSettingsAsync()
}
}

View file

@ -0,0 +1,20 @@
package net.thunderbird.android.provider
import com.fsck.k9.preferences.FilePrefixProvider
import net.thunderbird.core.common.provider.AppNameProvider
import net.thunderbird.core.common.provider.BrandNameProvider
import net.thunderbird.core.ui.theme.api.FeatureThemeProvider
import net.thunderbird.core.ui.theme.api.ThemeProvider
import org.koin.android.ext.koin.androidContext
import org.koin.dsl.binds
import org.koin.dsl.module
internal val providerModule = module {
single {
TbAppNameProvider(androidContext())
} binds arrayOf(AppNameProvider::class, BrandNameProvider::class, FilePrefixProvider::class)
single<ThemeProvider> { TbThemeProvider() }
single<FeatureThemeProvider> { TbFeatureThemeProvider() }
}

View file

@ -0,0 +1,21 @@
package net.thunderbird.android.provider
import android.content.Context
import com.fsck.k9.preferences.FilePrefixProvider
import net.thunderbird.android.R
import net.thunderbird.core.common.provider.AppNameProvider
import net.thunderbird.core.common.provider.BrandNameProvider
internal class TbAppNameProvider(
context: Context,
) : AppNameProvider, BrandNameProvider, FilePrefixProvider {
override val appName: String by lazy {
context.getString(R.string.app_name)
}
override val brandName: String by lazy {
context.getString(R.string.brand_name)
}
override val filePrefix: String = "thunderbird"
}

View file

@ -0,0 +1,21 @@
package net.thunderbird.android.provider
import androidx.compose.runtime.Composable
import app.k9mail.core.ui.compose.theme2.thunderbird.ThunderbirdTheme2
import net.thunderbird.core.ui.theme.api.FeatureThemeProvider
internal class TbFeatureThemeProvider : FeatureThemeProvider {
@Composable
override fun WithTheme(content: @Composable () -> Unit) {
ThunderbirdTheme2 {
content()
}
}
@Composable
override fun WithTheme(darkTheme: Boolean, content: @Composable () -> Unit) {
ThunderbirdTheme2(darkTheme = darkTheme) {
content()
}
}
}

View file

@ -0,0 +1,12 @@
package net.thunderbird.android.provider
import net.thunderbird.android.R
import net.thunderbird.core.ui.theme.api.ThemeProvider
internal class TbThemeProvider : ThemeProvider {
override val appThemeResourceId = R.style.Theme_Thunderbird_DayNight
override val appLightThemeResourceId = R.style.Theme_Thunderbird_Light
override val appDarkThemeResourceId = R.style.Theme_Thunderbird_Dark
override val dialogThemeResourceId = R.style.Theme_Thunderbird_DayNight_Dialog
override val translucentDialogThemeResourceId = R.style.Theme_Thunderbird_DayNight_Dialog_Translucent
}

View file

@ -0,0 +1,8 @@
package net.thunderbird.android.widget
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
import net.thunderbird.android.widget.provider.MessageListWidgetProvider
class TbMessageListWidgetConfig : MessageListWidgetConfig {
override val providerClass = MessageListWidgetProvider::class.java
}

View file

@ -0,0 +1,8 @@
package net.thunderbird.android.widget
import app.k9mail.feature.widget.unread.UnreadWidgetConfig
import net.thunderbird.android.widget.provider.UnreadWidgetProvider
class TbUnreadWidgetConfig : UnreadWidgetConfig {
override val providerClass = UnreadWidgetProvider::class.java
}

View file

@ -0,0 +1,13 @@
package net.thunderbird.android.widget
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
import app.k9mail.feature.widget.unread.UnreadWidgetConfig
import net.thunderbird.feature.widget.message.list.featureWidgetMessageListModule
import org.koin.dsl.module
internal val widgetModule = module {
includes(featureWidgetMessageListModule)
single<MessageListWidgetConfig> { TbMessageListWidgetConfig() }
single<UnreadWidgetConfig> { TbUnreadWidgetConfig() }
}

View file

@ -0,0 +1,11 @@
package net.thunderbird.android.widget.provider
import app.k9mail.feature.widget.message.list.BaseMessageListWidgetProvider
/**
* IMPORTANT: The fully qualified name for this class must be
* `net.thunderbird.android.widget.provider.MessageListWidgetProvider`.
* Otherwise widgets created with older versions of the app using a different name
* will stop working or disappear.
*/
class MessageListWidgetProvider : BaseMessageListWidgetProvider()

View file

@ -0,0 +1,11 @@
package net.thunderbird.android.widget.provider
import app.k9mail.feature.widget.unread.BaseUnreadWidgetProvider
/**
* IMPORTANT: The fully qualified name for this class must be
* `net.thunderbird.android.widget.provider.UnreadWidgetProvider`.
* Otherwise widgets created with older versions of the app using a different name
* will stop working or disappear.
*/
class UnreadWidgetProvider : BaseUnreadWidgetProvider()

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon
xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/launcher_icon_background" />
<foreground>
<inset
android:drawable="@drawable/ic_app_logo"
android:inset="22%"
/>
</foreground>
<monochrome>
<inset
android:drawable="@drawable/ic_app_logo_monochrome"
android:inset="22%"
/>
</monochrome>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

Some files were not shown because too many files have changed in this diff Show more