diff --git a/README.md b/README.md
index 19dc6b2f..bc96bc53 100644
--- a/README.md
+++ b/README.md
@@ -50,18 +50,22 @@ answer honestly -> reveal together -> keep the conversation going
Screenshots
-Fresh Android dark-mode captures from the current emulator build.
+Fresh Android captures from the current emulator build.
- | Ready |
- Your turn |
- Reveal ready |
+ Ready · dark |
+ Ready · light |
+ Your turn · dark |
+ Reveal · dark |
+ Reveal · light |
-  |
-  |
-  |
+  |
+  |
+  |
+  |
+  |
diff --git a/app/src/main/java/app/closer/MainActivity.kt b/app/src/main/java/app/closer/MainActivity.kt
index 9ebcfb04..865e4091 100644
--- a/app/src/main/java/app/closer/MainActivity.kt
+++ b/app/src/main/java/app/closer/MainActivity.kt
@@ -183,7 +183,13 @@ class MainActivity : AppCompatActivity() {
onUnlocked = { sessionVerified = true }
)
} else {
+ val debugStartDestination = if (BuildConfig.DEBUG) {
+ intent.getStringExtra("debug_start_route")?.takeIf { it.isNotBlank() }
+ } else {
+ null
+ }
AppNavigation(
+ startDestination = debugStartDestination ?: AppRoute.ONBOARDING,
pendingDeepLink = pendingDeepLink.value,
onDeepLinkConsumed = { pendingDeepLink.value = null }
)
diff --git a/app/src/main/java/app/closer/core/navigation/AppNavigation.kt b/app/src/main/java/app/closer/core/navigation/AppNavigation.kt
index 77a7d96f..371e8f85 100644
--- a/app/src/main/java/app/closer/core/navigation/AppNavigation.kt
+++ b/app/src/main/java/app/closer/core/navigation/AppNavigation.kt
@@ -101,7 +101,12 @@ fun AppNavigation(
val currentRoute = navBackStackEntry?.destination?.route
// Debug paired-home preview shows the real bottom nav too, so the menu stays anchored
// exactly as it does on the live paired Home (which is the HOME tab route).
- val bottomRoutes = AppRoute.topLevelRoutes + AppRoute.PAIRED_HOME_PREVIEW
+ val bottomRoutes = AppRoute.topLevelRoutes + listOf(
+ AppRoute.PAIRED_HOME_PREVIEW,
+ AppRoute.PAIRED_HOME_READY_PREVIEW,
+ AppRoute.PAIRED_HOME_YOUR_TURN_PREVIEW,
+ AppRoute.PAIRED_HOME_REVEAL_PREVIEW
+ )
val shellTitle = currentRoute
?.takeIf { it in shellBackRoutes }
?.let(AppRoute::titleFor)
@@ -609,6 +614,24 @@ fun AppNavigation(
composable(route = AppRoute.PAIRED_HOME_PREVIEW) {
app.closer.ui.home.PairedHomePreviewScreen(onNavigate = navigateRoute)
}
+ composable(route = AppRoute.PAIRED_HOME_READY_PREVIEW) {
+ app.closer.ui.home.PairedHomePreviewScreen(
+ dailyQuestionState = app.closer.ui.home.DailyQuestionState.UNANSWERED,
+ onNavigate = navigateRoute
+ )
+ }
+ composable(route = AppRoute.PAIRED_HOME_YOUR_TURN_PREVIEW) {
+ app.closer.ui.home.PairedHomePreviewScreen(
+ dailyQuestionState = app.closer.ui.home.DailyQuestionState.PARTNER_ANSWERED_USER_PENDING,
+ onNavigate = navigateRoute
+ )
+ }
+ composable(route = AppRoute.PAIRED_HOME_REVEAL_PREVIEW) {
+ app.closer.ui.home.PairedHomePreviewScreen(
+ dailyQuestionState = app.closer.ui.home.DailyQuestionState.BOTH_ANSWERED,
+ onNavigate = navigateRoute
+ )
+ }
}
}
}
diff --git a/app/src/main/java/app/closer/core/navigation/AppRoute.kt b/app/src/main/java/app/closer/core/navigation/AppRoute.kt
index 7e94dda1..eb3b0423 100644
--- a/app/src/main/java/app/closer/core/navigation/AppRoute.kt
+++ b/app/src/main/java/app/closer/core/navigation/AppRoute.kt
@@ -68,6 +68,9 @@ object AppRoute {
const val ACTIVITY = "activity"
const val ART_PREVIEW = "art_preview"
const val PAIRED_HOME_PREVIEW = "paired_home_preview"
+ const val PAIRED_HOME_READY_PREVIEW = "paired_home_preview_ready"
+ const val PAIRED_HOME_YOUR_TURN_PREVIEW = "paired_home_preview_your_turn"
+ const val PAIRED_HOME_REVEAL_PREVIEW = "paired_home_preview_reveal"
const val PAIRING_SUCCESS = "pairing_success/{coupleId}"
fun pairingSuccess(coupleId: String) = "pairing_success/$coupleId"
diff --git a/app/src/main/java/app/closer/ui/home/HomeScreen.kt b/app/src/main/java/app/closer/ui/home/HomeScreen.kt
index e05dc430..a52c5d80 100644
--- a/app/src/main/java/app/closer/ui/home/HomeScreen.kt
+++ b/app/src/main/java/app/closer/ui/home/HomeScreen.kt
@@ -1738,7 +1738,10 @@ fun HomeScreenPreview() {
* Reachable from Settings → "Paired home (debug)" in debug builds only.
*/
@Composable
-fun PairedHomePreviewScreen(onNavigate: (String) -> Unit = {}) {
+fun PairedHomePreviewScreen(
+ dailyQuestionState: DailyQuestionState = DailyQuestionState.PARTNER_ANSWERED_USER_PENDING,
+ onNavigate: (String) -> Unit = {}
+) {
val demoState = HomeUiState(
isLoading = false,
isPaired = true,
@@ -1752,18 +1755,11 @@ fun PairedHomePreviewScreen(onNavigate: (String) -> Unit = {}) {
category = "emotional_intimacy",
depthLevel = 2
),
- dailyQuestionState = DailyQuestionState.PARTNER_ANSWERED_USER_PENDING,
- hasPartnerAnsweredToday = true,
- partnerAnsweredQuestionId = "demo",
+ dailyQuestionState = dailyQuestionState,
+ hasPartnerAnsweredToday = dailyQuestionState != DailyQuestionState.UNANSWERED,
+ partnerAnsweredQuestionId = if (dailyQuestionState == DailyQuestionState.UNANSWERED) null else "demo",
answerStats = HomeAnswerStats(total = 24, revealed = 18, private = 6),
- primaryAction = HomeAction(
- eyebrow = "Tonight",
- title = "Sofia answered. Your turn.",
- body = "She shared what's on her heart tonight — open the question and answer back.",
- cta = "Answer now",
- target = HomeActionTarget.DailyQuestion,
- tone = HomeActionTone.Daily
- ),
+ primaryAction = previewDailyQuestionAction(dailyQuestionState),
secondaryActions = listOf(
HomeAction(
eyebrow = "Keep playing",
@@ -1826,6 +1822,50 @@ fun PairedHomePreviewScreen(onNavigate: (String) -> Unit = {}) {
}
}
+private fun previewDailyQuestionAction(state: DailyQuestionState): HomeAction =
+ when (state) {
+ DailyQuestionState.UNANSWERED -> HomeAction(
+ eyebrow = "Tonight",
+ title = "Tonight's question is ready.",
+ body = "What's something I did recently that made you feel loved?",
+ cta = "Answer now",
+ target = HomeActionTarget.DailyQuestion,
+ tone = HomeActionTone.Daily
+ )
+ DailyQuestionState.PARTNER_ANSWERED_USER_PENDING -> HomeAction(
+ eyebrow = "Tonight",
+ title = "Sofia answered. Your turn.",
+ body = "She shared what's on her heart tonight — open the question and answer back.",
+ cta = "Answer now",
+ target = HomeActionTarget.DailyQuestion,
+ tone = HomeActionTone.Daily
+ )
+ DailyQuestionState.USER_ANSWERED_PARTNER_PENDING -> HomeAction(
+ eyebrow = "Tonight",
+ title = "Your answer is tucked away.",
+ body = "Sofia will be able to reveal it once she answers too.",
+ cta = "Send a nudge",
+ target = HomeActionTarget.DailyQuestion,
+ tone = HomeActionTone.Daily
+ )
+ DailyQuestionState.BOTH_ANSWERED -> HomeAction(
+ eyebrow = "Reveal ready",
+ title = "You're both ready.",
+ body = "Open tonight's answer together and keep the conversation going.",
+ cta = "Reveal together",
+ target = HomeActionTarget.DailyQuestion,
+ tone = HomeActionTone.Daily
+ )
+ DailyQuestionState.REVEALED -> HomeAction(
+ eyebrow = "Revealed",
+ title = "Tonight's answer is open.",
+ body = "Revisit what you both shared, then keep the thread alive.",
+ cta = "Continue",
+ target = HomeActionTarget.DailyQuestion,
+ tone = HomeActionTone.Daily
+ )
+ }
+
@Composable
internal fun StreakMilestoneDialog(
milestone: Int,
diff --git a/docs/screenshots/readme/home-daily-ready-dark.png b/docs/screenshots/readme/home-daily-ready-dark.png
index 220d8ef7..be11e8bb 100644
Binary files a/docs/screenshots/readme/home-daily-ready-dark.png and b/docs/screenshots/readme/home-daily-ready-dark.png differ
diff --git a/docs/screenshots/readme/home-daily-ready-light.png b/docs/screenshots/readme/home-daily-ready-light.png
new file mode 100644
index 00000000..c94788e4
Binary files /dev/null and b/docs/screenshots/readme/home-daily-ready-light.png differ
diff --git a/docs/screenshots/readme/home-daily-reveal-dark.png b/docs/screenshots/readme/home-daily-reveal-dark.png
index 69c960a7..6cd943f5 100644
Binary files a/docs/screenshots/readme/home-daily-reveal-dark.png and b/docs/screenshots/readme/home-daily-reveal-dark.png differ
diff --git a/docs/screenshots/readme/home-daily-reveal-light.png b/docs/screenshots/readme/home-daily-reveal-light.png
new file mode 100644
index 00000000..0318e0c8
Binary files /dev/null and b/docs/screenshots/readme/home-daily-reveal-light.png differ