diff --git a/.github/workflows/build_develop.yml b/.github/workflows/build_develop.yml
index fab9a9ddd..2cc213437 100644
--- a/.github/workflows/build_develop.yml
+++ b/.github/workflows/build_develop.yml
@@ -68,13 +68,6 @@ jobs:
changelog="$changelog"
echo "CHANGELOG=$changelog" >> $GITHUB_ENV
- - name: Write Version.kt
- uses: DamianReeves/write-file-action@v1.3
- with:
- path: app/src/main/java/exh/Version.kt
- contents: 'package exh const val syDebugVersion: String = "${{ github.run_number }}"'
- write-mode: overwrite
-
- name: Write changelog_debug.xml
uses: DamianReeves/write-file-action@v1.3
with:
diff --git a/.github/workflows/build_preview.yml b/.github/workflows/build_preview.yml
index ce1c9034b..9939ca967 100644
--- a/.github/workflows/build_preview.yml
+++ b/.github/workflows/build_preview.yml
@@ -71,20 +71,6 @@ jobs:
changelog="$changelog"
echo "CHANGELOG=$changelog" >> $GITHUB_ENV
- - name: Write Version.kt
- uses: DamianReeves/write-file-action@v1.3
- with:
- path: app/src/main/java/exh/Version.kt
- contents: 'package exh const val syDebugVersion: String = "${{ github.run_number }}"'
- write-mode: overwrite
-
- # - name: Write changelog_debug.xml
- # uses: DamianReeves/write-file-action@v1.3
- # with:
- # path: app/src/main/res/raw/changelog_debug.xml
- # contents: "${{ env.CHANGELOG }}"
- # write-mode: overwrite
-
- name: Write google-services.json
uses: DamianReeves/write-file-action@v1.3
with:
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index bf144b8ae..7f7bae67b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -36,6 +36,7 @@ android {
buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")
buildConfigField("String", "BUILD_TIME", "\"${getBuildTime()}\"")
buildConfigField("boolean", "INCLUDE_UPDATER", "false")
+ buildConfigField("boolean", "PREVIEW", "false")
ndk {
abiFilters += SUPPORTED_ABIS
@@ -66,10 +67,20 @@ android {
matchingFallbacks.add("release")
}
named("release") {
- isMinifyEnabled = true
isShrinkResources = true
+ isMinifyEnabled = true
setProguardFiles(listOf(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"))
}
+ create("preview") {
+ initWith(getByName("release"))
+ buildConfigField("boolean", "PREVIEW", "true")
+
+ matchingFallbacks.add("release")
+ versionNameSuffix = "-${getCommitCount()}"
+ applicationIdSuffix = ".beta"
+ signingConfig = signingConfigs.getByName("debug")
+ // signingConfig = signingConfigs.getByName("debug")
+ }
create("benchmark") {
initWith(getByName("release"))
@@ -77,12 +88,13 @@ android {
matchingFallbacks.add("release")
isDebuggable = false
isProfileable = true
- versionNameSuffix = "-benchmark"
+ versionNameSuffix = "-${getCommitCount()}-benchmark"
applicationIdSuffix = ".benchmark"
}
}
sourceSets {
+ getByName("preview").res.srcDirs("src/beta/res")
getByName("benchmark").res.srcDirs("src/debug/res")
}
diff --git a/app/src/beta/res/drawable-hdpi/ic_launcher_adaptive_fore.png b/app/src/beta/res/drawable-hdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..252b0ccde
Binary files /dev/null and b/app/src/beta/res/drawable-hdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/beta/res/drawable-hdpi/splash_icon.png b/app/src/beta/res/drawable-hdpi/splash_icon.png
new file mode 100644
index 000000000..f06a1d734
Binary files /dev/null and b/app/src/beta/res/drawable-hdpi/splash_icon.png differ
diff --git a/app/src/beta/res/drawable-mdpi/ic_launcher_adaptive_fore.png b/app/src/beta/res/drawable-mdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..889e05cbe
Binary files /dev/null and b/app/src/beta/res/drawable-mdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/beta/res/drawable-mdpi/splash_icon.png b/app/src/beta/res/drawable-mdpi/splash_icon.png
new file mode 100644
index 000000000..f33370864
Binary files /dev/null and b/app/src/beta/res/drawable-mdpi/splash_icon.png differ
diff --git a/app/src/beta/res/drawable-xhdpi/ic_launcher_adaptive_fore.png b/app/src/beta/res/drawable-xhdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..582fd4aac
Binary files /dev/null and b/app/src/beta/res/drawable-xhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/beta/res/drawable-xhdpi/splash_icon.png b/app/src/beta/res/drawable-xhdpi/splash_icon.png
new file mode 100644
index 000000000..89d9cc1ed
Binary files /dev/null and b/app/src/beta/res/drawable-xhdpi/splash_icon.png differ
diff --git a/app/src/beta/res/drawable-xxhdpi/ic_launcher_adaptive_fore.png b/app/src/beta/res/drawable-xxhdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..633754398
Binary files /dev/null and b/app/src/beta/res/drawable-xxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/beta/res/drawable-xxhdpi/splash_icon.png b/app/src/beta/res/drawable-xxhdpi/splash_icon.png
new file mode 100644
index 000000000..710a81b92
Binary files /dev/null and b/app/src/beta/res/drawable-xxhdpi/splash_icon.png differ
diff --git a/app/src/beta/res/drawable-xxxhdpi/ic_launcher_adaptive_fore.png b/app/src/beta/res/drawable-xxxhdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..2056b911d
Binary files /dev/null and b/app/src/beta/res/drawable-xxxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/beta/res/drawable-xxxhdpi/splash_icon.png b/app/src/beta/res/drawable-xxxhdpi/splash_icon.png
new file mode 100644
index 000000000..3d96a9b3d
Binary files /dev/null and b/app/src/beta/res/drawable-xxxhdpi/splash_icon.png differ
diff --git a/app/src/beta/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/beta/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 000000000..1413a3145
--- /dev/null
+++ b/app/src/beta/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/beta/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/beta/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 000000000..1413a3145
--- /dev/null
+++ b/app/src/beta/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/beta/res/mipmap-hdpi/ic_launcher.png b/app/src/beta/res/mipmap-hdpi/ic_launcher.png
new file mode 100755
index 000000000..d9e08616d
Binary files /dev/null and b/app/src/beta/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/beta/res/mipmap-hdpi/ic_launcher_round.png b/app/src/beta/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100755
index 000000000..89ee0d1bb
Binary files /dev/null and b/app/src/beta/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/beta/res/mipmap-mdpi/ic_launcher.png b/app/src/beta/res/mipmap-mdpi/ic_launcher.png
new file mode 100755
index 000000000..fba365a68
Binary files /dev/null and b/app/src/beta/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/beta/res/mipmap-mdpi/ic_launcher_round.png b/app/src/beta/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100755
index 000000000..bf03b3fab
Binary files /dev/null and b/app/src/beta/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/beta/res/mipmap-xhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xhdpi/ic_launcher.png
new file mode 100755
index 000000000..b7c67c942
Binary files /dev/null and b/app/src/beta/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/beta/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/beta/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100755
index 000000000..c13971670
Binary files /dev/null and b/app/src/beta/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100755
index 000000000..4b6c97166
Binary files /dev/null and b/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/beta/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/beta/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100755
index 000000000..3d1083145
Binary files /dev/null and b/app/src/beta/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100755
index 000000000..da1bc12cd
Binary files /dev/null and b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100755
index 000000000..6a699a165
Binary files /dev/null and b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/debug/res/drawable-hdpi/ic_launcher_adaptive_fore.png b/app/src/debug/res/drawable-hdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..c718b2bbf
Binary files /dev/null and b/app/src/debug/res/drawable-hdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/debug/res/drawable-hdpi/splash_icon.png b/app/src/debug/res/drawable-hdpi/splash_icon.png
new file mode 100644
index 000000000..b7c6fa4f3
Binary files /dev/null and b/app/src/debug/res/drawable-hdpi/splash_icon.png differ
diff --git a/app/src/debug/res/drawable-mdpi/ic_launcher_adaptive_fore.png b/app/src/debug/res/drawable-mdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..30174a0cc
Binary files /dev/null and b/app/src/debug/res/drawable-mdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/debug/res/drawable-mdpi/splash_icon.png b/app/src/debug/res/drawable-mdpi/splash_icon.png
new file mode 100644
index 000000000..b9c43aad0
Binary files /dev/null and b/app/src/debug/res/drawable-mdpi/splash_icon.png differ
diff --git a/app/src/debug/res/drawable-xhdpi/ic_launcher_adaptive_fore.png b/app/src/debug/res/drawable-xhdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..b9d54806d
Binary files /dev/null and b/app/src/debug/res/drawable-xhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/debug/res/drawable-xhdpi/splash_icon.png b/app/src/debug/res/drawable-xhdpi/splash_icon.png
new file mode 100644
index 000000000..dcbd604b3
Binary files /dev/null and b/app/src/debug/res/drawable-xhdpi/splash_icon.png differ
diff --git a/app/src/debug/res/drawable-xxhdpi/ic_launcher_adaptive_fore.png b/app/src/debug/res/drawable-xxhdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..0a94f64cb
Binary files /dev/null and b/app/src/debug/res/drawable-xxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/debug/res/drawable-xxhdpi/splash_icon.png b/app/src/debug/res/drawable-xxhdpi/splash_icon.png
new file mode 100644
index 000000000..ffa5c6128
Binary files /dev/null and b/app/src/debug/res/drawable-xxhdpi/splash_icon.png differ
diff --git a/app/src/debug/res/drawable-xxxhdpi/ic_launcher_adaptive_fore.png b/app/src/debug/res/drawable-xxxhdpi/ic_launcher_adaptive_fore.png
new file mode 100755
index 000000000..1da3c78f9
Binary files /dev/null and b/app/src/debug/res/drawable-xxxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/app/src/debug/res/drawable-xxxhdpi/splash_icon.png b/app/src/debug/res/drawable-xxxhdpi/splash_icon.png
new file mode 100644
index 000000000..e4f41c827
Binary files /dev/null and b/app/src/debug/res/drawable-xxxhdpi/splash_icon.png differ
diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher.png b/app/src/debug/res/mipmap-hdpi/ic_launcher.png
old mode 100644
new mode 100755
index b64b5bfe4..acae85c53
Binary files a/app/src/debug/res/mipmap-hdpi/ic_launcher.png and b/app/src/debug/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png
old mode 100644
new mode 100755
index 8fca34bd7..3ae4ea138
Binary files a/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png and b/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher.png b/app/src/debug/res/mipmap-mdpi/ic_launcher.png
old mode 100644
new mode 100755
index 894df70a0..257de79cc
Binary files a/app/src/debug/res/mipmap-mdpi/ic_launcher.png and b/app/src/debug/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png
old mode 100644
new mode 100755
index 3b3bd3046..8f70067f3
Binary files a/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png and b/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher.png
old mode 100644
new mode 100755
index 24b8229cc..f3f4d717d
Binary files a/app/src/debug/res/mipmap-xhdpi/ic_launcher.png and b/app/src/debug/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png
old mode 100644
new mode 100755
index c85b53033..7964600b6
Binary files a/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png and b/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
old mode 100644
new mode 100755
index a93104c8e..4687edcb7
Binary files a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png
old mode 100644
new mode 100755
index 817c61ad7..d6415cc90
Binary files a/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png and b/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
old mode 100644
new mode 100755
index baf144b9b..cfddec528
Binary files a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png
old mode 100644
new mode 100755
index b7ca7afd7..ab0db23be
Binary files a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png and b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/ic_launcher-beta.png b/app/src/main/ic_launcher-beta.png
new file mode 100644
index 000000000..a488cd842
Binary files /dev/null and b/app/src/main/ic_launcher-beta.png differ
diff --git a/app/src/main/ic_launcher-debug.png b/app/src/main/ic_launcher-debug.png
new file mode 100644
index 000000000..af2a577b3
Binary files /dev/null and b/app/src/main/ic_launcher-debug.png differ
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
index b3e2b570e..254ede63d 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
@@ -7,8 +7,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.outlined.Public
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
@@ -34,9 +32,7 @@ import eu.kanade.tachiyomi.ui.more.NewUpdateScreen
import eu.kanade.tachiyomi.util.CrashLogUtil
import eu.kanade.tachiyomi.util.lang.toDateTimestampString
import eu.kanade.tachiyomi.util.system.copyToClipboard
-import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import eu.kanade.tachiyomi.util.system.toast
-import exh.syDebugVersion
import kotlinx.coroutines.launch
import logcat.LogPriority
import tachiyomi.core.common.util.lang.withIOContext
@@ -49,17 +45,14 @@ import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.icons.CustomIcons
-import tachiyomi.presentation.core.icons.Discord
-import tachiyomi.presentation.core.icons.Facebook
import tachiyomi.presentation.core.icons.Github
-import tachiyomi.presentation.core.icons.Reddit
-import tachiyomi.presentation.core.icons.X
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
+@Suppress("JavaIoSerializableObjectMustHaveReadResolve")
object AboutScreen : Screen() {
@Composable
@@ -180,37 +173,35 @@ object AboutScreen : Screen() {
.padding(vertical = 8.dp),
horizontalArrangement = Arrangement.Center,
) {
- LinkIcon(
- label = stringResource(MR.strings.website),
- icon = Icons.Outlined.Public,
- url = "https://mihon.app",
- )
- LinkIcon(
- label = "Discord",
- icon = CustomIcons.Discord,
- url = "https://discord.gg/mihon",
- )
- LinkIcon(
- label = "X",
- icon = CustomIcons.X,
- url = "https://x.com/mihonapp",
- )
- LinkIcon(
- label = "Facebook",
- icon = CustomIcons.Facebook,
- url = "https://facebook.com/mihonapp",
- )
- LinkIcon(
- label = "Reddit",
- icon = CustomIcons.Reddit,
- url = "https://www.reddit.com/r/mihonapp",
- )
+ // LinkIcon(
+ // label = stringResource(MR.strings.website),
+ // icon = Icons.Outlined.Public,
+ // url = "https://mihon.app",
+ // )
+ // LinkIcon(
+ // label = "Discord",
+ // icon = CustomIcons.Discord,
+ // url = "https://discord.gg/mihon",
+ // )
+ // LinkIcon(
+ // label = "X",
+ // icon = CustomIcons.X,
+ // url = "https://x.com/mihonapp",
+ // )
+ // LinkIcon(
+ // label = "Facebook",
+ // icon = CustomIcons.Facebook,
+ // url = "https://facebook.com/mihonapp",
+ // )
+ // LinkIcon(
+ // label = "Reddit",
+ // icon = CustomIcons.Reddit,
+ // url = "https://www.reddit.com/r/mihonapp",
+ // )
LinkIcon(
label = "GitHub",
icon = CustomIcons.Github,
- // SY -->
- url = "https://github.com/komikku-app/komikku",
- // SY <--
+ url = "https://github.com/komikku-app",
)
}
}
@@ -267,9 +258,8 @@ object AboutScreen : Screen() {
}
}
}
- // SY -->
- isPreviewBuildType -> {
- "Preview r$syDebugVersion".let {
+ BuildConfig.PREVIEW -> {
+ "Beta r${BuildConfig.COMMIT_COUNT}".let {
if (withBuildDate) {
"$it (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})"
} else {
@@ -277,7 +267,6 @@ object AboutScreen : Screen() {
}
}
}
- // SY <--
else -> {
"Stable ${BuildConfig.VERSION_NAME}".let {
if (withBuildDate) {
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/WhatsNewDialog.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/WhatsNewDialog.kt
index 1fc285cfc..8e03e99c6 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/WhatsNewDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/WhatsNewDialog.kt
@@ -22,8 +22,11 @@ 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.R
+import eu.kanade.tachiyomi.data.updater.RELEASE_URL
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
+import eu.kanade.tachiyomi.util.system.openInBrowser
import kotlinx.serialization.Serializable
import nl.adaptivity.xmlutil.AndroidXmlReader
import nl.adaptivity.xmlutil.serialization.XML
@@ -37,19 +40,22 @@ import tachiyomi.presentation.core.i18n.stringResource
@Composable
fun WhatsNewDialog(onDismissRequest: () -> Unit) {
+ val context = LocalContext.current
AlertDialog(
onDismissRequest = onDismissRequest,
confirmButton = {
TextButton(onClick = onDismissRequest) {
- Text(text = stringResource(MR.strings.action_cancel))
+ Text(text = stringResource(MR.strings.action_ok))
}
},
- title = {
- Text(text = stringResource(MR.strings.whats_new))
+ title = { Text(text = stringResource(MR.strings.updated_version, BuildConfig.VERSION_NAME)) },
+ dismissButton = {
+ TextButton(onClick = { context.openInBrowser(RELEASE_URL) }) {
+ Text(text = stringResource(SYMR.strings.changelogs))
+ }
},
text = {
Column {
- val context = LocalContext.current
val changelog by produceState?>(initialValue = null) {
value = withIOContext {
XML.decodeFromReader(
diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt
index 2f41b9f61..21830d453 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/App.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt
@@ -58,6 +58,7 @@ import eu.kanade.tachiyomi.util.system.WebViewUtil
import eu.kanade.tachiyomi.util.system.animatorDurationScale
import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.isDevFlavor
+import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import eu.kanade.tachiyomi.util.system.notify
import exh.log.CrashlyticsPrinter
@@ -65,7 +66,6 @@ import exh.log.EHLogLevel
import exh.log.EnhancedFilePrinter
import exh.log.XLogLogcatLogger
import exh.log.xLogD
-import exh.syDebugVersion
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -102,7 +102,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
// SY -->
if (!isDevFlavor) {
- Firebase.crashlytics.setCrashlyticsCollectionEnabled(isReleaseBuildType)
+ Firebase.crashlytics.setCrashlyticsCollectionEnabled(isReleaseBuildType || isPreviewBuildType)
}
// SY <--
GlobalExceptionHandler.initialize(applicationContext, CrashActivity::class.java)
@@ -329,7 +329,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
xLogD(
"""
App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}, ${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE})
- Preview build: $syDebugVersion
+ Build version: ${BuildConfig.COMMIT_COUNT}
Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT})
Android build ID: ${Build.DISPLAY}
Device brand: ${Build.BRAND}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
index 0db879f9f..8b4522f67 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
@@ -3,8 +3,6 @@ package eu.kanade.tachiyomi.data.updater
import android.content.Context
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.util.system.isInstalledFromFDroid
-import eu.kanade.tachiyomi.util.system.isPreviewBuildType
-import exh.syDebugVersion
import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.release.interactor.GetApplicationRelease
import uy.kohesive.injekt.injectLazy
@@ -22,17 +20,12 @@ class AppUpdateChecker {
return withIOContext {
val result = getApplicationRelease.await(
GetApplicationRelease.Arguments(
- // SY -->
- isPreviewBuildType,
- // SY <--
- context.isInstalledFromFDroid(),
- BuildConfig.COMMIT_COUNT.toInt(),
- BuildConfig.VERSION_NAME,
- GITHUB_REPO,
- // SY -->
- syDebugVersion,
- // SY <--
- forceCheck,
+ isPreview = BuildConfig.PREVIEW,
+ isThirdParty = context.isInstalledFromFDroid(),
+ commitCount = BuildConfig.COMMIT_COUNT.toInt(),
+ versionName = BuildConfig.VERSION_NAME,
+ repository = GITHUB_REPO,
+ forceCheck = forceCheck,
),
)
@@ -50,11 +43,19 @@ class AppUpdateChecker {
}
val GITHUB_REPO: String by lazy {
- // SY -->
- if (isPreviewBuildType) {
- "komikku-app/komikku"
+ if (BuildConfig.PREVIEW) {
+ "komikku-app/komikku-preview"
} else {
"komikku-app/komikku"
}
- // SY <--
}
+
+val RELEASE_TAG: String by lazy {
+ if (BuildConfig.PREVIEW) {
+ "r${BuildConfig.COMMIT_COUNT}"
+ } else {
+ "v${BuildConfig.VERSION_NAME}"
+ }
+}
+
+val RELEASE_URL = "https://github.com/$GITHUB_REPO/releases/tag/$RELEASE_TAG"
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
index 49606eeba..ca47e2f79 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
@@ -75,8 +75,10 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreen
import eu.kanade.tachiyomi.ui.more.NewUpdateScreen
import eu.kanade.tachiyomi.ui.more.OnboardingScreen
import eu.kanade.tachiyomi.util.system.dpToPx
+import eu.kanade.tachiyomi.util.system.isDevFlavor
import eu.kanade.tachiyomi.util.system.isNavigationBarNeedsScrim
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
+import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import eu.kanade.tachiyomi.util.view.setComposeContent
import exh.debug.DebugToggles
import exh.eh.EHentaiUpdateWorker
@@ -84,7 +86,6 @@ import exh.log.DebugModeOverlay
import exh.source.BlacklistedSources
import exh.source.EH_SOURCE_ID
import exh.source.EXH_SOURCE_ID
-import exh.syDebugVersion
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.collectLatest
@@ -520,8 +521,8 @@ class MainActivity : BaseActivity() {
// SY -->
private fun addAnalytics() {
- if (!BuildConfig.DEBUG && isPreviewBuildType) {
- Firebase.analytics.setUserProperty("preview_version", syDebugVersion)
+ if (!isDevFlavor && (isReleaseBuildType || isPreviewBuildType)) {
+ Firebase.analytics.setUserProperty("preview_version", BuildConfig.COMMIT_COUNT)
}
}
// SY <--
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
index a8a5018c6..8c3748647 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
@@ -9,7 +9,6 @@ import eu.kanade.tachiyomi.util.system.WebViewUtil
import eu.kanade.tachiyomi.util.system.createFileInCacheDir
import eu.kanade.tachiyomi.util.system.toShareIntent
import eu.kanade.tachiyomi.util.system.toast
-import exh.syDebugVersion
import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.core.common.util.lang.withUIContext
import uy.kohesive.injekt.Injekt
@@ -39,7 +38,7 @@ class CrashLogUtil(
fun getDebugInfo(): String {
return """
App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}, ${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE}, ${BuildConfig.BUILD_TIME})
- Preview build: $syDebugVersion
+ Build version: ${BuildConfig.COMMIT_COUNT}
Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT}; build ${Build.DISPLAY})
Device brand: ${Build.BRAND}
Device manufacturer: ${Build.MANUFACTURER}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt
index 072a87c17..933f44d90 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt
@@ -1,13 +1,12 @@
package eu.kanade.tachiyomi.util.system
import eu.kanade.tachiyomi.BuildConfig
-import exh.syDebugVersion
val isDevFlavor: Boolean
get() = BuildConfig.FLAVOR == "dev"
val isPreviewBuildType: Boolean
- get() = BuildConfig.BUILD_TYPE == "release" /* SY --> */ && syDebugVersion != "0" /* SY <-- */
+ get() = BuildConfig.BUILD_TYPE == "preview"
val isReleaseBuildType: Boolean
- get() = BuildConfig.BUILD_TYPE == "release" /* SY --> */ && syDebugVersion == "0" /* SY <-- */
+ get() = BuildConfig.BUILD_TYPE == "release"
diff --git a/app/src/main/java/exh/Version.kt b/app/src/main/java/exh/Version.kt
deleted file mode 100644
index c4f6f03cb..000000000
--- a/app/src/main/java/exh/Version.kt
+++ /dev/null
@@ -1 +0,0 @@
-package exh const val syDebugVersion: String = "0"
diff --git a/app/src/main/res/raw/changelog_debug.xml b/app/src/main/res/raw/changelog_debug.xml
index ccfc3b134..4be735e91 100644
--- a/app/src/main/res/raw/changelog_debug.xml
+++ b/app/src/main/res/raw/changelog_debug.xml
@@ -1,46 +1,339 @@
-
-
-
diff --git a/app/src/main/res/raw/changelog_release.xml b/app/src/main/res/raw/changelog_release.xml
index dcd26c688..26b28c8a4 100644
--- a/app/src/main/res/raw/changelog_release.xml
+++ b/app/src/main/res/raw/changelog_release.xml
@@ -1,6 +1,22 @@
-
+
+ [b]All features from Komikku pre-release version[/b]
+ Show related mangas for all sources
+ Bulk selection multiple entries to favorite/category
+ Search for source in Browse screen
+ Quick NSFW sources filter in both Extensions/Browse screen
+ Feeds screen support all sources
+ More Feed's entries
+ Click manga's source name will jump to source browsing
+ Show extensions/sources NSFW & languages tag
+ Jump to extensions' settings from Source screen
+ Built-in official extensions repo
+ Migrate to Komikku's own Tracking clients
+ Configurable interval to refresh entries from downloaded storage
+ Updater switched to method similar to Mihon's
+ Revert back support to show extensions' changelog & readme
+ [b]Based on TachiyomiSY stable 1.10.5(Mar 2,2024)[/b]
[b]Based on Mihon stable 0.16.4(from 0.16.3)[/b]
Minor fix for mark duplicate chapters as read
Include the delayed tracker update fix
diff --git a/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt b/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
index de29f06b6..9f399052e 100644
--- a/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
+++ b/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
@@ -32,10 +32,12 @@ class GetApplicationRelease(
lastChecked.set(now.toEpochMilli())
// Check if latest version is different from current version
- // SY -->
- val isNewVersion =
- isNewVersion(arguments.isPreview, arguments.syDebugVersion, arguments.versionName, release.version)
- // SY <--
+ val isNewVersion = isNewVersion(
+ isPreview = arguments.isPreview,
+ commitCount = arguments.commitCount,
+ versionName = arguments.versionName,
+ versionTag = release.version,
+ )
return when {
isNewVersion && arguments.isThirdParty -> Result.ThirdPartyInstallation
isNewVersion -> Result.NewUpdate(release)
@@ -43,28 +45,45 @@ class GetApplicationRelease(
}
}
- // SY -->
+ /**
+ * [isPreview] is if current version is Preview (beta) build
+ *
+ * [versionTag] is the version of new release
+ *
+ * Release (stable) version will compare with current's [versionName] ("v0.1.2")
+ *
+ * Preview (beta) version will compare with current's [commitCount] ("r1234")
+ */
private fun isNewVersion(
isPreview: Boolean,
- syDebugVersion: String,
+ commitCount: Int,
versionName: String,
versionTag: String,
): Boolean {
// Removes prefixes like "r" or "v"
val newVersion = versionTag.replace("[^\\d.]".toRegex(), "")
return if (isPreview) {
- // Preview builds: based on releases in "jobobby04/TachiyomiSYPreview" repo
- // tagged as something like "508"
- val currentInt = syDebugVersion.toIntOrNull()
- currentInt != null && newVersion.toInt() > currentInt
+ // Preview builds: based on releases in "komikku-app/komikku-preview" repo
+ // tagged as something like "r1234"
+ // KMK -->
+ // When has stable update but current app is preview version (same repo) expect new update
+ // TODO: remove this when all users has finished switching from preview to stable
+ if (newVersion.matches("""\d.\d.\d""".toRegex())) return true
+ // KMK <--
+ newVersion.toInt() > commitCount
} else {
// Release builds: based on releases in "komikku-app/komikku" repo
- // tagged as something like "0.1.2"
+ // tagged as something like "v0.1.2"
val oldVersion = versionName.replace("[^\\d.]".toRegex(), "")
val newSemVer = newVersion.split(".").map { it.toInt() }
val oldSemVer = oldVersion.split(".").map { it.toInt() }
+ // KMK -->
+ // When has stable update with preview version but current app is stable version expect no update
+ // TODO: remove this when all users has finished switching from preview to stable
+ if (newSemVer.size != oldSemVer.size) return false
+ // KMK <--
oldSemVer.mapIndexed { index, i ->
if (newSemVer[index] > i) {
return true
@@ -74,17 +93,19 @@ class GetApplicationRelease(
false
}
}
- // SY <--
data class Arguments(
+ /** If current version is Preview (beta) build */
val isPreview: Boolean,
+ /** If current version is from third party */
val isThirdParty: Boolean,
+ /** Commit count of current version */
val commitCount: Int,
+ /** Current version name, could be version tag (v0.1.2) or commit count (r1234) */
val versionName: String,
+ /** Repository name */
val repository: String,
- // SY -->
- val syDebugVersion: String,
- // SY <--
+ /** Force check for new update */
val forceCheck: Boolean = false,
)
diff --git a/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt b/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt
index 80241d472..2397b5adb 100644
--- a/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt
+++ b/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt
@@ -49,7 +49,6 @@ class GetApplicationReleaseTest {
commitCount = 0,
versionName = "v1.0.0",
repository = "test",
- syDebugVersion = "0",
),
)
@@ -62,7 +61,7 @@ class GetApplicationReleaseTest {
every { preference.set(any()) }.answers { }
val release = Release(
- "200",
+ "r2000",
"info",
"http://example.com/release_link",
listOf("http://example.com/assets"),
@@ -77,13 +76,10 @@ class GetApplicationReleaseTest {
commitCount = 1000,
versionName = "",
repository = "test",
- syDebugVersion = "100",
),
)
- (result as GetApplicationRelease.Result.NewUpdate).release shouldBe GetApplicationRelease.Result.NewUpdate(
- release,
- ).release
+ result shouldBe GetApplicationRelease.Result.NewUpdate(release)
}
@Test
@@ -106,14 +102,11 @@ class GetApplicationReleaseTest {
isThirdParty = false,
commitCount = 0,
versionName = "v1.0.0",
- syDebugVersion = "0",
repository = "test",
),
)
- (result as GetApplicationRelease.Result.NewUpdate).release shouldBe GetApplicationRelease.Result.NewUpdate(
- release,
- ).release
+ result shouldBe GetApplicationRelease.Result.NewUpdate(release)
}
@Test
@@ -136,7 +129,6 @@ class GetApplicationReleaseTest {
isThirdParty = false,
commitCount = 0,
versionName = "v2.0.0",
- syDebugVersion = "0",
repository = "test",
),
)
@@ -150,7 +142,7 @@ class GetApplicationReleaseTest {
every { preference.set(any()) }.answers { }
val release = Release(
- "v1.0.0",
+ "v2.0.0",
"info",
"http://example.com/release_link",
listOf("http://example.com/assets"),
@@ -163,8 +155,7 @@ class GetApplicationReleaseTest {
isPreview = false,
isThirdParty = false,
commitCount = 0,
- versionName = "v2.0.0",
- syDebugVersion = "0",
+ versionName = "v1.0.0",
repository = "test",
),
)
@@ -172,4 +163,88 @@ class GetApplicationReleaseTest {
coVerify(exactly = 0) { releaseService.latest(any()) }
result shouldBe GetApplicationRelease.Result.NoNewUpdate
}
+
+ // KMK -->
+ // TODO: remove below tests when all users finished switching from preview to stable
+ @Test
+ fun `When preview version updating to new stable version with preview tag expect new update`() = runTest {
+ every { preference.get() } returns 0
+ every { preference.set(any()) }.answers { }
+
+ val release = Release(
+ "r1234",
+ "info",
+ "http://example.com/release_link",
+ listOf("http://example.com/assets"),
+ )
+
+ coEvery { releaseService.latest(any()) } returns release
+
+ val result = getApplicationRelease.await(
+ GetApplicationRelease.Arguments(
+ isPreview = true,
+ isThirdParty = false,
+ commitCount = 25,
+ versionName = "",
+ repository = "test",
+ ),
+ )
+
+ result shouldBe GetApplicationRelease.Result.NewUpdate(release)
+ }
+
+ @Test
+ fun `When has stable update with preview version but current app is stable version expect no update`() = runTest {
+ every { preference.get() } returns 0
+ every { preference.set(any()) }.answers { }
+
+ val release = Release(
+ "r1234",
+ "info",
+ "http://example.com/release_link",
+ listOf("http://example.com/assets"),
+ )
+
+ coEvery { releaseService.latest(any()) } returns release
+
+ val result = getApplicationRelease.await(
+ GetApplicationRelease.Arguments(
+ isPreview = false,
+ isThirdParty = false,
+ commitCount = 0,
+ versionName = "v1.0.0",
+ repository = "test",
+ ),
+ )
+
+ result shouldBe GetApplicationRelease.Result.NoNewUpdate
+ }
+
+ @Test
+ fun `When has stable update but current app is preview version (same repo) expect new update`() = runTest {
+ every { preference.get() } returns 0
+ every { preference.set(any()) }.answers { }
+
+ val release = Release(
+ "v2.0.0",
+ "info",
+ "http://example.com/release_link",
+ listOf("http://example.com/assets"),
+ )
+
+ coEvery { releaseService.latest(any()) } returns release
+
+ val result = getApplicationRelease.await(
+ GetApplicationRelease.Arguments(
+ isPreview = true,
+ isThirdParty = false,
+ commitCount = 25,
+ versionName = "",
+ repository = "test",
+ ),
+ )
+
+ result shouldBe GetApplicationRelease.Result.NewUpdate(release)
+ }
+ // KMK <--
}
diff --git a/i18n-sy/src/commonMain/resources/MR/base/strings.xml b/i18n-sy/src/commonMain/resources/MR/base/strings.xml
index 278e5af68..20cb89b96 100644
--- a/i18n-sy/src/commonMain/resources/MR/base/strings.xml
+++ b/i18n-sy/src/commonMain/resources/MR/base/strings.xml
@@ -28,6 +28,7 @@
Version %1$s
+ Change Logs
E-Hentai Website Account Settings