diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index 2feaac0dcb..76df6a0bdf 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: afa7bbd9f816e1b8da0c3e1cd76ba832456e7343 -main: 8d0f55f3e63334ef6a855d12d756954c7ddb97aa -release: d555441a1bdc6cdc541da1abf6559036d47f1e79 +beta: a9be04542af0c729491bdef17f24b69247428a6e +main: 45bf222c56da5257156206bc795b94dcce003b0c +release: 65b8640a153e742c52c53bda2d4da9e4f18bc1d8 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index adb8187b6a..4d1bebe48f 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,6 +1,6 @@ -beta: afa7bbd9f816e1b8da0c3e1cd76ba832456e7343 -esr115: d73f2472d004fcab65b9f763841d0c9c70644193 +beta: a9be04542af0c729491bdef17f24b69247428a6e +esr115: f03c95a110ff10d7507e444bd0cd5c0d9dd5da1d esr128: ed38f9209e39bd7ad247c81a7c20c99c874e0a62 -esr140: 9d9a6875621471d6c8283036d9c2d2c530617dc6 -main: 8d0f55f3e63334ef6a855d12d756954c7ddb97aa -release: d555441a1bdc6cdc541da1abf6559036d47f1e79 +esr140: 69d540cec743a9d0a6cd4cb063f7e6957b88047b +main: 45bf222c56da5257156206bc795b94dcce003b0c +release: 65b8640a153e742c52c53bda2d4da9e4f18bc1d8 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml index 9cf6a56a26..0b485e3bd3 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml @@ -2028,24 +2028,6 @@ password-autocomplete: type: boolean description: Enable direct migration? -# Experiment for different Relay UI treatments. Variations at: -# https://www.figma.com/design/gnyElr1Wtce3RdQT54y8kS/Relay-%26-Firefox-Integration?node-id=316-2024&node-type=canvas&t=A3iAuevSTtwXeFxb-0 -email-autocomplete-relay: - description: Relay UI for email fields. - exposureDescription: Exposure is sent each time a user sees the Relay autocomplete dropdown item - hasExposure: true - owner: lcrouch@mozilla.com - variables: - firstOfferVersion: - type: string - description: Which Relay UI treatment to show - fallbackPref: signon.firefoxRelay.firstOfferVersionFallback - showToAllBrowsers: - type: boolean - setPref: - branch: user - pref: signon.firefoxRelay.showToAllBrowsers - description: Whether to show Relay to Firefox users who are NOT signed into FXA. # This feature flag mirrors the one used for ios # https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml @@ -2182,6 +2164,47 @@ featureCallout: path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" variables: {} +privacySecurityMessaging: + description: Supports experimental messaging related to privacy and security. + owner: omc-core@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent when a milestone doorhanger message is seen or when the + milestone section of the protections popup is seen. + variables: + blockingMilestoneMessagingEnabled: + type: boolean + setPref: + branch: user + pref: browser.contentblocking.cfr-milestone.enabled + description: >- + Enable messaging related to content blocking milestones. Setting to + false disables both the milestone doorhanger and the milestone section + of the protections popup. + blockingMilestones: + type: string + setPref: + branch: user + pref: browser.contentblocking.cfr-milestone.milestones + description: >- + A JSON array of milestones to trigger messaging for. Milestones are + defined as the number of times a user has had tracking content blocked, + e.g., [1000, 5000, 10000...]. See the pref for default values. The list + should typically have 7 entries, because the built-in milestone messages + are allowed to show 7 times. If you want more or fewer milestones, you + should override the milestone messages by also including a messaging + feature in your experiment, so you can include a replacement message + with a frequency cap matching the number of milestones. Use a feature + like fxms-message-* to do that. + blockingMilestoneUpdateInterval: + type: int + setPref: + branch: user + pref: browser.contentblocking.cfr-milestone.update-interval + description: >- + How often (in milliseconds) we check if the user is eligible for seeing + a milestone doorhanger. 24 hours by default. + fullPageTranslation: description: This feature opens a popup panel to offer to translate a page. owner: gtatum@mozilla.com diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v150.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v150.0.0/experimenter.yaml index 9cf6a56a26..0b485e3bd3 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/v150.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v150.0.0/experimenter.yaml @@ -2028,24 +2028,6 @@ password-autocomplete: type: boolean description: Enable direct migration? -# Experiment for different Relay UI treatments. Variations at: -# https://www.figma.com/design/gnyElr1Wtce3RdQT54y8kS/Relay-%26-Firefox-Integration?node-id=316-2024&node-type=canvas&t=A3iAuevSTtwXeFxb-0 -email-autocomplete-relay: - description: Relay UI for email fields. - exposureDescription: Exposure is sent each time a user sees the Relay autocomplete dropdown item - hasExposure: true - owner: lcrouch@mozilla.com - variables: - firstOfferVersion: - type: string - description: Which Relay UI treatment to show - fallbackPref: signon.firefoxRelay.firstOfferVersionFallback - showToAllBrowsers: - type: boolean - setPref: - branch: user - pref: signon.firefoxRelay.showToAllBrowsers - description: Whether to show Relay to Firefox users who are NOT signed into FXA. # This feature flag mirrors the one used for ios # https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml @@ -2182,6 +2164,47 @@ featureCallout: path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" variables: {} +privacySecurityMessaging: + description: Supports experimental messaging related to privacy and security. + owner: omc-core@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent when a milestone doorhanger message is seen or when the + milestone section of the protections popup is seen. + variables: + blockingMilestoneMessagingEnabled: + type: boolean + setPref: + branch: user + pref: browser.contentblocking.cfr-milestone.enabled + description: >- + Enable messaging related to content blocking milestones. Setting to + false disables both the milestone doorhanger and the milestone section + of the protections popup. + blockingMilestones: + type: string + setPref: + branch: user + pref: browser.contentblocking.cfr-milestone.milestones + description: >- + A JSON array of milestones to trigger messaging for. Milestones are + defined as the number of times a user has had tracking content blocked, + e.g., [1000, 5000, 10000...]. See the pref for default values. The list + should typically have 7 entries, because the built-in milestone messages + are allowed to show 7 times. If you want more or fewer milestones, you + should override the milestone messages by also including a messaging + feature in your experiment, so you can include a replacement message + with a frequency cap matching the number of milestones. Use a feature + like fxms-message-* to do that. + blockingMilestoneUpdateInterval: + type: int + setPref: + branch: user + pref: browser.contentblocking.cfr-milestone.update-interval + description: >- + How often (in milliseconds) we check if the user is eligible for seeing + a milestone doorhanger. 24 hours by default. + fullPageTranslation: description: This feature opens a popup panel to offer to translate a page. owner: gtatum@mozilla.com diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 687d0f96c1..248d7079a0 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -79,7 +79,8 @@ firefox-v147.3: 33730a472dd94e2638307078cf2ffd124d12db21 firefox-v147.4: 1fe8bc1836b4326ec15207c61b1363fe83f53a92 firefox-v147.5: 419dce5232746280706aeb1a777f95b3d76f84ff firefox-v148.0: beacfdda9beb2af76455521594ebfe2fb5b53824 -main: a63f70cc656cd807db9a30bb26d35dfa67a81e27 +firefox-v148.1: 981a01118303b8707b432e1d73040e8fd1c9cf8a +main: 3e0a361bc0eb924792d551e601990d7f98b25636 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -128,7 +129,8 @@ release/v147.3: 9c2728a4bba87405151a16d0a63eccf3c1f29163 release/v147.4: 95fef469924d431d1a00ce04647eecccbf213812 release/v147.5: bf74916de8790bdc7c88531e15ab17d6ec56b04f release/v148.0: 090b4555b4c20a97bbfc85fbf02440bcfd406610 -release/v148.1: 981a01118303b8707b432e1d73040e8fd1c9cf8a +release/v148.1: 96b1d7dd87685b82b8e2a0c165fc60c3b4d9cc8f +release/v148.2: a63f70cc656cd807db9a30bb26d35dfa67a81e27 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 v117.2: 5cc367aa8857199cd8a54d53e8faf6696c5614c3 diff --git a/experimenter/experimenter/features/manifests/ios/v148.1.1/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v148.1.1/beta.fml.yaml new file mode 100644 index 0000000000..1ab638a76f --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.1.1/beta.fml.yaml @@ -0,0 +1,1685 @@ +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: +- beta +features: + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: If true, we will allow user to edit the address + type: Boolean + default: false + address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + variables: + status: + description: If true, we will show the new address bar menu entry + type: Boolean + default: true + ads-client: + description: This property defines if the rust ads client is enabled + variables: + status: + description: If true, we will enable the rust ads client + type: Boolean + default: false + app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + variables: + funIconsEnabled: + description: | + Controls whether users see the fun icons in the app icon settings. + type: Boolean + default: true + appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + variables: + status: + description: If true, we will show the new appearance menu entry + type: Boolean + default: true + apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + variables: + enabled: + description: | + Enables the apple summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + variables: + enabled: + description: | + Variable description + type: Boolean + default: false + default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + variables: + enabled: + description: | + If true, page zoom settings and default zoom feature are shown + type: Boolean + default: true + download-live-activities-feature: + description: | + Download Live Activities Feature + variables: + enabled: + description: | + If true, the download live activities feature is enabled + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: If true, enable Felt Deletion part of Felt Privacy + type: Boolean + default: false + simplified-ui-enabled: + description: If true, enable simplified UI part of Felt Privacy + type: Boolean + default: true + firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + type: Map + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + variables: + enabled: + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings + type: Boolean + default: true + homepage-rebuild-feature: + description: | + This feature is for managing the roll out of the Homepage rebuild feature + variables: + enabled: + description: | + If true, enables the feature + type: Boolean + default: true + homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + variables: + bookmarks-section-default: + description: | + If true, enables the bookmarks homepage section by default + type: Boolean + default: false + jbi-section-default: + description: | + If true, enables the jump back in homepage section by default + type: Boolean + default: false + search-bar: + description: | + If true, enables the search bar feature on homepage for users. + type: Boolean + default: false + stories-scroll-direction: + description: | + Controls the layout direction for stories on the homepage. + type: ScrollDirection + default: baseline + hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + variables: + enabled: + description: | + Enables the hosted summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + menu-refactor-feature: + description: | + Controls the menu refactor feature + variables: + enabled: + description: | + Controls which menu users will see + type: Boolean + default: true + menu-default-browser-banner: + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + type: Boolean + default: true + menu-redesign-hint: + description: | + If true, enables the menu contextual hint for menu redesign. + type: Boolean + default: true + messaging: + description: | + The in-app messaging system + documentation: + - name: User documentation + url: https://experimenter.info/messaging/mobile-messaging + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed + variables: + actions: + description: A growable map of action URLs. + type: Map + default: + OPEN_SETTINGS: ://deep-link?url=settings/general + OPEN_SETTINGS_NEW_TAB: ://deep-link?url=settings/newtab + OPEN_SETTINGS_HOMESCREEN: ://deep-link?url=settings/homepage + OPEN_SETTINGS_WALLPAPERS: ://deep-link?url=settings/wallpaper + OPEN_SETTINGS_EMAIL: ://deep-link?url=settings/mailto + OPEN_SETTINGS_SEARCH_ENGINE: ://deep-link?url=settings/search + OPEN_SETTINGS_PRIVACY: ://deep-link?url=settings/clear-private-data + OPEN_SETTINGS_FXA: ://deep-link?url=settings/fxa + OPEN_SETTINGS_THEME: ://deep-link?url=settings/theme + OPEN_SETTINGS_APP_ICON: ://deep-link?url=settings/app-icon + OPEN_URL: ://open-url + VIEW_BOOKMARKS: ://deep-link?url=homepanel/bookmarks + VIEW_TOP_SITES: ://deep-link?url=homepanel/top-sites + VIEW_READING_LIST: ://deep-link?url=homepanel/reading-list + VIEW_HISTORY: ://deep-link?url=homepanel/history + VIEW_DOWNLOADS: ://deep-link?url=homepanel/downloads + ENABLE_PRIVATE_BROWSING: ://deep-link?url=homepanel/new-private-tab + OPEN_NEW_TAB: ://deep-link?url=homepanel/new-tab + MAKE_DEFAULT_BROWSER: ://deep-link?url=default-browser/system-settings + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: ://deep-link?url=default-browser/tutorial + OPEN_SHARE_SHEET: ://share-sheet + string-alias: ActionName + message-under-experiment: + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + type: Option + default: null + messages: + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + type: Map + default: + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: | + A map of styles to configure message appearance. + type: Map + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: ('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale) + USER_EN_SPEAKER: '''en'' in locale' + USER_ES_SPEAKER: '''es'' in locale' + USER_DE_SPEAKER: '''de'' in locale' + USER_FR_SPEAKER: '''fr'' in locale' + DEVICE_ANDROID: os == 'Android' + DEVICE_IOS: os == 'iOS' + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: '''app_cycle.foreground''|eventLastSeen(''Days'', 1) > 1' + AFTER_THREE_LAUNCHES_THIS_WEEK: '''app_cycle.foreground''|eventSum(''Weeks'', 1, 0) >= 3' + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: os_version|versionCompare('14.!') >= 0 + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: '''homepage_viewed''|eventSum(''Years'', 4, 0) >= 2' + ON_FOURTH_LAUNCH_THIS_YEAR: '''app_cycle.foreground''|eventSum(''Years'', 1, 0) > 3' + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: '{experiment}' + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + no_internet_connection_error: + description: | + This feature is for managing the roll out of the no interet connection native error page feature + type: Boolean + default: false + other-error-pages: + description: | + This feature is for managing the roll out of other native error pages + type: Boolean + default: false + onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + variables: + cards: + description: | + The list of available cards for onboarding. + type: Map + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + welcome-modern: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v140 + body: Onboarding/Onboarding.Modern.Welcome.Description.v140 + image: trackers + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatementA.v140 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v140 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + sign-to-sync-modern: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v140 + body: Onboarding/Onboarding.Modern.Sync.Description.v140 + image: sync-with-icons + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v140 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v140 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-toolbar-modern: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v140 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-theme-modern: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Customization.Theme.Title.v143 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + welcome-modern-japan: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v145 + body: Onboarding/Onboarding.Modern.Welcome.Description.v145 + image: trackers-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatmentA.v145 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v145 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + sign-to-sync-modern-japan: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v145 + body: Onboarding/Onboarding.Modern.Sync.Description.v145 + image: sync-with-icons-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v145 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v145 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-toolbar-modern-japan: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Toolbar.Description.v145 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v145 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v145 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-theme-modern-japan: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.Customization.Theme.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Theme.Description.v145 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Theme.Automatic.v145 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.Customization.Theme.Light.v145 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.Customization.Theme.Dark.v145 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + welcome-brand-refresh: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.TitleV3.v149 + body: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Description.v148 + image: trackers-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.ActionTreatmentA.v148 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Skip.v148 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-toolbar-brand-refresh: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Description.v148 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-theme-brand-refresh: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Description.v148 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Automatic.v148 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Light.v148 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Dark.v148 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + sign-to-sync-brand-refresh: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Description.v148 + image: sync-with-icons-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.SignIn.Action.v148 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Skip.Action.v148 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + string-alias: NimbusOnboardingCardKey + conditions: + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + string-alias: ConditionName + dismissable: + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + type: Boolean + default: true + enable-modern-ui: + description: | + Toggle between legacy (false) and modern (true) UI variants. + type: Boolean + default: false + should-use-brand-refresh-configuration: + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + type: Boolean + default: false + should-use-japan-configuration: + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. + type: Boolean + default: false + recent-searches-feature: + description: | + Enables recent searches. + variables: + enabled: + description: | + Whether or not to enable recent searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: false + search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + variables: + enabled: + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + type: Boolean + default: false + isTreatmentA: + description: | + If true, shares the treatment A text. If false, shares the treatment B text. + type: Boolean + default: true + snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + variables: + enabled: + description: If true the SnapKit removal refactor version will be used + type: Boolean + default: false + splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + maximum_duration_ms: + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: If this is true, then on each page load adds a new item to Spotlight. + type: Boolean + default: false + icon-type: + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + type: Option + default: letter + keep-for-days: + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + type: Option + default: null + searchable-content: + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. + type: Option + default: text-excerpt + start-at-home-feature: + description: This feature is for experimenting with opening screen + variables: + setting: + description: This property provides a default setting for the start at home feature + type: StartAtHome + default: afterFourHours + summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + variables: + enabled: + description: | + Enables app attest authentication for the summarizer. + type: Boolean + default: true + summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + variables: + enabled: + description: | + Whether the feature is enabled or not. + type: Boolean + default: false + supportDeviceLanguage: + description: | + Whether to support the device language for summarization. + type: Boolean + default: false + supportWebsiteLanguage: + description: | + Whether to support the website language for summarization. + type: Boolean + default: false + supportedLocales: + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). + type: List + default: + - en + - fr + - es + - de + - pt + tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + variables: + enabled: + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll + type: Boolean + default: false + tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + variables: + enabled: + description: | + If true, enables the tab tray UI experiments. + type: Boolean + default: true + translucency: + description: | + If true, enables translucency for tab tray actions at the bottom. + type: Boolean + default: false + toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: true + layout: + description: | + The type of layout of the toolbars. + type: Option + default: version1 + middle_button_customization: + description: | + Enables the middle button customization for navigation toolbar. + type: Boolean + default: true + minimal_address_bar: + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + type: Boolean + default: true + navigation_hint: + description: | + If true, enables the navigation contextual hint. + type: Boolean + default: true + one_tap_new_tab: + description: | + If true, enables the one tap new tab feature for users. + type: Boolean + default: true + swiping_tabs: + description: | + Enables swipe gestures to switch between browser tabs. + type: Boolean + default: true + toolbar_update_hint: + description: | + If true, enables the toolbar update contextual hint. + type: Boolean + default: false + translucency: + description: | + Enables translucency for toolbars. + type: Boolean + default: true + translucency-refactor: + description: | + Enables translucency refactor for toolbars. + type: Boolean + default: false + unified_search: + description: | + Enables the unified search feature. + type: Boolean + default: false + tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + variables: + status: + description: | + Enables the feature + type: Boolean + default: true + tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + variables: + content-option: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + type: TermsOfUsePromptContentOption + default: value-0 + enable-drag-to-dismiss: + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + type: Boolean + default: true + max-reminders-count: + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + type: Int + default: 2 + status: + description: | + Enables the feature + type: Boolean + default: false + tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + variables: + enabled: + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not + type: Boolean + default: true + translations-feature: + description: | + Enables translations feature. + variables: + enabled: + description: | + Whether or not to enable translations feature. + type: Boolean + default: false + trending-searches-feature: + description: | + Enables trending searches. + variables: + enabled: + description: | + Whether or not to enable trending searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + IconType: + description: The icon that will be added to the item in the device's search engine. + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: | + For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS. + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: | + The identifiers for the different images available for cards in onboarding + variants: + customize-firefox: + description: | + Corresponding to the fox window image + notifications: + description: | + Corresponding to the notifications image + notifications-ctd: + description: | + Corresponding to the notifications image for CTD + search-widget: + description: | + Corresponding to the fox search widget image + set-default-steps: + description: | + Corresponding to the set to default steps image + set-to-dock: + description: | + Corresponding to the set to dock image + sync-devices: + description: | + Corresponding to the sync-devices image + sync-devices-ctd: + description: | + Corresponding to the sync image for CTD + sync-with-icons: + description: | + Corresponding to the sync-devices image + sync-with-icons-brand-refresh: + description: | + Corresponding to the sync-with-icons image for Brand Refresh variant (different from Japan variant) + sync-with-icons-japan: + description: | + Corresponding to the sync-with-icons image for Japan variant + themeing: + description: | + Corresponding to the fox world image + toolbar: + description: | + Corresponding to the fox world image + trackers: + description: | + Corresponding to the trackers image + trackers-brand-refresh: + description: | + Corresponding to the trackers image for Brand Refresh variant (does not contain Japanese text, different from Japan variant) + trackers-japan: + description: | + Corresponding to the trackers image for Japan variant (contains Japanese text) + welcome-ctd: + description: | + Corresponding to the welcome image for CTD + welcome-globe: + description: | + Corresponding to the fox world image + NimbusOnboardingMultipleChoiceButtonImage: + description: | + The identifiers for the different images available for multiple choice buttons in onboarding + variants: + theme-dark: + description: | + Corresponding to the dark theme + theme-dark-japan: + description: | + Corresponding to the dark theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-light: + description: | + Corresponding to the light theme + theme-light-japan: + description: | + Corresponding to the light theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-system: + description: | + Corresponding to the system theme + theme-system-japan: + description: | + Corresponding to the system theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-bottom: + description: | + Corresponding to the toolbar on the bottom + toolbar-bottom-japan: + description: | + Corresponding to the toolbar on the bottom image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-top: + description: | + Corresponding to the toolbar on top + toolbar-top-japan: + description: | + Corresponding to the toolbar on top image for Japan variant. Also used by Brand Refresh variant as the images are identical. + OnboardingActions: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + end-onboarding: + description: | + Will end the onboarding on a set card + forward-one-card: + description: | + Will take the user to the next card + forward-three-card: + description: | + Will take the user to the next card + forward-two-card: + description: | + Will take the user to the next card + open-instructions-popup: + description: | + Will open up a popup with instructions for something + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + read-privacy-policy: + description: | + Will open a webview where the user can read the privacy policy + request-notifications: + description: | + Will request to allow notifications from the user + set-default-browser: + description: | + Will send the user to settings to set Firefox as their default browser and advance to next card + sync-sign-in: + description: | + Will take the user to the sync sign in flow + OnboardingCardType: + description: | + The identifiers for the different types of onboarding cards. + variants: + basic: + description: | + Corresponding to basic info onboarding cards + multiple-choice: + description: | + Corresponding to onboarding cards with multiple choice buttons + OnboardingInstructionsPopupActions: + description: | + The identifiers for the different actions available for the insturction card in onboarding + variants: + dismiss: + description: | + Will dismiss the popup + dismiss-and-next-card: + description: | + Will dismiss the popup and move to the next card + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + OnboardingMultipleChoiceAction: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + theme-dark: + description: | + Will will set the theme to dark mode + theme-light: + description: | + Will set the theme to light mode + theme-system-default: + description: | + Will set the theme to use the system theme + toolbar-bottom: + description: | + Will set the toolbar on the bottom + toolbar-top: + description: | + Will set the toolbar on the top + OnboardingType: + description: | + The identifiers for the different types of onboarding cards. + variants: + fresh-install: + description: | + Corresponding to onboarding cards that are for new users + upgrade: + description: | + Corresponding to onboarding cards that are for users who have updated + OnboardingVariant: + description: | + Which UI style this onboarding card is designed for. + variants: + brandRefresh: + description: Use the brand refresh onboarding UI with v148 strings. + japan: + description: Use the Japan-specific onboarding UI with localized assets. + legacy: + description: Use the existing (legacy) onboarding UI. + modern: + description: Use the new (modern) onboarding UI. + PageContent: + description: The page content that will be added as an item in the device's search engine. + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + ScrollDirection: + description: The layout direction for stories on the homepage. + variants: + baseline: + description: Uses the current default stories layout. + horizontal: + description: Shows stories in a horizontal layout. + vertical: + description: Shows stories in a vertical layout. + StartAtHome: + description: The option for what screen to open the app to + variants: + afterFourHours: + description: Starts the app at the homepage after four hours of inactivity, otherwise starts the app at the most recently viewed tab. + always: + description: Starts the app at the homepage. + disabled: + description: Starts the app at the most recently viewed tab. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TermsOfUsePromptContentOption: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + variants: + value-0: + description: | + Uses the current defaults: + - Title: "We've got an update" + - Learn more: "Please take a moment to review and accept. Learn more." + value-1: + description: | + Uses the following copy: + - Title: "Terms of Use" + - Learn more: "You can learn more here." + value-2: + description: | + Uses the following copy: + - Title: "A note from Firefox" + - Learn more: "You can learn more here." + ToolbarLayoutType: + description: The type of toolbar layout. + variants: + version1: + description: Shows the add new tab, menu and tabs button in the navigation toolbar. The share button is displayed in the address toolbar. + version2: + description: Like version1 but the menu and tabs buttons are inverted. +objects: + AwesomeBar: + description: A configuration option for the awesome bar. Part of the `search` feature. + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: | + This property defines whether or not the feature is enabled, and the position of the search bar + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: Search in the open tab's text content when typing. + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: | + An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action. + fields: + action: + description: | + The name of a deeplink URL to be opened if the button is clicked. + type: Option + default: null + action-params: + description: Query parameters appended to the deeplink action URL + type: Map + default: {} + button-label: + description: | + The text on the button. If no text is present, the whole message is clickable. + type: Option + default: null + except-if-any: + description: | + A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible. + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: null + is-control: + description: Indicates if this message is the control message, if true shouldn't be displayed + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: null + style: + description: | + The style as described in a `StyleData` from the styles table. + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: '' + title: + description: The title text displayed to the user + type: Option + default: null + trigger-if-all: + description: | + A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown. + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: | + Attributes relating to microsurvey messaging. + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: null + NimbusOnboardingButton: + description: | + A group of properties describing the attributes of a card. + fields: + action: + description: | + The action the button should take. The default for this will be "forward-one-card" + type: OnboardingActions + default: forward-one-card + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingButtons: + description: | + A set of buttons for the card. There can be up to two, but there must be at least one. + fields: + primary: + description: | + The primary button for the card. This must exist. + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: | + A secondary, optional, button for the card. + type: Option + default: null + NimbusOnboardingCardData: + description: | + A group of properties describing the attributes of a card. + fields: + body: + description: | + The body text dispalyed on the card, in less prominent text. This should never be defaulted. + type: Text + default: '' + buttons: + description: | + The set of buttons associated with the card. + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: null + card-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingCardType + default: basic + disqualifiers: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`. + type: List + default: [] + image: + description: | + The image that should be dispalyed on the card. + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: | + The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information + type: Option + default: null + link: + description: | + The object describing the link button for a card. If left empty, the card will have no link. + type: Option + default: null + multiple-choice-buttons: + description: | + A list of multiple choice buttons that the card will display + type: List + default: [] + onboarding-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingType + default: fresh-install + order: + description: | + The place in the order where the card will be found. The feature layer will then sort the cards based on this field. + type: Int + default: 10 + prerequisites: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty. + type: List + default: [] + title: + description: | + The title displayed on the card, in prominent, bolded text. This should never be defaulted. + type: Text + default: '' + uiVariant: + description: | + If set, this card will only be shown in the specified UI variant. If null, it will appear in both legacy and modern UIs. + type: Option + default: null + NimbusOnboardingInstructionPopup: + description: | + The object outlining the content of the instruction card. + fields: + button-action: + description: | + The action the button should have. Default is `dismiss-and-next-card` + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: | + The title the button should have. This should never be defaulted. + type: Text + default: '' + instructions: + description: | + A list of instructions, either as free text, or as Text identifiers. + type: List + default: [] + title: + description: | + The text of the popup. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingLink: + description: | + A group of properties describing the attributes for the active link on a card + fields: + title: + description: | + The text of the link title. + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: | + The url that the link will lead to. + type: String + default: https://www.mozilla.org/privacy/firefox/ + NimbusOnboardingMultipleChoiceButton: + description: | + A group of properties describing the attributes of a multiple choice button on a card + fields: + action: + description: | + The action the button should take. The default for this will be "theme-system-default" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: | + The text of the button title. This should never be defaulted. + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + StyleData: + description: | + A group of properities (predominantly visual) to the describe style of the message. + fields: + max-display-count: + description: | + How many sessions will this message be shown to the user before it is expired. + type: Int + default: 5 + priority: + description: | + The importance of this message. 0 is not very important, 100 is very important. + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/ios/v148.1.1/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v148.1.1/developer.fml.yaml new file mode 100644 index 0000000000..baba0094bf --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.1.1/developer.fml.yaml @@ -0,0 +1,1695 @@ +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: +- developer +features: + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: If true, we will allow user to edit the address + type: Boolean + default: true + address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + variables: + status: + description: If true, we will show the new address bar menu entry + type: Boolean + default: true + ads-client: + description: This property defines if the rust ads client is enabled + variables: + status: + description: If true, we will enable the rust ads client + type: Boolean + default: true + app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + variables: + funIconsEnabled: + description: | + Controls whether users see the fun icons in the app icon settings. + type: Boolean + default: true + appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + variables: + status: + description: If true, we will show the new appearance menu entry + type: Boolean + default: true + apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + variables: + enabled: + description: | + Enables the apple summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + variables: + enabled: + description: | + Variable description + type: Boolean + default: false + default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + variables: + enabled: + description: | + If true, page zoom settings and default zoom feature are shown + type: Boolean + default: true + download-live-activities-feature: + description: | + Download Live Activities Feature + variables: + enabled: + description: | + If true, the download live activities feature is enabled + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: If true, enable Felt Deletion part of Felt Privacy + type: Boolean + default: false + simplified-ui-enabled: + description: If true, enable simplified UI part of Felt Privacy + type: Boolean + default: true + firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: true + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + type: Map + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. + type: Boolean + default: true + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + variables: + enabled: + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings + type: Boolean + default: true + homepage-rebuild-feature: + description: | + This feature is for managing the roll out of the Homepage rebuild feature + variables: + enabled: + description: | + If true, enables the feature + type: Boolean + default: true + homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + variables: + bookmarks-section-default: + description: | + If true, enables the bookmarks homepage section by default + type: Boolean + default: false + jbi-section-default: + description: | + If true, enables the jump back in homepage section by default + type: Boolean + default: false + search-bar: + description: | + If true, enables the search bar feature on homepage for users. + type: Boolean + default: false + stories-scroll-direction: + description: | + Controls the layout direction for stories on the homepage. + type: ScrollDirection + default: baseline + hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + variables: + enabled: + description: | + Enables the hosted summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + menu-refactor-feature: + description: | + Controls the menu refactor feature + variables: + enabled: + description: | + Controls which menu users will see + type: Boolean + default: true + menu-default-browser-banner: + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + type: Boolean + default: true + menu-redesign-hint: + description: | + If true, enables the menu contextual hint for menu redesign. + type: Boolean + default: true + messaging: + description: | + The in-app messaging system + documentation: + - name: User documentation + url: https://experimenter.info/messaging/mobile-messaging + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed + variables: + actions: + description: A growable map of action URLs. + type: Map + default: + OPEN_SETTINGS: ://deep-link?url=settings/general + OPEN_SETTINGS_NEW_TAB: ://deep-link?url=settings/newtab + OPEN_SETTINGS_HOMESCREEN: ://deep-link?url=settings/homepage + OPEN_SETTINGS_WALLPAPERS: ://deep-link?url=settings/wallpaper + OPEN_SETTINGS_EMAIL: ://deep-link?url=settings/mailto + OPEN_SETTINGS_SEARCH_ENGINE: ://deep-link?url=settings/search + OPEN_SETTINGS_PRIVACY: ://deep-link?url=settings/clear-private-data + OPEN_SETTINGS_FXA: ://deep-link?url=settings/fxa + OPEN_SETTINGS_THEME: ://deep-link?url=settings/theme + OPEN_SETTINGS_APP_ICON: ://deep-link?url=settings/app-icon + OPEN_URL: ://open-url + VIEW_BOOKMARKS: ://deep-link?url=homepanel/bookmarks + VIEW_TOP_SITES: ://deep-link?url=homepanel/top-sites + VIEW_READING_LIST: ://deep-link?url=homepanel/reading-list + VIEW_HISTORY: ://deep-link?url=homepanel/history + VIEW_DOWNLOADS: ://deep-link?url=homepanel/downloads + ENABLE_PRIVATE_BROWSING: ://deep-link?url=homepanel/new-private-tab + OPEN_NEW_TAB: ://deep-link?url=homepanel/new-tab + MAKE_DEFAULT_BROWSER: ://deep-link?url=default-browser/system-settings + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: ://deep-link?url=default-browser/tutorial + OPEN_SHARE_SHEET: ://share-sheet + string-alias: ActionName + message-under-experiment: + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + type: Option + default: null + messages: + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + type: Map + default: + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + survey-surface-message: + surface: survey + style: SURVEY + trigger-if-all: + - NEVER + text: ResearchSurface/Body.Text.v112 + button-label: ResearchSurface/PrimaryButton.Label.v112 + action: OPEN_URL + action-params: + url: https://www.macrumors.com + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: | + A map of styles to configure message appearance. + type: Map + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: ('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale) + USER_EN_SPEAKER: '''en'' in locale' + USER_ES_SPEAKER: '''es'' in locale' + USER_DE_SPEAKER: '''de'' in locale' + USER_FR_SPEAKER: '''fr'' in locale' + DEVICE_ANDROID: os == 'Android' + DEVICE_IOS: os == 'iOS' + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: '''app_cycle.foreground''|eventLastSeen(''Days'', 1) > 1' + AFTER_THREE_LAUNCHES_THIS_WEEK: '''app_cycle.foreground''|eventSum(''Weeks'', 1, 0) >= 3' + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: os_version|versionCompare('14.!') >= 0 + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: '''homepage_viewed''|eventSum(''Years'', 4, 0) >= 2' + ON_FOURTH_LAUNCH_THIS_YEAR: '''app_cycle.foreground''|eventSum(''Years'', 1, 0) > 3' + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: '{experiment}' + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: true + native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: true + no_internet_connection_error: + description: | + This feature is for managing the roll out of the no interet connection native error page feature + type: Boolean + default: true + other-error-pages: + description: | + This feature is for managing the roll out of other native error pages + type: Boolean + default: false + onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + variables: + cards: + description: | + The list of available cards for onboarding. + type: Map + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + welcome-modern: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v140 + body: Onboarding/Onboarding.Modern.Welcome.Description.v140 + image: trackers + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatementA.v140 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v140 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + sign-to-sync-modern: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v140 + body: Onboarding/Onboarding.Modern.Sync.Description.v140 + image: sync-with-icons + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v140 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v140 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-toolbar-modern: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v140 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-theme-modern: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Customization.Theme.Title.v143 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + welcome-modern-japan: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v145 + body: Onboarding/Onboarding.Modern.Welcome.Description.v145 + image: trackers-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatmentA.v145 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v145 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + sign-to-sync-modern-japan: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v145 + body: Onboarding/Onboarding.Modern.Sync.Description.v145 + image: sync-with-icons-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v145 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v145 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-toolbar-modern-japan: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Toolbar.Description.v145 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v145 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v145 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-theme-modern-japan: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.Customization.Theme.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Theme.Description.v145 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Theme.Automatic.v145 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.Customization.Theme.Light.v145 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.Customization.Theme.Dark.v145 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + welcome-brand-refresh: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.TitleV3.v149 + body: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Description.v148 + image: trackers-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.ActionTreatmentA.v148 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Skip.v148 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-toolbar-brand-refresh: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Description.v148 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-theme-brand-refresh: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Description.v148 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Automatic.v148 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Light.v148 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Dark.v148 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + sign-to-sync-brand-refresh: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Description.v148 + image: sync-with-icons-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.SignIn.Action.v148 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Skip.Action.v148 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + string-alias: NimbusOnboardingCardKey + conditions: + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + string-alias: ConditionName + dismissable: + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + type: Boolean + default: true + enable-modern-ui: + description: | + Toggle between legacy (false) and modern (true) UI variants. + type: Boolean + default: false + should-use-brand-refresh-configuration: + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + type: Boolean + default: false + should-use-japan-configuration: + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. + type: Boolean + default: false + recent-searches-feature: + description: | + Enables recent searches. + variables: + enabled: + description: | + Whether or not to enable recent searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: false + search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + variables: + enabled: + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + type: Boolean + default: true + isTreatmentA: + description: | + If true, shares the treatment A text. If false, shares the treatment B text. + type: Boolean + default: true + snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + variables: + enabled: + description: If true the SnapKit removal refactor version will be used + type: Boolean + default: false + splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + maximum_duration_ms: + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 6000 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: If this is true, then on each page load adds a new item to Spotlight. + type: Boolean + default: true + icon-type: + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + type: Option + default: screenshot + keep-for-days: + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + type: Option + default: null + searchable-content: + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. + type: Option + default: text-excerpt + start-at-home-feature: + description: This feature is for experimenting with opening screen + variables: + setting: + description: This property provides a default setting for the start at home feature + type: StartAtHome + default: afterFourHours + summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + variables: + enabled: + description: | + Enables app attest authentication for the summarizer. + type: Boolean + default: true + summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + variables: + enabled: + description: | + Whether the feature is enabled or not. + type: Boolean + default: false + supportDeviceLanguage: + description: | + Whether to support the device language for summarization. + type: Boolean + default: false + supportWebsiteLanguage: + description: | + Whether to support the website language for summarization. + type: Boolean + default: false + supportedLocales: + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). + type: List + default: + - en + - fr + - es + - de + - pt + tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + variables: + enabled: + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll + type: Boolean + default: false + tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + variables: + enabled: + description: | + If true, enables the tab tray UI experiments. + type: Boolean + default: true + translucency: + description: | + If true, enables translucency for tab tray actions at the bottom. + type: Boolean + default: true + toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: true + layout: + description: | + The type of layout of the toolbars. + type: Option + default: version1 + middle_button_customization: + description: | + Enables the middle button customization for navigation toolbar. + type: Boolean + default: true + minimal_address_bar: + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + type: Boolean + default: true + navigation_hint: + description: | + If true, enables the navigation contextual hint. + type: Boolean + default: true + one_tap_new_tab: + description: | + If true, enables the one tap new tab feature for users. + type: Boolean + default: true + swiping_tabs: + description: | + Enables swipe gestures to switch between browser tabs. + type: Boolean + default: true + toolbar_update_hint: + description: | + If true, enables the toolbar update contextual hint. + type: Boolean + default: false + translucency: + description: | + Enables translucency for toolbars. + type: Boolean + default: true + translucency-refactor: + description: | + Enables translucency refactor for toolbars. + type: Boolean + default: false + unified_search: + description: | + Enables the unified search feature. + type: Boolean + default: false + tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + variables: + status: + description: | + Enables the feature + type: Boolean + default: true + tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + variables: + content-option: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + type: TermsOfUsePromptContentOption + default: value-0 + enable-drag-to-dismiss: + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + type: Boolean + default: true + max-reminders-count: + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + type: Int + default: 2 + status: + description: | + Enables the feature + type: Boolean + default: false + tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + variables: + enabled: + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not + type: Boolean + default: true + translations-feature: + description: | + Enables translations feature. + variables: + enabled: + description: | + Whether or not to enable translations feature. + type: Boolean + default: false + trending-searches-feature: + description: | + Enables trending searches. + variables: + enabled: + description: | + Whether or not to enable trending searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + IconType: + description: The icon that will be added to the item in the device's search engine. + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: | + For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS. + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: | + The identifiers for the different images available for cards in onboarding + variants: + customize-firefox: + description: | + Corresponding to the fox window image + notifications: + description: | + Corresponding to the notifications image + notifications-ctd: + description: | + Corresponding to the notifications image for CTD + search-widget: + description: | + Corresponding to the fox search widget image + set-default-steps: + description: | + Corresponding to the set to default steps image + set-to-dock: + description: | + Corresponding to the set to dock image + sync-devices: + description: | + Corresponding to the sync-devices image + sync-devices-ctd: + description: | + Corresponding to the sync image for CTD + sync-with-icons: + description: | + Corresponding to the sync-devices image + sync-with-icons-brand-refresh: + description: | + Corresponding to the sync-with-icons image for Brand Refresh variant (different from Japan variant) + sync-with-icons-japan: + description: | + Corresponding to the sync-with-icons image for Japan variant + themeing: + description: | + Corresponding to the fox world image + toolbar: + description: | + Corresponding to the fox world image + trackers: + description: | + Corresponding to the trackers image + trackers-brand-refresh: + description: | + Corresponding to the trackers image for Brand Refresh variant (does not contain Japanese text, different from Japan variant) + trackers-japan: + description: | + Corresponding to the trackers image for Japan variant (contains Japanese text) + welcome-ctd: + description: | + Corresponding to the welcome image for CTD + welcome-globe: + description: | + Corresponding to the fox world image + NimbusOnboardingMultipleChoiceButtonImage: + description: | + The identifiers for the different images available for multiple choice buttons in onboarding + variants: + theme-dark: + description: | + Corresponding to the dark theme + theme-dark-japan: + description: | + Corresponding to the dark theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-light: + description: | + Corresponding to the light theme + theme-light-japan: + description: | + Corresponding to the light theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-system: + description: | + Corresponding to the system theme + theme-system-japan: + description: | + Corresponding to the system theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-bottom: + description: | + Corresponding to the toolbar on the bottom + toolbar-bottom-japan: + description: | + Corresponding to the toolbar on the bottom image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-top: + description: | + Corresponding to the toolbar on top + toolbar-top-japan: + description: | + Corresponding to the toolbar on top image for Japan variant. Also used by Brand Refresh variant as the images are identical. + OnboardingActions: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + end-onboarding: + description: | + Will end the onboarding on a set card + forward-one-card: + description: | + Will take the user to the next card + forward-three-card: + description: | + Will take the user to the next card + forward-two-card: + description: | + Will take the user to the next card + open-instructions-popup: + description: | + Will open up a popup with instructions for something + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + read-privacy-policy: + description: | + Will open a webview where the user can read the privacy policy + request-notifications: + description: | + Will request to allow notifications from the user + set-default-browser: + description: | + Will send the user to settings to set Firefox as their default browser and advance to next card + sync-sign-in: + description: | + Will take the user to the sync sign in flow + OnboardingCardType: + description: | + The identifiers for the different types of onboarding cards. + variants: + basic: + description: | + Corresponding to basic info onboarding cards + multiple-choice: + description: | + Corresponding to onboarding cards with multiple choice buttons + OnboardingInstructionsPopupActions: + description: | + The identifiers for the different actions available for the insturction card in onboarding + variants: + dismiss: + description: | + Will dismiss the popup + dismiss-and-next-card: + description: | + Will dismiss the popup and move to the next card + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + OnboardingMultipleChoiceAction: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + theme-dark: + description: | + Will will set the theme to dark mode + theme-light: + description: | + Will set the theme to light mode + theme-system-default: + description: | + Will set the theme to use the system theme + toolbar-bottom: + description: | + Will set the toolbar on the bottom + toolbar-top: + description: | + Will set the toolbar on the top + OnboardingType: + description: | + The identifiers for the different types of onboarding cards. + variants: + fresh-install: + description: | + Corresponding to onboarding cards that are for new users + upgrade: + description: | + Corresponding to onboarding cards that are for users who have updated + OnboardingVariant: + description: | + Which UI style this onboarding card is designed for. + variants: + brandRefresh: + description: Use the brand refresh onboarding UI with v148 strings. + japan: + description: Use the Japan-specific onboarding UI with localized assets. + legacy: + description: Use the existing (legacy) onboarding UI. + modern: + description: Use the new (modern) onboarding UI. + PageContent: + description: The page content that will be added as an item in the device's search engine. + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + ScrollDirection: + description: The layout direction for stories on the homepage. + variants: + baseline: + description: Uses the current default stories layout. + horizontal: + description: Shows stories in a horizontal layout. + vertical: + description: Shows stories in a vertical layout. + StartAtHome: + description: The option for what screen to open the app to + variants: + afterFourHours: + description: Starts the app at the homepage after four hours of inactivity, otherwise starts the app at the most recently viewed tab. + always: + description: Starts the app at the homepage. + disabled: + description: Starts the app at the most recently viewed tab. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TermsOfUsePromptContentOption: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + variants: + value-0: + description: | + Uses the current defaults: + - Title: "We've got an update" + - Learn more: "Please take a moment to review and accept. Learn more." + value-1: + description: | + Uses the following copy: + - Title: "Terms of Use" + - Learn more: "You can learn more here." + value-2: + description: | + Uses the following copy: + - Title: "A note from Firefox" + - Learn more: "You can learn more here." + ToolbarLayoutType: + description: The type of toolbar layout. + variants: + version1: + description: Shows the add new tab, menu and tabs button in the navigation toolbar. The share button is displayed in the address toolbar. + version2: + description: Like version1 but the menu and tabs buttons are inverted. +objects: + AwesomeBar: + description: A configuration option for the awesome bar. Part of the `search` feature. + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: | + This property defines whether or not the feature is enabled, and the position of the search bar + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: Search in the open tab's text content when typing. + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: | + An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action. + fields: + action: + description: | + The name of a deeplink URL to be opened if the button is clicked. + type: Option + default: null + action-params: + description: Query parameters appended to the deeplink action URL + type: Map + default: {} + button-label: + description: | + The text on the button. If no text is present, the whole message is clickable. + type: Option + default: null + except-if-any: + description: | + A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible. + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: null + is-control: + description: Indicates if this message is the control message, if true shouldn't be displayed + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: null + style: + description: | + The style as described in a `StyleData` from the styles table. + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: '' + title: + description: The title text displayed to the user + type: Option + default: null + trigger-if-all: + description: | + A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown. + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: | + Attributes relating to microsurvey messaging. + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: null + NimbusOnboardingButton: + description: | + A group of properties describing the attributes of a card. + fields: + action: + description: | + The action the button should take. The default for this will be "forward-one-card" + type: OnboardingActions + default: forward-one-card + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingButtons: + description: | + A set of buttons for the card. There can be up to two, but there must be at least one. + fields: + primary: + description: | + The primary button for the card. This must exist. + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: | + A secondary, optional, button for the card. + type: Option + default: null + NimbusOnboardingCardData: + description: | + A group of properties describing the attributes of a card. + fields: + body: + description: | + The body text dispalyed on the card, in less prominent text. This should never be defaulted. + type: Text + default: '' + buttons: + description: | + The set of buttons associated with the card. + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: null + card-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingCardType + default: basic + disqualifiers: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`. + type: List + default: [] + image: + description: | + The image that should be dispalyed on the card. + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: | + The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information + type: Option + default: null + link: + description: | + The object describing the link button for a card. If left empty, the card will have no link. + type: Option + default: null + multiple-choice-buttons: + description: | + A list of multiple choice buttons that the card will display + type: List + default: [] + onboarding-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingType + default: fresh-install + order: + description: | + The place in the order where the card will be found. The feature layer will then sort the cards based on this field. + type: Int + default: 10 + prerequisites: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty. + type: List + default: [] + title: + description: | + The title displayed on the card, in prominent, bolded text. This should never be defaulted. + type: Text + default: '' + uiVariant: + description: | + If set, this card will only be shown in the specified UI variant. If null, it will appear in both legacy and modern UIs. + type: Option + default: null + NimbusOnboardingInstructionPopup: + description: | + The object outlining the content of the instruction card. + fields: + button-action: + description: | + The action the button should have. Default is `dismiss-and-next-card` + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: | + The title the button should have. This should never be defaulted. + type: Text + default: '' + instructions: + description: | + A list of instructions, either as free text, or as Text identifiers. + type: List + default: [] + title: + description: | + The text of the popup. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingLink: + description: | + A group of properties describing the attributes for the active link on a card + fields: + title: + description: | + The text of the link title. + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: | + The url that the link will lead to. + type: String + default: https://www.mozilla.org/privacy/firefox/ + NimbusOnboardingMultipleChoiceButton: + description: | + A group of properties describing the attributes of a multiple choice button on a card + fields: + action: + description: | + The action the button should take. The default for this will be "theme-system-default" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: | + The text of the button title. This should never be defaulted. + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + StyleData: + description: | + A group of properities (predominantly visual) to the describe style of the message. + fields: + max-display-count: + description: | + How many sessions will this message be shown to the user before it is expired. + type: Int + default: 5 + priority: + description: | + The importance of this message. 0 is not very important, 100 is very important. + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/ios/v148.1.1/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v148.1.1/experimenter.yaml new file mode 100644 index 0000000000..af64cef0d7 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.1.1/experimenter.yaml @@ -0,0 +1,600 @@ +address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will allow user to edit the address +address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will show the new address bar menu entry +ads-client: + description: This property defines if the rust ads client is enabled + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will enable the rust ads client +app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + hasExposure: true + exposureDescription: '' + variables: + funIconsEnabled: + type: boolean + description: | + Controls whether users see the fun icons in the app icon settings. +appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will show the new appearance menu entry +apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the apple summarizer feature. + shakeGesture: + type: boolean + description: | + Enables the shake gesture for the summarizer feature. + toolbarEntrypoint: + type: boolean + description: | + Enables the toolbar entrypoint for the summarizer feature. +deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Variable description +default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, page zoom settings and default zoom feature are shown +download-live-activities-feature: + description: | + Download Live Activities Feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the download live activities feature is enabled +felt-privacy-feature: + description: The feature that enhances private browsing mode + hasExposure: true + exposureDescription: '' + variables: + felt-deletion-enabled: + type: boolean + description: If true, enable Felt Deletion part of Felt Privacy + simplified-ui-enabled: + type: boolean + description: If true, enable simplified UI part of Felt Privacy +firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature. +firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + hasExposure: true + exposureDescription: '' + variables: + available-suggestions-types: + type: json + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + status: + type: boolean + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. +general-app-features: + description: The feature that contains feature flags for the entire application + hasExposure: true + exposureDescription: '' + variables: + report-site-issue: + type: json + description: This property defines whether or not the feature is enabled +hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings +homepage-rebuild-feature: + description: | + This feature is for managing the roll out of the Homepage rebuild feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, enables the feature +homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + hasExposure: true + exposureDescription: '' + variables: + bookmarks-section-default: + type: boolean + description: | + If true, enables the bookmarks homepage section by default + jbi-section-default: + type: boolean + description: | + If true, enables the jump back in homepage section by default + search-bar: + type: boolean + description: | + If true, enables the search bar feature on homepage for users. + stories-scroll-direction: + type: string + description: | + Controls the layout direction for stories on the homepage. + enum: + - baseline + - horizontal + - vertical +hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the hosted summarizer feature. + shakeGesture: + type: boolean + description: | + Enables the shake gesture for the summarizer feature. + toolbarEntrypoint: + type: boolean + description: | + Enables the toolbar entrypoint for the summarizer feature. +menu-refactor-feature: + description: | + Controls the menu refactor feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Controls which menu users will see + menu-default-browser-banner: + type: boolean + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + menu-redesign-hint: + type: boolean + description: | + If true, enables the menu contextual hint for menu redesign. +messaging: + description: | + The in-app messaging system + hasExposure: true + exposureDescription: '' + variables: + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + messages: + type: json + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: | + A map of styles to configure message appearance. + triggers: + type: json + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + ~~experiment: + type: string + description: Not to be set by experiment. +microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the feature is active. +native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the feature is active. + no_internet_connection_error: + type: boolean + description: | + This feature is for managing the roll out of the no interet connection native error page feature + other-error-pages: + type: boolean + description: | + This feature is for managing the roll out of other native error pages +onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + hasExposure: true + exposureDescription: '' + variables: + cards: + type: json + description: | + The list of available cards for onboarding. + conditions: + type: json + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + dismissable: + type: boolean + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + enable-modern-ui: + type: boolean + description: | + Toggle between legacy (false) and modern (true) UI variants. + should-use-brand-refresh-configuration: + type: boolean + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + should-use-japan-configuration: + type: boolean + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. +recent-searches-feature: + description: | + Enables recent searches. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether or not to enable recent searches. + max-suggestions: + type: int + description: The number of maximum suggestions. +relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature +search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + hasExposure: true + exposureDescription: '' + variables: + awesome-bar: + type: json + description: Configuring the awesome bar. +sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + isTreatmentA: + type: boolean + description: | + If true, shares the treatment A text. If false, shares the treatment B text. +snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: If true the SnapKit removal refactor version will be used +splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the feature is active. + maximum_duration_ms: + type: int + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. +spotlight-search: + description: Add pages as items findable with Spotlight. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: If this is true, then on each page load adds a new item to Spotlight. + icon-type: + type: string + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + keep-for-days: + type: int + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + searchable-content: + type: string + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. +start-at-home-feature: + description: This feature is for experimenting with opening screen + hasExposure: true + exposureDescription: '' + variables: + setting: + type: string + description: This property provides a default setting for the start at home feature + enum: + - afterFourHours + - always + - disabled +summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables app attest authentication for the summarizer. +summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether the feature is enabled or not. + supportDeviceLanguage: + type: boolean + description: | + Whether to support the device language for summarization. + supportWebsiteLanguage: + type: boolean + description: | + Whether to support the website language for summarization. + supportedLocales: + type: json + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). +tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll +tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, enables the tab tray UI experiments. + translucency: + type: boolean + description: | + If true, enables translucency for tab tray actions at the bottom. +toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature + layout: + type: string + description: | + The type of layout of the toolbars. + middle_button_customization: + type: boolean + description: | + Enables the middle button customization for navigation toolbar. + minimal_address_bar: + type: boolean + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + navigation_hint: + type: boolean + description: | + If true, enables the navigation contextual hint. + one_tap_new_tab: + type: boolean + description: | + If true, enables the one tap new tab feature for users. + swiping_tabs: + type: boolean + description: | + Enables swipe gestures to switch between browser tabs. + toolbar_update_hint: + type: boolean + description: | + If true, enables the toolbar update contextual hint. + translucency: + type: boolean + description: | + Enables translucency for toolbars. + translucency-refactor: + type: boolean + description: | + Enables translucency refactor for toolbars. + unified_search: + type: boolean + description: | + Enables the unified search feature. +tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: | + Enables the feature +tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + hasExposure: true + exposureDescription: '' + variables: + content-option: + type: string + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + enum: + - value-0 + - value-1 + - value-2 + enable-drag-to-dismiss: + type: boolean + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + max-reminders-count: + type: int + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + status: + type: boolean + description: | + Enables the feature +tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not +translations-feature: + description: | + Enables translations feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether or not to enable translations feature. +trending-searches-feature: + description: | + Enables trending searches. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether or not to enable trending searches. + max-suggestions: + type: int + description: The number of maximum suggestions. +voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature. +web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature. diff --git a/experimenter/experimenter/features/manifests/ios/v148.1.1/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v148.1.1/release.fml.yaml new file mode 100644 index 0000000000..6de9e3a84e --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.1.1/release.fml.yaml @@ -0,0 +1,1667 @@ +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: +- release +features: + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: If true, we will allow user to edit the address + type: Boolean + default: false + address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + variables: + status: + description: If true, we will show the new address bar menu entry + type: Boolean + default: true + ads-client: + description: This property defines if the rust ads client is enabled + variables: + status: + description: If true, we will enable the rust ads client + type: Boolean + default: false + app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + variables: + funIconsEnabled: + description: | + Controls whether users see the fun icons in the app icon settings. + type: Boolean + default: true + appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + variables: + status: + description: If true, we will show the new appearance menu entry + type: Boolean + default: true + apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + variables: + enabled: + description: | + Enables the apple summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + variables: + enabled: + description: | + Variable description + type: Boolean + default: false + default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + variables: + enabled: + description: | + If true, page zoom settings and default zoom feature are shown + type: Boolean + default: true + download-live-activities-feature: + description: | + Download Live Activities Feature + variables: + enabled: + description: | + If true, the download live activities feature is enabled + type: Boolean + default: false + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: If true, enable Felt Deletion part of Felt Privacy + type: Boolean + default: false + simplified-ui-enabled: + description: If true, enable simplified UI part of Felt Privacy + type: Boolean + default: true + firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + type: Map + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: false + hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + variables: + enabled: + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings + type: Boolean + default: true + homepage-rebuild-feature: + description: | + This feature is for managing the roll out of the Homepage rebuild feature + variables: + enabled: + description: | + If true, enables the feature + type: Boolean + default: true + homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + variables: + bookmarks-section-default: + description: | + If true, enables the bookmarks homepage section by default + type: Boolean + default: false + jbi-section-default: + description: | + If true, enables the jump back in homepage section by default + type: Boolean + default: false + search-bar: + description: | + If true, enables the search bar feature on homepage for users. + type: Boolean + default: false + stories-scroll-direction: + description: | + Controls the layout direction for stories on the homepage. + type: ScrollDirection + default: baseline + hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + variables: + enabled: + description: | + Enables the hosted summarizer feature. + type: Boolean + default: false + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: false + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: false + menu-refactor-feature: + description: | + Controls the menu refactor feature + variables: + enabled: + description: | + Controls which menu users will see + type: Boolean + default: true + menu-default-browser-banner: + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + type: Boolean + default: true + menu-redesign-hint: + description: | + If true, enables the menu contextual hint for menu redesign. + type: Boolean + default: true + messaging: + description: | + The in-app messaging system + documentation: + - name: User documentation + url: https://experimenter.info/messaging/mobile-messaging + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed + variables: + actions: + description: A growable map of action URLs. + type: Map + default: + OPEN_SETTINGS: ://deep-link?url=settings/general + OPEN_SETTINGS_NEW_TAB: ://deep-link?url=settings/newtab + OPEN_SETTINGS_HOMESCREEN: ://deep-link?url=settings/homepage + OPEN_SETTINGS_WALLPAPERS: ://deep-link?url=settings/wallpaper + OPEN_SETTINGS_EMAIL: ://deep-link?url=settings/mailto + OPEN_SETTINGS_SEARCH_ENGINE: ://deep-link?url=settings/search + OPEN_SETTINGS_PRIVACY: ://deep-link?url=settings/clear-private-data + OPEN_SETTINGS_FXA: ://deep-link?url=settings/fxa + OPEN_SETTINGS_THEME: ://deep-link?url=settings/theme + OPEN_SETTINGS_APP_ICON: ://deep-link?url=settings/app-icon + OPEN_URL: ://open-url + VIEW_BOOKMARKS: ://deep-link?url=homepanel/bookmarks + VIEW_TOP_SITES: ://deep-link?url=homepanel/top-sites + VIEW_READING_LIST: ://deep-link?url=homepanel/reading-list + VIEW_HISTORY: ://deep-link?url=homepanel/history + VIEW_DOWNLOADS: ://deep-link?url=homepanel/downloads + ENABLE_PRIVATE_BROWSING: ://deep-link?url=homepanel/new-private-tab + OPEN_NEW_TAB: ://deep-link?url=homepanel/new-tab + MAKE_DEFAULT_BROWSER: ://deep-link?url=default-browser/system-settings + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: ://deep-link?url=default-browser/tutorial + OPEN_SHARE_SHEET: ://share-sheet + string-alias: ActionName + message-under-experiment: + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + type: Option + default: null + messages: + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + type: Map + default: {} + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: | + A map of styles to configure message appearance. + type: Map + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: ('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale) + USER_EN_SPEAKER: '''en'' in locale' + USER_ES_SPEAKER: '''es'' in locale' + USER_DE_SPEAKER: '''de'' in locale' + USER_FR_SPEAKER: '''fr'' in locale' + DEVICE_ANDROID: os == 'Android' + DEVICE_IOS: os == 'iOS' + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: '''app_cycle.foreground''|eventLastSeen(''Days'', 1) > 1' + AFTER_THREE_LAUNCHES_THIS_WEEK: '''app_cycle.foreground''|eventSum(''Weeks'', 1, 0) >= 3' + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: os_version|versionCompare('14.!') >= 0 + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: '''homepage_viewed''|eventSum(''Years'', 4, 0) >= 2' + ON_FOURTH_LAUNCH_THIS_YEAR: '''app_cycle.foreground''|eventSum(''Years'', 1, 0) > 3' + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: '{experiment}' + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + no_internet_connection_error: + description: | + This feature is for managing the roll out of the no interet connection native error page feature + type: Boolean + default: false + other-error-pages: + description: | + This feature is for managing the roll out of other native error pages + type: Boolean + default: false + onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + variables: + cards: + description: | + The list of available cards for onboarding. + type: Map + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + welcome-modern: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v140 + body: Onboarding/Onboarding.Modern.Welcome.Description.v140 + image: trackers + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatementA.v140 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v140 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + sign-to-sync-modern: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v140 + body: Onboarding/Onboarding.Modern.Sync.Description.v140 + image: sync-with-icons + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v140 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v140 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-toolbar-modern: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v140 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-theme-modern: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Customization.Theme.Title.v143 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + welcome-modern-japan: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v145 + body: Onboarding/Onboarding.Modern.Welcome.Description.v145 + image: trackers-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatmentA.v145 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v145 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + sign-to-sync-modern-japan: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v145 + body: Onboarding/Onboarding.Modern.Sync.Description.v145 + image: sync-with-icons-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v145 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v145 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-toolbar-modern-japan: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Toolbar.Description.v145 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v145 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v145 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-theme-modern-japan: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.Customization.Theme.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Theme.Description.v145 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Theme.Automatic.v145 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.Customization.Theme.Light.v145 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.Customization.Theme.Dark.v145 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + welcome-brand-refresh: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.TitleV3.v149 + body: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Description.v148 + image: trackers-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.ActionTreatmentA.v148 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Skip.v148 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-toolbar-brand-refresh: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Description.v148 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-theme-brand-refresh: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Description.v148 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Automatic.v148 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Light.v148 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Dark.v148 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + sign-to-sync-brand-refresh: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Description.v148 + image: sync-with-icons-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.SignIn.Action.v148 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Skip.Action.v148 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + string-alias: NimbusOnboardingCardKey + conditions: + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + string-alias: ConditionName + dismissable: + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + type: Boolean + default: true + enable-modern-ui: + description: | + Toggle between legacy (false) and modern (true) UI variants. + type: Boolean + default: false + should-use-brand-refresh-configuration: + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + type: Boolean + default: false + should-use-japan-configuration: + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. + type: Boolean + default: false + recent-searches-feature: + description: | + Enables recent searches. + variables: + enabled: + description: | + Whether or not to enable recent searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: false + search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + variables: + enabled: + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + type: Boolean + default: false + isTreatmentA: + description: | + If true, shares the treatment A text. If false, shares the treatment B text. + type: Boolean + default: true + snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + variables: + enabled: + description: If true the SnapKit removal refactor version will be used + type: Boolean + default: false + splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + maximum_duration_ms: + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: If this is true, then on each page load adds a new item to Spotlight. + type: Boolean + default: false + icon-type: + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + type: Option + default: letter + keep-for-days: + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + type: Option + default: null + searchable-content: + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. + type: Option + default: text-excerpt + start-at-home-feature: + description: This feature is for experimenting with opening screen + variables: + setting: + description: This property provides a default setting for the start at home feature + type: StartAtHome + default: afterFourHours + summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + variables: + enabled: + description: | + Enables app attest authentication for the summarizer. + type: Boolean + default: false + summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + variables: + enabled: + description: | + Whether the feature is enabled or not. + type: Boolean + default: false + supportDeviceLanguage: + description: | + Whether to support the device language for summarization. + type: Boolean + default: false + supportWebsiteLanguage: + description: | + Whether to support the website language for summarization. + type: Boolean + default: false + supportedLocales: + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). + type: List + default: + - en + - fr + - es + - de + - pt + tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + variables: + enabled: + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll + type: Boolean + default: false + tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + variables: + enabled: + description: | + If true, enables the tab tray UI experiments. + type: Boolean + default: true + translucency: + description: | + If true, enables translucency for tab tray actions at the bottom. + type: Boolean + default: false + toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: true + layout: + description: | + The type of layout of the toolbars. + type: Option + default: version1 + middle_button_customization: + description: | + Enables the middle button customization for navigation toolbar. + type: Boolean + default: true + minimal_address_bar: + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + type: Boolean + default: true + navigation_hint: + description: | + If true, enables the navigation contextual hint. + type: Boolean + default: true + one_tap_new_tab: + description: | + If true, enables the one tap new tab feature for users. + type: Boolean + default: true + swiping_tabs: + description: | + Enables swipe gestures to switch between browser tabs. + type: Boolean + default: true + toolbar_update_hint: + description: | + If true, enables the toolbar update contextual hint. + type: Boolean + default: false + translucency: + description: | + Enables translucency for toolbars. + type: Boolean + default: true + translucency-refactor: + description: | + Enables translucency refactor for toolbars. + type: Boolean + default: false + unified_search: + description: | + Enables the unified search feature. + type: Boolean + default: false + tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + variables: + status: + description: | + Enables the feature + type: Boolean + default: true + tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + variables: + content-option: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + type: TermsOfUsePromptContentOption + default: value-0 + enable-drag-to-dismiss: + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + type: Boolean + default: true + max-reminders-count: + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + type: Int + default: 2 + status: + description: | + Enables the feature + type: Boolean + default: false + tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + variables: + enabled: + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not + type: Boolean + default: true + translations-feature: + description: | + Enables translations feature. + variables: + enabled: + description: | + Whether or not to enable translations feature. + type: Boolean + default: false + trending-searches-feature: + description: | + Enables trending searches. + variables: + enabled: + description: | + Whether or not to enable trending searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + IconType: + description: The icon that will be added to the item in the device's search engine. + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: | + For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS. + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: | + The identifiers for the different images available for cards in onboarding + variants: + customize-firefox: + description: | + Corresponding to the fox window image + notifications: + description: | + Corresponding to the notifications image + notifications-ctd: + description: | + Corresponding to the notifications image for CTD + search-widget: + description: | + Corresponding to the fox search widget image + set-default-steps: + description: | + Corresponding to the set to default steps image + set-to-dock: + description: | + Corresponding to the set to dock image + sync-devices: + description: | + Corresponding to the sync-devices image + sync-devices-ctd: + description: | + Corresponding to the sync image for CTD + sync-with-icons: + description: | + Corresponding to the sync-devices image + sync-with-icons-brand-refresh: + description: | + Corresponding to the sync-with-icons image for Brand Refresh variant (different from Japan variant) + sync-with-icons-japan: + description: | + Corresponding to the sync-with-icons image for Japan variant + themeing: + description: | + Corresponding to the fox world image + toolbar: + description: | + Corresponding to the fox world image + trackers: + description: | + Corresponding to the trackers image + trackers-brand-refresh: + description: | + Corresponding to the trackers image for Brand Refresh variant (does not contain Japanese text, different from Japan variant) + trackers-japan: + description: | + Corresponding to the trackers image for Japan variant (contains Japanese text) + welcome-ctd: + description: | + Corresponding to the welcome image for CTD + welcome-globe: + description: | + Corresponding to the fox world image + NimbusOnboardingMultipleChoiceButtonImage: + description: | + The identifiers for the different images available for multiple choice buttons in onboarding + variants: + theme-dark: + description: | + Corresponding to the dark theme + theme-dark-japan: + description: | + Corresponding to the dark theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-light: + description: | + Corresponding to the light theme + theme-light-japan: + description: | + Corresponding to the light theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-system: + description: | + Corresponding to the system theme + theme-system-japan: + description: | + Corresponding to the system theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-bottom: + description: | + Corresponding to the toolbar on the bottom + toolbar-bottom-japan: + description: | + Corresponding to the toolbar on the bottom image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-top: + description: | + Corresponding to the toolbar on top + toolbar-top-japan: + description: | + Corresponding to the toolbar on top image for Japan variant. Also used by Brand Refresh variant as the images are identical. + OnboardingActions: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + end-onboarding: + description: | + Will end the onboarding on a set card + forward-one-card: + description: | + Will take the user to the next card + forward-three-card: + description: | + Will take the user to the next card + forward-two-card: + description: | + Will take the user to the next card + open-instructions-popup: + description: | + Will open up a popup with instructions for something + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + read-privacy-policy: + description: | + Will open a webview where the user can read the privacy policy + request-notifications: + description: | + Will request to allow notifications from the user + set-default-browser: + description: | + Will send the user to settings to set Firefox as their default browser and advance to next card + sync-sign-in: + description: | + Will take the user to the sync sign in flow + OnboardingCardType: + description: | + The identifiers for the different types of onboarding cards. + variants: + basic: + description: | + Corresponding to basic info onboarding cards + multiple-choice: + description: | + Corresponding to onboarding cards with multiple choice buttons + OnboardingInstructionsPopupActions: + description: | + The identifiers for the different actions available for the insturction card in onboarding + variants: + dismiss: + description: | + Will dismiss the popup + dismiss-and-next-card: + description: | + Will dismiss the popup and move to the next card + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + OnboardingMultipleChoiceAction: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + theme-dark: + description: | + Will will set the theme to dark mode + theme-light: + description: | + Will set the theme to light mode + theme-system-default: + description: | + Will set the theme to use the system theme + toolbar-bottom: + description: | + Will set the toolbar on the bottom + toolbar-top: + description: | + Will set the toolbar on the top + OnboardingType: + description: | + The identifiers for the different types of onboarding cards. + variants: + fresh-install: + description: | + Corresponding to onboarding cards that are for new users + upgrade: + description: | + Corresponding to onboarding cards that are for users who have updated + OnboardingVariant: + description: | + Which UI style this onboarding card is designed for. + variants: + brandRefresh: + description: Use the brand refresh onboarding UI with v148 strings. + japan: + description: Use the Japan-specific onboarding UI with localized assets. + legacy: + description: Use the existing (legacy) onboarding UI. + modern: + description: Use the new (modern) onboarding UI. + PageContent: + description: The page content that will be added as an item in the device's search engine. + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + ScrollDirection: + description: The layout direction for stories on the homepage. + variants: + baseline: + description: Uses the current default stories layout. + horizontal: + description: Shows stories in a horizontal layout. + vertical: + description: Shows stories in a vertical layout. + StartAtHome: + description: The option for what screen to open the app to + variants: + afterFourHours: + description: Starts the app at the homepage after four hours of inactivity, otherwise starts the app at the most recently viewed tab. + always: + description: Starts the app at the homepage. + disabled: + description: Starts the app at the most recently viewed tab. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TermsOfUsePromptContentOption: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + variants: + value-0: + description: | + Uses the current defaults: + - Title: "We've got an update" + - Learn more: "Please take a moment to review and accept. Learn more." + value-1: + description: | + Uses the following copy: + - Title: "Terms of Use" + - Learn more: "You can learn more here." + value-2: + description: | + Uses the following copy: + - Title: "A note from Firefox" + - Learn more: "You can learn more here." + ToolbarLayoutType: + description: The type of toolbar layout. + variants: + version1: + description: Shows the add new tab, menu and tabs button in the navigation toolbar. The share button is displayed in the address toolbar. + version2: + description: Like version1 but the menu and tabs buttons are inverted. +objects: + AwesomeBar: + description: A configuration option for the awesome bar. Part of the `search` feature. + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: | + This property defines whether or not the feature is enabled, and the position of the search bar + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: Search in the open tab's text content when typing. + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: | + An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action. + fields: + action: + description: | + The name of a deeplink URL to be opened if the button is clicked. + type: Option + default: null + action-params: + description: Query parameters appended to the deeplink action URL + type: Map + default: {} + button-label: + description: | + The text on the button. If no text is present, the whole message is clickable. + type: Option + default: null + except-if-any: + description: | + A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible. + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: null + is-control: + description: Indicates if this message is the control message, if true shouldn't be displayed + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: null + style: + description: | + The style as described in a `StyleData` from the styles table. + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: '' + title: + description: The title text displayed to the user + type: Option + default: null + trigger-if-all: + description: | + A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown. + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: | + Attributes relating to microsurvey messaging. + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: null + NimbusOnboardingButton: + description: | + A group of properties describing the attributes of a card. + fields: + action: + description: | + The action the button should take. The default for this will be "forward-one-card" + type: OnboardingActions + default: forward-one-card + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingButtons: + description: | + A set of buttons for the card. There can be up to two, but there must be at least one. + fields: + primary: + description: | + The primary button for the card. This must exist. + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: | + A secondary, optional, button for the card. + type: Option + default: null + NimbusOnboardingCardData: + description: | + A group of properties describing the attributes of a card. + fields: + body: + description: | + The body text dispalyed on the card, in less prominent text. This should never be defaulted. + type: Text + default: '' + buttons: + description: | + The set of buttons associated with the card. + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: null + card-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingCardType + default: basic + disqualifiers: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`. + type: List + default: [] + image: + description: | + The image that should be dispalyed on the card. + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: | + The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information + type: Option + default: null + link: + description: | + The object describing the link button for a card. If left empty, the card will have no link. + type: Option + default: null + multiple-choice-buttons: + description: | + A list of multiple choice buttons that the card will display + type: List + default: [] + onboarding-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingType + default: fresh-install + order: + description: | + The place in the order where the card will be found. The feature layer will then sort the cards based on this field. + type: Int + default: 10 + prerequisites: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty. + type: List + default: [] + title: + description: | + The title displayed on the card, in prominent, bolded text. This should never be defaulted. + type: Text + default: '' + uiVariant: + description: | + If set, this card will only be shown in the specified UI variant. If null, it will appear in both legacy and modern UIs. + type: Option + default: null + NimbusOnboardingInstructionPopup: + description: | + The object outlining the content of the instruction card. + fields: + button-action: + description: | + The action the button should have. Default is `dismiss-and-next-card` + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: | + The title the button should have. This should never be defaulted. + type: Text + default: '' + instructions: + description: | + A list of instructions, either as free text, or as Text identifiers. + type: List + default: [] + title: + description: | + The text of the popup. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingLink: + description: | + A group of properties describing the attributes for the active link on a card + fields: + title: + description: | + The text of the link title. + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: | + The url that the link will lead to. + type: String + default: https://www.mozilla.org/privacy/firefox/ + NimbusOnboardingMultipleChoiceButton: + description: | + A group of properties describing the attributes of a multiple choice button on a card + fields: + action: + description: | + The action the button should take. The default for this will be "theme-system-default" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: | + The text of the button title. This should never be defaulted. + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + StyleData: + description: | + A group of properities (predominantly visual) to the describe style of the message. + fields: + max-display-count: + description: | + How many sessions will this message be shown to the user before it is expired. + type: Int + default: 5 + priority: + description: | + The importance of this message. 0 is not very important, 100 is very important. + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/ios/v148.3.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v148.3.0/beta.fml.yaml new file mode 100644 index 0000000000..0b307dab1e --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.3.0/beta.fml.yaml @@ -0,0 +1,1680 @@ +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: +- beta +features: + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: If true, we will allow user to edit the address + type: Boolean + default: false + address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + variables: + status: + description: If true, we will show the new address bar menu entry + type: Boolean + default: true + ads-client: + description: This property defines if the rust ads client is enabled + variables: + status: + description: If true, we will enable the rust ads client + type: Boolean + default: false + app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + variables: + funIconsEnabled: + description: | + Controls whether users see the fun icons in the app icon settings. + type: Boolean + default: true + appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + variables: + status: + description: If true, we will show the new appearance menu entry + type: Boolean + default: true + apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + variables: + enabled: + description: | + Enables the apple summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + variables: + enabled: + description: | + Variable description + type: Boolean + default: false + default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + variables: + enabled: + description: | + If true, page zoom settings and default zoom feature are shown + type: Boolean + default: true + download-live-activities-feature: + description: | + Download Live Activities Feature + variables: + enabled: + description: | + If true, the download live activities feature is enabled + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: If true, enable Felt Deletion part of Felt Privacy + type: Boolean + default: false + simplified-ui-enabled: + description: If true, enable simplified UI part of Felt Privacy + type: Boolean + default: true + firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + type: Map + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + variables: + enabled: + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings + type: Boolean + default: true + homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + variables: + bookmarks-section-default: + description: | + If true, enables the bookmarks homepage section by default + type: Boolean + default: false + categories-enabled: + description: | + If true, enables the categories flow in the stories + type: Boolean + default: false + jbi-section-default: + description: | + If true, enables the jump back in homepage section by default + type: Boolean + default: false + search-bar: + description: | + If true, enables the search bar feature on homepage for users. + type: Boolean + default: false + stories-scroll-direction: + description: | + Controls the layout direction for stories on the homepage. + type: ScrollDirection + default: baseline + hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + variables: + enabled: + description: | + Enables the hosted summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + improved-app-store-review-trigger-feature: + description: | + The feature flag to manage the App Store review request trigger. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + menu-refactor-feature: + description: | + Controls the menu refactor feature + variables: + enabled: + description: | + Controls which menu users will see + type: Boolean + default: true + menu-default-browser-banner: + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + type: Boolean + default: true + menu-redesign-hint: + description: | + If true, enables the menu contextual hint for menu redesign. + type: Boolean + default: true + messaging: + description: | + The in-app messaging system + documentation: + - name: User documentation + url: https://experimenter.info/messaging/mobile-messaging + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed + variables: + actions: + description: A growable map of action URLs. + type: Map + default: + OPEN_SETTINGS: ://deep-link?url=settings/general + OPEN_SETTINGS_NEW_TAB: ://deep-link?url=settings/newtab + OPEN_SETTINGS_HOMESCREEN: ://deep-link?url=settings/homepage + OPEN_SETTINGS_WALLPAPERS: ://deep-link?url=settings/wallpaper + OPEN_SETTINGS_EMAIL: ://deep-link?url=settings/mailto + OPEN_SETTINGS_SEARCH_ENGINE: ://deep-link?url=settings/search + OPEN_SETTINGS_PRIVACY: ://deep-link?url=settings/clear-private-data + OPEN_SETTINGS_FXA: ://deep-link?url=settings/fxa + OPEN_SETTINGS_THEME: ://deep-link?url=settings/theme + OPEN_SETTINGS_APP_ICON: ://deep-link?url=settings/app-icon + OPEN_URL: ://open-url + VIEW_BOOKMARKS: ://deep-link?url=homepanel/bookmarks + VIEW_TOP_SITES: ://deep-link?url=homepanel/top-sites + VIEW_READING_LIST: ://deep-link?url=homepanel/reading-list + VIEW_HISTORY: ://deep-link?url=homepanel/history + VIEW_DOWNLOADS: ://deep-link?url=homepanel/downloads + ENABLE_PRIVATE_BROWSING: ://deep-link?url=homepanel/new-private-tab + OPEN_NEW_TAB: ://deep-link?url=homepanel/new-tab + MAKE_DEFAULT_BROWSER: ://deep-link?url=default-browser/system-settings + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: ://deep-link?url=default-browser/tutorial + OPEN_SHARE_SHEET: ://share-sheet + string-alias: ActionName + message-under-experiment: + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + type: Option + default: null + messages: + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + type: Map + default: + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: | + A map of styles to configure message appearance. + type: Map + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: ('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale) + USER_EN_SPEAKER: '''en'' in locale' + USER_ES_SPEAKER: '''es'' in locale' + USER_DE_SPEAKER: '''de'' in locale' + USER_FR_SPEAKER: '''fr'' in locale' + DEVICE_ANDROID: os == 'Android' + DEVICE_IOS: os == 'iOS' + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: '''app_cycle.foreground''|eventLastSeen(''Days'', 1) > 1' + AFTER_THREE_LAUNCHES_THIS_WEEK: '''app_cycle.foreground''|eventSum(''Weeks'', 1, 0) >= 3' + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: os_version|versionCompare('14.!') >= 0 + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: '''homepage_viewed''|eventSum(''Years'', 4, 0) >= 2' + ON_FOURTH_LAUNCH_THIS_YEAR: '''app_cycle.foreground''|eventSum(''Years'', 1, 0) > 3' + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: '{experiment}' + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + no_internet_connection_error: + description: | + This feature is for managing the roll out of the no interet connection native error page feature + type: Boolean + default: false + other-error-pages: + description: | + This feature is for managing the roll out of other native error pages + type: Boolean + default: false + onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + variables: + cards: + description: | + The list of available cards for onboarding. + type: Map + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + welcome-modern: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v140 + body: Onboarding/Onboarding.Modern.Welcome.Description.v140 + image: trackers + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatementA.v140 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v140 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + sign-to-sync-modern: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v140 + body: Onboarding/Onboarding.Modern.Sync.Description.v140 + image: sync-with-icons + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v140 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v140 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-toolbar-modern: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v140 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-theme-modern: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Customization.Theme.Title.v143 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + welcome-modern-japan: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v145 + body: Onboarding/Onboarding.Modern.Welcome.Description.v145 + image: trackers-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatmentA.v145 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v145 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + sign-to-sync-modern-japan: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v145 + body: Onboarding/Onboarding.Modern.Sync.Description.v145 + image: sync-with-icons-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v145 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v145 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-toolbar-modern-japan: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Toolbar.Description.v145 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v145 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v145 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-theme-modern-japan: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.Customization.Theme.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Theme.Description.v145 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Theme.Automatic.v145 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.Customization.Theme.Light.v145 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.Customization.Theme.Dark.v145 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + welcome-brand-refresh: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.TitleV3.v149 + body: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Description.v148 + image: trackers-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.ActionTreatmentA.v148 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Skip.v148 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-toolbar-brand-refresh: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Description.v148 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-theme-brand-refresh: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Description.v148 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Automatic.v148 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Light.v148 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Dark.v148 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + sign-to-sync-brand-refresh: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Description.v148 + image: sync-with-icons-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.SignIn.Action.v148 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Skip.Action.v148 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + string-alias: NimbusOnboardingCardKey + conditions: + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + string-alias: ConditionName + dismissable: + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + type: Boolean + default: true + enable-modern-ui: + description: | + Toggle between legacy (false) and modern (true) UI variants. + type: Boolean + default: false + should-use-brand-refresh-configuration: + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + type: Boolean + default: false + should-use-japan-configuration: + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. + type: Boolean + default: false + recent-searches-feature: + description: | + Enables recent searches. + variables: + enabled: + description: | + Whether or not to enable recent searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: false + search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + variables: + enabled: + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + type: Boolean + default: false + isTreatmentA: + description: | + If true, shares the treatment A text. If false, shares the treatment B text. + type: Boolean + default: true + snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + variables: + enabled: + description: If true the SnapKit removal refactor version will be used + type: Boolean + default: false + splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + maximum_duration_ms: + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: If this is true, then on each page load adds a new item to Spotlight. + type: Boolean + default: false + icon-type: + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + type: Option + default: letter + keep-for-days: + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + type: Option + default: null + searchable-content: + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. + type: Option + default: text-excerpt + start-at-home-feature: + description: This feature is for experimenting with opening screen + variables: + setting: + description: This property provides a default setting for the start at home feature + type: StartAtHome + default: afterFourHours + summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + variables: + enabled: + description: | + Enables app attest authentication for the summarizer. + type: Boolean + default: true + summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + variables: + enabled: + description: | + Whether the feature is enabled or not. + type: Boolean + default: false + supportedLocales: + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). + type: List + default: + - en + - fr + - es + - de + - pt + tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + variables: + enabled: + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll + type: Boolean + default: false + tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + variables: + enabled: + description: | + If true, enables the tab tray UI experiments. + type: Boolean + default: true + translucency: + description: | + If true, enables translucency for tab tray actions at the bottom. + type: Boolean + default: false + toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: true + layout: + description: | + The type of layout of the toolbars. + type: Option + default: version1 + middle_button_customization: + description: | + Enables the middle button customization for navigation toolbar. + type: Boolean + default: true + minimal_address_bar: + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + type: Boolean + default: true + navigation_hint: + description: | + If true, enables the navigation contextual hint. + type: Boolean + default: true + one_tap_new_tab: + description: | + If true, enables the one tap new tab feature for users. + type: Boolean + default: true + swiping_tabs: + description: | + Enables swipe gestures to switch between browser tabs. + type: Boolean + default: true + toolbar_update_hint: + description: | + If true, enables the toolbar update contextual hint. + type: Boolean + default: false + translucency: + description: | + Enables translucency for toolbars. + type: Boolean + default: true + translucency-refactor: + description: | + Enables translucency refactor for toolbars. + type: Boolean + default: true + unified_search: + description: | + Enables the unified search feature. + type: Boolean + default: false + tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + variables: + status: + description: | + Enables the feature + type: Boolean + default: true + tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + variables: + content-option: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + type: TermsOfUsePromptContentOption + default: value-0 + enable-drag-to-dismiss: + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + type: Boolean + default: true + max-reminders-count: + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + type: Int + default: 2 + status: + description: | + Enables the feature + type: Boolean + default: false + tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + variables: + enabled: + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not + type: Boolean + default: true + translations-feature: + description: | + Enables translations feature. + variables: + enabled: + description: | + Whether or not to enable translations feature. + type: Boolean + default: false + trending-searches-feature: + description: | + Enables trending searches. + variables: + enabled: + description: | + Whether or not to enable trending searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + IconType: + description: The icon that will be added to the item in the device's search engine. + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: | + For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS. + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: | + The identifiers for the different images available for cards in onboarding + variants: + customize-firefox: + description: | + Corresponding to the fox window image + notifications: + description: | + Corresponding to the notifications image + notifications-ctd: + description: | + Corresponding to the notifications image for CTD + search-widget: + description: | + Corresponding to the fox search widget image + set-default-steps: + description: | + Corresponding to the set to default steps image + set-to-dock: + description: | + Corresponding to the set to dock image + sync-devices: + description: | + Corresponding to the sync-devices image + sync-devices-ctd: + description: | + Corresponding to the sync image for CTD + sync-with-icons: + description: | + Corresponding to the sync-devices image + sync-with-icons-brand-refresh: + description: | + Corresponding to the sync-with-icons image for Brand Refresh variant (different from Japan variant) + sync-with-icons-japan: + description: | + Corresponding to the sync-with-icons image for Japan variant + themeing: + description: | + Corresponding to the fox world image + toolbar: + description: | + Corresponding to the fox world image + trackers: + description: | + Corresponding to the trackers image + trackers-brand-refresh: + description: | + Corresponding to the trackers image for Brand Refresh variant (does not contain Japanese text, different from Japan variant) + trackers-japan: + description: | + Corresponding to the trackers image for Japan variant (contains Japanese text) + welcome-ctd: + description: | + Corresponding to the welcome image for CTD + welcome-globe: + description: | + Corresponding to the fox world image + NimbusOnboardingMultipleChoiceButtonImage: + description: | + The identifiers for the different images available for multiple choice buttons in onboarding + variants: + theme-dark: + description: | + Corresponding to the dark theme + theme-dark-japan: + description: | + Corresponding to the dark theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-light: + description: | + Corresponding to the light theme + theme-light-japan: + description: | + Corresponding to the light theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-system: + description: | + Corresponding to the system theme + theme-system-japan: + description: | + Corresponding to the system theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-bottom: + description: | + Corresponding to the toolbar on the bottom + toolbar-bottom-japan: + description: | + Corresponding to the toolbar on the bottom image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-top: + description: | + Corresponding to the toolbar on top + toolbar-top-japan: + description: | + Corresponding to the toolbar on top image for Japan variant. Also used by Brand Refresh variant as the images are identical. + OnboardingActions: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + end-onboarding: + description: | + Will end the onboarding on a set card + forward-one-card: + description: | + Will take the user to the next card + forward-three-card: + description: | + Will take the user to the next card + forward-two-card: + description: | + Will take the user to the next card + open-instructions-popup: + description: | + Will open up a popup with instructions for something + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + read-privacy-policy: + description: | + Will open a webview where the user can read the privacy policy + request-notifications: + description: | + Will request to allow notifications from the user + set-default-browser: + description: | + Will send the user to settings to set Firefox as their default browser and advance to next card + sync-sign-in: + description: | + Will take the user to the sync sign in flow + OnboardingCardType: + description: | + The identifiers for the different types of onboarding cards. + variants: + basic: + description: | + Corresponding to basic info onboarding cards + multiple-choice: + description: | + Corresponding to onboarding cards with multiple choice buttons + OnboardingInstructionsPopupActions: + description: | + The identifiers for the different actions available for the insturction card in onboarding + variants: + dismiss: + description: | + Will dismiss the popup + dismiss-and-next-card: + description: | + Will dismiss the popup and move to the next card + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + OnboardingMultipleChoiceAction: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + theme-dark: + description: | + Will will set the theme to dark mode + theme-light: + description: | + Will set the theme to light mode + theme-system-default: + description: | + Will set the theme to use the system theme + toolbar-bottom: + description: | + Will set the toolbar on the bottom + toolbar-top: + description: | + Will set the toolbar on the top + OnboardingType: + description: | + The identifiers for the different types of onboarding cards. + variants: + fresh-install: + description: | + Corresponding to onboarding cards that are for new users + upgrade: + description: | + Corresponding to onboarding cards that are for users who have updated + OnboardingVariant: + description: | + Which UI style this onboarding card is designed for. + variants: + brandRefresh: + description: Use the brand refresh onboarding UI with v148 strings. + japan: + description: Use the Japan-specific onboarding UI with localized assets. + legacy: + description: Use the existing (legacy) onboarding UI. + modern: + description: Use the new (modern) onboarding UI. + PageContent: + description: The page content that will be added as an item in the device's search engine. + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + ScrollDirection: + description: The layout direction for stories on the homepage. + variants: + baseline: + description: Uses the current default stories layout. + horizontal: + description: Shows stories in a horizontal layout. + vertical: + description: Shows stories in a vertical layout. + StartAtHome: + description: The option for what screen to open the app to + variants: + afterFourHours: + description: Starts the app at the homepage after four hours of inactivity, otherwise starts the app at the most recently viewed tab. + always: + description: Starts the app at the homepage. + disabled: + description: Starts the app at the most recently viewed tab. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TermsOfUsePromptContentOption: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + variants: + value-0: + description: | + Uses the current defaults: + - Title: "We've got an update" + - Learn more: "Please take a moment to review and accept. Learn more." + value-1: + description: | + Uses the following copy: + - Title: "Terms of Use" + - Learn more: "You can learn more here." + value-2: + description: | + Uses the following copy: + - Title: "A note from Firefox" + - Learn more: "You can learn more here." + ToolbarLayoutType: + description: The type of toolbar layout. + variants: + version1: + description: Shows the add new tab, menu and tabs button in the navigation toolbar. The share button is displayed in the address toolbar. + version2: + description: Like version1 but the menu and tabs buttons are inverted. +objects: + AwesomeBar: + description: A configuration option for the awesome bar. Part of the `search` feature. + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: | + This property defines whether or not the feature is enabled, and the position of the search bar + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: Search in the open tab's text content when typing. + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: | + An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action. + fields: + action: + description: | + The name of a deeplink URL to be opened if the button is clicked. + type: Option + default: null + action-params: + description: Query parameters appended to the deeplink action URL + type: Map + default: {} + button-label: + description: | + The text on the button. If no text is present, the whole message is clickable. + type: Option + default: null + except-if-any: + description: | + A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible. + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: null + is-control: + description: Indicates if this message is the control message, if true shouldn't be displayed + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: null + style: + description: | + The style as described in a `StyleData` from the styles table. + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: '' + title: + description: The title text displayed to the user + type: Option + default: null + trigger-if-all: + description: | + A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown. + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: | + Attributes relating to microsurvey messaging. + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: null + NimbusOnboardingButton: + description: | + A group of properties describing the attributes of a card. + fields: + action: + description: | + The action the button should take. The default for this will be "forward-one-card" + type: OnboardingActions + default: forward-one-card + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingButtons: + description: | + A set of buttons for the card. There can be up to two, but there must be at least one. + fields: + primary: + description: | + The primary button for the card. This must exist. + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: | + A secondary, optional, button for the card. + type: Option + default: null + NimbusOnboardingCardData: + description: | + A group of properties describing the attributes of a card. + fields: + body: + description: | + The body text dispalyed on the card, in less prominent text. This should never be defaulted. + type: Text + default: '' + buttons: + description: | + The set of buttons associated with the card. + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: null + card-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingCardType + default: basic + disqualifiers: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`. + type: List + default: [] + image: + description: | + The image that should be dispalyed on the card. + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: | + The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information + type: Option + default: null + link: + description: | + The object describing the link button for a card. If left empty, the card will have no link. + type: Option + default: null + multiple-choice-buttons: + description: | + A list of multiple choice buttons that the card will display + type: List + default: [] + onboarding-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingType + default: fresh-install + order: + description: | + The place in the order where the card will be found. The feature layer will then sort the cards based on this field. + type: Int + default: 10 + prerequisites: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty. + type: List + default: [] + title: + description: | + The title displayed on the card, in prominent, bolded text. This should never be defaulted. + type: Text + default: '' + uiVariant: + description: | + If set, this card will only be shown in the specified UI variant. If null, it will appear in both legacy and modern UIs. + type: Option + default: null + NimbusOnboardingInstructionPopup: + description: | + The object outlining the content of the instruction card. + fields: + button-action: + description: | + The action the button should have. Default is `dismiss-and-next-card` + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: | + The title the button should have. This should never be defaulted. + type: Text + default: '' + instructions: + description: | + A list of instructions, either as free text, or as Text identifiers. + type: List + default: [] + title: + description: | + The text of the popup. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingLink: + description: | + A group of properties describing the attributes for the active link on a card + fields: + title: + description: | + The text of the link title. + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: | + The url that the link will lead to. + type: String + default: https://www.mozilla.org/privacy/firefox/ + NimbusOnboardingMultipleChoiceButton: + description: | + A group of properties describing the attributes of a multiple choice button on a card + fields: + action: + description: | + The action the button should take. The default for this will be "theme-system-default" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: | + The text of the button title. This should never be defaulted. + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + StyleData: + description: | + A group of properities (predominantly visual) to the describe style of the message. + fields: + max-display-count: + description: | + How many sessions will this message be shown to the user before it is expired. + type: Int + default: 5 + priority: + description: | + The importance of this message. 0 is not very important, 100 is very important. + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/ios/v148.3.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v148.3.0/developer.fml.yaml new file mode 100644 index 0000000000..6977a6af7f --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.3.0/developer.fml.yaml @@ -0,0 +1,1690 @@ +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: +- developer +features: + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: If true, we will allow user to edit the address + type: Boolean + default: true + address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + variables: + status: + description: If true, we will show the new address bar menu entry + type: Boolean + default: true + ads-client: + description: This property defines if the rust ads client is enabled + variables: + status: + description: If true, we will enable the rust ads client + type: Boolean + default: true + app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + variables: + funIconsEnabled: + description: | + Controls whether users see the fun icons in the app icon settings. + type: Boolean + default: true + appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + variables: + status: + description: If true, we will show the new appearance menu entry + type: Boolean + default: true + apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + variables: + enabled: + description: | + Enables the apple summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + variables: + enabled: + description: | + Variable description + type: Boolean + default: false + default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + variables: + enabled: + description: | + If true, page zoom settings and default zoom feature are shown + type: Boolean + default: true + download-live-activities-feature: + description: | + Download Live Activities Feature + variables: + enabled: + description: | + If true, the download live activities feature is enabled + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: If true, enable Felt Deletion part of Felt Privacy + type: Boolean + default: false + simplified-ui-enabled: + description: If true, enable simplified UI part of Felt Privacy + type: Boolean + default: true + firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: true + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + type: Map + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. + type: Boolean + default: true + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + variables: + enabled: + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings + type: Boolean + default: true + homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + variables: + bookmarks-section-default: + description: | + If true, enables the bookmarks homepage section by default + type: Boolean + default: false + categories-enabled: + description: | + If true, enables the categories flow in the stories + type: Boolean + default: false + jbi-section-default: + description: | + If true, enables the jump back in homepage section by default + type: Boolean + default: false + search-bar: + description: | + If true, enables the search bar feature on homepage for users. + type: Boolean + default: false + stories-scroll-direction: + description: | + Controls the layout direction for stories on the homepage. + type: ScrollDirection + default: baseline + hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + variables: + enabled: + description: | + Enables the hosted summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + improved-app-store-review-trigger-feature: + description: | + The feature flag to manage the App Store review request trigger. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + menu-refactor-feature: + description: | + Controls the menu refactor feature + variables: + enabled: + description: | + Controls which menu users will see + type: Boolean + default: true + menu-default-browser-banner: + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + type: Boolean + default: true + menu-redesign-hint: + description: | + If true, enables the menu contextual hint for menu redesign. + type: Boolean + default: true + messaging: + description: | + The in-app messaging system + documentation: + - name: User documentation + url: https://experimenter.info/messaging/mobile-messaging + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed + variables: + actions: + description: A growable map of action URLs. + type: Map + default: + OPEN_SETTINGS: ://deep-link?url=settings/general + OPEN_SETTINGS_NEW_TAB: ://deep-link?url=settings/newtab + OPEN_SETTINGS_HOMESCREEN: ://deep-link?url=settings/homepage + OPEN_SETTINGS_WALLPAPERS: ://deep-link?url=settings/wallpaper + OPEN_SETTINGS_EMAIL: ://deep-link?url=settings/mailto + OPEN_SETTINGS_SEARCH_ENGINE: ://deep-link?url=settings/search + OPEN_SETTINGS_PRIVACY: ://deep-link?url=settings/clear-private-data + OPEN_SETTINGS_FXA: ://deep-link?url=settings/fxa + OPEN_SETTINGS_THEME: ://deep-link?url=settings/theme + OPEN_SETTINGS_APP_ICON: ://deep-link?url=settings/app-icon + OPEN_URL: ://open-url + VIEW_BOOKMARKS: ://deep-link?url=homepanel/bookmarks + VIEW_TOP_SITES: ://deep-link?url=homepanel/top-sites + VIEW_READING_LIST: ://deep-link?url=homepanel/reading-list + VIEW_HISTORY: ://deep-link?url=homepanel/history + VIEW_DOWNLOADS: ://deep-link?url=homepanel/downloads + ENABLE_PRIVATE_BROWSING: ://deep-link?url=homepanel/new-private-tab + OPEN_NEW_TAB: ://deep-link?url=homepanel/new-tab + MAKE_DEFAULT_BROWSER: ://deep-link?url=default-browser/system-settings + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: ://deep-link?url=default-browser/tutorial + OPEN_SHARE_SHEET: ://share-sheet + string-alias: ActionName + message-under-experiment: + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + type: Option + default: null + messages: + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + type: Map + default: + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + survey-surface-message: + surface: survey + style: SURVEY + trigger-if-all: + - NEVER + text: ResearchSurface/Body.Text.v112 + button-label: ResearchSurface/PrimaryButton.Label.v112 + action: OPEN_URL + action-params: + url: https://www.macrumors.com + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: | + A map of styles to configure message appearance. + type: Map + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: ('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale) + USER_EN_SPEAKER: '''en'' in locale' + USER_ES_SPEAKER: '''es'' in locale' + USER_DE_SPEAKER: '''de'' in locale' + USER_FR_SPEAKER: '''fr'' in locale' + DEVICE_ANDROID: os == 'Android' + DEVICE_IOS: os == 'iOS' + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: '''app_cycle.foreground''|eventLastSeen(''Days'', 1) > 1' + AFTER_THREE_LAUNCHES_THIS_WEEK: '''app_cycle.foreground''|eventSum(''Weeks'', 1, 0) >= 3' + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: os_version|versionCompare('14.!') >= 0 + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: '''homepage_viewed''|eventSum(''Years'', 4, 0) >= 2' + ON_FOURTH_LAUNCH_THIS_YEAR: '''app_cycle.foreground''|eventSum(''Years'', 1, 0) > 3' + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: '{experiment}' + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: true + native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: true + no_internet_connection_error: + description: | + This feature is for managing the roll out of the no interet connection native error page feature + type: Boolean + default: true + other-error-pages: + description: | + This feature is for managing the roll out of other native error pages + type: Boolean + default: false + onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + variables: + cards: + description: | + The list of available cards for onboarding. + type: Map + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + welcome-modern: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v140 + body: Onboarding/Onboarding.Modern.Welcome.Description.v140 + image: trackers + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatementA.v140 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v140 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + sign-to-sync-modern: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v140 + body: Onboarding/Onboarding.Modern.Sync.Description.v140 + image: sync-with-icons + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v140 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v140 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-toolbar-modern: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v140 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-theme-modern: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Customization.Theme.Title.v143 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + welcome-modern-japan: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v145 + body: Onboarding/Onboarding.Modern.Welcome.Description.v145 + image: trackers-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatmentA.v145 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v145 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + sign-to-sync-modern-japan: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v145 + body: Onboarding/Onboarding.Modern.Sync.Description.v145 + image: sync-with-icons-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v145 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v145 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-toolbar-modern-japan: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Toolbar.Description.v145 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v145 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v145 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-theme-modern-japan: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.Customization.Theme.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Theme.Description.v145 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Theme.Automatic.v145 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.Customization.Theme.Light.v145 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.Customization.Theme.Dark.v145 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + welcome-brand-refresh: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.TitleV3.v149 + body: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Description.v148 + image: trackers-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.ActionTreatmentA.v148 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Skip.v148 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-toolbar-brand-refresh: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Description.v148 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-theme-brand-refresh: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Description.v148 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Automatic.v148 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Light.v148 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Dark.v148 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + sign-to-sync-brand-refresh: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Description.v148 + image: sync-with-icons-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.SignIn.Action.v148 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Skip.Action.v148 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + string-alias: NimbusOnboardingCardKey + conditions: + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + string-alias: ConditionName + dismissable: + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + type: Boolean + default: true + enable-modern-ui: + description: | + Toggle between legacy (false) and modern (true) UI variants. + type: Boolean + default: false + should-use-brand-refresh-configuration: + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + type: Boolean + default: false + should-use-japan-configuration: + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. + type: Boolean + default: false + recent-searches-feature: + description: | + Enables recent searches. + variables: + enabled: + description: | + Whether or not to enable recent searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: false + search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + variables: + enabled: + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + type: Boolean + default: true + isTreatmentA: + description: | + If true, shares the treatment A text. If false, shares the treatment B text. + type: Boolean + default: true + snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + variables: + enabled: + description: If true the SnapKit removal refactor version will be used + type: Boolean + default: false + splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + maximum_duration_ms: + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 6000 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: If this is true, then on each page load adds a new item to Spotlight. + type: Boolean + default: true + icon-type: + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + type: Option + default: screenshot + keep-for-days: + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + type: Option + default: null + searchable-content: + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. + type: Option + default: text-excerpt + start-at-home-feature: + description: This feature is for experimenting with opening screen + variables: + setting: + description: This property provides a default setting for the start at home feature + type: StartAtHome + default: afterFourHours + summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + variables: + enabled: + description: | + Enables app attest authentication for the summarizer. + type: Boolean + default: true + summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + variables: + enabled: + description: | + Whether the feature is enabled or not. + type: Boolean + default: false + supportedLocales: + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). + type: List + default: + - en + - fr + - es + - de + - pt + tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + variables: + enabled: + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll + type: Boolean + default: false + tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + variables: + enabled: + description: | + If true, enables the tab tray UI experiments. + type: Boolean + default: true + translucency: + description: | + If true, enables translucency for tab tray actions at the bottom. + type: Boolean + default: true + toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: true + layout: + description: | + The type of layout of the toolbars. + type: Option + default: version1 + middle_button_customization: + description: | + Enables the middle button customization for navigation toolbar. + type: Boolean + default: true + minimal_address_bar: + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + type: Boolean + default: true + navigation_hint: + description: | + If true, enables the navigation contextual hint. + type: Boolean + default: true + one_tap_new_tab: + description: | + If true, enables the one tap new tab feature for users. + type: Boolean + default: true + swiping_tabs: + description: | + Enables swipe gestures to switch between browser tabs. + type: Boolean + default: true + toolbar_update_hint: + description: | + If true, enables the toolbar update contextual hint. + type: Boolean + default: false + translucency: + description: | + Enables translucency for toolbars. + type: Boolean + default: true + translucency-refactor: + description: | + Enables translucency refactor for toolbars. + type: Boolean + default: true + unified_search: + description: | + Enables the unified search feature. + type: Boolean + default: false + tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + variables: + status: + description: | + Enables the feature + type: Boolean + default: true + tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + variables: + content-option: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + type: TermsOfUsePromptContentOption + default: value-0 + enable-drag-to-dismiss: + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + type: Boolean + default: true + max-reminders-count: + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + type: Int + default: 2 + status: + description: | + Enables the feature + type: Boolean + default: false + tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + variables: + enabled: + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not + type: Boolean + default: true + translations-feature: + description: | + Enables translations feature. + variables: + enabled: + description: | + Whether or not to enable translations feature. + type: Boolean + default: false + trending-searches-feature: + description: | + Enables trending searches. + variables: + enabled: + description: | + Whether or not to enable trending searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + IconType: + description: The icon that will be added to the item in the device's search engine. + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: | + For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS. + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: | + The identifiers for the different images available for cards in onboarding + variants: + customize-firefox: + description: | + Corresponding to the fox window image + notifications: + description: | + Corresponding to the notifications image + notifications-ctd: + description: | + Corresponding to the notifications image for CTD + search-widget: + description: | + Corresponding to the fox search widget image + set-default-steps: + description: | + Corresponding to the set to default steps image + set-to-dock: + description: | + Corresponding to the set to dock image + sync-devices: + description: | + Corresponding to the sync-devices image + sync-devices-ctd: + description: | + Corresponding to the sync image for CTD + sync-with-icons: + description: | + Corresponding to the sync-devices image + sync-with-icons-brand-refresh: + description: | + Corresponding to the sync-with-icons image for Brand Refresh variant (different from Japan variant) + sync-with-icons-japan: + description: | + Corresponding to the sync-with-icons image for Japan variant + themeing: + description: | + Corresponding to the fox world image + toolbar: + description: | + Corresponding to the fox world image + trackers: + description: | + Corresponding to the trackers image + trackers-brand-refresh: + description: | + Corresponding to the trackers image for Brand Refresh variant (does not contain Japanese text, different from Japan variant) + trackers-japan: + description: | + Corresponding to the trackers image for Japan variant (contains Japanese text) + welcome-ctd: + description: | + Corresponding to the welcome image for CTD + welcome-globe: + description: | + Corresponding to the fox world image + NimbusOnboardingMultipleChoiceButtonImage: + description: | + The identifiers for the different images available for multiple choice buttons in onboarding + variants: + theme-dark: + description: | + Corresponding to the dark theme + theme-dark-japan: + description: | + Corresponding to the dark theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-light: + description: | + Corresponding to the light theme + theme-light-japan: + description: | + Corresponding to the light theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-system: + description: | + Corresponding to the system theme + theme-system-japan: + description: | + Corresponding to the system theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-bottom: + description: | + Corresponding to the toolbar on the bottom + toolbar-bottom-japan: + description: | + Corresponding to the toolbar on the bottom image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-top: + description: | + Corresponding to the toolbar on top + toolbar-top-japan: + description: | + Corresponding to the toolbar on top image for Japan variant. Also used by Brand Refresh variant as the images are identical. + OnboardingActions: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + end-onboarding: + description: | + Will end the onboarding on a set card + forward-one-card: + description: | + Will take the user to the next card + forward-three-card: + description: | + Will take the user to the next card + forward-two-card: + description: | + Will take the user to the next card + open-instructions-popup: + description: | + Will open up a popup with instructions for something + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + read-privacy-policy: + description: | + Will open a webview where the user can read the privacy policy + request-notifications: + description: | + Will request to allow notifications from the user + set-default-browser: + description: | + Will send the user to settings to set Firefox as their default browser and advance to next card + sync-sign-in: + description: | + Will take the user to the sync sign in flow + OnboardingCardType: + description: | + The identifiers for the different types of onboarding cards. + variants: + basic: + description: | + Corresponding to basic info onboarding cards + multiple-choice: + description: | + Corresponding to onboarding cards with multiple choice buttons + OnboardingInstructionsPopupActions: + description: | + The identifiers for the different actions available for the insturction card in onboarding + variants: + dismiss: + description: | + Will dismiss the popup + dismiss-and-next-card: + description: | + Will dismiss the popup and move to the next card + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + OnboardingMultipleChoiceAction: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + theme-dark: + description: | + Will will set the theme to dark mode + theme-light: + description: | + Will set the theme to light mode + theme-system-default: + description: | + Will set the theme to use the system theme + toolbar-bottom: + description: | + Will set the toolbar on the bottom + toolbar-top: + description: | + Will set the toolbar on the top + OnboardingType: + description: | + The identifiers for the different types of onboarding cards. + variants: + fresh-install: + description: | + Corresponding to onboarding cards that are for new users + upgrade: + description: | + Corresponding to onboarding cards that are for users who have updated + OnboardingVariant: + description: | + Which UI style this onboarding card is designed for. + variants: + brandRefresh: + description: Use the brand refresh onboarding UI with v148 strings. + japan: + description: Use the Japan-specific onboarding UI with localized assets. + legacy: + description: Use the existing (legacy) onboarding UI. + modern: + description: Use the new (modern) onboarding UI. + PageContent: + description: The page content that will be added as an item in the device's search engine. + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + ScrollDirection: + description: The layout direction for stories on the homepage. + variants: + baseline: + description: Uses the current default stories layout. + horizontal: + description: Shows stories in a horizontal layout. + vertical: + description: Shows stories in a vertical layout. + StartAtHome: + description: The option for what screen to open the app to + variants: + afterFourHours: + description: Starts the app at the homepage after four hours of inactivity, otherwise starts the app at the most recently viewed tab. + always: + description: Starts the app at the homepage. + disabled: + description: Starts the app at the most recently viewed tab. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TermsOfUsePromptContentOption: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + variants: + value-0: + description: | + Uses the current defaults: + - Title: "We've got an update" + - Learn more: "Please take a moment to review and accept. Learn more." + value-1: + description: | + Uses the following copy: + - Title: "Terms of Use" + - Learn more: "You can learn more here." + value-2: + description: | + Uses the following copy: + - Title: "A note from Firefox" + - Learn more: "You can learn more here." + ToolbarLayoutType: + description: The type of toolbar layout. + variants: + version1: + description: Shows the add new tab, menu and tabs button in the navigation toolbar. The share button is displayed in the address toolbar. + version2: + description: Like version1 but the menu and tabs buttons are inverted. +objects: + AwesomeBar: + description: A configuration option for the awesome bar. Part of the `search` feature. + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: | + This property defines whether or not the feature is enabled, and the position of the search bar + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: Search in the open tab's text content when typing. + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: | + An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action. + fields: + action: + description: | + The name of a deeplink URL to be opened if the button is clicked. + type: Option + default: null + action-params: + description: Query parameters appended to the deeplink action URL + type: Map + default: {} + button-label: + description: | + The text on the button. If no text is present, the whole message is clickable. + type: Option + default: null + except-if-any: + description: | + A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible. + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: null + is-control: + description: Indicates if this message is the control message, if true shouldn't be displayed + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: null + style: + description: | + The style as described in a `StyleData` from the styles table. + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: '' + title: + description: The title text displayed to the user + type: Option + default: null + trigger-if-all: + description: | + A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown. + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: | + Attributes relating to microsurvey messaging. + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: null + NimbusOnboardingButton: + description: | + A group of properties describing the attributes of a card. + fields: + action: + description: | + The action the button should take. The default for this will be "forward-one-card" + type: OnboardingActions + default: forward-one-card + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingButtons: + description: | + A set of buttons for the card. There can be up to two, but there must be at least one. + fields: + primary: + description: | + The primary button for the card. This must exist. + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: | + A secondary, optional, button for the card. + type: Option + default: null + NimbusOnboardingCardData: + description: | + A group of properties describing the attributes of a card. + fields: + body: + description: | + The body text dispalyed on the card, in less prominent text. This should never be defaulted. + type: Text + default: '' + buttons: + description: | + The set of buttons associated with the card. + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: null + card-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingCardType + default: basic + disqualifiers: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`. + type: List + default: [] + image: + description: | + The image that should be dispalyed on the card. + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: | + The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information + type: Option + default: null + link: + description: | + The object describing the link button for a card. If left empty, the card will have no link. + type: Option + default: null + multiple-choice-buttons: + description: | + A list of multiple choice buttons that the card will display + type: List + default: [] + onboarding-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingType + default: fresh-install + order: + description: | + The place in the order where the card will be found. The feature layer will then sort the cards based on this field. + type: Int + default: 10 + prerequisites: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty. + type: List + default: [] + title: + description: | + The title displayed on the card, in prominent, bolded text. This should never be defaulted. + type: Text + default: '' + uiVariant: + description: | + If set, this card will only be shown in the specified UI variant. If null, it will appear in both legacy and modern UIs. + type: Option + default: null + NimbusOnboardingInstructionPopup: + description: | + The object outlining the content of the instruction card. + fields: + button-action: + description: | + The action the button should have. Default is `dismiss-and-next-card` + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: | + The title the button should have. This should never be defaulted. + type: Text + default: '' + instructions: + description: | + A list of instructions, either as free text, or as Text identifiers. + type: List + default: [] + title: + description: | + The text of the popup. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingLink: + description: | + A group of properties describing the attributes for the active link on a card + fields: + title: + description: | + The text of the link title. + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: | + The url that the link will lead to. + type: String + default: https://www.mozilla.org/privacy/firefox/ + NimbusOnboardingMultipleChoiceButton: + description: | + A group of properties describing the attributes of a multiple choice button on a card + fields: + action: + description: | + The action the button should take. The default for this will be "theme-system-default" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: | + The text of the button title. This should never be defaulted. + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + StyleData: + description: | + A group of properities (predominantly visual) to the describe style of the message. + fields: + max-display-count: + description: | + How many sessions will this message be shown to the user before it is expired. + type: Int + default: 5 + priority: + description: | + The importance of this message. 0 is not very important, 100 is very important. + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/ios/v148.3.0/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v148.3.0/experimenter.yaml new file mode 100644 index 0000000000..7b61f51709 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.3.0/experimenter.yaml @@ -0,0 +1,596 @@ +address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will allow user to edit the address +address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will show the new address bar menu entry +ads-client: + description: This property defines if the rust ads client is enabled + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will enable the rust ads client +app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + hasExposure: true + exposureDescription: '' + variables: + funIconsEnabled: + type: boolean + description: | + Controls whether users see the fun icons in the app icon settings. +appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: If true, we will show the new appearance menu entry +apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the apple summarizer feature. + shakeGesture: + type: boolean + description: | + Enables the shake gesture for the summarizer feature. + toolbarEntrypoint: + type: boolean + description: | + Enables the toolbar entrypoint for the summarizer feature. +deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Variable description +default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, page zoom settings and default zoom feature are shown +download-live-activities-feature: + description: | + Download Live Activities Feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the download live activities feature is enabled +felt-privacy-feature: + description: The feature that enhances private browsing mode + hasExposure: true + exposureDescription: '' + variables: + felt-deletion-enabled: + type: boolean + description: If true, enable Felt Deletion part of Felt Privacy + simplified-ui-enabled: + type: boolean + description: If true, enable simplified UI part of Felt Privacy +firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature. +firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + hasExposure: true + exposureDescription: '' + variables: + available-suggestions-types: + type: json + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + status: + type: boolean + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. +general-app-features: + description: The feature that contains feature flags for the entire application + hasExposure: true + exposureDescription: '' + variables: + report-site-issue: + type: json + description: This property defines whether or not the feature is enabled +hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings +homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + hasExposure: true + exposureDescription: '' + variables: + bookmarks-section-default: + type: boolean + description: | + If true, enables the bookmarks homepage section by default + categories-enabled: + type: boolean + description: | + If true, enables the categories flow in the stories + jbi-section-default: + type: boolean + description: | + If true, enables the jump back in homepage section by default + search-bar: + type: boolean + description: | + If true, enables the search bar feature on homepage for users. + stories-scroll-direction: + type: string + description: | + Controls the layout direction for stories on the homepage. + enum: + - baseline + - horizontal + - vertical +hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the hosted summarizer feature. + shakeGesture: + type: boolean + description: | + Enables the shake gesture for the summarizer feature. + toolbarEntrypoint: + type: boolean + description: | + Enables the toolbar entrypoint for the summarizer feature. +improved-app-store-review-trigger-feature: + description: | + The feature flag to manage the App Store review request trigger. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature. +menu-refactor-feature: + description: | + Controls the menu refactor feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Controls which menu users will see + menu-default-browser-banner: + type: boolean + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + menu-redesign-hint: + type: boolean + description: | + If true, enables the menu contextual hint for menu redesign. +messaging: + description: | + The in-app messaging system + hasExposure: true + exposureDescription: '' + variables: + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + messages: + type: json + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: | + A map of styles to configure message appearance. + triggers: + type: json + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + ~~experiment: + type: string + description: Not to be set by experiment. +microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the feature is active. +native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the feature is active. + no_internet_connection_error: + type: boolean + description: | + This feature is for managing the roll out of the no interet connection native error page feature + other-error-pages: + type: boolean + description: | + This feature is for managing the roll out of other native error pages +onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + hasExposure: true + exposureDescription: '' + variables: + cards: + type: json + description: | + The list of available cards for onboarding. + conditions: + type: json + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + dismissable: + type: boolean + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + enable-modern-ui: + type: boolean + description: | + Toggle between legacy (false) and modern (true) UI variants. + should-use-brand-refresh-configuration: + type: boolean + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + should-use-japan-configuration: + type: boolean + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. +recent-searches-feature: + description: | + Enables recent searches. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether or not to enable recent searches. + max-suggestions: + type: int + description: The number of maximum suggestions. +relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature +search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + hasExposure: true + exposureDescription: '' + variables: + awesome-bar: + type: json + description: Configuring the awesome bar. +sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + isTreatmentA: + type: boolean + description: | + If true, shares the treatment A text. If false, shares the treatment B text. +snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: If true the SnapKit removal refactor version will be used +splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, the feature is active. + maximum_duration_ms: + type: int + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. +spotlight-search: + description: Add pages as items findable with Spotlight. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: If this is true, then on each page load adds a new item to Spotlight. + icon-type: + type: string + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + keep-for-days: + type: int + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + searchable-content: + type: string + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. +start-at-home-feature: + description: This feature is for experimenting with opening screen + hasExposure: true + exposureDescription: '' + variables: + setting: + type: string + description: This property provides a default setting for the start at home feature + enum: + - afterFourHours + - always + - disabled +summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables app attest authentication for the summarizer. +summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether the feature is enabled or not. + supportedLocales: + type: json + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). +tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll +tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + If true, enables the tab tray UI experiments. + translucency: + type: boolean + description: | + If true, enables translucency for tab tray actions at the bottom. +toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature + layout: + type: string + description: | + The type of layout of the toolbars. + middle_button_customization: + type: boolean + description: | + Enables the middle button customization for navigation toolbar. + minimal_address_bar: + type: boolean + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + navigation_hint: + type: boolean + description: | + If true, enables the navigation contextual hint. + one_tap_new_tab: + type: boolean + description: | + If true, enables the one tap new tab feature for users. + swiping_tabs: + type: boolean + description: | + Enables swipe gestures to switch between browser tabs. + toolbar_update_hint: + type: boolean + description: | + If true, enables the toolbar update contextual hint. + translucency: + type: boolean + description: | + Enables translucency for toolbars. + translucency-refactor: + type: boolean + description: | + Enables translucency refactor for toolbars. + unified_search: + type: boolean + description: | + Enables the unified search feature. +tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + hasExposure: true + exposureDescription: '' + variables: + status: + type: boolean + description: | + Enables the feature +tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + hasExposure: true + exposureDescription: '' + variables: + content-option: + type: string + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + enum: + - value-0 + - value-1 + - value-2 + enable-drag-to-dismiss: + type: boolean + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + max-reminders-count: + type: int + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + status: + type: boolean + description: | + Enables the feature +tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not +translations-feature: + description: | + Enables translations feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether or not to enable translations feature. +trending-searches-feature: + description: | + Enables trending searches. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Whether or not to enable trending searches. + max-suggestions: + type: int + description: The number of maximum suggestions. +voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature. +web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: | + Enables the feature. diff --git a/experimenter/experimenter/features/manifests/ios/v148.3.0/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v148.3.0/release.fml.yaml new file mode 100644 index 0000000000..aa4b20adfc --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v148.3.0/release.fml.yaml @@ -0,0 +1,1662 @@ +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: +- release +features: + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: If true, we will allow user to edit the address + type: Boolean + default: false + address-bar-menu-feature: + description: | + This property determines if we show the new address bar menu entry or the toolbar menu in settings + variables: + status: + description: If true, we will show the new address bar menu entry + type: Boolean + default: true + ads-client: + description: This property defines if the rust ads client is enabled + variables: + status: + description: If true, we will enable the rust ads client + type: Boolean + default: false + app-icon-selection-feature: + description: | + Controls which app icons users can select as their default app icon from the App Icon Selection screen in Settings. + variables: + funIconsEnabled: + description: | + Controls whether users see the fun icons in the app icon settings. + type: Boolean + default: true + appearance-menu-feature: + description: | + This property determines if we show the new appearance menu entry or the old theme settings + variables: + status: + description: If true, we will show the new appearance menu entry + type: Boolean + default: true + apple-summarizer-feature: + description: | + This feature enables the apple summarizer feature. + variables: + enabled: + description: | + Enables the apple summarizer feature. + type: Boolean + default: true + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: true + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: true + deeplink-optimization-refactor-feature: + description: | + The feature flag to manage the rollout of deeplink optimization feature. + variables: + enabled: + description: | + Variable description + type: Boolean + default: false + default-zoom-feature: + description: | + The feature flag to manage the rollout of default zoom feature. + variables: + enabled: + description: | + If true, page zoom settings and default zoom feature are shown + type: Boolean + default: true + download-live-activities-feature: + description: | + Download Live Activities Feature + variables: + enabled: + description: | + If true, the download live activities feature is enabled + type: Boolean + default: false + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: If true, enable Felt Deletion part of Felt Privacy + type: Boolean + default: false + simplified-ui-enabled: + description: If true, enable simplified UI part of Felt Privacy + type: Boolean + default: true + firefox-jp-guide-default-site: + description: | + This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: | + A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types. + type: Map + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: | + Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings. + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: false + hnt-sponsored-shortcuts-feature: + description: This feature manages the visibility of sponsored shortcuts on the homepage + variables: + enabled: + description: Setting 'enabled' to false will hide sponsored shortcuts on the homepage and disable the respective toggle in the homepage settings + type: Boolean + default: true + homepage-redesign-feature: + description: | + This feature is for managing the roll out of the Homepage New Tab Redesign feature. + variables: + bookmarks-section-default: + description: | + If true, enables the bookmarks homepage section by default + type: Boolean + default: false + categories-enabled: + description: | + If true, enables the categories flow in the stories + type: Boolean + default: false + jbi-section-default: + description: | + If true, enables the jump back in homepage section by default + type: Boolean + default: false + search-bar: + description: | + If true, enables the search bar feature on homepage for users. + type: Boolean + default: false + stories-scroll-direction: + description: | + Controls the layout direction for stories on the homepage. + type: ScrollDirection + default: baseline + hosted-summarizer-feature: + description: | + This feature enables the hosted summarizer feature. + variables: + enabled: + description: | + Enables the hosted summarizer feature. + type: Boolean + default: false + shakeGesture: + description: | + Enables the shake gesture for the summarizer feature. + type: Boolean + default: false + toolbarEntrypoint: + description: | + Enables the toolbar entrypoint for the summarizer feature. + type: Boolean + default: false + improved-app-store-review-trigger-feature: + description: | + The feature flag to manage the App Store review request trigger. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + menu-refactor-feature: + description: | + Controls the menu refactor feature + variables: + enabled: + description: | + Controls which menu users will see + type: Boolean + default: true + menu-default-browser-banner: + description: | + If true, enables the menu Make Firefox your default banner, on top of the menu. + type: Boolean + default: true + menu-redesign-hint: + description: | + If true, enables the menu contextual hint for menu redesign. + type: Boolean + default: true + messaging: + description: | + The in-app messaging system + documentation: + - name: User documentation + url: https://experimenter.info/messaging/mobile-messaging + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed + - https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed + variables: + actions: + description: A growable map of action URLs. + type: Map + default: + OPEN_SETTINGS: ://deep-link?url=settings/general + OPEN_SETTINGS_NEW_TAB: ://deep-link?url=settings/newtab + OPEN_SETTINGS_HOMESCREEN: ://deep-link?url=settings/homepage + OPEN_SETTINGS_WALLPAPERS: ://deep-link?url=settings/wallpaper + OPEN_SETTINGS_EMAIL: ://deep-link?url=settings/mailto + OPEN_SETTINGS_SEARCH_ENGINE: ://deep-link?url=settings/search + OPEN_SETTINGS_PRIVACY: ://deep-link?url=settings/clear-private-data + OPEN_SETTINGS_FXA: ://deep-link?url=settings/fxa + OPEN_SETTINGS_THEME: ://deep-link?url=settings/theme + OPEN_SETTINGS_APP_ICON: ://deep-link?url=settings/app-icon + OPEN_URL: ://open-url + VIEW_BOOKMARKS: ://deep-link?url=homepanel/bookmarks + VIEW_TOP_SITES: ://deep-link?url=homepanel/top-sites + VIEW_READING_LIST: ://deep-link?url=homepanel/reading-list + VIEW_HISTORY: ://deep-link?url=homepanel/history + VIEW_DOWNLOADS: ://deep-link?url=homepanel/downloads + ENABLE_PRIVATE_BROWSING: ://deep-link?url=homepanel/new-private-tab + OPEN_NEW_TAB: ://deep-link?url=homepanel/new-tab + MAKE_DEFAULT_BROWSER: ://deep-link?url=default-browser/system-settings + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: ://deep-link?url=default-browser/tutorial + OPEN_SHARE_SHEET: ://share-sheet + string-alias: ActionName + message-under-experiment: + description: 'Deprecated. Please use "experiment": "{experiment}" instead.' + type: Option + default: null + messages: + description: | + A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData. + type: Map + default: {} + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: | + A map of styles to configure message appearance. + type: Map + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: | + A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: ('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale) + USER_EN_SPEAKER: '''en'' in locale' + USER_ES_SPEAKER: '''es'' in locale' + USER_DE_SPEAKER: '''de'' in locale' + USER_FR_SPEAKER: '''fr'' in locale' + DEVICE_ANDROID: os == 'Android' + DEVICE_IOS: os == 'iOS' + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: '''app_cycle.foreground''|eventLastSeen(''Days'', 1) > 1' + AFTER_THREE_LAUNCHES_THIS_WEEK: '''app_cycle.foreground''|eventSum(''Weeks'', 1, 0) >= 3' + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: os_version|versionCompare('14.!') >= 0 + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: '''homepage_viewed''|eventSum(''Years'', 4, 0) >= 2' + ON_FOURTH_LAUNCH_THIS_YEAR: '''app_cycle.foreground''|eventSum(''Years'', 1, 0) > 3' + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: '{experiment}' + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: | + A feature that shows the microsurvey for users to interact with and submit responses. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + native-error-page-feature: + description: | + This feature is for managing the roll out of the native error page feature + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + no_internet_connection_error: + description: | + This feature is for managing the roll out of the no interet connection native error page feature + type: Boolean + default: false + other-error-pages: + description: | + This feature is for managing the roll out of other native error pages + type: Boolean + default: false + onboarding-framework-feature: + description: | + The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments. + variables: + cards: + description: | + The list of available cards for onboarding. + type: Map + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + welcome-modern: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v140 + body: Onboarding/Onboarding.Modern.Welcome.Description.v140 + image: trackers + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatementA.v140 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v140 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + sign-to-sync-modern: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v140 + body: Onboarding/Onboarding.Modern.Sync.Description.v140 + image: sync-with-icons + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v140 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v140 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-toolbar-modern: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v140 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + customization-theme-modern: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Customization.Theme.Title.v143 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Theme.Continue.Action.v140 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: modern + welcome-modern-japan: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.Welcome.Title.v145 + body: Onboarding/Onboarding.Modern.Welcome.Description.v145 + image: trackers-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Welcome.ActionTreatmentA.v145 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.Welcome.Skip.v145 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + sign-to-sync-modern-japan: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.Sync.Title.v145 + body: Onboarding/Onboarding.Modern.Sync.Description.v145 + image: sync-with-icons-japan + buttons: + primary: + title: Onboarding/Onboarding.Modern.Sync.SignIn.Action.v145 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.Sync.Skip.Action.v145 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-toolbar-modern-japan: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Toolbar.Description.v145 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v145 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v145 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + customization-theme-modern-japan: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.Customization.Theme.Title.v145 + body: Onboarding/Onboarding.Modern.Customization.Theme.Description.v145 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.Customization.Toolbar.Continue.Action.v145 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Theme.Automatic.v145 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.Customization.Theme.Light.v145 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.Customization.Theme.Dark.v145 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: japan + welcome-brand-refresh: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.TitleV3.v149 + body: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Description.v148 + image: trackers-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.ActionTreatmentA.v148 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Welcome.Skip.v148 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-toolbar-brand-refresh: + card-type: multiple-choice + order: 20 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Description.v148 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Toolbar.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Bottom.Action.v140 + image: toolbar-bottom-japan + action: toolbar-bottom + - title: Onboarding/Onboarding.Modern.Customization.Toolbar.Top.Action.v140 + image: toolbar-top-japan + action: toolbar-top + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + customization-theme-brand-refresh: + card-type: multiple-choice + order: 25 + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Description.v148 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Continue.Action.v148 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Automatic.v148 + image: theme-system-japan + action: theme-system-default + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Light.v148 + image: theme-light-japan + action: theme-light + - title: Onboarding/Onboarding.Modern.BrandRefresh.Customization.Theme.Dark.v148 + image: theme-dark-japan + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + sign-to-sync-brand-refresh: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Title.v148 + body: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Description.v148 + image: sync-with-icons-brand-refresh + buttons: + primary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.SignIn.Action.v148 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Modern.BrandRefresh.Sync.Skip.Action.v148 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + uiVariant: brandRefresh + string-alias: NimbusOnboardingCardKey + conditions: + description: | + A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression. + type: Map + default: + ALWAYS: 'true' + NEVER: 'false' + string-alias: ConditionName + dismissable: + description: | + Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen. + type: Boolean + default: true + enable-modern-ui: + description: | + Toggle between legacy (false) and modern (true) UI variants. + type: Boolean + default: false + should-use-brand-refresh-configuration: + description: | + Toggle between standard (false) and brand refresh (true) onboarding content. + type: Boolean + default: false + should-use-japan-configuration: + description: | + Toggle between standard (false) and Japan-specific (true) assets and content. + type: Boolean + default: false + recent-searches-feature: + description: | + Enables recent searches. + variables: + enabled: + description: | + Whether or not to enable recent searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + relay-integration-feature: + description: | + This feature is for managing the roll out of Relay email masking integration in iOS + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: false + search: + description: | + Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases. + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: | + Adds additional promo text to links shared to WhatsApp. + variables: + enabled: + description: | + Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings. + type: Boolean + default: false + isTreatmentA: + description: | + If true, shares the treatment A text. If false, shares the treatment B text. + type: Boolean + default: true + snapkit-removal-refactor: + description: This property defines if SnapKit removal refactor is enbaled + variables: + enabled: + description: If true the SnapKit removal refactor version will be used + type: Boolean + default: false + splash-screen: + description: | + A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run. + variables: + enabled: + description: | + If true, the feature is active. + type: Boolean + default: false + maximum_duration_ms: + description: | + The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: If this is true, then on each page load adds a new item to Spotlight. + type: Boolean + default: false + icon-type: + description: | + The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed. + type: Option + default: letter + keep-for-days: + description: | + Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default. + type: Option + default: null + searchable-content: + description: | + The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used. + type: Option + default: text-excerpt + start-at-home-feature: + description: This feature is for experimenting with opening screen + variables: + setting: + description: This property provides a default setting for the start at home feature + type: StartAtHome + default: afterFourHours + summarizer-app-attest-auth-feature: + description: | + This feature enables app attest authentication for the summarizer. + variables: + enabled: + description: | + Enables app attest authentication for the summarizer. + type: Boolean + default: false + summarizer-language-expansion-feature: + description: | + The feature flag to manage the rollout of the summarizer language expansion. + variables: + enabled: + description: | + Whether the feature is enabled or not. + type: Boolean + default: false + supportedLocales: + description: | + The list of supported locale identifiers for the summarizer language expansion according to BCP47 standard. i.e "en-US" for English (United States). + type: List + default: + - en + - fr + - es + - de + - pt + tab-scroll-refactor-feature: + description: | + The feature flag to manage the rollout of tab scroll refactor feature. + variables: + enabled: + description: | + If true, tab scroll new implementation is used to show and hide toolbar views reacting to user scroll + type: Boolean + default: false + tab-tray-ui-experiments: + description: | + The tab tray will undergo some UI experimentation to test potential improvements. + variables: + enabled: + description: | + If true, enables the tab tray UI experiments. + type: Boolean + default: true + translucency: + description: | + If true, enables translucency for tab tray actions at the bottom. + type: Boolean + default: false + toolbar-refactor-feature: + description: | + This feature is for managing the roll out of the Toolbar refactor feature + variables: + enabled: + description: | + Enables the feature + type: Boolean + default: true + layout: + description: | + The type of layout of the toolbars. + type: Option + default: version1 + middle_button_customization: + description: | + Enables the middle button customization for navigation toolbar. + type: Boolean + default: true + minimal_address_bar: + description: | + Enables minimal address bar mode on scroll to ensure the url is always visible. + type: Boolean + default: true + navigation_hint: + description: | + If true, enables the navigation contextual hint. + type: Boolean + default: true + one_tap_new_tab: + description: | + If true, enables the one tap new tab feature for users. + type: Boolean + default: true + swiping_tabs: + description: | + Enables swipe gestures to switch between browser tabs. + type: Boolean + default: true + toolbar_update_hint: + description: | + If true, enables the toolbar update contextual hint. + type: Boolean + default: false + translucency: + description: | + Enables translucency for toolbars. + type: Boolean + default: true + translucency-refactor: + description: | + Enables translucency refactor for toolbars. + type: Boolean + default: true + unified_search: + description: | + Enables the unified search feature. + type: Boolean + default: false + tos-feature: + description: | + This feature is for managing the roll out of the ToS (Term of Service) implementation + variables: + status: + description: | + Enables the feature + type: Boolean + default: true + tou-feature: + description: | + This feature is for managing the rollout of the Terms of Use (ToU) implementation. + variables: + content-option: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + type: TermsOfUsePromptContentOption + default: value-0 + enable-drag-to-dismiss: + description: | + Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt. + type: Boolean + default: true + max-reminders-count: + description: | + Maximum number of ToU bottom sheet reminders that can be displayed + type: Int + default: 2 + status: + description: | + Enables the feature + type: Boolean + default: false + tracking-protection-refactor: + description: | + The Enhanced Tracking Protection refactor + variables: + enabled: + description: | + Whether the Enhanced Tracking Protection refactor is enabled or not + type: Boolean + default: true + translations-feature: + description: | + Enables translations feature. + variables: + enabled: + description: | + Whether or not to enable translations feature. + type: Boolean + default: false + trending-searches-feature: + description: | + Enables trending searches. + variables: + enabled: + description: | + Whether or not to enable trending searches. + type: Boolean + default: false + max-suggestions: + description: The number of maximum suggestions. + type: Int + default: 5 + voice-search-feature: + description: | + The feature flag to manage the roll out of the voice search feature. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false + web-engine-integration-refactor: + description: | + The feature flag to manage the roll out of the integration of WebEngine into Firefox. + variables: + enabled: + description: | + Enables the feature. + type: Boolean + default: false +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + IconType: + description: The icon that will be added to the item in the device's search engine. + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: | + For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS. + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: | + The identifiers for the different images available for cards in onboarding + variants: + customize-firefox: + description: | + Corresponding to the fox window image + notifications: + description: | + Corresponding to the notifications image + notifications-ctd: + description: | + Corresponding to the notifications image for CTD + search-widget: + description: | + Corresponding to the fox search widget image + set-default-steps: + description: | + Corresponding to the set to default steps image + set-to-dock: + description: | + Corresponding to the set to dock image + sync-devices: + description: | + Corresponding to the sync-devices image + sync-devices-ctd: + description: | + Corresponding to the sync image for CTD + sync-with-icons: + description: | + Corresponding to the sync-devices image + sync-with-icons-brand-refresh: + description: | + Corresponding to the sync-with-icons image for Brand Refresh variant (different from Japan variant) + sync-with-icons-japan: + description: | + Corresponding to the sync-with-icons image for Japan variant + themeing: + description: | + Corresponding to the fox world image + toolbar: + description: | + Corresponding to the fox world image + trackers: + description: | + Corresponding to the trackers image + trackers-brand-refresh: + description: | + Corresponding to the trackers image for Brand Refresh variant (does not contain Japanese text, different from Japan variant) + trackers-japan: + description: | + Corresponding to the trackers image for Japan variant (contains Japanese text) + welcome-ctd: + description: | + Corresponding to the welcome image for CTD + welcome-globe: + description: | + Corresponding to the fox world image + NimbusOnboardingMultipleChoiceButtonImage: + description: | + The identifiers for the different images available for multiple choice buttons in onboarding + variants: + theme-dark: + description: | + Corresponding to the dark theme + theme-dark-japan: + description: | + Corresponding to the dark theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-light: + description: | + Corresponding to the light theme + theme-light-japan: + description: | + Corresponding to the light theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + theme-system: + description: | + Corresponding to the system theme + theme-system-japan: + description: | + Corresponding to the system theme image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-bottom: + description: | + Corresponding to the toolbar on the bottom + toolbar-bottom-japan: + description: | + Corresponding to the toolbar on the bottom image for Japan variant. Also used by Brand Refresh variant as the images are identical. + toolbar-top: + description: | + Corresponding to the toolbar on top + toolbar-top-japan: + description: | + Corresponding to the toolbar on top image for Japan variant. Also used by Brand Refresh variant as the images are identical. + OnboardingActions: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + end-onboarding: + description: | + Will end the onboarding on a set card + forward-one-card: + description: | + Will take the user to the next card + forward-three-card: + description: | + Will take the user to the next card + forward-two-card: + description: | + Will take the user to the next card + open-instructions-popup: + description: | + Will open up a popup with instructions for something + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + read-privacy-policy: + description: | + Will open a webview where the user can read the privacy policy + request-notifications: + description: | + Will request to allow notifications from the user + set-default-browser: + description: | + Will send the user to settings to set Firefox as their default browser and advance to next card + sync-sign-in: + description: | + Will take the user to the sync sign in flow + OnboardingCardType: + description: | + The identifiers for the different types of onboarding cards. + variants: + basic: + description: | + Corresponding to basic info onboarding cards + multiple-choice: + description: | + Corresponding to onboarding cards with multiple choice buttons + OnboardingInstructionsPopupActions: + description: | + The identifiers for the different actions available for the insturction card in onboarding + variants: + dismiss: + description: | + Will dismiss the popup + dismiss-and-next-card: + description: | + Will dismiss the popup and move to the next card + open-ios-fx-settings: + description: | + Will take the user to the default browser settings in the iOS system settings + OnboardingMultipleChoiceAction: + description: | + The identifiers for the different actions available for cards in onboarding + variants: + theme-dark: + description: | + Will will set the theme to dark mode + theme-light: + description: | + Will set the theme to light mode + theme-system-default: + description: | + Will set the theme to use the system theme + toolbar-bottom: + description: | + Will set the toolbar on the bottom + toolbar-top: + description: | + Will set the toolbar on the top + OnboardingType: + description: | + The identifiers for the different types of onboarding cards. + variants: + fresh-install: + description: | + Corresponding to onboarding cards that are for new users + upgrade: + description: | + Corresponding to onboarding cards that are for users who have updated + OnboardingVariant: + description: | + Which UI style this onboarding card is designed for. + variants: + brandRefresh: + description: Use the brand refresh onboarding UI with v148 strings. + japan: + description: Use the Japan-specific onboarding UI with localized assets. + legacy: + description: Use the existing (legacy) onboarding UI. + modern: + description: Use the new (modern) onboarding UI. + PageContent: + description: The page content that will be added as an item in the device's search engine. + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + ScrollDirection: + description: The layout direction for stories on the homepage. + variants: + baseline: + description: Uses the current default stories layout. + horizontal: + description: Shows stories in a horizontal layout. + vertical: + description: Shows stories in a vertical layout. + StartAtHome: + description: The option for what screen to open the app to + variants: + afterFourHours: + description: Starts the app at the homepage after four hours of inactivity, otherwise starts the app at the most recently viewed tab. + always: + description: Starts the app at the homepage. + disabled: + description: Starts the app at the most recently viewed tab. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TermsOfUsePromptContentOption: + description: | + Determines which predefined title and "learn more" strings are used for the Terms of Use prompt. + variants: + value-0: + description: | + Uses the current defaults: + - Title: "We've got an update" + - Learn more: "Please take a moment to review and accept. Learn more." + value-1: + description: | + Uses the following copy: + - Title: "Terms of Use" + - Learn more: "You can learn more here." + value-2: + description: | + Uses the following copy: + - Title: "A note from Firefox" + - Learn more: "You can learn more here." + ToolbarLayoutType: + description: The type of toolbar layout. + variants: + version1: + description: Shows the add new tab, menu and tabs button in the navigation toolbar. The share button is displayed in the address toolbar. + version2: + description: Like version1 but the menu and tabs buttons are inverted. +objects: + AwesomeBar: + description: A configuration option for the awesome bar. Part of the `search` feature. + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: | + This property defines whether or not the feature is enabled, and the position of the search bar + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: Search in the open tab's text content when typing. + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: | + An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action. + fields: + action: + description: | + The name of a deeplink URL to be opened if the button is clicked. + type: Option + default: null + action-params: + description: Query parameters appended to the deeplink action URL + type: Map + default: {} + button-label: + description: | + The text on the button. If no text is present, the whole message is clickable. + type: Option + default: null + except-if-any: + description: | + A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible. + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: null + is-control: + description: Indicates if this message is the control message, if true shouldn't be displayed + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: null + style: + description: | + The style as described in a `StyleData` from the styles table. + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: '' + title: + description: The title text displayed to the user + type: Option + default: null + trigger-if-all: + description: | + A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown. + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: | + Attributes relating to microsurvey messaging. + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: null + NimbusOnboardingButton: + description: | + A group of properties describing the attributes of a card. + fields: + action: + description: | + The action the button should take. The default for this will be "forward-one-card" + type: OnboardingActions + default: forward-one-card + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingButtons: + description: | + A set of buttons for the card. There can be up to two, but there must be at least one. + fields: + primary: + description: | + The primary button for the card. This must exist. + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: | + A secondary, optional, button for the card. + type: Option + default: null + NimbusOnboardingCardData: + description: | + A group of properties describing the attributes of a card. + fields: + body: + description: | + The body text dispalyed on the card, in less prominent text. This should never be defaulted. + type: Text + default: '' + buttons: + description: | + The set of buttons associated with the card. + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: null + card-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingCardType + default: basic + disqualifiers: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`. + type: List + default: [] + image: + description: | + The image that should be dispalyed on the card. + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: | + The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information + type: Option + default: null + link: + description: | + The object describing the link button for a card. If left empty, the card will have no link. + type: Option + default: null + multiple-choice-buttons: + description: | + A list of multiple choice buttons that the card will display + type: List + default: [] + onboarding-type: + description: | + The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install. + type: OnboardingType + default: fresh-install + order: + description: | + The place in the order where the card will be found. The feature layer will then sort the cards based on this field. + type: Int + default: 10 + prerequisites: + description: | + A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty. + type: List + default: [] + title: + description: | + The title displayed on the card, in prominent, bolded text. This should never be defaulted. + type: Text + default: '' + uiVariant: + description: | + If set, this card will only be shown in the specified UI variant. If null, it will appear in both legacy and modern UIs. + type: Option + default: null + NimbusOnboardingInstructionPopup: + description: | + The object outlining the content of the instruction card. + fields: + button-action: + description: | + The action the button should have. Default is `dismiss-and-next-card` + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: | + The title the button should have. This should never be defaulted. + type: Text + default: '' + instructions: + description: | + A list of instructions, either as free text, or as Text identifiers. + type: List + default: [] + title: + description: | + The text of the popup. This should never be defaulted. + type: Text + default: '' + NimbusOnboardingLink: + description: | + A group of properties describing the attributes for the active link on a card + fields: + title: + description: | + The text of the link title. + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: | + The url that the link will lead to. + type: String + default: https://www.mozilla.org/privacy/firefox/ + NimbusOnboardingMultipleChoiceButton: + description: | + A group of properties describing the attributes of a multiple choice button on a card + fields: + action: + description: | + The action the button should take. The default for this will be "theme-system-default" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: | + The text of the button title. This should never be defaulted. + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: | + The text of the button title. This should never be defaulted. + type: Text + default: '' + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + StyleData: + description: | + A group of properities (predominantly visual) to the describe style of the message. + fields: + max-display-count: + description: | + How many sessions will this message be shown to the user before it is expired. + type: Int + default: 5 + priority: + description: | + The importance of this message. 0 is not very important, 100 is very important. + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/subplat-web/developer.fml.yaml b/experimenter/experimenter/features/manifests/subplat-web/developer.fml.yaml index 1e1277b909..b14d69abcc 100644 --- a/experimenter/experimenter/features/manifests/subplat-web/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/subplat-web/developer.fml.yaml @@ -4,6 +4,13 @@ about: channels: - developer features: + free-trial-feature: + description: Control whether free trials are enabled for payments-next + variables: + enabled: + description: If the feature is enabled. + type: Boolean + default: true welcome-feature: description: Display a welcome banner on the new Sub Manage page variables: diff --git a/experimenter/experimenter/features/manifests/subplat-web/experimenter.yaml b/experimenter/experimenter/features/manifests/subplat-web/experimenter.yaml index febe99c4fb..45c4e5190a 100644 --- a/experimenter/experimenter/features/manifests/subplat-web/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/subplat-web/experimenter.yaml @@ -1,3 +1,11 @@ +free-trial-feature: + description: Control whether free trials are enabled for payments-next + hasExposure: true + exposureDescription: '' + variables: + enabled: + type: boolean + description: If the feature is enabled. welcome-feature: description: Display a welcome banner on the new Sub Manage page hasExposure: true diff --git a/experimenter/experimenter/features/manifests/subplat-web/production.fml.yaml b/experimenter/experimenter/features/manifests/subplat-web/production.fml.yaml index 1a5cec6ddb..2a1a2dfd05 100644 --- a/experimenter/experimenter/features/manifests/subplat-web/production.fml.yaml +++ b/experimenter/experimenter/features/manifests/subplat-web/production.fml.yaml @@ -4,6 +4,13 @@ about: channels: - production features: + free-trial-feature: + description: Control whether free trials are enabled for payments-next + variables: + enabled: + description: If the feature is enabled. + type: Boolean + default: false welcome-feature: description: Display a welcome banner on the new Sub Manage page variables: diff --git a/experimenter/experimenter/features/manifests/subplat-web/staging.fml.yaml b/experimenter/experimenter/features/manifests/subplat-web/staging.fml.yaml index d34b4d2e7c..7fa1b1c2bc 100644 --- a/experimenter/experimenter/features/manifests/subplat-web/staging.fml.yaml +++ b/experimenter/experimenter/features/manifests/subplat-web/staging.fml.yaml @@ -4,6 +4,13 @@ about: channels: - staging features: + free-trial-feature: + description: Control whether free trials are enabled for payments-next + variables: + enabled: + description: If the feature is enabled. + type: Boolean + default: false welcome-feature: description: Display a welcome banner on the new Sub Manage page variables: