Skip to content

LGC-2026-06-18T053605

@lmac012 lmac012 tagged this 18 Jun 01:04
Task/Issue URL:
https://app.asana.com/1/137249556945/project/1205648422731273/task/1215654188045007?focus=true
Tech Design URL (if applicable):
https://app.asana.com/1/137249556945/project/1205648422731273/task/1215654373627388?focus=true
(InputScreenActivityParams API proposal)

### Description

Adds a brand-design-update variant of the Duck.AI onboarding **end** CTA
(`CtaId.DAX_DUCK_AI_END`) rendered on the Input Screen.

The legacy end CTA lives in `InputScreenFragment` with its own layout
(not as a
contextual `OnboardingDaxDialogCta`); the redesigned variant follows the
same model —
a parallel include in `fragment_input_screen.xml`, picked at show-time.

Changes:
- **Public API** (`duckchat-api`, see [API
proposal](https://app.asana.com/1/137249556945/project/1205648422731273/task/1215654373627388?focus=true)):
`InputScreenActivityParams.showDuckAiOnboardingEndCta: Boolean` is
replaced by
  `duckAiOnboardingEndCta: DuckAiOnboardingEndCtaVariant` (new enum:
`NONE` / `LEGACY` / `BRAND_DESIGN_UPDATE`), so the launch path carries
the three-way
state explicitly instead of a sibling boolean.
`Command.LaunchInputScreen` carries the
  same variant.
- `CtaViewModel.prepareAndMarkDuckAiEndCtaForInputScreen()` now returns
the variant,
  choosing `BRAND_DESIGN_UPDATE` when the Duck.AI brand-design FF
(`onboardingDuckAiExperimentMay26BrandDesignUpdate` +
`onboardingBrandDesignUpdate`)
  is on, otherwise `LEGACY`.
- `InputScreenFragment` renders the matching variant: the
`BRAND_DESIGN_UPDATE` variant
uses a flat `?attr/onboardingSurfaceBackdrop` colour with the
bottom-anchored
`bg_onboarding_end` image layered on top, matching the brand-design home
tab; `LEGACY`
  keeps the original onboarding bitmap.
- The `bg_onboarding_end` webps move from `:app` to
`:android-design-system` so
`duckchat-impl` can reference them (existing brand-design end CTAs now
point at the
shared `CommonR` drawable). The `onboardingBackgroundMaxHeight` dimen
stays module-local:
`:app` keeps its copy (used by `include_new_browser_tab.xml`) and
`:duckchat-impl` gets
  its own, so neither reaches across modules for it.

### Steps to test this PR
_Prerequisites_
- [ ] Apply patch included in asana task

_Brand-design Duck.AI input-screen end CTA_
- [ ] Proceed with Duck.AI onboarding until you complete the fire step
so
the Input Screen end CTA appears; confirm it renders in the
**brand-design** style
      (flat backdrop + `bg_onboarding_end` image).
- [ ] Tap the CTA's primary button; confirm it dismisses and onboarding
completes.

_Legacy fallback_
- [ ] Disable `onboardingDuckAiExperimentMay26BrandDesignUpdate`;
confirm the **legacy**
      Duck.AI input-screen end CTA (original bitmap) renders instead.

### UI changes
| Before  | After |
| ------ | ----- |
| <img width="1080" height="2400" alt="Screenshot_20260612_153216"
src="https://github.com/user-attachments/assets/6e059b3f-1bd4-4885-ad1c-dbf9b789449e"
/> | <img width="1080" height="2400" alt="Screenshot_20260612_145537"
src="https://github.com/user-attachments/assets/39e18479-42ab-4965-a891-a176bb33ca61"
/>|

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Onboarding UI and a public duckchat-api param shape change only;
eligibility, pixels, and dismissal logic are preserved with added unit
tests.
> 
> **Overview**
> Replaces the boolean **show Duck.AI onboarding end CTA** flag with
**`DuckAiOnboardingEndCtaVariant`** (`NONE` / `LEGACY` /
`BRAND_DESIGN_UPDATE`) on `InputScreenActivityParams`,
`LaunchInputScreen`, and the browser launch path.
**`CtaViewModel.prepareAndMarkDuckAiEndCtaForInputScreen()`** now
returns that enum and picks **`BRAND_DESIGN_UPDATE`** when the
brand-design feature toggle is on, otherwise **`LEGACY`**, with the same
dismiss/pixel side effects as before.
> 
> **Input Screen** shows either the existing legacy overlay or a new
brand-design include (flat onboarding backdrop +
**`bg_onboarding_end`**), with shared show/dismiss handling via
**`activeDuckAiEndCtaRoot`**. Other brand-design DAX end CTAs switch
**`bg_onboarding_end`** to **`CommonR`** (shared design-system
drawable); **`duckchat-impl`** adds local
**`onboardingBackgroundMaxHeight`** dimens for the new background
layout.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
bf0c9c4f5300907915c3333612f4aa07269fa6ab. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Assets 2
Loading