Skip to content

Onboarding Brand Design Update: Add in-context End dialog#8484

Draft
mikescamell wants to merge 4 commits into
feature/mike/onboarding-brand-design-updates/contextual-fire-buttonfrom
feature/mike/onboarding-brand-design-updates/contextual-end
Draft

Onboarding Brand Design Update: Add in-context End dialog#8484
mikescamell wants to merge 4 commits into
feature/mike/onboarding-brand-design-updates/contextual-fire-buttonfrom
feature/mike/onboarding-brand-design-updates/contextual-end

Conversation

@mikescamell
Copy link
Copy Markdown
Contributor

@mikescamell mikescamell commented May 7, 2026

Task/Issue URL: https://app.asana.com/1/137249556945/project/1207908166761516/task/1214598047620091?focus=true

Description

Migrates the End contextual onboarding dialog ("You're all set!") to the new brand-design layout introduced in #8439, gated behind the onboardingBrandDesignUpdate feature flag — and closes out the in-context CTA migration started in this stack.

With the flag on:

  • End CTA renders in the new card chrome with title and body as distinct blocks.
  • End CTA wires up to its background banner — slides up from behind the card on appear, slides out on dismiss / content swap.
  • Consolidates trackers/no-trackers/main-network when the End CTA arms — the three post-page-load CTAs converge cleanly into the End CTA hand-off so we don't double-fire / leave a stale background banner behind.
  • Tightens DaxEndCta pixel param assertions in tests so the brand-design path stays telemetry-equivalent to legacy.

With this PR merged, all in-context dialogs (SERP, Trackers Blocked, No Trackers, Main Network, Fire Button, Site Suggestions, End) are migrated to the brand-design layout under onboardingBrandDesignUpdate. No legacy / stub paths remain on the brand-design code path.

Steps to test this PR

Designs

Please run all testing steps for in-context dialog changes — this PR is the canonical surface to test the full contextual flow end-to-end.

To see these changes patch (Linear onboarding flag included just for continuity)

Index: app/src/main/java/com/duckduckgo/app/onboardingbranddesignupdate/OnboardingBrandDesignUpdateToggles.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/duckduckgo/app/onboardingbranddesignupdate/OnboardingBrandDesignUpdateToggles.kt b/app/src/main/java/com/duckduckgo/app/onboardingbranddesignupdate/OnboardingBrandDesignUpdateToggles.kt
--- a/app/src/main/java/com/duckduckgo/app/onboardingbranddesignupdate/OnboardingBrandDesignUpdateToggles.kt	(revision 6fd565c8894daba16281ae9bcf3452d038ae8d6d)
+++ b/app/src/main/java/com/duckduckgo/app/onboardingbranddesignupdate/OnboardingBrandDesignUpdateToggles.kt	(date 1777967047929)
@@ -34,13 +34,13 @@
      * Main toggle for the onboarding brand design update feature.
      * Default value: false (disabled).
      */
-    @Toggle.DefaultValue(DefaultFeatureValue.FALSE)
+    @Toggle.DefaultValue(DefaultFeatureValue.TRUE)
     fun self(): Toggle
 
     /**
      * Toggle for the brand design update variant.
      * Default value: false (disabled).
      */
-    @Toggle.DefaultValue(DefaultFeatureValue.FALSE)
+    @Toggle.DefaultValue(DefaultFeatureValue.TRUE)
     fun brandDesignUpdate(): Toggle
 }
Index: app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt b/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt
--- a/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt	(revision 6fd565c8894daba16281ae9bcf3452d038ae8d6d)
+++ b/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt	(date 1777657893440)
@@ -45,7 +45,7 @@
     val viewState = _viewState.asStateFlow()
 
     fun initializePages() {
-        pageLayoutManager.buildPageBlueprints()
+        pageLayoutManager.buildBrandDesignUpdatePageBlueprints()
     }
 
     fun pageCount(): Int {
@@ -69,8 +69,8 @@
         }
     }
 
-    fun initializeOnboardingSkipper() {
-        if (!appBuildConfig.canSkipOnboarding) return
+    fun initializeOnboardingSkipper() { 
+        return
 
         // delay showing skip button until privacy config downloaded
         viewModelScope.launch {

UI changes

Screenshots


Note

Medium Risk
Moderate risk because it changes onboarding CTA selection/hand-off logic and introduces a new contextual dialog implementation gated by a feature flag, which could affect dialog transitions and telemetry if miswired.

Overview
Migrates the in-context onboarding End dialog to the brand-design contextual CTA path when onboardingBrandDesignUpdate is enabled, returning DaxEndBrandDesignUpdateContextualCta from CtaViewModel (both static end CTA and end-of-journey refresh).

Implements the new DaxEndBrandDesignUpdateContextualCta UI wiring (brand layout include, background, description binding, primary CTA click handler) and consolidates BrowserTabViewModel’s post-dialog OK handling so the trackers/no-trackers/main-network CTAs share a single Fire-dialog hand-off.

Adds an Android test to assert the flag-gated CTA selection and that shown/ok/dismiss pixels and “mark as read” dismissal behavior remain correct for the new End CTA.

Reviewed by Cursor Bugbot for commit 89562a2. Bugbot is set up for automated code reviews on this repo. Configure here.

@mikescamell mikescamell changed the base branch from feature/mike/onboarding-brand-design-updates/contextual-site-suggestions to graphite-base/8484 May 7, 2026 14:57
@mikescamell mikescamell force-pushed the graphite-base/8484 branch from b7a3d2b to a199fa5 Compare May 7, 2026 14:59
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from 0266f57 to 240a7ac Compare May 7, 2026 14:59
@mikescamell mikescamell changed the base branch from graphite-base/8484 to feature/mike/onboarding-brand-design-updates/contextual-site-suggestions May 7, 2026 14:59
@mikescamell mikescamell changed the base branch from feature/mike/onboarding-brand-design-updates/contextual-site-suggestions to graphite-base/8484 May 7, 2026 17:12
@mikescamell mikescamell force-pushed the graphite-base/8484 branch from a199fa5 to b3ba3e8 Compare May 7, 2026 17:16
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from 240a7ac to 791b81f Compare May 7, 2026 17:16
@mikescamell mikescamell changed the base branch from graphite-base/8484 to feature/mike/onboarding-brand-design-updates/contextual-fire-button May 7, 2026 17:16
@mikescamell mikescamell changed the base branch from feature/mike/onboarding-brand-design-updates/contextual-fire-button to graphite-base/8484 May 7, 2026 17:41
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from 791b81f to d72a13a Compare May 7, 2026 17:42
@mikescamell mikescamell force-pushed the graphite-base/8484 branch from b3ba3e8 to 1a7b945 Compare May 7, 2026 17:42
@mikescamell mikescamell changed the base branch from graphite-base/8484 to feature/mike/onboarding-brand-design-updates/contextual-fire-button May 7, 2026 17:42
@mikescamell mikescamell changed the base branch from feature/mike/onboarding-brand-design-updates/contextual-fire-button to graphite-base/8484 May 7, 2026 18:21
@mikescamell mikescamell force-pushed the graphite-base/8484 branch from 1a7b945 to 85dc129 Compare May 7, 2026 18:22
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from d72a13a to 7e05a6a Compare May 7, 2026 18:22
@mikescamell mikescamell changed the base branch from graphite-base/8484 to feature/mike/onboarding-brand-design-updates/contextual-fire-button May 7, 2026 18:22
@mikescamell mikescamell changed the base branch from feature/mike/onboarding-brand-design-updates/contextual-fire-button to graphite-base/8484 May 8, 2026 16:14
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from 7e05a6a to 2b3bc76 Compare May 11, 2026 11:42
@mikescamell mikescamell force-pushed the graphite-base/8484 branch from 85dc129 to 0513f60 Compare May 11, 2026 11:42
@mikescamell mikescamell changed the base branch from graphite-base/8484 to feature/mike/onboarding-brand-design-updates/contextual-fire-button May 11, 2026 11:42
@mikescamell mikescamell changed the base branch from feature/mike/onboarding-brand-design-updates/contextual-fire-button to graphite-base/8484 May 11, 2026 12:06
@mikescamell mikescamell force-pushed the graphite-base/8484 branch from 0513f60 to b19e377 Compare May 11, 2026 12:07
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from 2b3bc76 to 5144b64 Compare May 11, 2026 12:07
@mikescamell mikescamell changed the base branch from graphite-base/8484 to feature/mike/onboarding-brand-design-updates/contextual-fire-button May 11, 2026 12:07
@mikescamell mikescamell changed the base branch from feature/mike/onboarding-brand-design-updates/contextual-fire-button to graphite-base/8484 May 11, 2026 15:04
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from 5144b64 to 0f32eba Compare May 12, 2026 08:23
@mikescamell mikescamell force-pushed the graphite-base/8484 branch from b19e377 to 931d111 Compare May 12, 2026 08:23
@mikescamell mikescamell changed the base branch from graphite-base/8484 to feature/mike/onboarding-brand-design-updates/contextual-fire-button May 12, 2026 08:23
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-fire-button branch from 931d111 to e20ae89 Compare May 12, 2026 16:44
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch 2 times, most recently from 37837c3 to aac9d44 Compare May 12, 2026 17:14
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-fire-button branch from e20ae89 to 7f403a9 Compare May 12, 2026 17:14
Populate the Stage-1 stub, replace both CtaViewModel sentinels
(getBrowserCta + getEndStaticDialogCta), and add the per-dialog unit
test. DaxEndCta has zero BrowserTabViewModel touchpoints so no sentinel
replacement there.
…hen arm

Three Stage 2 agents each replaced their own sentinel in the
onOnboardingCtaOkButtonClicked when block, producing three sibling
arms with byte-identical bodies. Re-collapse into a single arm with
all six is labels (three legacy + three brand-design) sharing the
body, matching the pre-migration fall-through shape and halving the
maintenance surface.

Flagged by integration review as the canonical cross-track parallel-
edit artifact that no single Stage 2 review could have caught.
Reuses bg_onboarding_end, the drawable already shipped for the
welcome bubble counterpart.
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from aac9d44 to 89562a2 Compare May 12, 2026 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant