diff --git a/app/build.gradle b/app/build.gradle index a6b7b9048..514c4dc5a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 33 - versionCode 537 - versionName '5.0-rc2' + versionCode 538 + versionName '5.0' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -78,11 +78,11 @@ afterEvaluate { } dependencies { //noinspection GradleDependency - implementation('com.github.KotatsuApp:kotatsu-parsers:e6511061a7') { + implementation('com.github.KotatsuApp:kotatsu-parsers:306d46ea93') { exclude group: 'org.json', module: 'json' } - implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20' + implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.21' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt index 246c705e2..234b1192c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt @@ -61,6 +61,11 @@ abstract class BaseActivity : putDataToExtras(intent) } + override fun onPostCreate(savedInstanceState: Bundle?) { + super.onPostCreate(savedInstanceState) + onBackPressedDispatcher.addCallback(actionModeDelegate) + } + override fun onNewIntent(intent: Intent?) { putDataToExtras(intent) super.onNewIntent(intent) diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ActionModeDelegate.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ActionModeDelegate.kt index 68a65e638..feed3fc6a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ActionModeDelegate.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ActionModeDelegate.kt @@ -1,10 +1,11 @@ package org.koitharu.kotatsu.base.ui.util +import androidx.activity.OnBackPressedCallback import androidx.appcompat.view.ActionMode import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner -class ActionModeDelegate { +class ActionModeDelegate : OnBackPressedCallback(false) { private var activeActionMode: ActionMode? = null private var listeners: MutableList? = null @@ -12,13 +13,19 @@ class ActionModeDelegate { val isActionModeStarted: Boolean get() = activeActionMode != null + override fun handleOnBackPressed() { + activeActionMode?.finish() + } + fun onSupportActionModeStarted(mode: ActionMode) { activeActionMode = mode + isEnabled = true listeners?.forEach { it.onActionModeStarted(mode) } } fun onSupportActionModeFinished(mode: ActionMode) { activeActionMode = null + isEnabled = false listeners?.forEach { it.onActionModeFinished(mode) } } @@ -47,4 +54,4 @@ class ActionModeDelegate { removeListener(listener) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/MangaTagHighlighter.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/MangaTagHighlighter.kt index 699ef5f11..7168445bd 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/MangaTagHighlighter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/MangaTagHighlighter.kt @@ -16,7 +16,12 @@ class MangaTagHighlighter @Inject constructor( private val dict by lazy { context.resources.openRawResource(R.raw.tags_redlist).use { val set = HashSet() - it.bufferedReader().forEachLine { x -> set.add(x) } + it.bufferedReader().forEachLine { x -> + val line = x.trim() + if (line.isNotEmpty()) { + set.add(line) + } + } set } } diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt index d90e4f705..471ade52d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt @@ -28,6 +28,7 @@ import org.koitharu.kotatsu.parsers.util.format import org.koitharu.kotatsu.reader.domain.ReaderColorFilter import org.koitharu.kotatsu.utils.ext.decodeRegion import org.koitharu.kotatsu.utils.ext.enqueueWith +import org.koitharu.kotatsu.utils.ext.indicator import org.koitharu.kotatsu.utils.ext.setValueRounded import javax.inject.Inject import com.google.android.material.R as materialR @@ -110,6 +111,7 @@ class ColorFilterConfigActivity : .scale(Scale.FILL) .decodeRegion() .tag(preview.source) + .indicator(listOf(binding.progressBefore, binding.progressAfter)) .error(R.drawable.ic_error_placeholder) .size(ViewSizeResolver(binding.imageViewBefore)) .allowRgb565(false) diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/CoilExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/CoilExt.kt index f76720383..f8a91c25e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/CoilExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/CoilExt.kt @@ -53,7 +53,11 @@ fun ImageResult.toBitmapOrNull() = when (this) { } fun ImageRequest.Builder.indicator(indicator: BaseProgressIndicator<*>): ImageRequest.Builder { - return listener(ImageRequestIndicatorListener(indicator)) + return listener(ImageRequestIndicatorListener(listOf(indicator))) +} + +fun ImageRequest.Builder.indicator(indicators: List>): ImageRequest.Builder { + return listener(ImageRequestIndicatorListener(indicators)) } fun ImageRequest.Builder.decodeRegion( diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/progress/ImageRequestIndicatorListener.kt b/app/src/main/java/org/koitharu/kotatsu/utils/progress/ImageRequestIndicatorListener.kt index 317c77c5f..1f1dc1b40 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/progress/ImageRequestIndicatorListener.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/progress/ImageRequestIndicatorListener.kt @@ -6,14 +6,22 @@ import coil.request.SuccessResult import com.google.android.material.progressindicator.BaseProgressIndicator class ImageRequestIndicatorListener( - private val indicator: BaseProgressIndicator<*>, + private val indicators: Collection>, ) : ImageRequest.Listener { - override fun onCancel(request: ImageRequest) = indicator.hide() + override fun onCancel(request: ImageRequest) = hide() - override fun onError(request: ImageRequest, result: ErrorResult) = indicator.hide() + override fun onError(request: ImageRequest, result: ErrorResult) = hide() - override fun onStart(request: ImageRequest) = indicator.show() + override fun onStart(request: ImageRequest) = show() - override fun onSuccess(request: ImageRequest, result: SuccessResult) = indicator.hide() -} \ No newline at end of file + override fun onSuccess(request: ImageRequest, result: SuccessResult) = hide() + + private fun hide() { + indicators.forEach { it.hide() } + } + + private fun show() { + indicators.forEach { it.show() } + } +} diff --git a/app/src/main/res/layout/activity_color_filter.xml b/app/src/main/res/layout/activity_color_filter.xml index bacb8124d..0d198d9d6 100644 --- a/app/src/main/res/layout/activity_color_filter.xml +++ b/app/src/main/res/layout/activity_color_filter.xml @@ -53,6 +53,16 @@ app:strokeWidth="1dp" tools:src="@sample/covers" /> + + + + - Kotatsu - Close menu - Open menu - Local storage - Favourites - History - An error occurred - Network error - Details - Chapters - List - Detailed list - Grid - List mode - Settings - Manga sources - Loading… - Computing… - Chapter %1$d of %2$d - Close - Try again - Clear history - Nothing found - No history yet - Read - No favourites yet - Favourite this - New category - Add - Enter category name - Save - Share - Create shortcut… - Share %s - Search - Search manga - Downloading… - Processing… - Downloaded - Downloads - Name - Popular - Updated - Newest - Rating - Sorting order - Filter - Theme - Light - Dark - Follow system - Pages - Clear - Clear all reading history permanently? - Remove - \"%s\" removed from history - \"%s\" deleted from local storage - Wait for loading to finish… - Save page - Saved - Share image - Import - Delete - This operation is not supported - Either pick a ZIP or CBZ file. - No description - History and cache - Clear page cache - Cache - B|kB|MB|GB|TB - Standard - Webtoon - Read mode - Grid size - Search on %s - Delete manga - Delete \"%s\" from device permanently? - Reader settings - Switch pages - Edge taps - Volume buttons - Continue - Warning - This may transfer a lot of data - Don\'t ask again - Cancelling… - Error - Clear thumbnails cache - Clear search history - Cleared - Gestures only - Internal storage - External storage - Domain - Check for new versions of the app - A new version of the app is available - Show notification if a new version is available - Open in web browser - This manga has %s. Save all of it? - Save - Notifications - %1$d of %2$d on - New chapters - Download - Read from start - Restart - Notifications settings - Notification sound - LED indicator - Vibration - Favourite categories - Categories… - Rename - Remove the \"%s\" category from your favourites? \nAll manga in it will be lost. - Remove - It\'s kind of empty here… - You can use categories to organize your favourites. Press «+» to create a category - Try to reformulate the query. - What you read will be displayed here - Find what to read in side menu. - Your manga will be displayed here - Find what to read in the «Explore» section - Save something first - Save it from online sources or import files. - Shelf - Recent - Page animation - Folder for downloads - Not available - No available storage - Other storage - Done - All favourites - Empty category - Read later - Updates - New chapters of what you are reading is shown here - Search results - Related - New version: %s - Size: %s - Waiting for network… - Clear updates feed - Cleared - Rotate screen - Update - Feed update will start soon - Look for updates - Don\'t check - Enter password - Wrong password - Protect the app - Ask for password when starting Kotatsu - Repeat the password - Mismatching passwords - About - Version %s - Check for updates - Checking for updates… - Could not look for updates - No updates available - Right-to-left - New category - Scale mode - Fit center - Fit to height - Fit to width - Keep at start - Black - Uses less power on AMOLED screens - Backup and restore - Create data backup - Restore from backup - Restored - Preparing… - Create issue on GitHub - File not found - All data was restored - The data was restored, but there are errors - You can create backup of your history and favourites and restore it - Just now - Yesterday - Long ago - Group - Today - Tap to try again - The chosen configuration will be remembered for this manga - Silent - CAPTCHA required - Solve - Clear cookies - All cookies were removed - Checking for new chapters: %1$d of %2$d - Clear feed - Clear all update history permanently? - Check for new chapters - Reverse - Sign in - Sign in to view this content - Default: %s - …and %1$d more - Next - Enter a password to start the app with - Confirm - The password must be 4 characters or more - Search only on %s - Remove all recent search queries permanently? - Other - Welcome - Backup saved - Some devices have different system behavior, which may break background tasks. - Read more - Queued - No active downloads - Download or read this missing chapter online. - The chapter is missing - Translate this app - Translation - Feedback - Topic on 4PDA - Authorized - Logging in on %s is not supported - You will be logged out from all sources - Genres - Finished - Ongoing - Date format - Default - Exclude NSFW manga from history - You must enter a name - Numbered pages - Used sources - Available sources - Dynamic theme - Applies a theme created on the color scheme of your wallpaper - Importing manga: %1$d of %2$d - Screenshot policy - Allow - Block on NSFW - Always block - Suggestions - Enable suggestions - Suggest manga based on your preferences - All data is only analyzed locally on this device and never sent anywhere. - Start reading manga and you will get personalized suggestions - Do not suggest NSFW manga - Enabled - Disabled - Unable to load genres list - Reset filter - Find genre - Select languages which you want to read manga. You can change it later in settings. - Never - Only on Wi-Fi - Always - Preload pages - Logged in as %s - 18+ - Various languages - Find chapter - No chapters in this manga - %1$s%% - Appearance - Content - GitHub - Discord - Suggestions updating - Exclude genres - Specify genres that you do not want to see in the suggestions - Delete selected items from device permanently? - Removal completed - Download all selected manga and its chapters\? This can consume a lot of traffic and storage. - Shikimori - AniList - Parallel downloads - Download slowdown - Helps avoid blocking your IP address - Saved manga processing - Chapters will be removed in the background - Canceled - Account already exists - Back - Synchronization - Sync your data - Enter your email to continue - Hide - New manga sources are available - Check for new chapters and notify about it - You will receive notifications about updates of manga you are reading - You will not receive notifications but new chapters will be highlighted in the lists - Enable notifications - Name - Edit - Edit category - Tracking - No favourite categories - Log out - Add bookmark - Remove bookmark - Bookmarks - Bookmark removed - Bookmark added - Undo - Removed from history - DNS over HTTPS - Default mode - Autodetect reader mode - Automatically detect if manga is webtoon - Disable battery optimization - Helps with background updates checks - Something went wrong. Please submit a bug report to the developers to help us fix it. - Send - Planned - Reading - Re-reading - Completed - On hold - Dropped - Disable all - Use fingerprint if available - Manga from your favourites - Your recently read manga - Report - Show reading progress indicators - Data deletion - Show percentage read in history and favourites - Manga marked as NSFW will never added to the history and your progress will not be saved - Can help in case of some issues. All authorizations will be invalidated - Show all - Invalid domain - Select range - Clear all history - Last 2 hours - History cleared - Manage - No bookmarks yet - You can create bookmark while reading manga - Bookmarks removed - No manga sources - Enable manga sources to read manga online - Random - Are you sure you want to delete the selected favorite categories?\nAll manga in it will be lost and this cannot be undone. - Reorder - Empty - Changelog - Explore - Press "Back" again to exit - Press "Back" twice to exit the app - Exit confirmation - Saved manga - Pages cache - Other cache - Storage usage - Available - %s - %s - Enter your email to continue - Removed from favourites - Removed from \"%s\" - Options - Content not found or removed - Downloading manga - <b>%1$s</b> %2$s - Incognito mode - Application update available: %s - No chapters - Automatic scroll - Off - %ss - Ch. %1$d/%2$d Pg. %3$d/%4$d - Show information bar in reader - Comics archive - Folder with images - Importing manga - Import completed - You can delete the original file from storage to save space - Import will start soon - Feed - Error details:<br><tt>%1$s</tt><br><br>1. Try to <a href="%2$s">open manga in a web browser</a> to ensure it is available on its source<br>2. Make sure you are using the <a href="kotatsu://about">latest version of Kotatsu</a><br>3. If it is available, send an error report to the developers. - Show recent manga shortcuts - Make recent manga available by long pressing on application icon - Tap on the right edge or pressing the right key always switches to the next page - Ergonomic reader control - Color correction - Brightness - Contrast - Reset - The chosen color settings will be remembered for this manga - Save or discard unsaved changes\? - Discard - No space left on device - Show page switching slider - Webtoon zoom - Allow zoom in/zoom out gesture in webtoon mode (beta) - Different languages - Network is not available - Turn on Wi-Fi or mobile network to read manga online - Server side error (%1$d). Please try again later - Also clear information about new chapters - Compact - MyAnimeList - Source disabled - Content preloading - Mark as current - Language - Share logs - Enable logging - Record some actions for debug purposes - Show suspicious content - Dynamic - Color scheme - Show in grid view - Miku - Asuka - Mion - Rikka - Sakura - Mamimi - Kanade - There is nothing here - To track reading progress, select Menu → Track on the manga details screen. - Services - Allow unstable updates - Propose updates to beta versions of the app - Download started - Got it - Tap and hold on an item to reorder them - UserAgent header - Please restart the application to apply these changes - You can select one or more .cbz or .zip files, each file will be recognized as a separate manga. - You can select a directory with archives or images. Each archive (or subdirectory) will be recognized as a chapter. - Speed - Import a previously created backup of user data - Show on the Shelf - You can sign in into an existing account or create a new one + Kotatsu + Close menu + Open menu + Local storage + Favourites + History + An error occurred + Network error + Details + Chapters + List + Detailed list + Grid + List mode + Settings + Manga sources + Loading… + Computing… + Chapter %1$d of %2$d + Close + Try again + Clear history + Nothing found + No history yet + Read + No favourites yet + Favourite this + New category + Add + Enter category name + Save + Share + Create shortcut… + Share %s + Search + Search manga + Downloading… + Processing… + Downloaded + Downloads + Name + Popular + Updated + Newest + Rating + Sorting order + Filter + Theme + Light + Dark + Follow system + Pages + Clear + Clear all reading history permanently? + Remove + \"%s\" removed from history + \"%s\" deleted from local storage + Wait for loading to finish… + Save page + Saved + Share image + Import + Delete + This operation is not supported + Either pick a ZIP or CBZ file. + No description + History and cache + Clear page cache + Cache + B|kB|MB|GB|TB + Standard + Webtoon + Read mode + Grid size + Search on %s + Delete manga + Delete \"%s\" from device permanently? + Reader settings + Switch pages + Edge taps + Volume buttons + Continue + Warning + This may transfer a lot of data + Don\'t ask again + Cancelling… + Error + Clear thumbnails cache + Clear search history + Cleared + Gestures only + Internal storage + External storage + Domain + Check for new versions of the app + A new version of the app is available + Show notification if a new version is available + Open in web browser + This manga has %s. Save all of it? + Save + Notifications + %1$d of %2$d on + New chapters + Download + Read from start + Restart + Notifications settings + Notification sound + LED indicator + Vibration + Favourite categories + Categories… + Rename + Remove the \"%s\" category from your favourites? \nAll manga in it will be lost. + Remove + It\'s kind of empty here… + You can use categories to organize your favourites. Press «+» to create a category + Try to reformulate the query. + What you read will be displayed here + Find what to read in side menu. + Your manga will be displayed here + Find what to read in the «Explore» section + Save something first + Save it from online sources or import files. + Shelf + Recent + Page animation + Folder for downloads + Not available + No available storage + Other storage + Done + All favourites + Empty category + Read later + Updates + New chapters of what you are reading is shown here + Search results + Related + New version: %s + Size: %s + Waiting for network… + Clear updates feed + Cleared + Rotate screen + Update + Feed update will start soon + Look for updates + Don\'t check + Enter password + Wrong password + Protect the app + Ask for password when starting Kotatsu + Repeat the password + Mismatching passwords + About + Version %s + Check for updates + Checking for updates… + Could not look for updates + No updates available + Right-to-left + New category + Scale mode + Fit center + Fit to height + Fit to width + Keep at start + Black + Uses less power on AMOLED screens + Backup and restore + Create data backup + Restore from backup + Restored + Preparing… + Create issue on GitHub + File not found + All data was restored + The data was restored, but there are errors + You can create backup of your history and favourites and restore it + Just now + Yesterday + Long ago + Group + Today + Tap to try again + The chosen configuration will be remembered for this manga + Silent + CAPTCHA required + Solve + Clear cookies + All cookies were removed + Checking for new chapters: %1$d of %2$d + Clear feed + Clear all update history permanently? + Check for new chapters + Reverse + Sign in + Sign in to view this content + Default: %s + …and %1$d more + Next + Enter a password to start the app with + Confirm + The password must be 4 characters or more + Search only on %s + Remove all recent search queries permanently? + Other + Welcome + Backup saved + Some devices have different system behavior, which may break background tasks. + Read more + Queued + No active downloads + Download or read this missing chapter online. + The chapter is missing + Translate this app + Translation + Feedback + Topic on 4PDA + Authorized + Logging in on %s is not supported + You will be logged out from all sources + Genres + Finished + Ongoing + Date format + Default + Exclude NSFW manga from history + You must enter a name + Numbered pages + Used sources + Available sources + Dynamic theme + Applies a theme created on the color scheme of your wallpaper + Importing manga: %1$d of %2$d + Screenshot policy + Allow + Block on NSFW + Always block + Suggestions + Enable suggestions + Suggest manga based on your preferences + All data is only analyzed locally on this device and never sent anywhere. + Start reading manga and you will get personalized suggestions + Do not suggest NSFW manga + Enabled + Disabled + Unable to load genres list + Reset filter + Find genre + Select languages which you want to read manga. You can change it later in settings. + Never + Only on Wi-Fi + Always + Preload pages + Logged in as %s + 18+ + Various languages + Find chapter + No chapters in this manga + %1$s%% + Appearance + Content + GitHub + Discord + Suggestions updating + Exclude genres + Specify genres that you do not want to see in the suggestions + Delete selected items from device permanently? + Removal completed + Download all selected manga and its chapters\? This can consume a lot of traffic and storage. + Shikimori + AniList + Parallel downloads + Download slowdown + Helps avoid blocking your IP address + Saved manga processing + Chapters will be removed in the background + Canceled + Account already exists + Back + Synchronization + Sync your data + Enter your email to continue + Hide + New manga sources are available + Check for new chapters and notify about it + You will receive notifications about updates of manga you are reading + You will not receive notifications but new chapters will be highlighted in the lists + Enable notifications + Name + Edit + Edit category + Tracking + No favourite categories + Log out + Add bookmark + Remove bookmark + Bookmarks + Bookmark removed + Bookmark added + Undo + Removed from history + DNS over HTTPS + Default mode + Autodetect reader mode + Automatically detect if manga is webtoon + Disable battery optimization + Helps with background updates checks + Something went wrong. Please submit a bug report to the developers to help us fix it. + Send + Planned + Reading + Re-reading + Completed + On hold + Dropped + Disable all + Use fingerprint if available + Manga from your favourites + Your recently read manga + Report + Show reading progress indicators + Data deletion + Show percentage read in history and favourites + Manga marked as NSFW will never added to the history and your progress will not be saved + Can help in case of some issues. All authorizations will be invalidated + Show all + Invalid domain + Select range + Clear all history + Last 2 hours + History cleared + Manage + No bookmarks yet + You can create bookmark while reading manga + Bookmarks removed + No manga sources + Enable manga sources to read manga online + Random + Are you sure you want to delete the selected favorite categories?\nAll manga in it will be lost and this cannot be undone. + Reorder + Empty + Changelog + Explore + Press "Back" again to exit + Press "Back" twice to exit the app + Exit confirmation + Saved manga + Pages cache + Other cache + Storage usage + Available + %s - %s + Enter your email to continue + Removed from favourites + Removed from \"%s\" + Options + Content not found or removed + Downloading manga + <b>%1$s</b> %2$s + Incognito mode + Application update available: %s + No chapters + Automatic scroll + Off + %ss + Ch. %1$d/%2$d Pg. %3$d/%4$d + Show information bar in reader + Comics archive + Folder with images + Importing manga + Import completed + You can delete the original file from storage to save space + Import will start soon + Feed + Error details:<br><tt>%1$s</tt><br><br>1. Try to <a href="%2$s">open manga in a web browser</a> to ensure it is available on its source<br>2. Make sure you are using the <a href="kotatsu://about">latest version of Kotatsu</a><br>3. If it is available, send an error report to the developers. + Show recent manga shortcuts + Make recent manga available by long pressing on application icon + Tap on the right edge or pressing the right key always switches to the next page + Ergonomic reader control + Color correction + Brightness + Contrast + Reset + The chosen color settings will be remembered for this manga + Save or discard unsaved changes\? + Discard + No space left on device + Show page switching slider + Webtoon zoom + Allow zoom in/zoom out gesture in webtoon mode (beta) + Different languages + Network is not available + Turn on Wi-Fi or mobile network to read manga online + Server side error (%1$d). Please try again later + Also clear information about new chapters + Compact + MyAnimeList + Source disabled + Content preloading + Mark as current + Language + Share logs + Enable logging + Record some actions for debug purposes + Show suspicious content + Dynamic + Color scheme + Show in grid view + Miku + Asuka + Mion + Rikka + Sakura + Mamimi + Kanade + There is nothing here + To track reading progress, select Menu → Track on the manga details screen. + Services + Allow unstable updates + Propose updates to beta versions of the app + Download started + Got it + Tap and hold on an item to reorder them + UserAgent header + Please restart the application to apply these changes + You can select one or more .cbz or .zip files, each file will be recognized as a separate manga. + You can select a directory with archives or images. Each archive (or subdirectory) will be recognized as a chapter. + Speed + Import a previously created backup of user data + Show on the Shelf + You can sign in into an existing account or create a new one + Find similar