fix(copy): reconcile divergent premium benefit lists + drop inaccurate claim
The paywall and subscription screens showed two different premium benefit lists (centralizing
into CloserCopy surfaced the drift). Unified to a single CloserCopy.premiumBenefits used by both.
Also an accuracy fix: dropped "Exportable memories" — it directly contradicts the app's own
privacy copy ("Closer does not currently offer a data export", strings.xml privacy_no_export_body),
i.e. a benefit the app explicitly does not provide. Remaining items are all verified real features
(QuestionComposer, Connection Challenges, Desire Sync, Memory Lane, date planning, answer history).
compileDebugKotlin clean; single source of truth for both surfaces going forward.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
42fba641f1
commit
2c3c2df8c4
|
|
@ -19,6 +19,21 @@ object CloserCopy {
|
|||
/** Reused verbatim across the paywall and the subscription screen. */
|
||||
const val whatsIncluded = "What's included"
|
||||
|
||||
/**
|
||||
* The single premium benefits list — shown identically on the paywall and the subscription screen.
|
||||
* Reconciled 2026-07-09 from two divergent lists; dropped "Exportable memories" because it
|
||||
* contradicted the app's own "no data export" privacy statement (strings.xml `privacy_no_export_body`).
|
||||
*/
|
||||
val premiumBenefits = listOf(
|
||||
"Unlimited questions every day",
|
||||
"Every premium question pack",
|
||||
"Connection Challenges and Desire Sync",
|
||||
"Memory Lane time capsules",
|
||||
"Date planning and bucket list",
|
||||
"Custom questions and private notes",
|
||||
"Full answer history and growth",
|
||||
)
|
||||
|
||||
object Paywall {
|
||||
const val headline = "Go deeper together"
|
||||
const val subhead = "Unlock everything Closer has built for couples."
|
||||
|
|
@ -26,34 +41,12 @@ object CloserCopy {
|
|||
const val coupleShared = "One subscription covers you both — treat your partner."
|
||||
const val thankYouTitle = "You're all set"
|
||||
const val thankYouBody = "Thank you for supporting Closer."
|
||||
|
||||
val benefits = listOf(
|
||||
"Unlimited questions every day",
|
||||
"Every premium question pack",
|
||||
"Date planning and bucket list",
|
||||
"Full answer history and growth",
|
||||
"Custom questions and private notes",
|
||||
"Exportable memories",
|
||||
)
|
||||
}
|
||||
|
||||
object Subscription {
|
||||
const val upgradeHeadline = "Unlock Premium"
|
||||
const val premiumTitle = "You're Premium"
|
||||
const val coupleShared = "One subscription for both partners — no double billing."
|
||||
|
||||
// NOTE (copy drift surfaced by centralizing): this benefit list diverges from
|
||||
// [Paywall.benefits] — it swaps "Custom questions and private notes" + "Exportable
|
||||
// memories" for "Connection Challenges and Desire Sync" + "Memory Lane time capsules",
|
||||
// and reorders. Left verbatim on purpose; unify the two lists if that's a copy decision.
|
||||
val benefits = listOf(
|
||||
"Unlimited questions every day",
|
||||
"Every premium question pack",
|
||||
"Full answer history and growth",
|
||||
"Date planning and bucket list",
|
||||
"Connection Challenges and Desire Sync",
|
||||
"Memory Lane time capsules",
|
||||
)
|
||||
}
|
||||
|
||||
/** 18+ gate copy (O-AGE-001). Consolidated from SignUp + CreateProfile, where the min-age
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ private fun BenefitsCard(modifier: Modifier = Modifier) {
|
|||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
CloserCopy.Paywall.benefits.forEach { benefit ->
|
||||
CloserCopy.premiumBenefits.forEach { benefit ->
|
||||
BenefitPill(benefit)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ private fun PremiumContent(
|
|||
style = MaterialTheme.typography.labelLarge.copy(fontWeight = FontWeight.SemiBold),
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
CloserCopy.Subscription.benefits.forEach { benefit ->
|
||||
CloserCopy.premiumBenefits.forEach { benefit ->
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(10.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
|
|
@ -335,7 +335,7 @@ private fun FreeContent(
|
|||
modifier = Modifier.padding(20.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
CloserCopy.Subscription.benefits.forEach { benefit ->
|
||||
CloserCopy.premiumBenefits.forEach { benefit ->
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(10.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
|
|
|
|||
Loading…
Reference in New Issue