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
Updates onboarding CTA selection and UI wiring for the end-of-journey dialog, which could affect CTA sequencing or dismissal behavior in the in-context onboarding flow (though gated by a feature flag). No security- or data-sensitive logic is introduced.

Overview
Adds a fully implemented brand-design variant of the in-context End onboarding dialog (DaxEndBrandDesignUpdateContextualCta), including background artwork, content binding, and primary button click wiring.

Switches CtaViewModel to return this new CTA when the brand-design flag is enabled (both for the static end dialog and the end-of-journey refresh path), and adds instrumentation tests to ensure the new CTA is selected and remains pixel-equivalent/marks itself read.

Simplifies BrowserTabViewModel by consolidating the trackers/no-trackers/main-network CTA OK-click handling into a single branch that transitions to the fire-dialog CTA.

Reviewed by Cursor Bugbot for commit 09631cb. 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
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-end branch from aac9d44 to 89562a2 Compare May 12, 2026 17:38
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 89562a2 to 09631cb Compare May 13, 2026 07:20
@mikescamell mikescamell force-pushed the feature/mike/onboarding-brand-design-updates/contextual-fire-button branch from 33bacde to 3d261b5 Compare May 13, 2026 07:20
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