gitextract_77iowqz2/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── .java-version │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── 1_request_feature.yml │ │ ├── 2_report_issue.yml │ │ └── config.yml │ ├── pull_request_template.md │ ├── renovate.json5 │ └── workflows/ │ ├── build.yml │ ├── release.yml │ └── update_website.yml ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app/ │ ├── build.gradle.kts │ ├── google-services.json │ ├── proguard-android-optimize.txt │ ├── proguard-rules.pro │ ├── shortcuts.xml │ └── src/ │ ├── debug/ │ │ └── res/ │ │ └── drawable/ │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── aidl/ │ │ │ └── mihon/ │ │ │ └── app/ │ │ │ └── shizuku/ │ │ │ └── IShellInterface.aidl │ │ ├── baseline-prof.txt │ │ ├── java/ │ │ │ ├── eu/ │ │ │ │ └── kanade/ │ │ │ │ ├── core/ │ │ │ │ │ ├── preference/ │ │ │ │ │ │ ├── CheckboxState.kt │ │ │ │ │ │ └── PreferenceMutableState.kt │ │ │ │ │ └── util/ │ │ │ │ │ ├── CollectionUtils.kt │ │ │ │ │ └── SourceUtil.kt │ │ │ │ ├── domain/ │ │ │ │ │ ├── DomainModule.kt │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── BasePreferences.kt │ │ │ │ │ │ └── ExtensionInstallerPreference.kt │ │ │ │ │ ├── chapter/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── GetAvailableScanlators.kt │ │ │ │ │ │ │ ├── SetReadStatus.kt │ │ │ │ │ │ │ └── SyncChaptersWithSource.kt │ │ │ │ │ │ └── model/ │ │ │ │ │ │ ├── Chapter.kt │ │ │ │ │ │ └── ChapterFilter.kt │ │ │ │ │ ├── download/ │ │ │ │ │ │ └── interactor/ │ │ │ │ │ │ └── DeleteDownload.kt │ │ │ │ │ ├── extension/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── GetExtensionLanguages.kt │ │ │ │ │ │ │ ├── GetExtensionSources.kt │ │ │ │ │ │ │ ├── GetExtensionsByType.kt │ │ │ │ │ │ │ └── TrustExtension.kt │ │ │ │ │ │ └── model/ │ │ │ │ │ │ └── Extensions.kt │ │ │ │ │ ├── manga/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── GetExcludedScanlators.kt │ │ │ │ │ │ │ ├── SetExcludedScanlators.kt │ │ │ │ │ │ │ ├── SetMangaViewerFlags.kt │ │ │ │ │ │ │ └── UpdateManga.kt │ │ │ │ │ │ └── model/ │ │ │ │ │ │ └── Manga.kt │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── GetEnabledSources.kt │ │ │ │ │ │ │ ├── GetIncognitoState.kt │ │ │ │ │ │ │ ├── GetLanguagesWithSources.kt │ │ │ │ │ │ │ ├── GetSourcesWithFavoriteCount.kt │ │ │ │ │ │ │ ├── SetMigrateSorting.kt │ │ │ │ │ │ │ ├── ToggleIncognito.kt │ │ │ │ │ │ │ ├── ToggleLanguage.kt │ │ │ │ │ │ │ ├── ToggleSource.kt │ │ │ │ │ │ │ └── ToggleSourcePin.kt │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ └── Source.kt │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── SourcePreferences.kt │ │ │ │ │ ├── track/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── AddTracks.kt │ │ │ │ │ │ │ ├── RefreshTracks.kt │ │ │ │ │ │ │ ├── SyncChapterProgressWithTrack.kt │ │ │ │ │ │ │ └── TrackChapter.kt │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── AutoTrackState.kt │ │ │ │ │ │ │ └── Track.kt │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ ├── DelayedTrackingUpdateJob.kt │ │ │ │ │ │ │ └── TrackPreferences.kt │ │ │ │ │ │ └── store/ │ │ │ │ │ │ └── DelayedTrackingStore.kt │ │ │ │ │ └── ui/ │ │ │ │ │ ├── UiPreferences.kt │ │ │ │ │ └── model/ │ │ │ │ │ ├── AppTheme.kt │ │ │ │ │ ├── TabletUiMode.kt │ │ │ │ │ └── ThemeMode.kt │ │ │ │ ├── presentation/ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ ├── BrowseSourceScreen.kt │ │ │ │ │ │ ├── ExtensionDetailsScreen.kt │ │ │ │ │ │ ├── ExtensionFilterScreen.kt │ │ │ │ │ │ ├── ExtensionsScreen.kt │ │ │ │ │ │ ├── GlobalSearchScreen.kt │ │ │ │ │ │ ├── MigrateSearchScreen.kt │ │ │ │ │ │ ├── MigrateSourceScreen.kt │ │ │ │ │ │ ├── SourcesFilterScreen.kt │ │ │ │ │ │ ├── SourcesScreen.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── BaseBrowseItem.kt │ │ │ │ │ │ ├── BaseSourceItem.kt │ │ │ │ │ │ ├── BrowseBadges.kt │ │ │ │ │ │ ├── BrowseIcons.kt │ │ │ │ │ │ ├── BrowseSourceComfortableGrid.kt │ │ │ │ │ │ ├── BrowseSourceCompactGrid.kt │ │ │ │ │ │ ├── BrowseSourceDialogs.kt │ │ │ │ │ │ ├── BrowseSourceList.kt │ │ │ │ │ │ ├── BrowseSourceLoadingItem.kt │ │ │ │ │ │ ├── BrowseSourceToolbar.kt │ │ │ │ │ │ ├── GlobalSearchCardRow.kt │ │ │ │ │ │ ├── GlobalSearchResultItems.kt │ │ │ │ │ │ └── GlobalSearchToolbar.kt │ │ │ │ │ ├── category/ │ │ │ │ │ │ ├── CategoryExtensions.kt │ │ │ │ │ │ ├── CategoryScreen.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── CategoryDialogs.kt │ │ │ │ │ │ ├── CategoryFloatingActionButton.kt │ │ │ │ │ │ └── CategoryListItem.kt │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AdaptiveSheet.kt │ │ │ │ │ │ ├── AppBar.kt │ │ │ │ │ │ ├── Banners.kt │ │ │ │ │ │ ├── DateText.kt │ │ │ │ │ │ ├── DownloadDropdownMenu.kt │ │ │ │ │ │ ├── DropdownMenu.kt │ │ │ │ │ │ ├── EmptyScreen.kt │ │ │ │ │ │ ├── TabbedDialog.kt │ │ │ │ │ │ └── TabbedScreen.kt │ │ │ │ │ ├── crash/ │ │ │ │ │ │ └── CrashScreen.kt │ │ │ │ │ ├── history/ │ │ │ │ │ │ ├── HistoryScreen.kt │ │ │ │ │ │ ├── HistoryScreenModelStateProvider.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── HistoryDialogs.kt │ │ │ │ │ │ ├── HistoryItem.kt │ │ │ │ │ │ └── HistoryWithRelationsProvider.kt │ │ │ │ │ ├── library/ │ │ │ │ │ │ ├── DeleteLibraryMangaDialog.kt │ │ │ │ │ │ ├── LibrarySettingsDialog.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── CommonMangaItem.kt │ │ │ │ │ │ ├── GlobalSearchItem.kt │ │ │ │ │ │ ├── LazyLibraryGrid.kt │ │ │ │ │ │ ├── LibraryBadges.kt │ │ │ │ │ │ ├── LibraryComfortableGrid.kt │ │ │ │ │ │ ├── LibraryCompactGrid.kt │ │ │ │ │ │ ├── LibraryContent.kt │ │ │ │ │ │ ├── LibraryList.kt │ │ │ │ │ │ ├── LibraryPager.kt │ │ │ │ │ │ ├── LibraryTabs.kt │ │ │ │ │ │ └── LibraryToolbar.kt │ │ │ │ │ ├── manga/ │ │ │ │ │ │ ├── ChapterSettingsDialog.kt │ │ │ │ │ │ ├── DuplicateMangaDialog.kt │ │ │ │ │ │ ├── MangaNotesScreen.kt │ │ │ │ │ │ ├── MangaScreen.kt │ │ │ │ │ │ ├── MangaScreenConstants.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── BaseMangaListItem.kt │ │ │ │ │ │ ├── ChapterDownloadIndicator.kt │ │ │ │ │ │ ├── ChapterHeader.kt │ │ │ │ │ │ ├── DotSeparatorText.kt │ │ │ │ │ │ ├── MangaBottomActionMenu.kt │ │ │ │ │ │ ├── MangaChapterListItem.kt │ │ │ │ │ │ ├── MangaCover.kt │ │ │ │ │ │ ├── MangaCoverDialog.kt │ │ │ │ │ │ ├── MangaDialogs.kt │ │ │ │ │ │ ├── MangaInfoHeader.kt │ │ │ │ │ │ ├── MangaNotesDisplay.kt │ │ │ │ │ │ ├── MangaNotesSection.kt │ │ │ │ │ │ ├── MangaNotesTextArea.kt │ │ │ │ │ │ ├── MangaToolbar.kt │ │ │ │ │ │ ├── MarkdownRender.kt │ │ │ │ │ │ ├── MissingChapterCountListItem.kt │ │ │ │ │ │ └── ScanlatorFilterDialog.kt │ │ │ │ │ ├── more/ │ │ │ │ │ │ ├── LogoHeader.kt │ │ │ │ │ │ ├── MoreScreen.kt │ │ │ │ │ │ ├── NewUpdateScreen.kt │ │ │ │ │ │ ├── onboarding/ │ │ │ │ │ │ │ ├── GuidesStep.kt │ │ │ │ │ │ │ ├── OnboardingScreen.kt │ │ │ │ │ │ │ ├── OnboardingStep.kt │ │ │ │ │ │ │ ├── PermissionStep.kt │ │ │ │ │ │ │ ├── StorageStep.kt │ │ │ │ │ │ │ └── ThemeStep.kt │ │ │ │ │ │ ├── settings/ │ │ │ │ │ │ │ ├── Preference.kt │ │ │ │ │ │ │ ├── PreferenceItem.kt │ │ │ │ │ │ │ ├── PreferenceScaffold.kt │ │ │ │ │ │ │ ├── PreferenceScreen.kt │ │ │ │ │ │ │ ├── screen/ │ │ │ │ │ │ │ │ ├── Commons.kt │ │ │ │ │ │ │ │ ├── SearchableSettings.kt │ │ │ │ │ │ │ │ ├── SettingsAdvancedScreen.kt │ │ │ │ │ │ │ │ ├── SettingsAppearanceScreen.kt │ │ │ │ │ │ │ │ ├── SettingsBrowseScreen.kt │ │ │ │ │ │ │ │ ├── SettingsDataScreen.kt │ │ │ │ │ │ │ │ ├── SettingsDownloadScreen.kt │ │ │ │ │ │ │ │ ├── SettingsLibraryScreen.kt │ │ │ │ │ │ │ │ ├── SettingsMainScreen.kt │ │ │ │ │ │ │ │ ├── SettingsReaderScreen.kt │ │ │ │ │ │ │ │ ├── SettingsSearchScreen.kt │ │ │ │ │ │ │ │ ├── SettingsSecurityScreen.kt │ │ │ │ │ │ │ │ ├── SettingsTrackingScreen.kt │ │ │ │ │ │ │ │ ├── about/ │ │ │ │ │ │ │ │ │ ├── AboutScreen.kt │ │ │ │ │ │ │ │ │ ├── OpenSourceLibraryLicenseScreen.kt │ │ │ │ │ │ │ │ │ └── OpenSourceLicensesScreen.kt │ │ │ │ │ │ │ │ ├── advanced/ │ │ │ │ │ │ │ │ │ └── ClearDatabaseScreen.kt │ │ │ │ │ │ │ │ ├── appearance/ │ │ │ │ │ │ │ │ │ └── AppLanguageScreen.kt │ │ │ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ │ │ │ ├── ExtensionReposScreen.kt │ │ │ │ │ │ │ │ │ ├── ExtensionReposScreenModel.kt │ │ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ │ │ ├── ExtensionReposContent.kt │ │ │ │ │ │ │ │ │ ├── ExtensionReposDialogs.kt │ │ │ │ │ │ │ │ │ └── ExtensionReposScreen.kt │ │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ │ ├── CreateBackupScreen.kt │ │ │ │ │ │ │ │ │ ├── RestoreBackupScreen.kt │ │ │ │ │ │ │ │ │ └── StorageInfo.kt │ │ │ │ │ │ │ │ └── debug/ │ │ │ │ │ │ │ │ ├── BackupSchemaScreen.kt │ │ │ │ │ │ │ │ ├── DebugInfoScreen.kt │ │ │ │ │ │ │ │ └── WorkerInfoScreen.kt │ │ │ │ │ │ │ └── widget/ │ │ │ │ │ │ │ ├── AppThemeModePreferenceWidget.kt │ │ │ │ │ │ │ ├── AppThemePreferenceWidget.kt │ │ │ │ │ │ │ ├── BasePreferenceWidget.kt │ │ │ │ │ │ │ ├── EditTextPreferenceWidget.kt │ │ │ │ │ │ │ ├── InfoWidget.kt │ │ │ │ │ │ │ ├── ListPreferenceWidget.kt │ │ │ │ │ │ │ ├── MultiSelectListPreferenceWidget.kt │ │ │ │ │ │ │ ├── PreferenceGroupHeader.kt │ │ │ │ │ │ │ ├── SwitchPreferenceWidget.kt │ │ │ │ │ │ │ ├── TextPreferenceWidget.kt │ │ │ │ │ │ │ ├── TrackingPreferenceWidget.kt │ │ │ │ │ │ │ └── TriStateListDialog.kt │ │ │ │ │ │ └── stats/ │ │ │ │ │ │ ├── StatsScreenContent.kt │ │ │ │ │ │ ├── StatsScreenState.kt │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── StatsItem.kt │ │ │ │ │ │ └── data/ │ │ │ │ │ │ └── StatsData.kt │ │ │ │ │ ├── reader/ │ │ │ │ │ │ ├── ChapterTransition.kt │ │ │ │ │ │ ├── DisplayRefreshHost.kt │ │ │ │ │ │ ├── OrientationSelectDialog.kt │ │ │ │ │ │ ├── ReaderContentOverlay.kt │ │ │ │ │ │ ├── ReaderPageActionsDialog.kt │ │ │ │ │ │ ├── ReaderPageIndicator.kt │ │ │ │ │ │ ├── ReadingModeSelectDialog.kt │ │ │ │ │ │ ├── appbars/ │ │ │ │ │ │ │ ├── ReaderAppBars.kt │ │ │ │ │ │ │ ├── ReaderBottomBar.kt │ │ │ │ │ │ │ └── ReaderTopBar.kt │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── ChapterNavigator.kt │ │ │ │ │ │ │ └── ModeSelectionDialog.kt │ │ │ │ │ │ └── settings/ │ │ │ │ │ │ ├── ColorFilterPage.kt │ │ │ │ │ │ ├── GeneralSettingsPage.kt │ │ │ │ │ │ ├── ReaderSettingsDialog.kt │ │ │ │ │ │ └── ReadingModePage.kt │ │ │ │ │ ├── theme/ │ │ │ │ │ │ ├── TachiyomiTheme.kt │ │ │ │ │ │ └── colorscheme/ │ │ │ │ │ │ ├── BaseColorScheme.kt │ │ │ │ │ │ ├── CatppuccinColorScheme.kt │ │ │ │ │ │ ├── GreenAppleColorScheme.kt │ │ │ │ │ │ ├── LavenderColorScheme.kt │ │ │ │ │ │ ├── MidnightDuskColorScheme.kt │ │ │ │ │ │ ├── MonetColorScheme.kt │ │ │ │ │ │ ├── MonochromeColorScheme.kt │ │ │ │ │ │ ├── NordColorScheme.kt │ │ │ │ │ │ ├── StrawberryColorScheme.kt │ │ │ │ │ │ ├── TachiyomiColorScheme.kt │ │ │ │ │ │ ├── TakoColorScheme.kt │ │ │ │ │ │ ├── TealTurqoiseColorScheme.kt │ │ │ │ │ │ ├── TidalWaveColorScheme.kt │ │ │ │ │ │ ├── YinYangColorScheme.kt │ │ │ │ │ │ └── YotsubaColorScheme.kt │ │ │ │ │ ├── track/ │ │ │ │ │ │ ├── TrackInfoDialogHome.kt │ │ │ │ │ │ ├── TrackInfoDialogHomePreviewProvider.kt │ │ │ │ │ │ ├── TrackInfoDialogSelector.kt │ │ │ │ │ │ ├── TrackerSearch.kt │ │ │ │ │ │ ├── TrackerSearchPreviewProvider.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── TrackLogoIcon.kt │ │ │ │ │ │ └── TrackLogoIconPreviewProvider.kt │ │ │ │ │ ├── updates/ │ │ │ │ │ │ ├── UpdatesDeleteConfirmationDialog.kt │ │ │ │ │ │ ├── UpdatesFilterDialog.kt │ │ │ │ │ │ ├── UpdatesScreen.kt │ │ │ │ │ │ └── UpdatesUiItem.kt │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── ChapterNumberFormatter.kt │ │ │ │ │ │ ├── ExceptionFormatter.kt │ │ │ │ │ │ ├── FastScrollAnimateItem.kt │ │ │ │ │ │ ├── Navigator.kt │ │ │ │ │ │ ├── Permissions.kt │ │ │ │ │ │ ├── Resources.kt │ │ │ │ │ │ ├── TimeUtils.kt │ │ │ │ │ │ └── WindowSize.kt │ │ │ │ │ └── webview/ │ │ │ │ │ └── WebViewScreenContent.kt │ │ │ │ ├── tachiyomi/ │ │ │ │ │ ├── App.kt │ │ │ │ │ ├── AppInfo.kt │ │ │ │ │ ├── crash/ │ │ │ │ │ │ ├── CrashActivity.kt │ │ │ │ │ │ └── GlobalExceptionHandler.kt │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── backup/ │ │ │ │ │ │ │ ├── BackupDecoder.kt │ │ │ │ │ │ │ ├── BackupFileValidator.kt │ │ │ │ │ │ │ ├── BackupNotifier.kt │ │ │ │ │ │ │ ├── create/ │ │ │ │ │ │ │ │ ├── BackupCreateJob.kt │ │ │ │ │ │ │ │ ├── BackupCreator.kt │ │ │ │ │ │ │ │ ├── BackupOptions.kt │ │ │ │ │ │ │ │ └── creators/ │ │ │ │ │ │ │ │ ├── CategoriesBackupCreator.kt │ │ │ │ │ │ │ │ ├── ExtensionRepoBackupCreator.kt │ │ │ │ │ │ │ │ ├── MangaBackupCreator.kt │ │ │ │ │ │ │ │ ├── PreferenceBackupCreator.kt │ │ │ │ │ │ │ │ └── SourcesBackupCreator.kt │ │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ │ ├── Backup.kt │ │ │ │ │ │ │ │ ├── BackupCategory.kt │ │ │ │ │ │ │ │ ├── BackupChapter.kt │ │ │ │ │ │ │ │ ├── BackupExtensionRepos.kt │ │ │ │ │ │ │ │ ├── BackupHistory.kt │ │ │ │ │ │ │ │ ├── BackupManga.kt │ │ │ │ │ │ │ │ ├── BackupPreference.kt │ │ │ │ │ │ │ │ ├── BackupSource.kt │ │ │ │ │ │ │ │ └── BackupTracking.kt │ │ │ │ │ │ │ └── restore/ │ │ │ │ │ │ │ ├── BackupRestoreJob.kt │ │ │ │ │ │ │ ├── BackupRestorer.kt │ │ │ │ │ │ │ ├── RestoreOptions.kt │ │ │ │ │ │ │ └── restorers/ │ │ │ │ │ │ │ ├── CategoriesRestorer.kt │ │ │ │ │ │ │ ├── ExtensionRepoRestorer.kt │ │ │ │ │ │ │ ├── MangaRestorer.kt │ │ │ │ │ │ │ └── PreferenceRestorer.kt │ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ │ ├── ChapterCache.kt │ │ │ │ │ │ │ └── CoverCache.kt │ │ │ │ │ │ ├── coil/ │ │ │ │ │ │ │ ├── BufferedSourceFetcher.kt │ │ │ │ │ │ │ ├── MangaCoverFetcher.kt │ │ │ │ │ │ │ ├── MangaCoverKeyer.kt │ │ │ │ │ │ │ ├── TachiyomiImageDecoder.kt │ │ │ │ │ │ │ └── Utils.kt │ │ │ │ │ │ ├── database/ │ │ │ │ │ │ │ └── models/ │ │ │ │ │ │ │ ├── Chapter.kt │ │ │ │ │ │ │ ├── ChapterImpl.kt │ │ │ │ │ │ │ ├── Track.kt │ │ │ │ │ │ │ └── TrackImpl.kt │ │ │ │ │ │ ├── download/ │ │ │ │ │ │ │ ├── DownloadCache.kt │ │ │ │ │ │ │ ├── DownloadJob.kt │ │ │ │ │ │ │ ├── DownloadManager.kt │ │ │ │ │ │ │ ├── DownloadNotifier.kt │ │ │ │ │ │ │ ├── DownloadPendingDeleter.kt │ │ │ │ │ │ │ ├── DownloadProvider.kt │ │ │ │ │ │ │ ├── DownloadStore.kt │ │ │ │ │ │ │ ├── Downloader.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── Download.kt │ │ │ │ │ │ ├── export/ │ │ │ │ │ │ │ └── LibraryExporter.kt │ │ │ │ │ │ ├── library/ │ │ │ │ │ │ │ ├── LibraryUpdateJob.kt │ │ │ │ │ │ │ ├── LibraryUpdateNotifier.kt │ │ │ │ │ │ │ └── MetadataUpdateJob.kt │ │ │ │ │ │ ├── notification/ │ │ │ │ │ │ │ ├── NotificationHandler.kt │ │ │ │ │ │ │ ├── NotificationReceiver.kt │ │ │ │ │ │ │ └── Notifications.kt │ │ │ │ │ │ ├── preference/ │ │ │ │ │ │ │ └── SharedPreferencesDataStore.kt │ │ │ │ │ │ ├── saver/ │ │ │ │ │ │ │ └── ImageSaver.kt │ │ │ │ │ │ ├── track/ │ │ │ │ │ │ │ ├── BaseTracker.kt │ │ │ │ │ │ │ ├── DeletableTracker.kt │ │ │ │ │ │ │ ├── EnhancedTracker.kt │ │ │ │ │ │ │ ├── Tracker.kt │ │ │ │ │ │ │ ├── TrackerManager.kt │ │ │ │ │ │ │ ├── anilist/ │ │ │ │ │ │ │ │ ├── Anilist.kt │ │ │ │ │ │ │ │ ├── AnilistApi.kt │ │ │ │ │ │ │ │ ├── AnilistInterceptor.kt │ │ │ │ │ │ │ │ ├── AnilistUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── ALAddManga.kt │ │ │ │ │ │ │ │ ├── ALFuzzyDate.kt │ │ │ │ │ │ │ │ ├── ALManga.kt │ │ │ │ │ │ │ │ ├── ALOAuth.kt │ │ │ │ │ │ │ │ ├── ALSearch.kt │ │ │ │ │ │ │ │ ├── ALSearchItem.kt │ │ │ │ │ │ │ │ ├── ALUser.kt │ │ │ │ │ │ │ │ └── ALUserList.kt │ │ │ │ │ │ │ ├── bangumi/ │ │ │ │ │ │ │ │ ├── Bangumi.kt │ │ │ │ │ │ │ │ ├── BangumiApi.kt │ │ │ │ │ │ │ │ ├── BangumiInterceptor.kt │ │ │ │ │ │ │ │ ├── BangumiUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── BGMCollectionResponse.kt │ │ │ │ │ │ │ │ ├── BGMOAuth.kt │ │ │ │ │ │ │ │ ├── BGMSearch.kt │ │ │ │ │ │ │ │ └── BGMUser.kt │ │ │ │ │ │ │ ├── kavita/ │ │ │ │ │ │ │ │ ├── Kavita.kt │ │ │ │ │ │ │ │ ├── KavitaApi.kt │ │ │ │ │ │ │ │ ├── KavitaInterceptor.kt │ │ │ │ │ │ │ │ └── KavitaModels.kt │ │ │ │ │ │ │ ├── kitsu/ │ │ │ │ │ │ │ │ ├── Kitsu.kt │ │ │ │ │ │ │ │ ├── KitsuApi.kt │ │ │ │ │ │ │ │ ├── KitsuDateHelper.kt │ │ │ │ │ │ │ │ ├── KitsuInterceptor.kt │ │ │ │ │ │ │ │ ├── KitsuUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── KitsuAddManga.kt │ │ │ │ │ │ │ │ ├── KitsuListSearch.kt │ │ │ │ │ │ │ │ ├── KitsuOAuth.kt │ │ │ │ │ │ │ │ ├── KitsuSearch.kt │ │ │ │ │ │ │ │ ├── KitsuSearchItemCover.kt │ │ │ │ │ │ │ │ └── KitsuUser.kt │ │ │ │ │ │ │ ├── komga/ │ │ │ │ │ │ │ │ ├── Komga.kt │ │ │ │ │ │ │ │ ├── KomgaApi.kt │ │ │ │ │ │ │ │ └── KomgaModels.kt │ │ │ │ │ │ │ ├── mangaupdates/ │ │ │ │ │ │ │ │ ├── MangaUpdates.kt │ │ │ │ │ │ │ │ ├── MangaUpdatesApi.kt │ │ │ │ │ │ │ │ ├── MangaUpdatesInterceptor.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── MUContext.kt │ │ │ │ │ │ │ │ ├── MUImage.kt │ │ │ │ │ │ │ │ ├── MUListItem.kt │ │ │ │ │ │ │ │ ├── MULoginResponse.kt │ │ │ │ │ │ │ │ ├── MURating.kt │ │ │ │ │ │ │ │ ├── MURecord.kt │ │ │ │ │ │ │ │ ├── MUSearch.kt │ │ │ │ │ │ │ │ ├── MUSeries.kt │ │ │ │ │ │ │ │ ├── MUStatus.kt │ │ │ │ │ │ │ │ └── MUUrl.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ └── TrackSearch.kt │ │ │ │ │ │ │ ├── myanimelist/ │ │ │ │ │ │ │ │ ├── MyAnimeList.kt │ │ │ │ │ │ │ │ ├── MyAnimeListApi.kt │ │ │ │ │ │ │ │ ├── MyAnimeListInterceptor.kt │ │ │ │ │ │ │ │ ├── MyAnimeListUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── MALList.kt │ │ │ │ │ │ │ │ ├── MALManga.kt │ │ │ │ │ │ │ │ ├── MALOAuth.kt │ │ │ │ │ │ │ │ ├── MALSearch.kt │ │ │ │ │ │ │ │ └── MALUser.kt │ │ │ │ │ │ │ ├── shikimori/ │ │ │ │ │ │ │ │ ├── Shikimori.kt │ │ │ │ │ │ │ │ ├── ShikimoriApi.kt │ │ │ │ │ │ │ │ ├── ShikimoriInterceptor.kt │ │ │ │ │ │ │ │ ├── ShikimoriUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── SMAddMangaResponse.kt │ │ │ │ │ │ │ │ ├── SMManga.kt │ │ │ │ │ │ │ │ ├── SMOAuth.kt │ │ │ │ │ │ │ │ ├── SMUser.kt │ │ │ │ │ │ │ │ └── SMUserListEntry.kt │ │ │ │ │ │ │ └── suwayomi/ │ │ │ │ │ │ │ ├── Suwayomi.kt │ │ │ │ │ │ │ ├── SuwayomiApi.kt │ │ │ │ │ │ │ └── SuwayomiModels.kt │ │ │ │ │ │ └── updater/ │ │ │ │ │ │ ├── AppUpdateChecker.kt │ │ │ │ │ │ ├── AppUpdateDownloadJob.kt │ │ │ │ │ │ └── AppUpdateNotifier.kt │ │ │ │ │ ├── di/ │ │ │ │ │ │ ├── AppModule.kt │ │ │ │ │ │ └── PreferenceModule.kt │ │ │ │ │ ├── extension/ │ │ │ │ │ │ ├── ExtensionManager.kt │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── ExtensionApi.kt │ │ │ │ │ │ │ └── ExtensionUpdateNotifier.kt │ │ │ │ │ │ ├── installer/ │ │ │ │ │ │ │ ├── Installer.kt │ │ │ │ │ │ │ ├── PackageInstallerInstaller.kt │ │ │ │ │ │ │ └── ShizukuInstaller.kt │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── Extension.kt │ │ │ │ │ │ │ ├── InstallStep.kt │ │ │ │ │ │ │ └── LoadResult.kt │ │ │ │ │ │ └── util/ │ │ │ │ │ │ ├── ExtensionInstallActivity.kt │ │ │ │ │ │ ├── ExtensionInstallReceiver.kt │ │ │ │ │ │ ├── ExtensionInstallService.kt │ │ │ │ │ │ ├── ExtensionInstaller.kt │ │ │ │ │ │ └── ExtensionLoader.kt │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── AndroidSourceManager.kt │ │ │ │ │ │ └── SourceExtensions.kt │ │ │ │ │ ├── ui/ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ ├── activity/ │ │ │ │ │ │ │ │ └── BaseActivity.kt │ │ │ │ │ │ │ └── delegate/ │ │ │ │ │ │ │ ├── SecureActivityDelegate.kt │ │ │ │ │ │ │ └── ThemingDelegate.kt │ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ │ ├── BrowseTab.kt │ │ │ │ │ │ │ ├── extension/ │ │ │ │ │ │ │ │ ├── ExtensionFilterScreen.kt │ │ │ │ │ │ │ │ ├── ExtensionFilterScreenModel.kt │ │ │ │ │ │ │ │ ├── ExtensionsScreenModel.kt │ │ │ │ │ │ │ │ ├── ExtensionsTab.kt │ │ │ │ │ │ │ │ └── details/ │ │ │ │ │ │ │ │ ├── ExtensionDetailsScreen.kt │ │ │ │ │ │ │ │ ├── ExtensionDetailsScreenModel.kt │ │ │ │ │ │ │ │ └── SourcePreferencesScreen.kt │ │ │ │ │ │ │ ├── migration/ │ │ │ │ │ │ │ │ ├── manga/ │ │ │ │ │ │ │ │ │ ├── MigrateMangaScreen.kt │ │ │ │ │ │ │ │ │ └── MigrateMangaScreenModel.kt │ │ │ │ │ │ │ │ ├── search/ │ │ │ │ │ │ │ │ │ ├── MigrateSearchScreen.kt │ │ │ │ │ │ │ │ │ ├── MigrateSearchScreenModel.kt │ │ │ │ │ │ │ │ │ └── MigrateSourceSearchScreen.kt │ │ │ │ │ │ │ │ └── sources/ │ │ │ │ │ │ │ │ ├── MigrateSourceScreenModel.kt │ │ │ │ │ │ │ │ └── MigrateSourceTab.kt │ │ │ │ │ │ │ └── source/ │ │ │ │ │ │ │ ├── SourcesFilterScreen.kt │ │ │ │ │ │ │ ├── SourcesFilterScreenModel.kt │ │ │ │ │ │ │ ├── SourcesScreenModel.kt │ │ │ │ │ │ │ ├── SourcesTab.kt │ │ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ │ │ ├── BrowseSourceScreen.kt │ │ │ │ │ │ │ │ ├── BrowseSourceScreenModel.kt │ │ │ │ │ │ │ │ └── SourceFilterDialog.kt │ │ │ │ │ │ │ └── globalsearch/ │ │ │ │ │ │ │ ├── GlobalSearchScreen.kt │ │ │ │ │ │ │ ├── GlobalSearchScreenModel.kt │ │ │ │ │ │ │ └── SearchScreenModel.kt │ │ │ │ │ │ ├── category/ │ │ │ │ │ │ │ ├── CategoryScreen.kt │ │ │ │ │ │ │ └── CategoryScreenModel.kt │ │ │ │ │ │ ├── deeplink/ │ │ │ │ │ │ │ ├── DeepLinkActivity.kt │ │ │ │ │ │ │ ├── DeepLinkScreen.kt │ │ │ │ │ │ │ └── DeepLinkScreenModel.kt │ │ │ │ │ │ ├── download/ │ │ │ │ │ │ │ ├── DownloadAdapter.kt │ │ │ │ │ │ │ ├── DownloadHeaderHolder.kt │ │ │ │ │ │ │ ├── DownloadHeaderItem.kt │ │ │ │ │ │ │ ├── DownloadHolder.kt │ │ │ │ │ │ │ ├── DownloadItem.kt │ │ │ │ │ │ │ ├── DownloadQueueScreen.kt │ │ │ │ │ │ │ └── DownloadQueueScreenModel.kt │ │ │ │ │ │ ├── history/ │ │ │ │ │ │ │ ├── HistoryScreenModel.kt │ │ │ │ │ │ │ └── HistoryTab.kt │ │ │ │ │ │ ├── home/ │ │ │ │ │ │ │ └── HomeScreen.kt │ │ │ │ │ │ ├── library/ │ │ │ │ │ │ │ ├── LibraryItem.kt │ │ │ │ │ │ │ ├── LibraryScreenModel.kt │ │ │ │ │ │ │ ├── LibrarySettingsScreenModel.kt │ │ │ │ │ │ │ └── LibraryTab.kt │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ │ ├── manga/ │ │ │ │ │ │ │ ├── MangaCoverScreenModel.kt │ │ │ │ │ │ │ ├── MangaScreen.kt │ │ │ │ │ │ │ ├── MangaScreenModel.kt │ │ │ │ │ │ │ ├── notes/ │ │ │ │ │ │ │ │ └── MangaNotesScreen.kt │ │ │ │ │ │ │ └── track/ │ │ │ │ │ │ │ ├── TrackInfoDialog.kt │ │ │ │ │ │ │ └── TrackItem.kt │ │ │ │ │ │ ├── more/ │ │ │ │ │ │ │ ├── MoreTab.kt │ │ │ │ │ │ │ ├── NewUpdateScreen.kt │ │ │ │ │ │ │ └── OnboardingScreen.kt │ │ │ │ │ │ ├── reader/ │ │ │ │ │ │ │ ├── ReaderActivity.kt │ │ │ │ │ │ │ ├── ReaderNavigationOverlayView.kt │ │ │ │ │ │ │ ├── ReaderViewModel.kt │ │ │ │ │ │ │ ├── SaveImageNotifier.kt │ │ │ │ │ │ │ ├── loader/ │ │ │ │ │ │ │ │ ├── ArchivePageLoader.kt │ │ │ │ │ │ │ │ ├── ChapterLoader.kt │ │ │ │ │ │ │ │ ├── DirectoryPageLoader.kt │ │ │ │ │ │ │ │ ├── DownloadPageLoader.kt │ │ │ │ │ │ │ │ ├── EpubPageLoader.kt │ │ │ │ │ │ │ │ ├── HttpPageLoader.kt │ │ │ │ │ │ │ │ └── PageLoader.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ ├── ChapterTransition.kt │ │ │ │ │ │ │ │ ├── InsertPage.kt │ │ │ │ │ │ │ │ ├── ReaderChapter.kt │ │ │ │ │ │ │ │ ├── ReaderPage.kt │ │ │ │ │ │ │ │ └── ViewerChapters.kt │ │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ │ ├── ReaderOrientation.kt │ │ │ │ │ │ │ │ ├── ReaderPreferences.kt │ │ │ │ │ │ │ │ ├── ReaderSettingsScreenModel.kt │ │ │ │ │ │ │ │ └── ReadingMode.kt │ │ │ │ │ │ │ └── viewer/ │ │ │ │ │ │ │ ├── GestureDetectorWithLongTap.kt │ │ │ │ │ │ │ ├── MissingChapters.kt │ │ │ │ │ │ │ ├── ReaderButton.kt │ │ │ │ │ │ │ ├── ReaderPageImageView.kt │ │ │ │ │ │ │ ├── ReaderProgressIndicator.kt │ │ │ │ │ │ │ ├── ReaderTransitionView.kt │ │ │ │ │ │ │ ├── Viewer.kt │ │ │ │ │ │ │ ├── ViewerConfig.kt │ │ │ │ │ │ │ ├── ViewerNavigation.kt │ │ │ │ │ │ │ ├── navigation/ │ │ │ │ │ │ │ │ ├── DisabledNavigation.kt │ │ │ │ │ │ │ │ ├── EdgeNavigation.kt │ │ │ │ │ │ │ │ ├── KindlishNavigation.kt │ │ │ │ │ │ │ │ ├── LNavigation.kt │ │ │ │ │ │ │ │ └── RightAndLeftNavigation.kt │ │ │ │ │ │ │ ├── pager/ │ │ │ │ │ │ │ │ ├── Pager.kt │ │ │ │ │ │ │ │ ├── PagerConfig.kt │ │ │ │ │ │ │ │ ├── PagerPageHolder.kt │ │ │ │ │ │ │ │ ├── PagerTransitionHolder.kt │ │ │ │ │ │ │ │ ├── PagerViewer.kt │ │ │ │ │ │ │ │ ├── PagerViewerAdapter.kt │ │ │ │ │ │ │ │ └── PagerViewers.kt │ │ │ │ │ │ │ └── webtoon/ │ │ │ │ │ │ │ ├── WebtoonAdapter.kt │ │ │ │ │ │ │ ├── WebtoonBaseHolder.kt │ │ │ │ │ │ │ ├── WebtoonConfig.kt │ │ │ │ │ │ │ ├── WebtoonFrame.kt │ │ │ │ │ │ │ ├── WebtoonLayoutManager.kt │ │ │ │ │ │ │ ├── WebtoonPageHolder.kt │ │ │ │ │ │ │ ├── WebtoonRecyclerView.kt │ │ │ │ │ │ │ ├── WebtoonSubsamplingImageView.kt │ │ │ │ │ │ │ ├── WebtoonTransitionHolder.kt │ │ │ │ │ │ │ └── WebtoonViewer.kt │ │ │ │ │ │ ├── security/ │ │ │ │ │ │ │ └── UnlockActivity.kt │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ ├── SettingsScreen.kt │ │ │ │ │ │ │ └── track/ │ │ │ │ │ │ │ ├── BaseOAuthLoginActivity.kt │ │ │ │ │ │ │ └── TrackLoginActivity.kt │ │ │ │ │ │ ├── stats/ │ │ │ │ │ │ │ ├── StatsScreen.kt │ │ │ │ │ │ │ └── StatsScreenModel.kt │ │ │ │ │ │ ├── updates/ │ │ │ │ │ │ │ ├── UpdatesScreenModel.kt │ │ │ │ │ │ │ ├── UpdatesSettingsScreenModel.kt │ │ │ │ │ │ │ └── UpdatesTab.kt │ │ │ │ │ │ └── webview/ │ │ │ │ │ │ ├── WebViewActivity.kt │ │ │ │ │ │ ├── WebViewScreen.kt │ │ │ │ │ │ └── WebViewScreenModel.kt │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── CrashLogUtil.kt │ │ │ │ │ │ ├── MangaExtensions.kt │ │ │ │ │ │ ├── PkceUtil.kt │ │ │ │ │ │ ├── chapter/ │ │ │ │ │ │ │ ├── ChapterFilterDownloaded.kt │ │ │ │ │ │ │ ├── ChapterGetNextUnread.kt │ │ │ │ │ │ │ └── ChapterRemoveDuplicates.kt │ │ │ │ │ │ ├── lang/ │ │ │ │ │ │ │ ├── CloseableExtensions.kt │ │ │ │ │ │ │ ├── DateExtensions.kt │ │ │ │ │ │ │ └── RectFExtensions.kt │ │ │ │ │ │ ├── storage/ │ │ │ │ │ │ │ ├── FileExtensions.kt │ │ │ │ │ │ │ └── OkioExtensions.kt │ │ │ │ │ │ ├── system/ │ │ │ │ │ │ │ ├── AnimationExtensions.kt │ │ │ │ │ │ │ ├── AuthenticatorUtil.kt │ │ │ │ │ │ │ ├── BuildConfig.kt │ │ │ │ │ │ │ ├── ChildFirstPathClassLoader.kt │ │ │ │ │ │ │ ├── ContextExtensions.kt │ │ │ │ │ │ │ ├── DeviceUtilExtensions.kt │ │ │ │ │ │ │ ├── DisplayExtensions.kt │ │ │ │ │ │ │ ├── DrawableExtensions.kt │ │ │ │ │ │ │ ├── IntentExtensions.kt │ │ │ │ │ │ │ ├── InternalResourceHelper.kt │ │ │ │ │ │ │ ├── LocaleHelper.kt │ │ │ │ │ │ │ ├── NetworkExtensions.kt │ │ │ │ │ │ │ ├── NetworkStateTracker.kt │ │ │ │ │ │ │ ├── NotificationExtensions.kt │ │ │ │ │ │ │ └── WorkManagerExtensions.kt │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── EditTextPreferenceExtensions.kt │ │ │ │ │ │ ├── ViewExtensions.kt │ │ │ │ │ │ └── WindowExtensions.kt │ │ │ │ │ └── widget/ │ │ │ │ │ ├── TachiyomiTextInputEditText.kt │ │ │ │ │ └── ViewPagerAdapter.kt │ │ │ │ └── test/ │ │ │ │ └── DummyTracker.kt │ │ │ └── mihon/ │ │ │ ├── app/ │ │ │ │ └── shizuku/ │ │ │ │ └── ShellInterface.kt │ │ │ ├── core/ │ │ │ │ ├── designsystem/ │ │ │ │ │ └── utils/ │ │ │ │ │ └── WindowSize.kt │ │ │ │ └── migration/ │ │ │ │ ├── Migration.kt │ │ │ │ ├── MigrationCompletedListener.kt │ │ │ │ ├── MigrationContext.kt │ │ │ │ ├── MigrationJobFactory.kt │ │ │ │ ├── MigrationStrategy.kt │ │ │ │ ├── MigrationStrategyFactory.kt │ │ │ │ ├── Migrator.kt │ │ │ │ └── migrations/ │ │ │ │ ├── CategoryPreferencesCleanupMigration.kt │ │ │ │ ├── InstallationIdMigration.kt │ │ │ │ ├── Migrations.kt │ │ │ │ ├── SetupBackupCreateMigration.kt │ │ │ │ ├── SetupLibraryUpdateMigration.kt │ │ │ │ └── TrustExtensionRepositoryMigration.kt │ │ │ ├── domain/ │ │ │ │ └── migration/ │ │ │ │ ├── models/ │ │ │ │ │ └── MigrationFlag.kt │ │ │ │ └── usecases/ │ │ │ │ └── MigrateMangaUseCase.kt │ │ │ └── feature/ │ │ │ ├── common/ │ │ │ │ └── utils/ │ │ │ │ └── MigrationFlag.kt │ │ │ ├── migration/ │ │ │ │ ├── config/ │ │ │ │ │ ├── MigrationConfigScreen.kt │ │ │ │ │ └── MigrationConfigScreenSheet.kt │ │ │ │ ├── dialog/ │ │ │ │ │ └── MigrateMangaDialog.kt │ │ │ │ └── list/ │ │ │ │ ├── MigrationListScreen.kt │ │ │ │ ├── MigrationListScreenContent.kt │ │ │ │ ├── MigrationListScreenModel.kt │ │ │ │ ├── components/ │ │ │ │ │ ├── MigrationExitDialog.kt │ │ │ │ │ ├── MigrationMangaDialog.kt │ │ │ │ │ └── MigrationProgressDialog.kt │ │ │ │ ├── models/ │ │ │ │ │ └── MigratingManga.kt │ │ │ │ └── search/ │ │ │ │ ├── BaseSmartSearchEngine.kt │ │ │ │ └── SmartSourceSearchEngine.kt │ │ │ └── upcoming/ │ │ │ ├── UpcomingScreen.kt │ │ │ ├── UpcomingScreenContent.kt │ │ │ ├── UpcomingScreenModel.kt │ │ │ ├── UpcomingUIModel.kt │ │ │ └── components/ │ │ │ ├── UpcomingItem.kt │ │ │ └── calendar/ │ │ │ ├── Calendar.kt │ │ │ ├── CalendarDay.kt │ │ │ ├── CalendarHeader.kt │ │ │ └── CalendarIndicator.kt │ │ └── res/ │ │ ├── anim/ │ │ │ ├── shared_axis_x_pop_enter.xml │ │ │ ├── shared_axis_x_pop_exit.xml │ │ │ ├── shared_axis_x_push_enter.xml │ │ │ └── shared_axis_x_push_exit.xml │ │ ├── anim-v33/ │ │ │ ├── shared_axis_x_pop_enter.xml │ │ │ ├── shared_axis_x_pop_exit.xml │ │ │ ├── shared_axis_x_push_enter.xml │ │ │ └── shared_axis_x_push_exit.xml │ │ ├── color/ │ │ │ └── draggable_card_foreground.xml │ │ ├── drawable/ │ │ │ ├── anim_browse_enter.xml │ │ │ ├── anim_caret_down.xml │ │ │ ├── anim_history_enter.xml │ │ │ ├── anim_library_enter.xml │ │ │ ├── anim_more_enter.xml │ │ │ ├── anim_updates_enter.xml │ │ │ ├── brand_anilist.xml │ │ │ ├── brand_bangumi.xml │ │ │ ├── brand_kavita.xml │ │ │ ├── brand_kitsu.xml │ │ │ ├── brand_komga.xml │ │ │ ├── brand_mangaupdates.xml │ │ │ ├── brand_myanimelist.xml │ │ │ ├── brand_shikimori.xml │ │ │ ├── brand_suwayomi.xml │ │ │ ├── cover_error.xml │ │ │ ├── ic_book_24dp.xml │ │ │ ├── ic_close_24dp.xml │ │ │ ├── ic_crop_24dp.xml │ │ │ ├── ic_crop_off_24dp.xml │ │ │ ├── ic_done_24dp.xml │ │ │ ├── ic_done_prev_24dp.xml │ │ │ ├── ic_download_chapter_24dp.xml │ │ │ ├── ic_drag_handle_24dp.xml │ │ │ ├── ic_extension_24dp.xml │ │ │ ├── ic_folder_24dp.xml │ │ │ ├── ic_glasses_24dp.xml │ │ │ ├── ic_info_24dp.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_launcher_monochrome.xml │ │ │ ├── ic_mihon.xml │ │ │ ├── ic_mihon_splash.xml │ │ │ ├── ic_overflow_24dp.xml │ │ │ ├── ic_pause_24dp.xml │ │ │ ├── ic_photo_24dp.xml │ │ │ ├── ic_play_arrow_24dp.xml │ │ │ ├── ic_reader_continuous_vertical_24dp.xml │ │ │ ├── ic_reader_default_24dp.xml │ │ │ ├── ic_reader_ltr_24dp.xml │ │ │ ├── ic_reader_rtl_24dp.xml │ │ │ ├── ic_reader_vertical_24dp.xml │ │ │ ├── ic_reader_webtoon_24dp.xml │ │ │ ├── ic_refresh_24dp.xml │ │ │ ├── ic_share_24dp.xml │ │ │ ├── ic_system_update_alt_white_24dp.xml │ │ │ ├── ic_tab_close_24px.xml │ │ │ ├── ic_warning_white_24dp.xml │ │ │ ├── line_divider.xml │ │ │ ├── material_popup_background.xml │ │ │ ├── sc_collections_bookmark_48dp.xml │ │ │ ├── sc_explore_48dp.xml │ │ │ ├── sc_history_48dp.xml │ │ │ └── sc_new_releases_48dp.xml │ │ ├── layout/ │ │ │ ├── download_header.xml │ │ │ ├── download_item.xml │ │ │ ├── download_list.xml │ │ │ ├── pref_widget_switch_material.xml │ │ │ ├── reader_activity.xml │ │ │ └── reader_error.xml │ │ ├── menu/ │ │ │ └── download_single.xml │ │ ├── mipmap/ │ │ │ └── ic_launcher.xml │ │ ├── values/ │ │ │ ├── bools.xml │ │ │ ├── dimens.xml │ │ │ ├── ids.xml │ │ │ ├── styles.xml │ │ │ └── themes.xml │ │ ├── values-night/ │ │ │ ├── bools.xml │ │ │ └── themes.xml │ │ ├── values-night-v31/ │ │ │ └── themes.xml │ │ ├── values-v27/ │ │ │ ├── bools.xml │ │ │ └── themes.xml │ │ ├── values-v31/ │ │ │ └── themes.xml │ │ └── xml/ │ │ ├── network_security_config.xml │ │ ├── provider_paths.xml │ │ ├── s_pen_actions.xml │ │ └── searchable.xml │ └── test/ │ └── java/ │ └── mihon/ │ └── core/ │ └── migration/ │ └── MigratorTest.kt ├── build.gradle.kts ├── buildSrc/ │ ├── build.gradle.kts │ ├── settings.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ ├── mihon/ │ │ └── buildlogic/ │ │ ├── AndroidConfig.kt │ │ ├── BuildConfig.kt │ │ ├── Commands.kt │ │ ├── ProjectExtensions.kt │ │ └── tasks/ │ │ └── LocalesConfigTask.kt │ ├── mihon.android.application.compose.gradle.kts │ ├── mihon.android.application.gradle.kts │ ├── mihon.benchmark.gradle.kts │ ├── mihon.code.lint.gradle.kts │ ├── mihon.library.compose.gradle.kts │ └── mihon.library.gradle.kts ├── core/ │ ├── archive/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── mihon/ │ │ └── core/ │ │ └── archive/ │ │ ├── ArchiveEntry.kt │ │ ├── ArchiveInputStream.kt │ │ ├── ArchiveReader.kt │ │ ├── EpubReader.kt │ │ ├── UniFileExtensions.kt │ │ └── ZipWriter.kt │ └── common/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ ├── eu/ │ │ └── kanade/ │ │ └── tachiyomi/ │ │ ├── core/ │ │ │ └── security/ │ │ │ ├── PrivacyPreferences.kt │ │ │ └── SecurityPreferences.kt │ │ ├── network/ │ │ │ ├── AndroidCookieJar.kt │ │ │ ├── DohProviders.kt │ │ │ ├── JavaScriptEngine.kt │ │ │ ├── NetworkHelper.kt │ │ │ ├── NetworkPreferences.kt │ │ │ ├── OkHttpExtensions.kt │ │ │ ├── ProgressListener.kt │ │ │ ├── ProgressResponseBody.kt │ │ │ ├── Requests.kt │ │ │ └── interceptor/ │ │ │ ├── CloudflareInterceptor.kt │ │ │ ├── IgnoreGzipInterceptor.kt │ │ │ ├── RateLimitInterceptor.kt │ │ │ ├── SpecificHostRateLimitInterceptor.kt │ │ │ ├── UncaughtExceptionInterceptor.kt │ │ │ ├── UserAgentInterceptor.kt │ │ │ └── WebViewInterceptor.kt │ │ └── util/ │ │ ├── lang/ │ │ │ ├── Hash.kt │ │ │ └── StringExtensions.kt │ │ ├── storage/ │ │ │ └── DiskUtil.kt │ │ └── system/ │ │ ├── DensityExtensions.kt │ │ ├── DeviceUtil.kt │ │ ├── GLUtil.kt │ │ ├── ToastExtensions.kt │ │ └── WebViewUtil.kt │ ├── mihon/ │ │ └── core/ │ │ └── common/ │ │ ├── FeatureFlags.kt │ │ └── utils/ │ │ └── Set.kt │ └── tachiyomi/ │ └── core/ │ └── common/ │ ├── Constants.kt │ ├── i18n/ │ │ └── Localize.kt │ ├── preference/ │ │ ├── AndroidPreference.kt │ │ ├── AndroidPreferenceStore.kt │ │ ├── CheckboxState.kt │ │ ├── InMemoryPreferenceStore.kt │ │ ├── Preference.kt │ │ ├── PreferenceStore.kt │ │ └── TriState.kt │ ├── storage/ │ │ ├── AndroidStorageFolderProvider.kt │ │ ├── FolderProvider.kt │ │ └── UniFileExtensions.kt │ └── util/ │ ├── lang/ │ │ ├── BooleanExtensions.kt │ │ ├── CoroutinesExtensions.kt │ │ ├── RxCoroutineBridge.kt │ │ └── SortUtil.kt │ └── system/ │ ├── ImageUtil.kt │ └── LogcatExtensions.kt ├── core-metadata/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── tachiyomi/ │ └── core/ │ └── metadata/ │ ├── comicinfo/ │ │ └── ComicInfo.kt │ └── tachiyomi/ │ └── MangaDetails.kt ├── data/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ ├── mihon/ │ │ │ └── data/ │ │ │ └── repository/ │ │ │ └── ExtensionRepoRepositoryImpl.kt │ │ └── tachiyomi/ │ │ └── data/ │ │ ├── AndroidDatabaseHandler.kt │ │ ├── DatabaseAdapter.kt │ │ ├── DatabaseHandler.kt │ │ ├── QueryPagingSource.kt │ │ ├── TransactionContext.kt │ │ ├── category/ │ │ │ └── CategoryRepositoryImpl.kt │ │ ├── chapter/ │ │ │ ├── ChapterRepositoryImpl.kt │ │ │ └── ChapterSanitizer.kt │ │ ├── history/ │ │ │ ├── HistoryMapper.kt │ │ │ └── HistoryRepositoryImpl.kt │ │ ├── manga/ │ │ │ ├── MangaMapper.kt │ │ │ └── MangaRepositoryImpl.kt │ │ ├── release/ │ │ │ ├── GithubRelease.kt │ │ │ └── ReleaseServiceImpl.kt │ │ ├── source/ │ │ │ ├── SourcePagingSource.kt │ │ │ ├── SourceRepositoryImpl.kt │ │ │ └── StubSourceRepositoryImpl.kt │ │ ├── track/ │ │ │ ├── TrackMapper.kt │ │ │ └── TrackRepositoryImpl.kt │ │ └── updates/ │ │ └── UpdatesRepositoryImpl.kt │ └── sqldelight/ │ └── tachiyomi/ │ ├── data/ │ │ ├── categories.sq │ │ ├── chapters.sq │ │ ├── excluded_scanlators.sq │ │ ├── extension_repos.sq │ │ ├── history.sq │ │ ├── manga_sync.sq │ │ ├── mangas.sq │ │ ├── mangas_categories.sq │ │ └── sources.sq │ ├── migrations/ │ │ ├── 1.sqm │ │ ├── 10.sqm │ │ ├── 2.sqm │ │ ├── 3.sqm │ │ ├── 4.sqm │ │ ├── 5.sqm │ │ ├── 6.sqm │ │ ├── 7.sqm │ │ ├── 8.sqm │ │ └── 9.sqm │ └── view/ │ ├── historyView.sq │ ├── libraryView.sq │ └── updatesView.sq ├── domain/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ ├── mihon/ │ │ │ └── domain/ │ │ │ ├── chapter/ │ │ │ │ └── interactor/ │ │ │ │ └── FilterChaptersForDownload.kt │ │ │ ├── extensionrepo/ │ │ │ │ ├── exception/ │ │ │ │ │ └── SaveExtensionRepoException.kt │ │ │ │ ├── interactor/ │ │ │ │ │ ├── CreateExtensionRepo.kt │ │ │ │ │ ├── DeleteExtensionRepo.kt │ │ │ │ │ ├── GetExtensionRepo.kt │ │ │ │ │ ├── GetExtensionRepoCount.kt │ │ │ │ │ ├── ReplaceExtensionRepo.kt │ │ │ │ │ └── UpdateExtensionRepo.kt │ │ │ │ ├── model/ │ │ │ │ │ └── ExtensionRepo.kt │ │ │ │ ├── repository/ │ │ │ │ │ └── ExtensionRepoRepository.kt │ │ │ │ └── service/ │ │ │ │ ├── ExtensionRepoDto.kt │ │ │ │ └── ExtensionRepoService.kt │ │ │ ├── manga/ │ │ │ │ └── model/ │ │ │ │ └── SManga.kt │ │ │ └── upcoming/ │ │ │ └── interactor/ │ │ │ └── GetUpcomingManga.kt │ │ └── tachiyomi/ │ │ └── domain/ │ │ ├── backup/ │ │ │ └── service/ │ │ │ └── BackupPreferences.kt │ │ ├── category/ │ │ │ ├── interactor/ │ │ │ │ ├── CreateCategoryWithName.kt │ │ │ │ ├── DeleteCategory.kt │ │ │ │ ├── GetCategories.kt │ │ │ │ ├── RenameCategory.kt │ │ │ │ ├── ReorderCategory.kt │ │ │ │ ├── ResetCategoryFlags.kt │ │ │ │ ├── SetDisplayMode.kt │ │ │ │ ├── SetMangaCategories.kt │ │ │ │ ├── SetSortModeForCategory.kt │ │ │ │ └── UpdateCategory.kt │ │ │ ├── model/ │ │ │ │ ├── Category.kt │ │ │ │ └── CategoryUpdate.kt │ │ │ └── repository/ │ │ │ └── CategoryRepository.kt │ │ ├── chapter/ │ │ │ ├── interactor/ │ │ │ │ ├── GetBookmarkedChaptersByMangaId.kt │ │ │ │ ├── GetChapter.kt │ │ │ │ ├── GetChapterByUrlAndMangaId.kt │ │ │ │ ├── GetChaptersByMangaId.kt │ │ │ │ ├── SetMangaDefaultChapterFlags.kt │ │ │ │ ├── ShouldUpdateDbChapter.kt │ │ │ │ └── UpdateChapter.kt │ │ │ ├── model/ │ │ │ │ ├── Chapter.kt │ │ │ │ ├── ChapterUpdate.kt │ │ │ │ └── NoChaptersException.kt │ │ │ ├── repository/ │ │ │ │ └── ChapterRepository.kt │ │ │ └── service/ │ │ │ ├── ChapterRecognition.kt │ │ │ ├── ChapterSort.kt │ │ │ └── MissingChapters.kt │ │ ├── download/ │ │ │ └── service/ │ │ │ └── DownloadPreferences.kt │ │ ├── history/ │ │ │ ├── interactor/ │ │ │ │ ├── GetHistory.kt │ │ │ │ ├── GetNextChapters.kt │ │ │ │ ├── GetTotalReadDuration.kt │ │ │ │ ├── RemoveHistory.kt │ │ │ │ └── UpsertHistory.kt │ │ │ ├── model/ │ │ │ │ ├── History.kt │ │ │ │ ├── HistoryUpdate.kt │ │ │ │ └── HistoryWithRelations.kt │ │ │ └── repository/ │ │ │ └── HistoryRepository.kt │ │ ├── library/ │ │ │ ├── model/ │ │ │ │ ├── Flag.kt │ │ │ │ ├── LibraryDisplayMode.kt │ │ │ │ ├── LibraryManga.kt │ │ │ │ └── LibrarySortMode.kt │ │ │ └── service/ │ │ │ └── LibraryPreferences.kt │ │ ├── manga/ │ │ │ ├── interactor/ │ │ │ │ ├── FetchInterval.kt │ │ │ │ ├── GetDuplicateLibraryManga.kt │ │ │ │ ├── GetFavorites.kt │ │ │ │ ├── GetLibraryManga.kt │ │ │ │ ├── GetManga.kt │ │ │ │ ├── GetMangaByUrlAndSourceId.kt │ │ │ │ ├── GetMangaWithChapters.kt │ │ │ │ ├── NetworkToLocalManga.kt │ │ │ │ ├── ResetViewerFlags.kt │ │ │ │ ├── SetMangaChapterFlags.kt │ │ │ │ └── UpdateMangaNotes.kt │ │ │ ├── model/ │ │ │ │ ├── Manga.kt │ │ │ │ ├── MangaCover.kt │ │ │ │ ├── MangaUpdate.kt │ │ │ │ ├── MangaWithChapterCount.kt │ │ │ │ └── TriState.kt │ │ │ └── repository/ │ │ │ └── MangaRepository.kt │ │ ├── release/ │ │ │ ├── interactor/ │ │ │ │ └── GetApplicationRelease.kt │ │ │ ├── model/ │ │ │ │ └── Release.kt │ │ │ └── service/ │ │ │ └── ReleaseService.kt │ │ ├── source/ │ │ │ ├── interactor/ │ │ │ │ ├── GetRemoteManga.kt │ │ │ │ └── GetSourcesWithNonLibraryManga.kt │ │ │ ├── model/ │ │ │ │ ├── Pin.kt │ │ │ │ ├── Source.kt │ │ │ │ ├── SourceWithCount.kt │ │ │ │ └── StubSource.kt │ │ │ ├── repository/ │ │ │ │ ├── SourceRepository.kt │ │ │ │ └── StubSourceRepository.kt │ │ │ └── service/ │ │ │ └── SourceManager.kt │ │ ├── storage/ │ │ │ └── service/ │ │ │ ├── StorageManager.kt │ │ │ └── StoragePreferences.kt │ │ ├── track/ │ │ │ ├── interactor/ │ │ │ │ ├── DeleteTrack.kt │ │ │ │ ├── GetTracks.kt │ │ │ │ ├── GetTracksPerManga.kt │ │ │ │ └── InsertTrack.kt │ │ │ ├── model/ │ │ │ │ └── Track.kt │ │ │ └── repository/ │ │ │ └── TrackRepository.kt │ │ └── updates/ │ │ ├── interactor/ │ │ │ └── GetUpdates.kt │ │ ├── model/ │ │ │ └── UpdatesWithRelations.kt │ │ ├── repository/ │ │ │ └── UpdatesRepository.kt │ │ └── service/ │ │ └── UpdatesPreferences.kt │ └── test/ │ └── java/ │ └── tachiyomi/ │ └── domain/ │ ├── chapter/ │ │ └── service/ │ │ ├── ChapterRecognitionTest.kt │ │ └── MissingChaptersTest.kt │ ├── library/ │ │ └── model/ │ │ └── LibraryFlagsTest.kt │ ├── manga/ │ │ └── interactor/ │ │ └── FetchIntervalTest.kt │ └── release/ │ └── interactor/ │ └── GetApplicationReleaseTest.kt ├── gradle/ │ ├── androidx.versions.toml │ ├── compose.versions.toml │ ├── kotlinx.versions.toml │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── i18n/ │ ├── README.md │ ├── build.gradle.kts │ └── src/ │ ├── androidMain/ │ │ └── AndroidManifest.xml │ └── commonMain/ │ └── moko-resources/ │ ├── am/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ar/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── as/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── base/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── be/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── bg/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── bn/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ca/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ceb/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── cs/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── cv/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── da/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── de/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── el/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── eo/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── es/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── eu/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── fa/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── fi/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── fil/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── fr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── gl/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── he/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── hi/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── hr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── hu/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── in/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── it/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ja/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── jv/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ka-rGE/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── kk/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── km/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── kn/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ko/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── lt/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── lv/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ml/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── mr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ms/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── my/ │ │ └── strings.xml │ ├── nb-rNO/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ne/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── nl/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── nn/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── pl/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── pt/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── pt-rBR/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ro/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ru/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sa/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sah/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sc/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sdh/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sk/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sq/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── sv/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ta/ │ │ └── strings.xml │ ├── te/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── th/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── tr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── tt/ │ │ └── strings.xml │ ├── uk/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── uz/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── vi/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── zh-rCN/ │ │ ├── plurals.xml │ │ └── strings.xml │ └── zh-rTW/ │ ├── plurals.xml │ └── strings.xml ├── macrobenchmark/ │ ├── README.md │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── tachiyomi/ │ └── macrobenchmark/ │ ├── BaselineProfileGenerator.kt │ └── StartupBenchmark.kt ├── presentation-core/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ ├── mihon/ │ │ │ └── presentation/ │ │ │ └── core/ │ │ │ └── util/ │ │ │ └── PagingDataUtil.kt │ │ └── tachiyomi/ │ │ └── presentation/ │ │ └── core/ │ │ ├── components/ │ │ │ ├── ActionButton.kt │ │ │ ├── AdaptiveSheet.kt │ │ │ ├── Badges.kt │ │ │ ├── CircularProgressIndicator.kt │ │ │ ├── CollapsibleBox.kt │ │ │ ├── LabeledCheckbox.kt │ │ │ ├── LazyColumnWithAction.kt │ │ │ ├── LazyGrid.kt │ │ │ ├── LazyList.kt │ │ │ ├── LinkIcon.kt │ │ │ ├── ListGroupHeader.kt │ │ │ ├── Pill.kt │ │ │ ├── SectionCard.kt │ │ │ ├── SettingsItems.kt │ │ │ ├── TwoPanelBox.kt │ │ │ ├── VerticalFastScroller.kt │ │ │ ├── WheelPicker.kt │ │ │ └── material/ │ │ │ ├── AlertDialog.kt │ │ │ ├── Button.kt │ │ │ ├── Constants.kt │ │ │ ├── IconButtonTokens.kt │ │ │ ├── IconToggleButton.kt │ │ │ ├── NavigationBar.kt │ │ │ ├── NavigationRail.kt │ │ │ ├── PullRefresh.kt │ │ │ ├── Scaffold.kt │ │ │ ├── Slider.kt │ │ │ ├── Surface.kt │ │ │ └── Tabs.kt │ │ ├── i18n/ │ │ │ └── Localize.kt │ │ ├── icons/ │ │ │ ├── CustomIcons.kt │ │ │ ├── Discord.kt │ │ │ ├── Facebook.kt │ │ │ ├── Github.kt │ │ │ ├── Reddit.kt │ │ │ └── X.kt │ │ ├── screens/ │ │ │ ├── EmptyScreen.kt │ │ │ ├── InfoScreen.kt │ │ │ └── LoadingScreen.kt │ │ ├── theme/ │ │ │ ├── Color.kt │ │ │ └── Typography.kt │ │ └── util/ │ │ ├── Elevation.kt │ │ ├── LazyListState.kt │ │ ├── Modifier.kt │ │ ├── PaddingValues.kt │ │ ├── Preference.kt │ │ └── Scrollbar.kt │ └── res/ │ ├── values/ │ │ ├── colors.xml │ │ ├── colors_catppuccin.xml │ │ ├── colors_greenapple.xml │ │ ├── colors_lavender.xml │ │ ├── colors_midnightdusk.xml │ │ ├── colors_monochrome.xml │ │ ├── colors_nord.xml │ │ ├── colors_strawberry.xml │ │ ├── colors_tachiyomi.xml │ │ ├── colors_tako.xml │ │ ├── colors_tealturqoise.xml │ │ ├── colors_tidalwave.xml │ │ ├── colors_yinyang.xml │ │ └── colors_yotsuba.xml │ └── values-night/ │ ├── colors.xml │ ├── colors_catppuccin.xml │ ├── colors_greenapple.xml │ ├── colors_lavender.xml │ ├── colors_midnightdusk.xml │ ├── colors_monochrome.xml │ ├── colors_nord.xml │ ├── colors_strawberry.xml │ ├── colors_tachiyomi.xml │ ├── colors_tako.xml │ ├── colors_tealturqoise.xml │ ├── colors_tidalwave.xml │ ├── colors_yinyang.xml │ └── colors_yotsuba.xml ├── presentation-widget/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── tachiyomi/ │ │ └── presentation/ │ │ └── widget/ │ │ ├── BaseUpdatesGridGlanceWidget.kt │ │ ├── UpdatesGridCoverScreenGlanceReceiver.kt │ │ ├── UpdatesGridCoverScreenGlanceWidget.kt │ │ ├── UpdatesGridGlanceReceiver.kt │ │ ├── UpdatesGridGlanceWidget.kt │ │ ├── WidgetManager.kt │ │ ├── components/ │ │ │ ├── LockedWidget.kt │ │ │ ├── UpdatesMangaCover.kt │ │ │ └── UpdatesWidget.kt │ │ └── util/ │ │ └── GlanceUtils.kt │ └── res/ │ ├── drawable/ │ │ ├── appwidget_background.xml │ │ ├── appwidget_cover_error.xml │ │ └── appwidget_coverscreen_background.xml │ ├── layout/ │ │ ├── appwidget_coverscreen_loading.xml │ │ └── appwidget_loading.xml │ ├── values/ │ │ ├── colors_appwidget.xml │ │ └── dimens.xml │ ├── values-night-v31/ │ │ └── colors_appwidget.xml │ ├── values-v31/ │ │ ├── colors_appwidget.xml │ │ └── dimens.xml │ └── xml/ │ ├── updates_grid_homescreen_widget_info.xml │ ├── updates_grid_lockscreen_widget_info.xml │ └── updates_grid_samsung_cover_widget_info.xml ├── settings.gradle.kts ├── source-api/ │ ├── build.gradle.kts │ ├── consumer-proguard.pro │ └── src/ │ ├── androidMain/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── eu/ │ │ └── kanade/ │ │ └── tachiyomi/ │ │ ├── source/ │ │ │ └── PreferenceScreen.kt │ │ └── util/ │ │ └── RxExtension.kt │ └── commonMain/ │ └── kotlin/ │ └── eu/ │ └── kanade/ │ └── tachiyomi/ │ ├── source/ │ │ ├── CatalogueSource.kt │ │ ├── ConfigurableSource.kt │ │ ├── PreferenceScreen.kt │ │ ├── Source.kt │ │ ├── SourceFactory.kt │ │ ├── UnmeteredSource.kt │ │ ├── model/ │ │ │ ├── Filter.kt │ │ │ ├── FilterList.kt │ │ │ ├── MangasPage.kt │ │ │ ├── Page.kt │ │ │ ├── SChapter.kt │ │ │ ├── SChapterImpl.kt │ │ │ ├── SManga.kt │ │ │ ├── SMangaImpl.kt │ │ │ └── UpdateStrategy.kt │ │ └── online/ │ │ ├── HttpSource.kt │ │ ├── ParsedHttpSource.kt │ │ └── ResolvableSource.kt │ └── util/ │ ├── JsoupExtensions.kt │ └── RxExtension.kt ├── source-local/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidMain/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── tachiyomi/ │ │ └── source/ │ │ └── local/ │ │ ├── LocalSource.kt │ │ ├── filter/ │ │ │ └── OrderBy.kt │ │ ├── image/ │ │ │ └── LocalCoverManager.kt │ │ ├── io/ │ │ │ └── LocalSourceFileSystem.kt │ │ └── metadata/ │ │ └── EpubReaderExtensions.kt │ └── commonMain/ │ └── kotlin/ │ └── tachiyomi/ │ └── source/ │ └── local/ │ ├── LocalSource.kt │ ├── image/ │ │ └── LocalCoverManager.kt │ └── io/ │ ├── Archive.kt │ ├── Format.kt │ └── LocalSourceFileSystem.kt └── telemetry/ ├── build.gradle.kts └── src/ ├── firebase/ │ └── kotlin/ │ └── mihon/ │ └── telemetry/ │ ├── PackageInfo.kt │ └── TelemetryConfig.kt ├── main/ │ └── AndroidManifest.xml └── noop/ ├── AndroidManifest.xml └── kotlin/ └── mihon/ └── telemetry/ └── TelemetryConfig.kt