simplify What's New dialog

This commit is contained in:
Cuong-Tran 2025-04-14 02:02:05 +07:00
parent 70ca305e16
commit e2181307ca
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
7 changed files with 110 additions and 653 deletions

View file

@ -255,7 +255,7 @@ object SettingsMainScreen : Screen() {
"${stringResource(MR.strings.app_name)} ${AboutScreen.getVersionName(withBuildDate = false)}" "${stringResource(MR.strings.app_name)} ${AboutScreen.getVersionName(withBuildDate = false)}"
}, },
icon = Icons.Outlined.Info, icon = Icons.Outlined.Info,
screen = AboutScreen, screen = AboutScreen(),
), ),
) )
} }

View file

@ -62,7 +62,7 @@ import java.time.Instant
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.ZoneId import java.time.ZoneId
object AboutScreen : Screen() { class AboutScreen : Screen() {
private fun readResolve(): Any = AboutScreen private fun readResolve(): Any = AboutScreen
@Composable @Composable
@ -79,10 +79,6 @@ object AboutScreen : Screen() {
var isCheckingWhatsComing by remember { mutableStateOf(false) } var isCheckingWhatsComing by remember { mutableStateOf(false) }
// KMK <-- // KMK <--
// SY -->
var showWhatsNewDialog by remember { mutableStateOf(false) }
// SY <--
Scaffold( Scaffold(
topBar = { scrollBehavior -> topBar = { scrollBehavior ->
AppBar( AppBar(
@ -295,13 +291,6 @@ object AboutScreen : Screen() {
} }
} }
} }
// SY -->
// KMK: Unused now
if (showWhatsNewDialog) {
WhatsNewDialog(onDismissRequest = { showWhatsNewDialog = false })
}
// SY <--
} }
/** /**
@ -343,76 +332,81 @@ object AboutScreen : Screen() {
} }
} }
// KMK --> companion object {
private suspend fun getReleaseNotes( // KMK -->
context: Context, suspend fun getReleaseNotes(
onAvailableUpdate: (GetApplicationRelease.Result.NewUpdate) -> Unit, context: Context,
onFinish: () -> Unit, onAvailableUpdate: (GetApplicationRelease.Result.NewUpdate) -> Unit,
) { onFinish: () -> Unit,
val updateChecker = AppUpdateChecker() ) {
withUIContext { val updateChecker = AppUpdateChecker()
try { withUIContext {
when (val result = withIOContext { updateChecker.getReleaseNotes() }) { try {
is GetApplicationRelease.Result.NewUpdate -> { when (val result = withIOContext { updateChecker.getReleaseNotes() }) {
onAvailableUpdate(result) is GetApplicationRelease.Result.NewUpdate -> {
onAvailableUpdate(result)
}
else -> {}
} }
else -> {} } catch (e: Exception) {
context.toast(e.message)
logcat(LogPriority.ERROR, e)
} finally {
onFinish()
} }
} catch (e: Exception) {
context.toast(e.message)
logcat(LogPriority.ERROR, e)
} finally {
onFinish()
} }
} }
} // KMK <--
// KMK <--
fun getVersionName(withBuildDate: Boolean): String { fun getVersionName(withBuildDate: Boolean): String {
return when { return when {
isDebugBuildType -> { isDebugBuildType -> {
"Debug ${BuildConfig.COMMIT_SHA}".let { "Debug ${BuildConfig.COMMIT_SHA}".let {
if (withBuildDate) { if (withBuildDate) {
"$it (${getFormattedBuildTime()})" "$it (${getFormattedBuildTime()})"
} else { } else {
it it
}
} }
} }
}
isPreviewBuildType -> { isPreviewBuildType -> {
"Beta r${BuildConfig.COMMIT_COUNT}".let { "Beta r${BuildConfig.COMMIT_COUNT}".let {
if (withBuildDate) { if (withBuildDate) {
"$it (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})" "$it (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})"
} else { } else {
"$it (${BuildConfig.COMMIT_SHA})" "$it (${BuildConfig.COMMIT_SHA})"
}
} }
} }
}
else -> { else -> {
"Stable ${BuildConfig.VERSION_NAME}".let { "Stable ${BuildConfig.VERSION_NAME}".let {
if (withBuildDate) { if (withBuildDate) {
"$it (${getFormattedBuildTime()})" "$it (${getFormattedBuildTime()})"
} else { } else {
it it
}
} }
} }
} }
} }
}
internal fun getFormattedBuildTime(): String { internal fun getFormattedBuildTime(): String {
return try { return try {
LocalDateTime.ofInstant( LocalDateTime.ofInstant(
Instant.parse(BuildConfig.BUILD_TIME), Instant.parse(BuildConfig.BUILD_TIME),
ZoneId.systemDefault(), ZoneId.systemDefault(),
)
.toDateTimestampString(
UiPreferences.dateFormat(
Injekt.get<UiPreferences>().dateFormat().get(),
),
) )
} catch (e: Exception) { .toDateTimestampString(
BuildConfig.BUILD_TIME UiPreferences.dateFormat(
Injekt.get<UiPreferences>().dateFormat().get(),
),
)
} catch (e: Exception) {
BuildConfig.BUILD_TIME
}
} }
} }
} }

View file

@ -2,173 +2,41 @@
package eu.kanade.presentation.more.settings.screen.about package eu.kanade.presentation.more.settings.screen.about
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.runtime.produceState
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.updater.RELEASE_URL
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import eu.kanade.tachiyomi.util.system.openInBrowser
import kotlinx.serialization.Serializable
import nl.adaptivity.xmlutil.core.AndroidXmlReader
import nl.adaptivity.xmlutil.serialization.XML
import nl.adaptivity.xmlutil.serialization.XmlSerialName
import nl.adaptivity.xmlutil.serialization.XmlValue
import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.i18n.kmk.KMR
import tachiyomi.i18n.sy.SYMR
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@Composable @Composable
fun WhatsNewDialog(onDismissRequest: () -> Unit) { fun WhatsNewDialog(
val context = LocalContext.current onDismissRequest: () -> Unit,
onOpenWhatsNew: () -> Unit = {},
) {
AlertDialog( AlertDialog(
onDismissRequest = onDismissRequest, onDismissRequest = onDismissRequest,
title = { Text(text = stringResource(MR.strings.updated_version, BuildConfig.VERSION_NAME)) },
confirmButton = { confirmButton = {
TextButton(onClick = onDismissRequest) { TextButton(onClick = onDismissRequest) {
Text(text = stringResource(MR.strings.action_ok)) Text(text = stringResource(MR.strings.action_ok))
} }
}, },
title = { Text(text = stringResource(MR.strings.updated_version, BuildConfig.VERSION_NAME)) },
// KMK --> // KMK -->
dismissButton = { dismissButton = {
TextButton(onClick = { context.openInBrowser(RELEASE_URL) }) { TextButton(onClick = onOpenWhatsNew) {
Text(text = stringResource(KMR.strings.changelogs)) Text(text = stringResource(MR.strings.whats_new))
} }
}, },
text = { Text(text = AboutScreen.getVersionName(withBuildDate = true)) },
// KMK <-- // KMK <--
text = {
Column {
val changelog by produceState<List<DisplayChangelog>?>(initialValue = null) {
value = withIOContext {
try {
XML.decodeFromReader<Changelog>(
AndroidXmlReader(
context.resources.openRawResource(
if (isReleaseBuildType) R.raw.changelog_release else R.raw.changelog_preview,
).bufferedReader(),
),
).toDisplayChangelog()
} catch (e: Exception) {
emptyList()
}
}
}
if (changelog != null) {
LazyColumn(
verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.medium),
modifier = Modifier.fillMaxSize(),
) {
items(changelog.orEmpty()) { changelog ->
Column(Modifier.fillMaxWidth()) {
Text(
text = stringResource(SYMR.strings.changelog_version, changelog.version),
color = MaterialTheme.colorScheme.primary,
fontWeight = FontWeight.Bold,
style = MaterialTheme.typography.titleSmall,
)
HorizontalDivider(Modifier.padding(vertical = 8.dp))
Column(
verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
) {
changelog.changelog.forEach {
Text(text = it, style = MaterialTheme.typography.bodySmall)
}
}
}
}
}
}
}
},
modifier = Modifier.fillMaxSize(),
) )
} }
data class DisplayChangelog( @Preview
val version: String, @Composable
val changelog: List<AnnotatedString>, fun WhatsNewDialogPreview() {
) WhatsNewDialog({})
@Serializable
@XmlSerialName("changelog", "", "")
data class Changelog(
val bulletedList: Boolean,
val changelogs: List<ChangelogVersion>,
)
@Serializable
@XmlSerialName("changelogversion", "", "")
data class ChangelogVersion(
val versionName: String,
val changeDate: String,
val text: List<ChangelogText>,
)
@Serializable
@XmlSerialName("changelogtext", "", "")
data class ChangelogText(
@XmlValue(true) val value: String,
)
private const val bullet = "\u2022"
fun Changelog.toDisplayChangelog(): List<DisplayChangelog> {
val prefix = if (bulletedList) bullet + "\t\t" else ""
return changelogs.map { version ->
DisplayChangelog(
version = version.versionName,
changelog = version.text.mapIndexed { index, changelogText ->
buildAnnotatedString {
append(prefix)
var inBBCode = false
var isEscape = false
changelogText.value.forEachIndexed { charIndex, c ->
if (!inBBCode && c == '[') {
inBBCode = true
} else if (inBBCode && c == ']') {
inBBCode = false
isEscape = false
} else if (inBBCode && c == '/') {
isEscape = true
} else if (inBBCode && c == 'b') {
if (isEscape) {
try {
pop()
} catch (e: IllegalStateException) {
throw Exception("Exception on ${version.versionName}:$index:$charIndex", e)
}
} else {
pushStyle(SpanStyle(fontWeight = FontWeight.Bold))
}
} else {
append(c)
}
}
}
},
)
}
} }

View file

@ -62,6 +62,7 @@ import eu.kanade.presentation.components.RestoringBannerBackgroundColor
import eu.kanade.presentation.components.SyncingBannerBackgroundColor import eu.kanade.presentation.components.SyncingBannerBackgroundColor
import eu.kanade.presentation.components.UpdatingBannerBackgroundColor import eu.kanade.presentation.components.UpdatingBannerBackgroundColor
import eu.kanade.presentation.more.settings.screen.ConfigureExhDialog import eu.kanade.presentation.more.settings.screen.ConfigureExhDialog
import eu.kanade.presentation.more.settings.screen.about.AboutScreen.Companion.getReleaseNotes
import eu.kanade.presentation.more.settings.screen.about.WhatsNewDialog import eu.kanade.presentation.more.settings.screen.about.WhatsNewDialog
import eu.kanade.presentation.more.settings.screen.browse.ExtensionReposScreen import eu.kanade.presentation.more.settings.screen.browse.ExtensionReposScreen
import eu.kanade.presentation.more.settings.screen.data.RestoreBackupScreen import eu.kanade.presentation.more.settings.screen.data.RestoreBackupScreen
@ -86,6 +87,7 @@ import eu.kanade.tachiyomi.ui.home.HomeScreen
import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen
import eu.kanade.tachiyomi.ui.more.NewUpdateScreen import eu.kanade.tachiyomi.ui.more.NewUpdateScreen
import eu.kanade.tachiyomi.ui.more.OnboardingScreen import eu.kanade.tachiyomi.ui.more.OnboardingScreen
import eu.kanade.tachiyomi.ui.more.WhatsNewScreen
import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.isDebugBuildType import eu.kanade.tachiyomi.util.system.isDebugBuildType
import eu.kanade.tachiyomi.util.system.isNavigationBarNeedsScrim import eu.kanade.tachiyomi.util.system.isNavigationBarNeedsScrim
@ -106,6 +108,7 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import logcat.LogPriority import logcat.LogPriority
import mihon.core.migration.Migrator import mihon.core.migration.Migrator
import mihon.core.migration.Migrator.scope
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.preference.PreferenceStore
@ -360,12 +363,12 @@ class MainActivity : BaseActivity() {
0, 0,
) )
val previewCurrentVersion = BuildConfig.COMMIT_COUNT.toInt() val previewCurrentVersion = BuildConfig.COMMIT_COUNT.toInt()
var isCheckingWhatsNew by remember { mutableStateOf(false) }
// KMK <-- // KMK <--
var showChangelog by remember { var showChangelog by remember {
mutableStateOf( mutableStateOf(
// KMK --> // KMK -->
// isDebugBuildType ||
isReleaseBuildType && isReleaseBuildType &&
didMigration || didMigration ||
isPreviewBuildType && isPreviewBuildType &&
@ -374,9 +377,35 @@ class MainActivity : BaseActivity() {
) )
} }
if (showChangelog) { if (showChangelog) {
// SY --> // KMK -->
WhatsNewDialog(onDismissRequest = { showChangelog = false }) WhatsNewDialog(
// SY <-- onDismissRequest = { showChangelog = false },
onOpenWhatsNew = {
showChangelog = false
if (!isCheckingWhatsNew) {
scope.launch {
isCheckingWhatsNew = true
getReleaseNotes(
context = context,
onAvailableUpdate = { result ->
val whatsNewScreen = WhatsNewScreen(
currentVersion = BuildConfig.VERSION_NAME,
versionName = result.release.version,
changelogInfo = result.release.info,
releaseLink = result.release.releaseLink,
)
navigator?.push(whatsNewScreen)
},
onFinish = {
isCheckingWhatsNew = false
},
)
}
}
},
)
// KMK <--
} }
// KMK --> // KMK -->
previewLastVersion.set(previewCurrentVersion) previewLastVersion.set(previewCurrentVersion)

View file

@ -35,7 +35,7 @@ class SettingsScreen(
if (!isTabletUi()) { if (!isTabletUi()) {
Navigator( Navigator(
screen = when (destination) { screen = when (destination) {
Destination.About.id -> AboutScreen Destination.About.id -> AboutScreen()
Destination.DataAndStorage.id -> SettingsDataScreen Destination.DataAndStorage.id -> SettingsDataScreen
Destination.Tracking.id -> SettingsTrackingScreen Destination.Tracking.id -> SettingsTrackingScreen
else -> SettingsMainScreen else -> SettingsMainScreen
@ -56,7 +56,7 @@ class SettingsScreen(
} else { } else {
Navigator( Navigator(
screen = when (destination) { screen = when (destination) {
Destination.About.id -> AboutScreen Destination.About.id -> AboutScreen()
Destination.DataAndStorage.id -> SettingsDataScreen Destination.DataAndStorage.id -> SettingsDataScreen
Destination.Tracking.id -> SettingsTrackingScreen Destination.Tracking.id -> SettingsTrackingScreen
else -> SettingsAppearanceScreen else -> SettingsAppearanceScreen

View file

@ -1,121 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog bulletedList="true">
<changelogversion versionName="r9978" changeDate="April 09, 2025">
<changelogtext>[b]New:[/b] Add user manga notes</changelogtext>
<changelogtext>[b]New:[/b] Display all similarly named duplicates in duplicate manga dialogue</changelogtext>
<changelogtext>[b]New:[/b] Allow `migrate` mangas when using `Bulk-favorite`</changelogtext>
<changelogtext>[b]New:[/b] Add markdown support for manga descriptions</changelogtext>
<changelogtext>[b]New:[/b] Bring back original Mihon's direct migration dialog</changelogtext>
<changelogtext>[b]New:[/b] Allow to top align the cover in manga info view</changelogtext>
<changelogtext>[b]Improve:[/b] Update non-library manga data when browsing</changelogtext>
<changelogtext>[b]Improve:[/b] Deduplicate entries when browsing</changelogtext>
<changelogtext>[b]Fix:[/b] Mark existing duplicate read chapters as read option not working in some cases</changelogtext>
<changelogtext>[b]Fix:[/b] NaN crash when dragging `Start/Resume` reading button in MangaScreen</changelogtext>
<changelogtext>[b]Fix:[/b] Reader's chapter list for Merged entry</changelogtext>
<changelogtext>[b]Fix:[/b] `Refresh covers` was limited by Smart Update</changelogtext>
<changelogtext>[b]Fix:[/b] App bar action tooltips blocking clicks</changelogtext>
<changelogtext>[b]Fix:[/b] Page number not appearing when opening chapter</changelogtext>
</changelogversion>
<changelogversion versionName="r9914" changeDate="March 08, 2025">
<changelogtext>[b]New:[/b] Open source settings from Browse &amp; Manga screen</changelogtext>
<changelogtext>[b]New:[/b] Add badge to UpdateScreen header</changelogtext>
<changelogtext>[b]New:[/b] Add prefix search to search by internal DB ID</changelogtext>
<changelogtext>[b]Improve:[/b] EH/ExH: better language detection in case actual language tag is not the first one</changelogtext>
<changelogtext>[b]Improve:[/b] Restore original list header's background color</changelogtext>
<changelogtext>[b]Improve:[/b] Move `Suggestions` settings to same place</changelogtext>
<changelogtext>[b]Improve:[/b] Replace repo icon</changelogtext>
<changelogtext>[b]Improve:[/b] Removed 6h auto updates</changelogtext>
<changelogtext>[b]Improve:[/b] Add back option to hide unread chapter badge in library</changelogtext>
<changelogtext>[b]Improve:[/b] Make more sliders discrete and ensure they don't look out of place</changelogtext>
<changelogtext>[b]Fix:[/b] Backup sharing from notifications not working when app is in background</changelogtext>
<changelogtext>[b]Fix:[/b] Messed up trackers progress update always auto sync</changelogtext>
<changelogtext>[b]Fix:[/b] Vertical chapter navigator overlap bottom bar</changelogtext>
<changelogtext>[b]Fix:[/b] Reorder feeds</changelogtext>
<changelogtext>[b]Fix:[/b] Pinned sources were not restored from backup</changelogtext>
<changelogtext>[b]Fix:[/b] Update base URL and host for Pururin to pururin.me</changelogtext>
<changelogtext>[b]Fix:[/b] Bangumi search including novels</changelogtext>
</changelogversion>
<changelogversion versionName="r9845" changeDate="March 08, 2025">
<changelogtext>[b]New:[/b] Hide excluded scanlators from Update view</changelogtext>
<changelogtext>[b]New:[/b] Use COMPLETE category when sync finishes</changelogtext>
<changelogtext>[b]New:[/b] Display staff information on Anilist tracker search results</changelogtext>
<changelogtext>[b]New:[/b] Implement vertical page panning in paged reader mode when using hardware keys</changelogtext>
<changelogtext>[b]Improve:[/b] Update view's UI &amp; order (always show latest unread chapter first)</changelogtext>
<changelogtext>[b]Improve:[/b] Change label of setting to always use SSIV in long strip reader</changelogtext>
<changelogtext>[b]Improve:[/b] Bump default user agent</changelogtext>
<changelogtext>[b]Improve:[/b] Description showing which sources support batch-add</changelogtext>
<changelogtext>[b]Improve:[/b] Spoof or remove `X-Requested-With` header from webview</changelogtext>
<changelogtext>[b]Fix:[/b] delegate nhentai failed to load cover</changelogtext>
<changelogtext>[b]Fix:[/b] Attempt to fix crash when migrating or removing entries from library</changelogtext>
<changelogtext>[b]Fix:[/b] fill info from trackers only looking for specific 'Art' or 'Story'</changelogtext>
<changelogtext>[b]Fix:[/b] an issue where tracker reading progress is changed to a lower value</changelogtext>
</changelogversion>
<changelogversion versionName="r9817" changeDate="February 28, 2025">
<changelogtext>[b]New:[/b] Add button to favorite manga from history screen</changelogtext>
<changelogtext>[b]New:[/b] Support for private tracking with AniList, Bangumi, Kitsu</changelogtext>
<changelogtext>[b]New:[/b] Add option to export minimal library information to a CSV file</changelogtext>
<changelogtext>[b]New:[/b] Add "Monochrome" theme</changelogtext>
<changelogtext>[b]Improve:[/b] Apply "Downloaded only" filter to all entries regardless of favourite status</changelogtext>
<changelogtext>[b]Improve:[/b] Remove alphabetical category/feed sort option</changelogtext>
<changelogtext>[b]Improve:[/b] Improve support for drag-and-drop category/feed reordering</changelogtext>
<changelogtext>[b]Improve:[/b] Migrate to Bangumi's newer v0 API</changelogtext>
<changelogtext>[b]Improve:[/b] Ignore hidden files/folders for Local Source chapter list</changelogtext>
<changelogtext>[b]Improve:[/b] priority manga update list</changelogtext>
<changelogtext>[b]Fix:[/b] App's preferences referencing deleted categories</changelogtext>
<changelogtext>[b]Fix:[/b] Bangumi login regression</changelogtext>
<changelogtext>[b]Fix:[/b] Xiaomi webview</changelogtext>
<changelogtext>[b]Fix:[/b] Comick recommendations failed due to empty cover list</changelogtext>
<changelogtext>[b]Fix:[/b] Migrate filter Obsolete was showing E-H/ExH source</changelogtext>
<changelogtext>[b]Fix:[/b] don't expand manga description if it's favorited</changelogtext>
</changelogversion>
<changelogversion versionName="r9766" changeDate="February 14, 2025">
<changelogtext>[b]Improve:[/b] (EditMergedSettings): Allow open merge children manga</changelogtext>
<changelogtext>[b]Improve:[/b] Add manual install button to App installing notification</changelogtext>
<changelogtext>[b]Improve:[/b] Rework slider UI</changelogtext>
<changelogtext>[b]Improve:[/b] Add Infinix system app to list of invalid browsers</changelogtext>
<changelogtext>[b]Improve:[/b] Translations update from Hosted Weblate</changelogtext>
<changelogtext>[b]Fix:[/b] crash when extensions trying to destructuring MangasPage</changelogtext>
<changelogtext>[b]Fix:[/b] (PreferenceRestorer): correctly backup/restore preferences related to category</changelogtext>
<changelogtext>[b]Fix:[/b] (MangaRestorer): avoid chapter's order mixed up when backup restore/sync</changelogtext>
<changelogtext>[b]Fix:[/b] (BackupRestorer): avoid issue of late restoring categories</changelogtext>
<changelogtext>[b]Fix:[/b] (EXH): Migrate old source to new source for merge references</changelogtext>
<changelogtext>[b]Fix:[/b] (MangaRestorer): avoid exception caused by duplicate entries</changelogtext>
<changelogtext>[b]Fix:[/b] MAL tracker losing track of login expiration</changelogtext>
<changelogtext>[b]Fix:[/b] Bangumi tracker losing track of login expiration</changelogtext>
<changelogtext>[b]Fix:[/b] loading Merged source should be independent of integrated-H switch</changelogtext>
</changelogversion>
<changelogversion versionName="r9715" changeDate="January 29, 2025">
<changelogtext>[b]New:[/b] feat: unify recommendation screens and add more sources</changelogtext>
<changelogtext>[b]New:[/b] built-in EH compatible with extension</changelogtext>
<changelogtext>[b]New:[/b] Notification rich info</changelogtext>
<changelogtext>[b]New:[/b] Drag to reorder feeds</changelogtext>
<changelogtext>[b]New:[/b] Add option to enable incognito mode per extension</changelogtext>
<changelogtext>[b]New:[/b] feat: add global search shortcut to SmartSearch</changelogtext>
<changelogtext>[b]Improve:[/b] update website link</changelogtext>
<changelogtext>[b]Improve:[/b] add webview to Extension detail screen</changelogtext>
<changelogtext>[b]Improve:[/b] Restore chapter's bookmark &amp; oldest dateUpload from backup</changelogtext>
<changelogtext>[b]Improve:[/b] Update Bangumi</changelogtext>
<changelogtext>[b]Fix:[/b] custom theme color in various AndroidView</changelogtext>
<changelogtext>[b]Fix:[/b] Mangadex fix alt title being removed by cleanDescription</changelogtext>
<changelogtext>[b]Fix:[/b] was not showing entry after importing entry with deep-link</changelogtext>
<changelogtext>[b]Fix:[/b] add entry to favorite when importing via deep-link</changelogtext>
<changelogtext>[b]Fix:[/b] crash when open manga/chapter deep-link or SmartSearch caused by #612</changelogtext>
<changelogtext>[b]Fix:[/b] (myanimelist): Fix nullability and fallback to medium cover if large cover is null</changelogtext>
<changelogtext>[b]Fix:[/b] (download): Making sure archive tmp file is created properly</changelogtext>
</changelogversion>
<changelogversion versionName="r9669" changeDate="December 31, 2024">
<changelogtext>[b]New:[/b] Group update entries together</changelogtext>
<changelogtext>[b]New:[/b] Drag &amp; Drop to reorder category quickly in Settings/Category screen</changelogtext>
<changelogtext>[b]Improve:[/b] Fast browsing</changelogtext>
<changelogtext>[b]Improve:[/b] Allow disable app auto-update</changelogtext>
<changelogtext>[b]Improve:[/b] Allow edit migration options while already being searching</changelogtext>
<changelogtext>[b]Improve:[/b] Don't auto-expand manga when browsing if is favorited</changelogtext>
<changelogtext>[b]Improve:[/b] Add option to always use SSIV for image decoding</changelogtext>
<changelogtext>[b]Fix:[/b] Duplicate chapters on backup restoring</changelogtext>
<changelogtext>[b]Fix:[/b] Exclude categories when delete read chapter, except manually deleting</changelogtext>
<changelogtext>[b]Fix:[/b] Download job stops all together even if 1 entry is failed to create directory</changelogtext>
<changelogtext>[b]Fix:[/b] App shortcuts</changelogtext>
<changelogtext>[b]Fix:[/b] Color Fill manga info from tracker</changelogtext>
<changelogtext>[b]Fix:[/b] Some debug functions name</changelogtext>
</changelogversion>
</changelog>

View file

@ -1,313 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog bulletedList="true">
<changelogversion versionName="1.13.1" changeDate="2025">
<changelogtext>[b]New:[/b] Open source settings from Browse &amp; Manga screen</changelogtext>
<changelogtext>[b]New:[/b] Add badge to UpdateScreen header</changelogtext>
<changelogtext>[b]Improve:[/b] EH/ExH: better language detection in case actual language tag is not the first one</changelogtext>
<changelogtext>[b]Improve:[/b] Move `Suggestions` settings to same place</changelogtext>
<changelogtext>[b]Improve:[/b] Add back option to hide unread chapter badge in library</changelogtext>
<changelogtext>[b]Fix:[/b] Backup sharing from notifications not working when app is in background</changelogtext>
<changelogtext>[b]Fix:[/b] Messed up trackers progress update always auto sync</changelogtext>
<changelogtext>[b]Fix:[/b] Vertical chapter navigator overlap bottom bar</changelogtext>
<changelogtext>[b]Fix:[/b] Update base URL and host for Pururin to pururin.me</changelogtext>
<changelogtext>[b]Fix:[/b] Bangumi search including novels</changelogtext>
</changelogversion>
<changelogversion versionName="1.13.0" changeDate="March 28, 2025">
<changelogtext>[b]New:[/b] feat: unify recommendation screens combine MAL, AniList, MangaUpdates, MangaDex, Comick</changelogtext>
<changelogtext>[b]New:[/b] Support for private tracking with AniList, Bangumi, Kitsu</changelogtext>
<changelogtext>[b]New:[/b] Notification rich info</changelogtext>
<changelogtext>[b]New:[/b] Drag to reorder feeds</changelogtext>
<changelogtext>[b]New:[/b] Hide excluded scanlators from Update view</changelogtext>
<changelogtext>[b]New:[/b] Built-in EH compatible with extension</changelogtext>
<changelogtext>[b]New:[/b] Add option to enable incognito mode per extension</changelogtext>
<changelogtext>[b]New:[/b] Add button to favorite manga from history screen</changelogtext>
<changelogtext>[b]New:[/b] Use COMPLETE category when sync finishes</changelogtext>
<changelogtext>[b]New:[/b] Display staff information on Anilist tracker search results</changelogtext>
<changelogtext>[b]New:[/b] Implement vertical page panning in paged reader mode when using hardware keys</changelogtext>
<changelogtext>[b]New:[/b] Add global search shortcut to SmartSearch</changelogtext>
<changelogtext>[b]New:[/b] Add option to export minimal library information to a CSV file</changelogtext>
<changelogtext>[b]New:[/b] Add "Monochrome" theme</changelogtext>
<changelogtext>[b]New:[/b] Add prefix search to search by internal DB ID</changelogtext>
<changelogtext>[b]Improve:[/b] Update view's UI &amp; order (always show latest unread chapter first) (cuong-tran)</changelogtext>
<changelogtext>[b]Improve:[/b] (EditMergedSettings): Allow open merge children manga</changelogtext>
<changelogtext>[b]Improve:[/b] Apply "Downloaded only" filter to all entries regardless of favourite status</changelogtext>
<changelogtext>[b]Improve:[/b] Remove alphabetical category/feed sort option</changelogtext>
<changelogtext>[b]Improve:[/b] Restore chapter's bookmark &amp; oldest dateUpload from backup</changelogtext>
<changelogtext>[b]Improve:[/b] Migrate to Bangumi's newer v0 API</changelogtext>
<changelogtext>[b]Improve:[/b] Priority manga update list</changelogtext>
<changelogtext>[b]Improve:[/b] Ignore hidden files/folders for Local Source chapter list</changelogtext>
<changelogtext>[b]Improve:[/b] add webview to Extension detail screen</changelogtext>
<changelogtext>[b]Improve:[/b] Rework slider UI</changelogtext>
<changelogtext>[b]Improve:[/b] Improve support for drag-and-drop category reordering</changelogtext>
<changelogtext>[b]Improve:[/b] Change label of setting to always use SSIV in long strip reader</changelogtext>
<changelogtext>[b]Improve:[/b] Bump default user agent</changelogtext>
<changelogtext>[b]Improve:[/b] Description showing which sources support batch-add</changelogtext>
<changelogtext>[b]Improve:[/b] Spoof or remove `X-Requested-With` header from webview</changelogtext>
<changelogtext>[b]Improve:[/b] update website link</changelogtext>
<changelogtext>[b]Improve:[/b] Restore original list header's background color</changelogtext>
<changelogtext>[b]Improve:[/b] Replace repo icon</changelogtext>
<changelogtext>[b]Improve:[/b] Removed 6h auto updates</changelogtext>
<changelogtext>[b]Fix:[/b] Infinix, Xiaomi webview</changelogtext>
<changelogtext>[b]Fix:[/b] App's preferences referencing deleted categories</changelogtext>
<changelogtext>[b]Fix:[/b] Bangumi login regression</changelogtext>
<changelogtext>[b]Fix:[/b] Migrate filter Obsolete was showing E-H/ExH source</changelogtext>
<changelogtext>[b]Fix:[/b] don't expand manga description if it's favorited</changelogtext>
<changelogtext>[b]Fix:[/b] custom theme color in various AndroidView</changelogtext>
<changelogtext>[b]Fix:[/b] Mangadex fix alt title being removed by cleanDescription</changelogtext>
<changelogtext>[b]Fix:[/b] was not showing entry after importing entry with deep-link</changelogtext>
<changelogtext>[b]Fix:[/b] add entry to favorite when importing via deep-link</changelogtext>
<changelogtext>[b]Fix:[/b] (PreferenceRestorer): correctly backup/restore preferences related to category</changelogtext>
<changelogtext>[b]Fix:[/b] (MangaRestorer): avoid chapter's order mixed up when backup restore/sync</changelogtext>
<changelogtext>[b]Fix:[/b] (BackupRestorer): avoid issue of late restoring categories</changelogtext>
<changelogtext>[b]Fix:[/b] (MangaRestorer): avoid exception caused by duplicate entries</changelogtext>
<changelogtext>[b]Fix:[/b] (myanimelist): Fix nullability and fallback to medium cover if large cover is null</changelogtext>
<changelogtext>[b]Fix:[/b] MAL tracker losing track of login expiration</changelogtext>
<changelogtext>[b]Fix:[/b] Bangumi tracker losing track of login expiration</changelogtext>
<changelogtext>[b]Fix:[/b] (download): Making sure archive tmp file is created properly</changelogtext>
<changelogtext>[b]Fix:[/b] delegate nhentai failed to load cover</changelogtext>
<changelogtext>[b]Fix:[/b] Attempt to fix crash when migrating or removing entries from library</changelogtext>
<changelogtext>[b]Fix:[/b] fill info from trackers only looking for specific 'Art' or 'Story'</changelogtext>
<changelogtext>[b]Fix:[/b] an issue where tracker reading progress is changed to a lower value</changelogtext>
<changelogtext>[b]Fix:[/b] Messed up trackers progress update always auto sync</changelogtext>
<changelogtext>[b]Fix:[/b] Update base URL and host for Pururin to pururin.me</changelogtext>
</changelogversion>
<changelogversion versionName="1.12.6" changeDate="February 14, 2025">
<changelogtext>[b]Fix:[/b] crash due to extensions destructuring MangasPage</changelogtext>
</changelogversion>
<changelogversion versionName="1.12.4" changeDate="February 01, 2025">
<changelogtext>[b]New:[/b] Remove extensions repo</changelogtext>
<changelogtext>[b]Improve:[/b] Allow manual install app update</changelogtext>
</changelogversion>
<changelogversion versionName="1.12.3" changeDate="January 29, 2025">
<changelogtext>[b]New:[/b] Group update entries together</changelogtext>
<changelogtext>[b]New:[/b] Drag &amp; Drop to reorder category quickly in Settings/Category screen</changelogtext>
<changelogtext>[b]Improve:[/b] Fast browsing</changelogtext>
<changelogtext>[b]Improve:[/b] Allow disable app auto-update</changelogtext>
<changelogtext>[b]Improve:[/b] Allow edit migration options while already being searching</changelogtext>
<changelogtext>[b]Improve:[/b] Don't auto-expand manga when browsing if is favorited</changelogtext>
<changelogtext>[b]Improve:[/b] Add option to always use SSIV for image decoding</changelogtext>
<changelogtext>[b]Fix:[/b] Duplicate chapters on backup restoring</changelogtext>
<changelogtext>[b]Fix:[/b] Exclude categories when delete read chapter, except manually deleting</changelogtext>
<changelogtext>[b]Fix:[/b] Download job stops all together even if 1 entry is failed to create directory</changelogtext>
<changelogtext>[b]Fix:[/b] App shortcuts</changelogtext>
<changelogtext>[b]Fix:[/b] Color Fill manga info from tracker</changelogtext>
<changelogtext>[b]Fix:[/b] Some debug functions name</changelogtext>
</changelogversion>
<changelogversion versionName="1.12.2" changeDate="December 18, 2024">
<changelogtext>[b]New:[/b] Auto install app update</changelogtext>
<changelogtext>[b]New:[/b] filter only Obsolete sources in Migration screen</changelogtext>
<changelogtext>[b]New:[/b] Get manga info from tracker</changelogtext>
<changelogtext>[b]Improve:[/b] App update retry/resume</changelogtext>
<changelogtext>[b]Improve:[/b] add manual download &amp; error message to app update error notification</changelogtext>
<changelogtext>[b]Improve:[/b] add webp support to nh</changelogtext>
<changelogtext>[b]Improve:[/b] Improve saved-search usage</changelogtext>
<changelogtext>[b]Improve:[/b] allow using saved-search while migration source search</changelogtext>
<changelogtext>[b]Improve:[/b] Trying to load saved-search as much as possible even though filterList might changed</changelogtext>
<changelogtext>[b]Improve:[/b] allow reset filters on SourceFeedScreen</changelogtext>
<changelogtext>[b]Improve:[/b] change bulk-favorite icon to Heart</changelogtext>
<changelogtext>[b]Improve:[/b] Bump default user agent</changelogtext>
<changelogtext>[b]Improve:[/b] Auto format extension repo URLs</changelogtext>
<changelogtext>[b]Improve:[/b] Some improvements to Bangumi tracker search</changelogtext>
<changelogtext>[b]Improve:[/b] support comma (,) delimiter when searching library</changelogtext>
<changelogtext>[b]Improve:[/b] Do not sync automatically when not connected to a network.</changelogtext>
<changelogtext>[b]Improve:[/b] Improve hardware bitmap threshold option</changelogtext>
<changelogtext>[b]Improve:[/b] Add option to lower the threshold for hardware bitmaps</changelogtext>
<changelogtext>[b]Improve:[/b] Switch to hardware bitmap in reader only if device can handle it</changelogtext>
<changelogtext>[b]Improve:[/b] Add a Honor system app to list of invalid browsers</changelogtext>
<changelogtext>[b]Improve:[/b] Increase new updates count when updates found</changelogtext>
<changelogtext>[b]Improve:[/b] favorites sync statuses</changelogtext>
<changelogtext>[b]Improve:[/b] Update usage of work:work-runtime</changelogtext>
<changelogtext>[b]Improve:[/b] Update tag lists</changelogtext>
<changelogtext>[b]Improve:[/b] Always use software bitmap on certain devices</changelogtext>
<changelogtext>[b]Fix:[/b] nH cover</changelogtext>
<changelogtext>[b]Fix:[/b] Maintain correct source order even when receiving new chapters from a sync service</changelogtext>
<changelogtext>[b]Fix:[/b] null categories in Settings/Downloads/Exclude</changelogtext>
<changelogtext>[b]Fix:[/b] idle status set</changelogtext>
<changelogtext>[b]Fix:[/b] source-search clear causing disappearance of search box</changelogtext>
<changelogtext>[b]Fix:[/b] a possible crash with auto-zoom</changelogtext>
<changelogtext>[b]Fix:[/b] multiple issues with the E-H updater</changelogtext>
<changelogtext>[b]Fix:[/b] Reader's dialog font size</changelogtext>
<changelogtext>[b]Fix:[/b] crash on MigrationListScreen with null accessing a mutableState when it's being put in the background</changelogtext>
<changelogtext>[b]Fix:[/b] app onStart sync</changelogtext>
<changelogtext>[b]Fix:[/b] crashes from Exh Updater</changelogtext>
<changelogtext>[b]Fix:[/b] InterceptActivity crash</changelogtext>
<changelogtext>[b]Fix:[/b] long strip images not loading in some old devices</changelogtext>
<changelogtext>[b]Fix:[/b] a rare crash when invoking "Mark previous as read" action</changelogtext>
<changelogtext>[b]Fix:[/b] fix: app update error notification always disappeared</changelogtext>
<changelogtext>[b]Fix:[/b] Fix reader transition color scheme in auto background mode</changelogtext>
</changelogversion>
<changelogversion versionName="1.12.1" changeDate="Oct 29, 2024">
<changelogtext>[b]New:[/b] Error screen</changelogtext>
<changelogtext>[b]New:[/b] Hidden categories</changelogtext>
<changelogtext>[b]New:[/b] Range-selection for Migration</changelogtext>
<changelogtext>[b]New:[/b] show all entries going to be checked for Smart update on Upcoming screen</changelogtext>
<changelogtext>[b]New:[/b] allow Feed to hide entries already in Library</changelogtext>
<changelogtext>[b]New:[/b] Added random library sort</changelogtext>
<changelogtext>[b]New:[/b] Add option to opt out of Crashlytics</changelogtext>
<changelogtext>[b]New:[/b] Panorama cover</changelogtext>
<changelogtext>[b]New:[/b] read/resume button movable</changelogtext>
<changelogtext>[b]New:[/b] show number of entries on upcoming screen</changelogtext>
<changelogtext>[b]New:[/b] saved search tabs for browse source</changelogtext>
<changelogtext>[b]New:[/b] reorder feeds &amp; saved-searches</changelogtext>
<changelogtext>[b]New:[/b] disable smart-update for individual &amp; fix custom interval</changelogtext>
<changelogtext>[b]New:[/b] Option to update trackers when chapter marked as read</changelogtext>
<changelogtext>[b]New:[/b] Add source search, icon flags on Feed adding dialog</changelogtext>
<changelogtext>[b]New:[/b] Showing source icon in library</changelogtext>
<changelogtext>[b]New:[/b] Use language flags</changelogtext>
<changelogtext>[b]New:[/b] Bulk-merging multiple library entries</changelogtext>
<changelogtext>[b]New:[/b] Ability to enable/disable repo</changelogtext>
<changelogtext>[b]New:[/b] Show repo icon for Repo</changelogtext>
<changelogtext>[b]New:[/b] Custom themes</changelogtext>
<changelogtext>[b]New:[/b] Allow sync Feeds &amp; extension-repo settings</changelogtext>
<changelogtext>[b]New:[/b] Add 'show entry' action to download notifications</changelogtext>
<changelogtext>[b]New:[/b] Add option to skip downloading duplicate read chapters</changelogtext>
<changelogtext>[b]New:[/b] Delete duplicate downloaded chapters when they are automatically marked as read</changelogtext>
<changelogtext>[b]New:[/b] Add migrate option to only show entries with new chapters</changelogtext>
<changelogtext>[b]New:[/b] add source search to pre-migration screen</changelogtext>
<changelogtext>[b]New:[/b] Add Copy Tracker URL on icon long press</changelogtext>
<changelogtext>[b]New:[/b] Add a button to select all scanlators</changelogtext>
<changelogtext>[b]New:[/b] Add an "open in browser" button to reader menu</changelogtext>
<changelogtext>[b]New:[/b] Add Backup and Restore of Extension Repos</changelogtext>
<changelogtext>[b]New:[/b] Remove the 'UNOFFICIAL' status, remove built-in Komikku repo, instead allow adding it as default</changelogtext>
<changelogtext>[b]Improve:[/b] Default disable Integrated H features</changelogtext>
<changelogtext>[b]Improve:[/b] show duplicating manga cover on Duplicate dialog</changelogtext>
<changelogtext>[b]Improve:[/b] allow chapter 0 dupe auto mark as read</changelogtext>
<changelogtext>[b]Improve:[/b] rework panorama cover settings</changelogtext>
<changelogtext>[b]Improve:[/b] update all trackers based on common data when new tracker is added</changelogtext>
<changelogtext>[b]Improve:[/b] show a toast whenever progress is synced from Trackers</changelogtext>
<changelogtext>[b]Improve:[/b] Allow Always/Ask/Nerver update trackers on mark as read</changelogtext>
<changelogtext>[b]Improve:[/b] Avoid blocking call causing lag in settings</changelogtext>
<changelogtext>[b]Improve:[/b] Add Quantity Badge to Upcoming Screen</changelogtext>
<changelogtext>[b]Improve:[/b] make global search pinned/all sticky</changelogtext>
<changelogtext>[b]Improve:[/b] hide Pinned chip in Global/Migrate Search if no pinned sources available</changelogtext>
<changelogtext>[b]Improve:[/b] Allow adding multiple tags separated by commas</changelogtext>
<changelogtext>[b]Improve:[/b] show loading indicator while bulk-selection is running</changelogtext>
<changelogtext>[b]Improve:[/b] bulk-selection: reverse selection</changelogtext>
<changelogtext>[b]Improve:[/b] Reload saved-searches when screen is navigated back to</changelogtext>
<changelogtext>[b]Improve:[/b] only load suggestions after entry finished loading info &amp; chapters</changelogtext>
<changelogtext>[b]Improve:[/b] Hide sync library option when sync is disabled</changelogtext>
<changelogtext>[b]Improve:[/b] Show download state and progress on reader chapter list.</changelogtext>
<changelogtext>[b]Improve:[/b] Confirmation dialog when removing privately installed extensions</changelogtext>
<changelogtext>[b]Improve:[/b] hide batch add if integrated H &amp; Delegated src is off</changelogtext>
<changelogtext>[b]Improve:[/b] add MangaDex to Batch-Add example</changelogtext>
<changelogtext>[b]Improve:[/b] Support skip-downloading-duplicate-read-chapters for merged entries</changelogtext>
<changelogtext>[b]Improve:[/b] Show local chapters as downloaded on merged entries</changelogtext>
<changelogtext>[b]Improve:[/b] Re-enable fetching chapters list for entries with licensed status</changelogtext>
<changelogtext>[b]Improve:[/b] Respect `thumbnailQuality` and `tryUsingFirstVolumeCover` preferences</changelogtext>
<changelogtext>[b]Improve:[/b] Reduce ChapterNavigator horizontal padding on small ui</changelogtext>
<changelogtext>[b]Improve:[/b] hide display mode for E-H</changelogtext>
<changelogtext>[b]Improve:[/b] Ignore "intent://" urls on webview</changelogtext>
<changelogtext>[b]Improve:[/b] Remove legacy broken source and history backup</changelogtext>
<changelogtext>[b]Improve:[/b] Rename Related Titles to Suggestions</changelogtext>
<changelogtext>[b]Improve:[/b] Add more auto backup hours</changelogtext>
<changelogtext>[b]Improve:[/b] Add option to update library each 6 hours</changelogtext>
<changelogtext>[b]Improve:[/b] Back-button on pre-migration source</changelogtext>
<changelogtext>[b]Improve:[/b] Don't expand description on the manga while merging</changelogtext>
<changelogtext>[b]Improve:[/b] Hide keyboard when a Tracker SearchResultItem is clicked</changelogtext>
<changelogtext>[b]Improve:[/b] Move dropdown menu to correct position</changelogtext>
<changelogtext>[b]Improve:[/b] Add extensions list refresh menu</changelogtext>
<changelogtext>[b]Improve:[/b] Add confirmation when adding repo via URI</changelogtext>
<changelogtext>[b]Improve:[/b] Respect privacy settings in extension update notification</changelogtext>
<changelogtext>[b]Improve:[/b] Option to not backup Saved searches &amp; Feeds</changelogtext>
<changelogtext>[b]Improve:[/b] allow canceling search for a migrating manga without remove it</changelogtext>
<changelogtext>[b]Improve:[/b] put Suggestions in overflow</changelogtext>
<changelogtext>[b]Improve:[/b] Smart library updates now will honor the 'Skip Completed' option</changelogtext>
<changelogtext>[b]Fix:[/b] for ExH</changelogtext>
<changelogtext>[b]Fix:[/b] sync progress from tracker not working if chapters order is messed up after backup restoration</changelogtext>
<changelogtext>[b]Fix:[/b] app crash when removing tracked entry from tracker</changelogtext>
<changelogtext>[b]Fix:[/b] late loading saved-searches when jump from SourceFeedScreen or FeedScreen</changelogtext>
<changelogtext>[b]Fix:[/b] reader slider</changelogtext>
<changelogtext>[b]Fix:[/b] settings SliderItem steps count</changelogtext>
<changelogtext>[b]Fix:[/b] source search box's height</changelogtext>
<changelogtext>[b]Fix:[/b] issue with not showing source names in merged manga sometimes</changelogtext>
<changelogtext>[b]Fix:[/b] EnhancedTracker not auto binding when adding manga to library</changelogtext>
<changelogtext>[b]Fix:[/b] Retain remote last chapter read if it's higher than the local one for EnhancedTracker</changelogtext>
<changelogtext>[b]Fix:[/b] Kitsu `ratingTwenty` being typed as String</changelogtext>
<changelogtext>[b]Fix:[/b] Kitsu `synopsis` nullability</changelogtext>
<changelogtext>[b]Fix:[/b] Update Kitsu's domain to kitsu.app</changelogtext>
<changelogtext>[b]Fix:[/b] wrong feed adding when filter search</changelogtext>
<changelogtext>[b]Fix:[/b] Setting to hide home button while browsing Suggestions</changelogtext>
<changelogtext>[b]Fix:[/b] settings to show/hide progress-banner were not working</changelogtext>
<changelogtext>[b]Fix:[/b] Fix MAL search results not showing start dates</changelogtext>
<changelogtext>[b]Fix:[/b] wrong initial number of migrating items</changelogtext>
<changelogtext>[b]Fix:[/b] Don't crash on ill-formed URLs</changelogtext>
<changelogtext>[b]Fix:[/b] Handle Android SDK 35 API collision</changelogtext>
<changelogtext>[b]Based on Mihon stable 0.17.0 (Oct 26, 2024)[/b]</changelogtext>
<changelogtext>[b]Based on TachiyomiSY stable 1.11.0 (Oct 28, 2024)[/b]</changelogtext>
</changelogversion>
<changelogversion versionName="1.11.2" changeDate="Aug 08, 2024">
<changelogtext>[b]New:[/b] Support for backing up and restoring Feeds</changelogtext>
<changelogtext>[b]New:[/b] Allow changing feeds' order</changelogtext>
<changelogtext>[b]New:[/b] Show progress-banner for sync/restore/update</changelogtext>
<changelogtext>[b]New:[/b] Jump to entry from download queue item</changelogtext>
<changelogtext>[b]New:[/b] Long-click search drop-down menu for entry's title/author/artist/source</changelogtext>
<changelogtext>[b]New:[/b] Support sources search in Migrate Source Screen</changelogtext>
<changelogtext>[b]New:[/b] Onboarding permissions request for external storage</changelogtext>
<changelogtext>[b]New:[/b] Request for storage permission when saving pictures (Android P &amp; below)</changelogtext>
<changelogtext>[b]New:[/b] Adds Reader Option to Copy Panel to Clipboard</changelogtext>
<changelogtext>[b]New:[/b] Added configuration options to e-ink page flashes</changelogtext>
<changelogtext>[b]Improve:[/b] Update default popular user-agent, better support Cloudflare</changelogtext>
<changelogtext>[b]Improve:[/b] Google drive sync</changelogtext>
<changelogtext>[b]Improve:[/b] Make global search 'Has result' sticky</changelogtext>
<changelogtext>[b]Improve:[/b] Background color for favorite entries</changelogtext>
<changelogtext>[b]Fix:[/b] Update E-H to support libraryColored, bulk-selection overlay</changelogtext>
<changelogtext>[b]Fix:[/b] Copy icon (migration whole list) was always migrating instead of copy</changelogtext>
<changelogtext>[b]Fix:[/b] Migrate/copy manga with 'Delete downloaded' unticked had no effect but always delete</changelogtext>
<changelogtext>[b]Fix:[/b] Background color of selected entries</changelogtext>
<changelogtext>[b]Fix:[/b] (performance) rework cover's loading animation</changelogtext>
<changelogtext>[b]Fix:[/b] (performance) laggy after browsing library for a while</changelogtext>
<changelogtext>[b]Fix:[/b] Revert chapter's filter icon</changelogtext>
</changelogversion>
<changelogversion versionName="1.11.1" changeDate="July 04, 2024">
<changelogtext>[b]Komikku's Discord channel[/b]</changelogtext>
<changelogtext>[b]New:[/b] App icon</changelogtext>
<changelogtext>[b]New:[/b] More App themes</changelogtext>
<changelogtext>[b]New:[/b] Theme based on entry's cover color</changelogtext>
<changelogtext>[b]New:[/b] More suggestions with a dedicated screen</changelogtext>
<changelogtext>[b]Improved:[/b] Faster loading of related entries</changelogtext>
<changelogtext>[b]Improve:[/b] Better background for full cover view</changelogtext>
<changelogtext>[b]Improve:[/b] Better cover-error &amp; cover-loading</changelogtext>
<changelogtext>[b]New:[/b] Auto 2-way sync read chapters from Trackers &amp; swipe read to update</changelogtext>
<changelogtext>[b]New:[/b] Add NSFW filter &amp; source search into Merge screen</changelogtext>
<changelogtext>[b]Improve:[/b] Sticky header &amp; language for sources filter</changelogtext>
<changelogtext>[b]Fix:[/b] Allow manual edit on Tracker's chapter (must hit Done on keyboard)</changelogtext>
<changelogtext>[b]Fix:[/b] Genre tag search while browsing Suggestions or from Feed Screen</changelogtext>
<changelogtext>[b]Fix:[/b] Bangumi tracker</changelogtext>
<changelogtext>[b]Fix:[/b] sometimes it's loading forever if app sleeps for too long (in Source's feed &amp; browse screens)</changelogtext>
<changelogtext>[b]Fix:[/b] GDrive error message</changelogtext>
<changelogtext>[b]New:[/b] A peek into Preview-build's 'What's New' in About screen</changelogtext>
<changelogtext>[b]New:[/b] Support only Android 8+</changelogtext>
<changelogtext>[b]Improve:[/b] Update translation</changelogtext>
<changelogtext>[b]Based on TachiyomiSY stable 1.10.6 (Mar 4, 2024)[/b]</changelogtext>
<changelogtext>[b]Based on Mihon stable 0.16.5 (Apr 9, 2024)[/b]</changelogtext>
<changelogtext>[b]New:[/b] Trust all extensions by repo</changelogtext>
<changelogtext>[b]New:[/b] Add Namicomi support for external chapters on MD</changelogtext>
<changelogtext>[b]Improved:[/b] Massively improve findFile performance</changelogtext>
<changelogtext>[b]Fix:[/b] storage permission request for non-conforming devices</changelogtext>
</changelogversion>
<changelogversion versionName="1.10.5" changeDate="May 9,2024">
<changelogtext>[b]New[/b] Show related mangas for all sources</changelogtext>
<changelogtext>[b]New[/b] Bulk select multiple entries to favorite/category</changelogtext>
<changelogtext>[b]New[/b] Search for sources in Browse screen</changelogtext>
<changelogtext>[b]New[/b] Quick NSFW sources filter in both Extensions/Browse screen</changelogtext>
<changelogtext>[b]Improved[/b] Feeds screen support all sources</changelogtext>
<changelogtext>[b]Improved[/b] More Feed's entries</changelogtext>
<changelogtext>Built-in official extensions repo</changelogtext>
<changelogtext>[b]Improved[/b] Click manga's source name will jump to source browsing</changelogtext>
<changelogtext>[b]Improved[/b] Show extensions/sources NSFW &amp; languages tag</changelogtext>
<changelogtext>[b]Improved[/b] Jump to extensions' settings from Source screen</changelogtext>
<changelogtext>Migrate to Komikku's own Tracking clients</changelogtext>
<changelogtext>[b]New[/b] Configurable interval to refresh entries from downloaded storage</changelogtext>
<changelogtext>Updater switched to method similar to Mihon's</changelogtext>
<changelogtext>Revert back support to show extensions' changelog &amp; readme</changelogtext>
<changelogtext>[b]Based on TachiyomiSY stable 1.10.5 (Mar 2,2024)[/b]</changelogtext>
<changelogtext>[b]Based on Mihon stable 0.16.4 (from 0.16.3)[/b]</changelogtext>
<changelogtext>Minor fix for marking duplicate chapters as read</changelogtext>
<changelogtext>Include the delayed tracker update fix</changelogtext>
</changelogversion>
<changelogversion versionName="1.2.0" changeDate="Aug 12,2020">
<changelogtext>[b]New[/b] quick clean Titles, adds a quick clean that will clean titles from manga from certain sources, it will quickly remove unnecessary bloat</changelogtext>
<changelogtext>[b]Rewritten[/b] rewrite the library search engine (that was inherited from EH), it now can exclude, use quotes for absolute searches, it supports namespace tags, and a bunch more, its probably the most advanced search engine any Tachi fork has</changelogtext>
<changelogtext>[b]New[/b] smart Background, when using a pager like LTR, the background will now change color depending on the page (from J2k)</changelogtext>
</changelogversion>
</changelog>