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. - - - + + + + + - - - + + + + +
ReadyYour turnReveal readyReady · darkReady · lightYour turn · darkReveal · darkReveal · light
Home screen with the daily question ready to answer in dark modeHome screen after the partner answered and it is your turn in dark modeHome screen with the daily question reveal ready in dark modeHome screen with the daily question ready to answer in dark modeHome screen with the daily question ready to answer in light modeHome screen after the partner answered and it is your turn in dark modeHome screen with the daily question reveal ready in dark modeHome screen with the daily question reveal ready in light mode
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