simplify What's New dialog
This commit is contained in:
parent
70ca305e16
commit
e2181307ca
7 changed files with 110 additions and 653 deletions
|
|
@ -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(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 & 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 & 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 & 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 & 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>
|
|
||||||
|
|
@ -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 & 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 & 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 & 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 & 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 & 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 & saved-searches</changelogtext>
|
|
||||||
<changelogtext>[b]New:[/b] disable smart-update for individual & 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 & 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 & 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 & 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 & 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 & 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 & cover-loading</changelogtext>
|
|
||||||
<changelogtext>[b]New:[/b] Auto 2-way sync read chapters from Trackers & swipe read to update</changelogtext>
|
|
||||||
<changelogtext>[b]New:[/b] Add NSFW filter & source search into Merge screen</changelogtext>
|
|
||||||
<changelogtext>[b]Improve:[/b] Sticky header & 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 & 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 & 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 & 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>
|
|
||||||
Loading…
Reference in a new issue