Onboarding Brand Design Update: Dismiss intro bubble on submit#8526
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 0120753. Configure here.
| private var isCustomTabScreen: Boolean = false | ||
| private var alreadyShownKeyboard: Boolean = false | ||
| private var pendingDuckChatAuthUpdate: Boolean = false | ||
| private var nativeInputFieldEnabled: Boolean = false |
There was a problem hiding this comment.
Missing @volatile on cross-thread boolean field
Medium Severity
nativeInputFieldEnabled is written on the IO thread (the onEach lambda is upstream of flowOn(dispatchers.io())) but read on the Main thread in dismissDaxBubbleCtaOnSubmit. Without @Volatile, the JVM memory model does not guarantee the Main thread sees the updated value. The analogous field isSerpLogoInMenuEnabled declared just two lines below correctly uses @Volatile for the same cross-thread write/read pattern. The consequence is that dismissDaxBubbleCtaOnSubmit may intermittently read a stale false and skip dismissing the bubble CTA.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 0120753. Configure here.
0120753 to
f38fe2f
Compare
c74e5de to
6387c02
Compare
f38fe2f to
0004eae
Compare
6387c02 to
d55233b
Compare
0004eae to
d041daa
Compare
d041daa to
e2f0b03
Compare
d55233b to
a40429d
Compare
e2f0b03 to
86a757d
Compare
a40429d to
a5a8c01
Compare
…mation flag Both screens read fireAnimationUpdate from OnboardingBrandDesignUpdate toggles on Dispatchers.IO and expose isFireAnimationUpdateEnabled in their ViewState. Activities consult the shared availableFireAnimations() helper and the FireAnimation.displayLabelResId extension when building the picker, so the option list (with or without Inferno) and the "Inferno Classic" relabel for legacy HeroFire both stay in one place — no list propagation through Command, no duplicate companion constants. DataClearingSettingsViewModelTest and FireButtonViewModelTest verify isFireAnimationUpdateEnabled is wired through ViewState from the toggle and that LaunchFireAnimationSettings carries the flag.
…nput enabled The bubble persisted in ctaViewState after a Try-a-Search / Visit-Site submission and briefly flashed when returning to the NTP via native-input back, because its parent is a sibling of newTabRootLayout and neither hideNewTab() nor NativeInputManager.showNtp() touches it. Gated on the user setting since the flash only surfaces when native input is overlaying the NTP.
a5a8c01 to
a1c7eef
Compare
86a757d to
22f8863
Compare



Task/Issue URL: https://app.asana.com/1/137249556945/task/1214583146087473
Description
Hides the onboarding intro options bubble ("Try a Search" / "Visit Site") when a user submits a query while native input is enabled. Previously the bubble persisted in
ctaViewStateand briefly flashed when navigating back to the NTP via the native-input back gesture. Gated on the native-input user setting since the flash only surfaces while native input is overlaying the NTP.Steps to test this PR
Applying the patch emulates the future state where the new nativeInput is enabled by default after running onboarding. This should be released before onboarding update is completed.
To turn this off for testing flag off state, remove changes to
DuckChatDataStoreBubble flash on option tap
Bubble flash on custom typed query
Regression — native input OFF
DuckChatDataStoreInputScreenActivity, no flash to fix)UI changes
Note
Low Risk
Low risk UI-state change gated behind the native-input setting; main risk is unintended CTA dismissal timing/regressions in onboarding bubbles.
Overview
Prevents the onboarding intro options bubble ("Try a Search" / "Visit Site") from persisting after a query submit when native input is enabled, avoiding a flash when navigating back to the NTP.
This adds a new
HideDaxBubbleCtaOnSubmitcommand and updatesBrowserTabViewModel.onUserSubmittedQueryto clearctaViewStateand issue the hide command for the intro bubbles when theduckChatnative-input setting is on, with corresponding Fragment handling and unit tests.Reviewed by Cursor Bugbot for commit 86a757d. Bugbot is set up for automated code reviews on this repo. Configure here.