Skip to content

[MOB-3544] Onboarding product tour#996

Merged
lucaschifino merged 31 commits intomainfrom
ls-mob-3544-onboarding-product-tour
Mar 10, 2026
Merged

[MOB-3544] Onboarding product tour#996
lucaschifino merged 31 commits intomainfrom
ls-mob-3544-onboarding-product-tour

Conversation

@lucaschifino
Copy link
Copy Markdown
Collaborator

@lucaschifino lucaschifino commented Jan 19, 2026

MOB-3544

Context

Lightweight Onboarding Product Tour - This is the feature branch that groups whole implementation.

Approach

All big sub-PRs have been reviewed separately. Besides those, this branch has had QA and CI fixes.

* [MOB-3897] Create WelcomeView using SwiftUI and replace old Welcome

* [MOB-3897] Cleanup WelcomeTour classes and assets

* [MOB-3897] Fix video player

* [MOB-3897] Animated transition from Launch Screen

* [MOB-3897] Add some todos

* [MOB-3897] Implement exit animation

* [MOB-3897] Animate browser toolbars after welcome screen

* [MOB-3897] Adjust logo color and animation

* [MOB-3897] Adjust video frame

* [MOB-3897] Simplify unnecessary extension

* [MOB-3897] Add experiment unleash flag

* [MOB-3897] Add fade transition to welcome screen

* [MOB-3897] Adjust toolbars animation

* [MOB-3897] Add analytics events

* [MOB-3897] Make sure onboarding gets presented on iPad

* [MOB-3897] Adjust spacings and offsets

* [MOB-3897] Use dynamic welcome text height

* [MOB-3897] Adjust top offset on iPad

* [MOB-3897] Add line break and adjust margin

* [MOB-3897] Match NTP background on fade transition dismissal

* [MOB-3897] Make sure initial logo matches launch screen

* [MOB-3897] Add gradients behind content for visibility

* [MOB-3897] Fix fade transition

* [MOB-3897] Move video player to separate file

* [MOB-3897] Wait for video to be ready and support reduced motion

* [MOB-3897] Use Task instead of Dispatch

* [MOB-3897] Fix AnalyticsSpyTests

* [MOB-3897] Add text strings

* [MOB-3897] Handle retriggering onAppear

* [MOB-3897] Fix tests mock

* [MOB-3897] Remove spy tests for now

* [MOB-3897] Add Ecosia comments

* [MOB-3897] Wait for feature flags before presenting welcome screen

* [MOB-3897] [MOB-3903] Do not show APN consent during experiment

* [MOB-3897] Move onboarding into Ecosia framework

* [MOB-3897] Fix MockWelcomeDelegate
* [MOB-3900] Implement ProductTourManager that controls NTP state

* [MOB-3900] Update product tour based on search

* [MOB-3900] Adjust queries cell UI

* [MOB-3900] Add localised search suggestions

* [MOB-3900] Fix and refactor flow layout using swift ui

* [MOB-3900] Extend localised search suggestions

* [MOB-3900] Adjust UI

* [MOB-3900] Handle actions

* [MOB-3900] Track analytics events

* [MOB-3900] Temporarily deploy on this branch

* [MOB-3900] Add localised strings

* [MOB-3900] Dynamically get width to compute rows

* [MOB-3900] Remove unnecessary height calculation

* [MOB-3900] Adjust TODO

* [MOB-3900] Improve search vertical event handling

* [MOB-3900] Move tour completion to webview did finish

* [MOB-3900] Revert CI deployment on feature branch

* [MOB-3900] Clean up code

* [MOB-3900] Implement ProductTourManagerTests

* [MOB-3900] Copilot review adjustments

* [MOB-3900] Use locale mapping for search suggestions

* [MOB-3900] Fix locale identifier

* [MOB-3900] Move whole cell to SwiftUI
* [MOB-3904] Spotlight toast initial implementation

* [MOB-3904] Fix UnsafeRawPointer warning

* [MOB-3904] Update buttons config

* [MOB-3904] Clean up ProductTourSpotlightCoordinator

* [MOB-3904] Fix toast positioning above toolbar

* [MOB-3904] Animate toast transition between steps

* [MOB-3904] Handle toast gesture for dismissing

* [MOB-3904] Fix toast bottom positioning

* [MOB-3904] Fix Spotlight dismissal on URL bar interaction

* [MOB-3904] Add analytics to spotlight

* [MOB-3904] Reintroduce swiftpm Package.resolved

* [MOB-3904] Adjust before and after image

* [MOB-3904] Fix backgroundFeatured on dark theme

* [MOB-3904] Allow web view interaction clicks without dismissing spotlight

* [MOB-3904] Revert: dismiss spotlight on web view clicks

* [MOB-3904] Cleanup leftover

* [MOB-3904] Adjust animation to push out previous step

* [MOB-3904] Adjust enter and exit animations

* [MOB-3904] Fix coordinator retention

* [MOB-3904] Don't recreate spotlight on theme change

* [MOB-3904] Remove unused import

* [MOB-3904] Prevent retain cycle for bottomContentView

* [MOB-3904] [TO REVERT] Temporarily deploy to Firebase

* [MOB-3904] Add suffix to spotlight methods to indicate condition

* [MOB-3904] Revert "[MOB-3904] [TO REVERT] Temporarily deploy to Firebase"

This reverts commit 3f184cc.
* [MOB-3905] Refactor tour manager to use milestone and add new protection spotlight

* [MOB-3905] Open helpscout links on read more

* [MOB-3905] Refactor coordinator with configurations for reusability

* [MOB-3905] Add read more button icon

* [MOB-3905] Right align buttons

* [MOB-3905] [TO REVERT] Temporarily deploy to Firebase

* [MOB-3905] Rename navigation handling methods

* [MOB-3905] Add product tour state condition to spotlight setup

* [MOB-3905] Rename Onboarding folder to ProductTour

* [MOB-3905] Test ProductTourSpotlightCoordinator

* [MOB-3905] Revert "[MOB-3905] [TO REVERT] Temporarily deploy to Firebase"

This reverts commit 1c070af.
@lucaschifino lucaschifino force-pushed the ls-mob-3544-onboarding-product-tour branch from 7a1510a to 4073444 Compare March 2, 2026 14:58
* [MOB-4081] Add sign in button and trigger login flow

* [MOB-4081] Handle Account origin on login and use for product tour state

* [MOB-4081] Update tests

* [MOB-4081] Treat new account if created on the same day

* [MOB-4081] Center experiment condition on ProductTourManager

* [MOB-4081] React NTP based on tour login state

* [MOB-4081] Add state info to debug setting

* [MOB-4081] Adjust button icon and add bottom gradient

* [MOB-4081] Remove done TODO

* [MOB-4081] Hold NTP state while sign in flow is unresolved

* [MOB-4081] Differentiate welcome click actions

* [MOB-4081] Fix sign in flow active on early exits

* [MOB-4081] Make onSignIn non-optional

* [MOB-4081] Introduce sign in flow events

* [MOB-4081] Adjust comment

* [MOB-4081] Reuse welcome sign in logic

* [MOB-4081] Make custom claim namespace clearer
@lucaschifino lucaschifino marked this pull request as ready for review March 9, 2026 14:26
Copilot AI review requested due to automatic review settings March 9, 2026 14:26
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Integrates the Ecosia “Onboarding Product Tour” experience into the Firefox iOS fork, adding the product tour state machine, new onboarding UI (welcome + NTP first-search card + spotlights), and wiring sign-in initiation from onboarding into the existing auth flow.

Changes:

  • Adds a new ProductTourManager (milestones + observer events) and an Unleash-backed experiment toggle.
  • Introduces new onboarding UI components (Welcome SwiftUI hosting VC, first-search NTP card, spotlight coordinator) and hooks them into LaunchCoordinator / SceneCoordinator / BrowserCoordinator.
  • Updates analytics, auth state propagation (account origin), accessibility identifiers, themes, and associated tests/snapshots.

Reviewed changes

Copilot reviewed 95 out of 133 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
firefox-ios/firefox-ios-tests/Tests/ClientTests/Mocks/MockLaunchCoordinatorDelegate.swift Adds new delegate method stub
firefox-ios/EcosiaTests/UI/ProductTour/ProductTourSpotlightCoordinatorTests.swift Adds spotlight coordinator unit tests
firefox-ios/EcosiaTests/SnapshotTests/Onboarding/OnboardingTests.swift Updates onboarding snapshot to new welcome VC
firefox-ios/EcosiaTests/Mocks/MockWelcomeDelegate.swift Updates mock to new welcome delegate API
firefox-ios/EcosiaTests/Analytics/AnalyticsSpyTests.swift Updates analytics spy for new onboarding events
firefox-ios/EcosiaTests/Account/Auth/AuthTests.swift Adds account-origin test coverage
firefox-ios/Ecosia/UI/ProductTour/WelcomeViewController.swift New UIKit host for SwiftUI welcome
firefox-ios/Ecosia/UI/ProductTour/WelcomeVideoPlayer.swift SwiftUI video-backed background component
firefox-ios/Ecosia/UI/ProductTour/WelcomeNavigation.swift New navigation controller w/ fade dismissal
firefox-ios/Ecosia/UI/ProductTour/ProductTourManager.swift New product tour state + persistence
firefox-ios/Ecosia/UI/ProductTour/FadeTransitionDelegate.swift Fade transition implementation
firefox-ios/Ecosia/UI/EcosiaAccessibilityIdentifiers.swift Moves Ecosia a11y IDs into Ecosia module
firefox-ios/Ecosia/UI/Components/EcosiaButtonStyle.swift New reusable SwiftUI button style
firefox-ios/Ecosia/UI/Common.xcassets/sign-in.imageset/sign-in.pdf Adds sign-in asset
firefox-ios/Ecosia/UI/Common.xcassets/sign-in.imageset/Contents.json Registers sign-in asset
firefox-ios/Ecosia/UI/Common.xcassets/forest.imageset/Contents.json Adds/updates forest fallback image set
firefox-ios/Ecosia/UI/Account/EcosiaAuthUIStateProvider.swift Adjusts seed refresh timing
firefox-ios/Ecosia/L10N/en.lproj/Ecosia.strings Removes obsolete onboarding strings
firefox-ios/Ecosia/L10N/String.swift Adds product tour + spotlight strings/keys
firefox-ios/Ecosia/Extensions/Task+Sleep.swift Adds Task sleep compatibility helper
firefox-ios/Ecosia/Experiments/Unleash/OnboardingProductTourExperiment.swift Adds experiment wrapper
firefox-ios/Ecosia/Core/URL+Extensions.swift Adds isBrowser() helper used by tour
firefox-ios/Ecosia/Core/MMP/MMP.swift Removes old onboarding MMP events
firefox-ios/Ecosia/Core/Locale+Extensions.swift Makes regionIdentifier public; adds languageIdentifier
firefox-ios/Ecosia/Core/FeatureManagement/Unleash/Unleash.Model.swift Adds onboarding toggle name
firefox-ios/Ecosia/Core/Environment/URLProvider.swift Adds localized support/help URLs
firefox-ios/Ecosia/Braze/APNConsent.swift Skips push consent during onboarding
firefox-ios/Ecosia/Analytics/Analytics.swift Adds product tour analytics events + context
firefox-ios/Ecosia/Analytics/Analytics.Values.swift Updates analytics labels/properties for tour
firefox-ios/Ecosia/Account/Auth/EcosiaBrowserWindowAuthManager.swift Propagates accountOrigin in auth state
firefox-ios/Ecosia/Account/Auth/EcosiaAuthenticationService.swift Returns AccountOrigin from login
firefox-ios/Ecosia/Account/Auth/Credentials+AccountOrigin.swift Parses Auth0 claim to derive origin
firefox-ios/Ecosia/Account/Auth/AuthStateAction.swift Stores accountOrigin in window state
firefox-ios/Client/Frontend/Toolbar+URLBar/TabToolbarHelper.swift Uses new Ecosia a11y IDs
firefox-ios/Client/Frontend/Toolbar+URLBar/TabToolbar.swift Uses new Ecosia a11y IDs
firefox-ios/Client/Frontend/Home/LegacyHomepageViewController.swift Wires first-search VM delegate
firefox-ios/Client/Frontend/Home/HomepageViewModel.swift Adds first-search VM + tour section logic
firefox-ios/Client/Frontend/Browser/BrowserViewController/Views/BrowserViewController.swift Retains spotlight coordinator + theme updates
firefox-ios/Client/Frontend/Browser/BrowserViewController/Extensions/BrowserViewController+WebViewDelegates.swift Delegates navigation tracking to helper
firefox-ios/Client/Ecosia/UI/WhatsNew/WhatsNewViewController.swift Updates “Got it” localization key
firefox-ios/Client/Ecosia/UI/Theme/EcosiaLightTheme.swift Adds new semantic colors
firefox-ios/Client/Ecosia/UI/Theme/EcosiaDarkTheme.swift Adds new semantic colors
firefox-ios/Client/Ecosia/UI/ProductTour/ProductTourSpotlightCoordinator.swift Implements spotlight flow + tracking
firefox-ios/Client/Ecosia/UI/ProductTour/BrowserViewController+WelcomeTransition.swift Adds welcome → browser toolbar animation
firefox-ios/Client/Ecosia/UI/ProductTour/BrowserViewController+ProductTourSpotlight.swift Integrates spotlight coordinator into BVC
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTourTransparent.swift Removes legacy welcome tour UI
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTourRow.swift Removes legacy welcome tour UI
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTourProfit.swift Removes legacy welcome tour UI
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTourGreen.swift Removes legacy welcome tour UI
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTourAction.swift Removes legacy welcome tour UI
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTour.swift Removes legacy welcome tour controller
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTour.Step.swift Removes legacy tour step model
firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeNavigation.swift Removes legacy onboarding navigation
firefox-ios/Client/Ecosia/UI/Onboarding/Welcome.swift Removes legacy welcome screen
firefox-ios/Client/Ecosia/UI/NTP/Logo/NTPLogoCell.swift Uses new Ecosia a11y IDs
firefox-ios/Client/Ecosia/UI/NTP/Header/NTPHeaderViewModel.swift Hides header during tour when logged out
firefox-ios/Client/Ecosia/UI/NTP/FirstSearch/SearchSuggestionFlowLayout.swift Adds pill flow layout
firefox-ios/Client/Ecosia/UI/NTP/FirstSearch/NTPFirstSearchViewModel.swift Adds first-search card VM + analytics
firefox-ios/Client/Ecosia/UI/NTP/FirstSearch/NTPFirstSearchView.swift Adds SwiftUI first-search card view
firefox-ios/Client/Ecosia/UI/NTP/FirstSearch/NTPFirstSearchCell.swift Adds UIKit cell hosting SwiftUI
firefox-ios/Client/Ecosia/UI/NTP/FirstSearch/LocalizedSearchSuggestions.swift Adds locale-based query suggestions
firefox-ios/Client/Ecosia/UI/NTP/CircleButton.swift Uses new Ecosia a11y IDs
firefox-ios/Client/Ecosia/UI/LaunchScreen/EcosiaLaunchScreenView.swift Simplifies nib loading
firefox-ios/Client/Ecosia/UI/LaunchScreen/EcosiaLaunchScreen.xib Launch screen layout/tooling update
firefox-ios/Client/Ecosia/UI/EcosiaFindInPageBar.swift Uses new Ecosia a11y IDs
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/tour/tourSearch.imageset/Contents.json Removes obsolete onboarding assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/tour/tourGreen.imageset/Contents.json Removes obsolete onboarding assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/tour/tour4.imageset/Contents.json Removes obsolete onboarding assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/tour/tour2.imageset/Contents.json Removes obsolete onboarding assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/tour/tour1.imageset/Contents.json Removes obsolete onboarding assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/tour/Contents.json Removes obsolete onboarding assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/spotlightPlanetProfits.imageset/Contents.json Adds spotlight image assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/spotlightCleanEnergy.imageset/Contents.json Adds spotlight image assets
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/plantedSeedling.imageset/Contents.json Updates planted seedling asset filenames
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/openLink.imageset/tab-open.pdf Adds open-link icon asset
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/openLink.imageset/Contents.json Updates open-link asset registration
firefox-ios/Client/Ecosia/UI/Ecosia.xcassets/onboardingWaves.imageset/Contents.json Removes obsolete onboarding asset config
firefox-ios/Client/Ecosia/Settings/EcosiaDebugSettings.swift Adds onboarding reset + Unleash reset setting
firefox-ios/Client/Ecosia/Frontend/Home/EcosiaHomepageSectionType.swift Adds first-search section + product-tour filtering
firefox-ios/Client/Ecosia/Extensions/Task+Sleep.swift Adds Task sleep helper (Client target)
firefox-ios/Client/Ecosia/Extensions/HomepageViewController+Ecosia.swift Handles first-search VM delegate action
firefox-ios/Client/Ecosia/Extensions/BrowserViewController+EcosiaNavigationHandling.swift Adds navigation completion hooks for tour
firefox-ios/Client/Ecosia/Extensions/AppSettingsTableViewController+Ecosia.swift Registers new debug settings
firefox-ios/Client/Ecosia/Account/Auth/EcosiaAuth.swift Adds shared welcome sign-in entry point
firefox-ios/Client/Coordinators/Scene/SceneCoordinator.swift Adds welcome transition + sign-in handling
firefox-ios/Client/Coordinators/Launch/LaunchCoordinator.swift Presents new welcome + sign-in callback
firefox-ios/Client/Coordinators/Browser/BrowserCoordinator.swift Adds welcome transition + sign-in handling
firefox-ios/Client/Assets/Images.xcassets/ecosiaHomeHeaderLogoText.imageset/ecosia-logo.pdf Updates header logo asset
firefox-ios/Client/Assets/Images.xcassets/ecosiaHomeHeaderLogoText.imageset/ecosia-logo-dark.pdf Updates header logo asset
firefox-ios/Client/Assets/Images.xcassets/ecosiaHomeHeaderLogoText.imageset/Contents.json Updates header logo asset mapping
firefox-ios/Client/Application/AppDelegate.swift Adds feature flag init dependency + signals event
firefox-ios/Client/Application/AccessibilityIdentifiers.swift Removes Ecosia-specific IDs from Client
BrowserKit/Sources/Common/Theming/EcosiaThemeColourPalette.swift Extends theme semantic colors protocol
.github/workflows/merge_tests.yml Adjusts PR branch triggers
.circleci/config.yml Adjusts CircleCI branch filters

You can also share your feedback on Copilot code review. Take the survey.

Comment thread firefox-ios/Client/Ecosia/UI/NTP/FirstSearch/NTPFirstSearchCell.swift Outdated
Comment thread .github/workflows/merge_tests.yml
Comment thread .circleci/config.yml Outdated
Comment thread firefox-ios/Ecosia/UI/ProductTour/ProductTourManager.swift
Comment thread firefox-ios/Client/Ecosia/UI/NTP/FirstSearch/SearchSuggestionFlowLayout.swift Outdated
@lucaschifino
Copy link
Copy Markdown
Collaborator Author

@copilot open a new pull request to apply changes based on the comments in this thread.

Also please verify the failing EcosiaHomeViewModelTests.testNumberOfSection_withoutUpdatingData_has4Sections (the experiment condition to hide sections might be affecting it and potentially needs to be mocked).

Copy link
Copy Markdown

Copilot AI commented Mar 9, 2026

@lucaschifino I've opened a new pull request, #1078, to work on those changes. Once the pull request is ready, I'll request review from you.

* Initial plan

* Address PR review comments: fix NTPFirstSearchCell, remove dead code, fix CI configs, fix ProductTourManager, fix SearchSuggestionFlowLayout, update failing test

Co-authored-by: lucaschifino <19517744+lucaschifino@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: lucaschifino <19517744+lucaschifino@users.noreply.github.com>
// MARK: Number of sections

func testNumberOfSection_withoutUpdatingData_has4Sections() {
func testNumberOfSection_withoutUpdatingData_has5Sections() {
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apparently the "flaky" tests were actually right 🤷

It seems we were not including the new header on the tests. Probably an issue since we removed the feature flag condition from that?

Anyway should be fixed by this 👍

@lucaschifino lucaschifino requested a review from a team March 9, 2026 17:25
@lucaschifino
Copy link
Copy Markdown
Collaborator Author

@ecosia/ios Can I get a last sanity check review on the big feature branch?

All sub-PRs for this were already reviewed, so this does not need to be very thorough. The unreviewed stuff will be rebases, and QA and CI fixes.

Copy link
Copy Markdown
Member

@d4r1091 d4r1091 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fact that we reviewed most of the code already, worked indeed in speeding up this one. 🙏 👏 🚀.
Can't wait to have it released!

@lucaschifino lucaschifino merged commit b7cd29a into main Mar 10, 2026
3 checks passed
@lucaschifino lucaschifino deleted the ls-mob-3544-onboarding-product-tour branch March 10, 2026 14:11
d4r1091 pushed a commit that referenced this pull request Mar 11, 2026
* [MOB-3897] Welcome screen for product tour (#979)

* [MOB-3897] Create WelcomeView using SwiftUI and replace old Welcome

* [MOB-3897] Cleanup WelcomeTour classes and assets

* [MOB-3897] Fix video player

* [MOB-3897] Animated transition from Launch Screen

* [MOB-3897] Add some todos

* [MOB-3897] Implement exit animation

* [MOB-3897] Animate browser toolbars after welcome screen

* [MOB-3897] Adjust logo color and animation

* [MOB-3897] Adjust video frame

* [MOB-3897] Simplify unnecessary extension

* [MOB-3897] Add experiment unleash flag

* [MOB-3897] Add fade transition to welcome screen

* [MOB-3897] Adjust toolbars animation

* [MOB-3897] Add analytics events

* [MOB-3897] Make sure onboarding gets presented on iPad

* [MOB-3897] Adjust spacings and offsets

* [MOB-3897] Use dynamic welcome text height

* [MOB-3897] Adjust top offset on iPad

* [MOB-3897] Add line break and adjust margin

* [MOB-3897] Match NTP background on fade transition dismissal

* [MOB-3897] Make sure initial logo matches launch screen

* [MOB-3897] Add gradients behind content for visibility

* [MOB-3897] Fix fade transition

* [MOB-3897] Move video player to separate file

* [MOB-3897] Wait for video to be ready and support reduced motion

* [MOB-3897] Use Task instead of Dispatch

* [MOB-3897] Fix AnalyticsSpyTests

* [MOB-3897] Add text strings

* [MOB-3897] Handle retriggering onAppear

* [MOB-3897] Fix tests mock

* [MOB-3897] Remove spy tests for now

* [MOB-3897] Add Ecosia comments

* [MOB-3897] Wait for feature flags before presenting welcome screen

* [MOB-3897] [MOB-3903] Do not show APN consent during experiment

* [MOB-3897] Move onboarding into Ecosia framework

* [MOB-3897] Fix MockWelcomeDelegate

* [MOB-3544] Fix rebase issues

* [MOB-3544] Adjust logo image asset

* [MOB-3544] Fix swiftlint

* [MOB-3544] Update Welcome background video and remove loop

* [MOB-3544] Fix swiftlint

* [MOB-3544] Temporarily deploy feature branch to Firebase

* [MOB-3544] Adjust welcome animation and remove unnecessary gradient

* [MOB-3544] Temporarily run merge tests on PRs to this feature branch

* [MOB-3900] Product tour first search NTP (#998)

* [MOB-3900] Implement ProductTourManager that controls NTP state

* [MOB-3900] Update product tour based on search

* [MOB-3900] Adjust queries cell UI

* [MOB-3900] Add localised search suggestions

* [MOB-3900] Fix and refactor flow layout using swift ui

* [MOB-3900] Extend localised search suggestions

* [MOB-3900] Adjust UI

* [MOB-3900] Handle actions

* [MOB-3900] Track analytics events

* [MOB-3900] Temporarily deploy on this branch

* [MOB-3900] Add localised strings

* [MOB-3900] Dynamically get width to compute rows

* [MOB-3900] Remove unnecessary height calculation

* [MOB-3900] Adjust TODO

* [MOB-3900] Improve search vertical event handling

* [MOB-3900] Move tour completion to webview did finish

* [MOB-3900] Revert CI deployment on feature branch

* [MOB-3900] Clean up code

* [MOB-3900] Implement ProductTourManagerTests

* [MOB-3900] Copilot review adjustments

* [MOB-3900] Use locale mapping for search suggestions

* [MOB-3900] Fix locale identifier

* [MOB-3900] Move whole cell to SwiftUI

* [MOB-3544] Send language region to first search suggestion analytics event

* [MOB-3544] Fix close button color

* [MOB-3544] [MOB-3900] Add highlight button state

* [MOB-3544] Create reusable EcosiaButtonStyle with highlight state

* [MOB-3544] Fix outlined pill button background

* [MOB-3904] Product Tour SERP Spotlight (#1061)

* [MOB-3904] Spotlight toast initial implementation

* [MOB-3904] Fix UnsafeRawPointer warning

* [MOB-3904] Update buttons config

* [MOB-3904] Clean up ProductTourSpotlightCoordinator

* [MOB-3904] Fix toast positioning above toolbar

* [MOB-3904] Animate toast transition between steps

* [MOB-3904] Handle toast gesture for dismissing

* [MOB-3904] Fix toast bottom positioning

* [MOB-3904] Fix Spotlight dismissal on URL bar interaction

* [MOB-3904] Add analytics to spotlight

* [MOB-3904] Reintroduce swiftpm Package.resolved

* [MOB-3904] Adjust before and after image

* [MOB-3904] Fix backgroundFeatured on dark theme

* [MOB-3904] Allow web view interaction clicks without dismissing spotlight

* [MOB-3904] Revert: dismiss spotlight on web view clicks

* [MOB-3904] Cleanup leftover

* [MOB-3904] Adjust animation to push out previous step

* [MOB-3904] Adjust enter and exit animations

* [MOB-3904] Fix coordinator retention

* [MOB-3904] Don't recreate spotlight on theme change

* [MOB-3904] Remove unused import

* [MOB-3904] Prevent retain cycle for bottomContentView

* [MOB-3904] [TO REVERT] Temporarily deploy to Firebase

* [MOB-3904] Add suffix to spotlight methods to indicate condition

* [MOB-3904] Revert "[MOB-3904] [TO REVERT] Temporarily deploy to Firebase"

This reverts commit 3f184cc.

* [MOB-3905] Product Tour tracking protection Spotlight (#1068)

* [MOB-3905] Refactor tour manager to use milestone and add new protection spotlight

* [MOB-3905] Open helpscout links on read more

* [MOB-3905] Refactor coordinator with configurations for reusability

* [MOB-3905] Add read more button icon

* [MOB-3905] Right align buttons

* [MOB-3905] [TO REVERT] Temporarily deploy to Firebase

* [MOB-3905] Rename navigation handling methods

* [MOB-3905] Add product tour state condition to spotlight setup

* [MOB-3905] Rename Onboarding folder to ProductTour

* [MOB-3905] Test ProductTourSpotlightCoordinator

* [MOB-3905] Revert "[MOB-3905] [TO REVERT] Temporarily deploy to Firebase"

This reverts commit 1c070af.

* [MOB-3544] Set max spotlight width and adjust image view ratio

* [MOB-3544] Fix pixel rounding shift during step transition

* [MOB-3544] Open spotlight url on safari web view instead of new tab

* [MOB-3544] Fix debug settings compilation errors and duplications

* [MOB-3544] Adjust spolight spacings and fonts

* [MOB-3544] Adjust spotlight width behaviour to be consistent

* [MOB-3544] Include gradient overlay behind spotlight

* [MOB-3544] Add onboarding product tour ab test context

* [MOB-3544] Use subhedline for buttons

* [MOB-4081] Product tour login flow (#1074)

* [MOB-4081] Add sign in button and trigger login flow

* [MOB-4081] Handle Account origin on login and use for product tour state

* [MOB-4081] Update tests

* [MOB-4081] Treat new account if created on the same day

* [MOB-4081] Center experiment condition on ProductTourManager

* [MOB-4081] React NTP based on tour login state

* [MOB-4081] Add state info to debug setting

* [MOB-4081] Adjust button icon and add bottom gradient

* [MOB-4081] Remove done TODO

* [MOB-4081] Hold NTP state while sign in flow is unresolved

* [MOB-4081] Differentiate welcome click actions

* [MOB-4081] Fix sign in flow active on early exits

* [MOB-4081] Make onSignIn non-optional

* [MOB-4081] Introduce sign in flow events

* [MOB-4081] Adjust comment

* [MOB-4081] Reuse welcome sign in logic

* [MOB-4081] Make custom claim namespace clearer

* [MOB-3544] Include experiment check on debug setting

* [MOB-3902] Remove refresh seed on initialize state provider (#1077)

* [MOB-3544] Address onboarding product tour PR review feedback (#1078)

* Initial plan

* Address PR review comments: fix NTPFirstSearchCell, remove dead code, fix CI configs, fix ProductTourManager, fix SearchSuggestionFlowLayout, update failing test

Co-authored-by: lucaschifino <19517744+lucaschifino@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: lucaschifino <19517744+lucaschifino@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: lucaschifino <19517744+lucaschifino@users.noreply.github.com>
# Conflicts:
#	firefox-ios/Client.xcodeproj/project.pbxproj
#	firefox-ios/Client/Application/AccessibilityIdentifiers.swift
#	firefox-ios/Client/Application/AppDelegate.swift
#	firefox-ios/Client/Coordinators/Browser/BrowserCoordinator.swift
#	firefox-ios/Client/Coordinators/Launch/LaunchCoordinator.swift
#	firefox-ios/Client/Ecosia/Extensions/AppSettingsTableViewController+Ecosia.swift
#	firefox-ios/Client/Ecosia/Frontend/Home/EcosiaHomepageSectionType.swift
#	firefox-ios/Client/Ecosia/Settings/EcosiaDebugSettings.swift
#	firefox-ios/Client/Ecosia/UI/LaunchScreen/EcosiaLaunchScreenView.swift
#	firefox-ios/Client/Ecosia/UI/Onboarding/Welcome.swift
#	firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTour.swift
#	firefox-ios/Client/Ecosia/UI/Onboarding/WelcomeTourAction.swift
#	firefox-ios/Client/Frontend/Browser/BrowserViewController/Extensions/BrowserViewController+WebViewDelegates.swift
#	firefox-ios/Client/Frontend/Browser/BrowserViewController/Views/BrowserViewController.swift
#	firefox-ios/Client/Frontend/Home/HomepageViewModel.swift
#	firefox-ios/Client/Frontend/Home/LegacyHomepageViewController.swift
#	firefox-ios/Client/Frontend/Toolbar+URLBar/TabToolbar.swift
#	firefox-ios/Client/Frontend/Toolbar+URLBar/TabToolbarHelper.swift
#	firefox-ios/Ecosia/Account/Auth/EcosiaAuthenticationService.swift
#	firefox-ios/Ecosia/Braze/APNConsent.swift
#	firefox-ios/Ecosia/Core/MMP/MMP.swift
#	firefox-ios/EcosiaTests/EcosiaHomeViewModelTests.swift
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.

4 participants