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
…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.
6387c02 to
d55233b
Compare
0004eae to
d041daa
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: scoped to onboarding CTA UI state cleanup and a new one-off command, gated behind the native-input user setting and covered by unit tests.
Overview
Fixes an onboarding UI glitch where the intro Dax bubble could persist and briefly flash after navigation by dismissing the bubble on query submit when the native-input setting is enabled.
Adds a new
HideDaxBubbleCtaOnSubmitcommand, wires it throughBrowserTabViewModel(clearingctaViewStatefor the relevant intro/search/visit-site bubbles) and handles it inBrowserTabFragment, with unit tests covering enabled vs disabled behavior.Reviewed by Cursor Bugbot for commit d041daa. Bugbot is set up for automated code reviews on this repo. Configure here.