From 4ad20162f4237902aa8ee474abea97a98202c4e7 Mon Sep 17 00:00:00 2001 From: Wavesonics Date: Tue, 1 Sep 2026 20:27:32 -0700 Subject: [PATCH] Squash merge no-in-app-changelog-on-apple into develop --- .../common/data/changelog/InAppChangelogSupport.kt | 3 +++ .../common/data/changelog/ChangelogRepository.kt | 2 ++ .../common/data/changelog/InAppChangelogSupport.kt | 10 ++++++++++ .../common/data/changelog/InAppChangelogSupport.kt | 6 ++++++ .../common/data/changelog/InAppChangelogSupport.kt | 3 +++ .../data/changelog/InAppChangelogSupportTest.kt | 13 +++++++++++++ .../common/projectselection/about/AboutAppUi.kt | 11 +++++++---- 7 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 common/src/androidMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt create mode 100644 common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt create mode 100644 common/src/desktopMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt create mode 100644 common/src/iosMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt create mode 100644 common/src/iosTest/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupportTest.kt diff --git a/common/src/androidMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt b/common/src/androidMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt new file mode 100644 index 000000000..d706a944f --- /dev/null +++ b/common/src/androidMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt @@ -0,0 +1,3 @@ +package com.darkrockstudios.apps.hammer.common.data.changelog + +actual val supportsInAppChangelog: Boolean = true diff --git a/common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/ChangelogRepository.kt b/common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/ChangelogRepository.kt index c2b2ca946..701f1c459 100644 --- a/common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/ChangelogRepository.kt +++ b/common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/ChangelogRepository.kt @@ -16,6 +16,8 @@ class ChangelogRepository( private var cached: Changelog? = null suspend fun getChangelog(): Changelog? { + if (!supportsInAppChangelog) return null + lock.withLock { cached }?.let { return it } val changelog = datasource.loadChangelog() ?: return null diff --git a/common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt b/common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt new file mode 100644 index 000000000..1f4230d5d --- /dev/null +++ b/common/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt @@ -0,0 +1,10 @@ +package com.darkrockstudios.apps.hammer.common.data.changelog + +/** + * Whether the in-app "What's New" dialog may be shown at all. + * + * False wherever Apple reviews the build. The baked changelog is the full release + * entry, so it names Android and other platforms, which draws guideline 2.3.10 + * rejections. + */ +expect val supportsInAppChangelog: Boolean diff --git a/common/src/desktopMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt b/common/src/desktopMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt new file mode 100644 index 000000000..7a7cfa84a --- /dev/null +++ b/common/src/desktopMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt @@ -0,0 +1,6 @@ +package com.darkrockstudios.apps.hammer.common.data.changelog + +import com.darkrockstudios.apps.hammer.common.IS_APP_STORE + +// Only the Mac App Store flavor faces review; direct downloads keep the dialog. +actual val supportsInAppChangelog: Boolean = !IS_APP_STORE diff --git a/common/src/iosMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt b/common/src/iosMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt new file mode 100644 index 000000000..1a46d6f19 --- /dev/null +++ b/common/src/iosMain/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupport.kt @@ -0,0 +1,3 @@ +package com.darkrockstudios.apps.hammer.common.data.changelog + +actual val supportsInAppChangelog: Boolean = false diff --git a/common/src/iosTest/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupportTest.kt b/common/src/iosTest/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupportTest.kt new file mode 100644 index 000000000..7c5bf6452 --- /dev/null +++ b/common/src/iosTest/kotlin/com/darkrockstudios/apps/hammer/common/data/changelog/InAppChangelogSupportTest.kt @@ -0,0 +1,13 @@ +package com.darkrockstudios.apps.hammer.common.data.changelog + +import kotlin.test.Test +import kotlin.test.assertFalse + +class InAppChangelogSupportTest { + + // Apple rejects the baked changelog under guideline 2.3.10 for naming other platforms. + @Test + fun `in-app changelog is never shown on iOS`() { + assertFalse(supportsInAppChangelog) + } +} diff --git a/composeUi/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/projectselection/about/AboutAppUi.kt b/composeUi/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/projectselection/about/AboutAppUi.kt index 45567def2..a7d598062 100644 --- a/composeUi/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/projectselection/about/AboutAppUi.kt +++ b/composeUi/src/commonMain/kotlin/com/darkrockstudios/apps/hammer/common/projectselection/about/AboutAppUi.kt @@ -66,6 +66,7 @@ import com.darkrockstudios.apps.hammer.common.compose.icons.Github import com.darkrockstudios.apps.hammer.common.compose.icons.Reddit import com.darkrockstudios.apps.hammer.common.compose.resources.get import com.darkrockstudios.apps.hammer.common.compose.scrollBarOverlay +import com.darkrockstudios.apps.hammer.common.data.changelog.supportsInAppChangelog import com.darkrockstudios.apps.hammer.hammer_icon import org.jetbrains.compose.resources.painterResource @@ -320,10 +321,12 @@ private fun VersionCard( horizontalArrangement = Arrangement.spacedBy(14.dp), verticalArrangement = Arrangement.spacedBy(14.dp), ) { - HdHairlineButton( - label = Res.string.about_version_changes_button.get(), - onClick = onViewChangelog, - ) + if (supportsInAppChangelog) { + HdHairlineButton( + label = Res.string.about_version_changes_button.get(), + onClick = onViewChangelog, + ) + } HdHairlineButton( label = Res.string.about_version_github_button.get(), onClick = onOpenLatestRelease,