diff --git a/CHANGELOG.md b/CHANGELOG.md index 19b6f6a8e8..68804d2b5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,17 @@ The format is based on "Keep a Changelog" and follows semantic versioning where --- +## v9.6.12 +Date: (see tag) + +### Highlights +- Added opt-in crash analytics (Sentry) — disabled by default, can be enabled in Settings. + +### Maintenance +- Parser upgrades and dependency/maintenance updates. + +--- + ## v9.6.11 Date: (see tag) diff --git a/app/build.gradle b/app/build.gradle index 281cfb9b66..2f5f5520b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,8 +30,8 @@ android { applicationId 'io.github.landwarderer.futon' minSdk = 23 targetSdk = 36 - versionCode project.hasProperty('versionCode') ? project.property('versionCode').toInteger() : 90611 - versionName project.hasProperty('versionName') ? project.property('versionName') : '9.6.11' + versionCode project.hasProperty('versionCode') ? project.property('versionCode').toInteger() : 90612 + versionName project.hasProperty('versionName') ? project.property('versionName') : '9.6.12' generatedDensities = [] testInstrumentationRunner 'io.github.landwarderer.futon.HiltTestRunner' ksp { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 814c8a6568..93b24b8af7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/core/github/AppUpdateRepository.kt b/app/src/main/kotlin/io/github/landwarderer/futon/core/github/AppUpdateRepository.kt index 10aad0f02c..f538671639 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/core/github/AppUpdateRepository.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/core/github/AppUpdateRepository.kt @@ -35,6 +35,12 @@ class AppUpdateRepository @Inject constructor( append("/releases/latest") } + private val changelogUrl = buildString { + append("https://raw.githubusercontent.com/") + append(context.getString(R.string.github_updates_repo)) + append("/refs/heads/devel/CHANGELOG.md") + } + val isUpdateAvailable: Boolean get() = availableUpdate.value != null @@ -72,6 +78,18 @@ class AppUpdateRepository @Inject constructor( }.getOrNull() } + suspend fun fetchChangelog(): String? = withContext(Dispatchers.IO) { + runCatchingCancellable { + val request = Request.Builder() + .get() + .url(changelogUrl) + .build() + okHttp.newCall(request).await().body?.string() + }.onFailure { + it.printStackTraceDebug() + }.getOrNull() + } + @Suppress("KotlinConstantConditions") suspend fun isUpdateSupported(): Boolean { return true // Updates are always available now (just checking for newer version) diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/settings/about/changelog/ChangelogViewModel.kt b/app/src/main/kotlin/io/github/landwarderer/futon/settings/about/changelog/ChangelogViewModel.kt index 86d7cc3dda..b93219656f 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/settings/about/changelog/ChangelogViewModel.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/settings/about/changelog/ChangelogViewModel.kt @@ -3,7 +3,6 @@ package io.github.landwarderer.futon.settings.about.changelog import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow -import org.jsoup.internal.StringUtil import io.github.landwarderer.futon.core.github.AppUpdateRepository import io.github.landwarderer.futon.core.ui.BaseViewModel import javax.inject.Inject @@ -17,8 +16,7 @@ class ChangelogViewModel @Inject constructor( init { launchLoadingJob(Dispatchers.IO) { - val version = appUpdateRepository.fetchUpdate() - changelog.value = version?.let { "# ${it.name}\n\n${it.description}" } + changelog.value = appUpdateRepository.fetchChangelog() } } } diff --git a/metadata/changelogs/90612.txt b/metadata/changelogs/90612.txt new file mode 100644 index 0000000000..2ec7a8619d --- /dev/null +++ b/metadata/changelogs/90612.txt @@ -0,0 +1,7 @@ + cAdded opt-in crash analytics and other improvements. + +Highlights: +- Added opt-in crash analytics (Sentry) — disabled by default, can be enabled in Settings. + +Maintenance: +- Parser upgrades and dependency/maintenance updates.