chore(nimbus): Update External Configs (#11744)

SUMMARY:

SUCCESS:

fenix at master (f2df1ff64cb876e10c72ce7eed1fc9eac3f877bb) version None
fenix at master (f2df1ff64cb876e10c72ce7eed1fc9eac3f877bb) version
134.0.0
fenix at beta (59ec02c752886676a2b4e34b378020253b2627ff) version 133.0.0
fenix at release (2a5954d798f11e0a2f5d0b7e0c919d9384cad989) version
132.0.3
firefox_ios at main (731d7fc9f0dbe6a9f3a5f25acc1fcf2c63778a80) version
None
firefox_ios at release/v133 (2ca6c2c59919516b2a38462addcedef7cf069677)
version 133.0.0
firefox_ios at main (731d7fc9f0dbe6a9f3a5f25acc1fcf2c63778a80) version
134.0.0
focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version
None
focus_ios at main (731d7fc9f0dbe6a9f3a5f25acc1fcf2c63778a80) version
None
focus_ios at release/v133 (2ca6c2c59919516b2a38462addcedef7cf069677)
version 133.0.0
focus_ios at main (731d7fc9f0dbe6a9f3a5f25acc1fcf2c63778a80) version
134.0.0
monitor_cirrus at main (ba9c0e4a10a1f797dc13aae5252f1f4e530ab250)
version None
mozillavpn_backend_cirrus at main
(2eb7ad4188db6bd5d4f48a15dd2768f89c143bc6) version None
firefox_accounts_cirrus at main
(bbcfdd09544a67c8f316ad24c1d86c3898ba4ef8) version None
firefox_desktop at central (db07c33528d623f09163e684653be46575f563e1)
version None
firefox_desktop at central (db07c33528d623f09163e684653be46575f563e1)
version 134.0.0
firefox_desktop at beta (299911741634267ce7f7e31fb80a97483562a8a1)
version 133.0.0
firefox_desktop at release (41f7afc15996877ed0aace3625597c9f4e87eabe)
version 132.0.3
firefox_desktop at esr128 (e6099586845f23c0f85fe29a636980e57d206897)
version 128.5.0

CACHED:

firefox_ios at release/v129 (500c57e46f0de7c5125ba823eb4f72500934bdca)
version 129.3.0 (cached)
firefox_ios at release/v130 (a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12)
version 130.2.0 (cached)
firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8)
version 131.5.0 (cached)
firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc)
version 132.2.0 (cached)
focus_android at releases_v121
(979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached)
focus_android at releases_v122
(1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached)
focus_android at releases_v123
(5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached)
focus_android at releases_v124
(0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached)
focus_android at releases_v125
(2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached)
focus_android at focus-v125.3.0
(9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached)
focus_android at focus-v125.2.0
(d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached)
focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version
125.0.0 (cached)
focus_android at focus-v124.2.0
(7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached)
focus_android at focus-v124.1.0
(516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached)
focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272)
version 124.0.0 (cached)
focus_android at focus-v123.1.0
(cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached)
focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65)
version 123.0.0 (cached)
focus_android at focus-v122.1.0
(0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached)
focus_android at focus-v122.0.1
(c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached)
focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc)
version 122.0.0 (cached)
focus_android at focus-v121.1.0
(62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached)
focus_android at focus-v121.0.1
(fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached)
focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd)
version 121.0.0 (cached)
focus_ios at release/v129 (500c57e46f0de7c5125ba823eb4f72500934bdca)
version 129.3.0 (cached)
focus_ios at release/v130 (a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12)
version 130.2.0 (cached)
focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8)
version 131.5.0 (cached)
focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc)
version 132.2.0 (cached)
focus_ios at focus/klar-v132.0
(d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached)
focus_ios at focus/klar-v131.1
(b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached)
focus_ios at focus/klar-v131.0
(34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached)
focus_ios at focus/klar-v130.0
(0b359af1d789a91976657cbe22c7d3d9c7fdadc3) version 130.0.0 (cached)
focus_ios at focus/klar-v129.2
(61ba62d82c23048762bede05525bb666e47a2a31) version 129.2.0 (cached)
focus_ios at focus/klar-v129.0
(0e05b35093a60b308f0ef46447ab5be63fe5409f) version 129.0.0 (cached)
firefox_desktop at esr115 (49aae7825e825c290102609ba4240f7ed2b788e7)
version 115.18.0 (cached)

Circle CI Task: https://circleci.com/gh/mozilla/experimenter/256132
This commit is contained in:
dataops-ci-bot 2024-11-12 08:52:39 -08:00 коммит произвёл GitHub
Родитель 28429dbb45
Коммит c4223fdb92
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
14 изменённых файлов: 9667 добавлений и 11 удалений

Просмотреть файл

@ -1,3 +1,3 @@
beta: d503de15f34bbf58733fd6e55ae6b13bc02859fa
master: f732a1651018b7c32002981a9c8b8613975ffbf9
release: 088e3b260b64284827243771c4a90063e68ac5c8
beta: 59ec02c752886676a2b4e34b378020253b2627ff
master: f2df1ff64cb876e10c72ce7eed1fc9eac3f877bb
release: 2a5954d798f11e0a2f5d0b7e0c919d9384cad989

Просмотреть файл

@ -0,0 +1,843 @@
---
version: 1.0.0
about:
description: Nimbus Feature Manifest for Fenix (Firefox Android)
channels:
- beta
features:
alternative-app-launcher-icon:
description: A feature that changes the app launcher icon background color.
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
reset-to-default:
description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n"
type: Boolean
default: false
awesomebar-suggestion-provider:
description: Configuration for the Firefox Suggest awesomebar suggestion provider.
variables:
available-suggestion-types:
description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n"
type: "Map<SuggestionType, Boolean>"
default:
amp: true
ampMobile: false
wikipedia: true
bookmarks:
description: Feature for Bookmarks
variables:
new-compose-ui:
description: "if true, enable new compose based UI"
type: Boolean
default: false
cookie-banners:
description: Features for cookie banner handling.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<CookieBannersSection, Int>"
default:
feature-ui: 1
feature-setting-value: 0
feature-setting-value-pbm: 1
feature-setting-detect-only: 0
feature-setting-global-rules: 1
feature-setting-global-rules-sub-frames: 1
fingerprinting-protection:
description: Control Fingerprinting Protection
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
enabled-normal:
description: "Enables / disables fingerprinting protection in normal browsing mode.\n"
type: Boolean
default: false
enabled-private:
description: "Enables / disables fingerprinting protection in private browsing mode.\n"
type: Boolean
default: true
fdlibm-math:
description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n"
type: Boolean
default: false
overrides:
description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n"
type: String
default: ""
fx-suggest:
description: A feature that provides Firefox Suggest search suggestions.
variables:
enabled:
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.\n"
type: Boolean
default: false
glean:
description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs).
variables:
delay-ping-lifetime-io:
description: Glean will delay io for ping lifetime metrics
type: Boolean
default: true
enable-event-timestamps:
description: Enables precise event timestamps for Glean events
type: Boolean
default: false
metrics-enabled:
description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric."
type: "Map<String, Boolean>"
default: {}
ping-lifetime-max-time:
description: After what time to auto-flush
type: Int
default: 0
ping-lifetime-threshold:
description: Write count threshold when to auto-flush
type: Int
default: 1000
allow-coenrollment: true
growth-data:
description: A feature measuring campaign growth data
variables:
enabled:
description: "If true, the feature is active"
type: Boolean
default: false
homescreen:
description: The homescreen that the user goes to when they press home or new tab.
variables:
sections-enabled:
description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default."
type: "Map<HomeScreenSection, Boolean>"
default:
top-sites: true
jump-back-in: true
bookmarks: true
recent-explorations: true
pocket: true
pocket-sponsored-stories: true
juno-onboarding:
description: A feature that shows the onboarding flow.
variables:
cards:
description: Collection of user facing onboarding cards.
type: "Map<OnboardingCardKey, OnboardingCardData>"
default:
default-browser:
body: juno_onboarding_default_browser_description_nimbus_3
card-type: default-browser
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_welcome
ordering: 10
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_default_browser_positive_button
secondary-button-label: juno_onboarding_default_browser_negative_button
title: juno_onboarding_default_browser_title_nimbus_2
add-search-widget:
body: juno_onboarding_add_search_widget_description
card-type: add-search-widget
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_search_widget
ordering: 15
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_add_search_widget_positive_button
secondary-button-label: juno_onboarding_add_search_widget_negative_button
title: juno_onboarding_add_search_widget_title
sync-sign-in:
body: juno_onboarding_sign_in_description_3
card-type: sync-sign-in
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_sync
ordering: 20
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_sign_in_positive_button
secondary-button-label: juno_onboarding_sign_in_negative_button
title: juno_onboarding_sign_in_title_2
notification-permission:
body: juno_onboarding_enable_notifications_description_nimbus_2
card-type: notification-permission
disqualifiers:
- NEVER
enabled: true
image-res: ic_notification_permission
ordering: 30
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_enable_notifications_positive_button
secondary-button-label: juno_onboarding_enable_notifications_negative_button
title: juno_onboarding_enable_notifications_title_nimbus_2
string-alias: OnboardingCardKey
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.\n"
type: "Map<ConditionName, String>"
default:
ALWAYS: "true"
NEVER: "false"
string-alias: ConditionName
menu-redesign:
description: Control the new menu redesign.
variables:
enabled:
description: "If true, the new menu redesign is available."
type: Boolean
default: false
messaging:
description: "The in-app messaging system.\n"
variables:
$$experiment:
description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment."
type: ExperimentSlug
default: "{experiment}"
string-alias: ExperimentSlug
$$surfaces:
description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n"
type: List<SurfaceName>
default:
- homescreen
- notification
- survey
- microsurvey
string-alias: SurfaceName
actions:
description: A growable map of action URLs.
type: "Map<ActionName, String>"
default:
OPEN_URL: "://open"
ENABLE_PRIVATE_BROWSING: "://enable_private_browsing"
INSTALL_SEARCH_WIDGET: "://install_search_widget"
MAKE_DEFAULT_BROWSER: "://make_default_browser"
VIEW_BOOKMARKS: "://urls_bookmarks"
VIEW_COLLECTIONS: "://home_collections"
VIEW_HISTORY: "://urls_history"
VIEW_HOMESCREEN: "://home"
OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility"
OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager"
OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data"
OPEN_SETTINGS_LOGINS: "://settings_logins"
OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications"
OPEN_SETTINGS_PRIVACY: "://settings_privacy"
OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine"
OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection"
OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers"
OPEN_SETTINGS: "://settings"
TURN_ON_SYNC: "://turn_on_sync"
string-alias: ActionName
message-under-experiment:
description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases."
type: Option<MessageKey>
default: ~
messages:
description: A growable collection of messages
type: "Map<MessageKey, MessageData>"
default:
default-browser:
title: default_browser_experiment_card_title
text: default_browser_experiment_card_text
surface: homescreen
action: MAKE_DEFAULT_BROWSER
trigger-if-all:
- USER_ESTABLISHED_INSTALL
- ANDROID_API_BELOW_29
exclude-if-any:
- I_AM_DEFAULT_BROWSER
style: PERSISTENT
button-label: preferences_set_as_default_browser
default-browser-notification:
title: nimbus_notification_default_browser_title
text: nimbus_notification_default_browser_text
surface: notification
style: NOTIFICATION
trigger-if-all:
- DAY_3_AFTER_INSTALL
exclude-if-any:
- I_AM_DEFAULT_BROWSER
action: MAKE_DEFAULT_BROWSER
string-alias: MessageKey
notification-config:
description: Configuration of the notification worker for all notification messages.
type: NotificationConfig
default:
refresh-interval: 240
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.\n"
type: "Map<StyleName, StyleData>"
default:
DEFAULT:
priority: 50
max-display-count: 5
SURVEY:
priority: 55
max-display-count: 1
PERSISTENT:
priority: 50
max-display-count: 20
WARNING:
priority: 60
max-display-count: 10
URGENT:
priority: 100
max-display-count: 10
NOTIFICATION:
priority: 50
max-display-count: 1
MICROSURVEY:
priority: 50
max-display-count: 5
string-alias: StyleName
triggers:
description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n"
type: "Map<TriggerName, String>"
default:
USER_ESTABLISHED_INSTALL: number_of_app_launches >=4
ANDROID_API_BELOW_29: android_version < 29
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'"
ALWAYS: "true"
NEVER: "false"
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
I_AM_DEFAULT_BROWSER: is_default_browser
I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false
FUNNEL_PAID: "adjust_campaign != ''"
FUNNEL_ORGANIC: "adjust_campaign == ''"
INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24"
INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2"
INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3"
INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4"
INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5"
RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24"
SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2"
PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1"
FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true
FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1
FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4"
FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4"
USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7"
USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14"
USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21"
USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21"
LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1"
string-alias: TriggerName
allow-coenrollment: true
microsurveys:
description: Feature for microsurveys.
variables:
enabled:
description: "When the feature is enabled then microsurveys can be used.\n"
type: Boolean
default: true
mr2022:
description: Features for MR 2022.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<MR2022Section, Boolean>"
default:
home-onboarding-dialog-existing-users: true
sync-cfr: true
wallpapers-selection-tool: true
jump-back-in-cfr: true
tcp-cfr: true
tcp-feature: true
navigation-toolbar:
description: Feature for navigation toolbar.
variables:
enabled:
description: "When the feature is enabled then the user will see the new navigation toolbar.\n"
type: Boolean
default: false
nimbus-is-ready:
description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n"
variables:
event-count:
description: The number of events that should be sent.
type: Int
default: 1
nimbus-system:
description: "Configuration of the Nimbus System in Android.\n"
variables:
refresh-interval-foreground:
description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n"
type: Int
default: 60
nimbus-validation:
description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production.
variables:
settings-icon:
description: The drawable displayed in the app menu for Settings
type: String
default: mozac_ic_settings
settings-punctuation:
description: The emoji displayed in the Settings screen title.
type: String
default: ""
settings-title:
description: The title of displayed in the Settings screen and app menu.
type: Text
default: browser_menu_settings
onboarding:
description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments."
variables:
order:
description: Determines the order of the onboarding page panels
type: List<OnboardingPanel>
default:
- themes
- toolbar-placement
- sync
- tcp
- privacy-notice
one-click-search:
description: Enable/disable the one click search feature.
variables:
enabled:
description: "If true, the one click search will be enabled."
type: Boolean
default: false
pdfjs:
description: PDF.js features
variables:
download-button:
description: Download button
type: Boolean
default: true
open-in-app-button:
description: Open in app button
type: Boolean
default: true
print:
description: A feature for printing from the share or browser menu.
variables:
browser-print-enabled:
description: "If true, a print button from the browser menu is available."
type: Boolean
default: true
share-print-enabled:
description: "If true, a print button from the share menu is available."
type: Boolean
default: true
private-browsing:
description: Private Browsing Mode
variables:
felt-privacy-enabled:
description: "if true, enable felt privacy related UI"
type: Boolean
default: false
query-parameter-stripping:
description: Features for query parameter stripping.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<QueryParameterStrippingSection, String>"
default:
query-parameter-stripping: "0"
query-parameter-stripping-pmb: "0"
query-parameter-stripping-allow-list: ""
query-parameter-stripping-strip-list: ""
re-engagement-notification:
description: A feature that shows the re-engagement notification if the user is inactive.
variables:
enabled:
description: "If true, the re-engagement notification is shown to the inactive user."
type: Boolean
default: false
type:
description: The type of re-engagement notification that is shown to the inactive user.
type: Int
default: 0
remote-tab-management:
description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n"
variables:
close-tabs-enabled:
description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n"
type: Boolean
default: true
search-extra-params:
description: A feature that provides additional args for search.
variables:
channel-id:
description: The channel Id param name with arg.
type: "Map<String, String>"
default: {}
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
feature-enabler:
description: "The feature enabler param name with arg, NOTE this map could be empty."
type: "Map<String, String>"
default: {}
search-engine:
description: The search engine name.
type: String
default: ""
search-term-groups:
description: A feature allowing the grouping of URLs around the search term that it came from.
variables:
enabled:
description: "If true, the feature shows up on the homescreen and on the new tab screen."
type: Boolean
default: false
set-as-default-prompt:
description: "Displays native default browser prompt to existing users.\n"
variables:
app-cold-starts-between-prompts:
description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n"
type: Int
default: 4
days-between-prompts:
description: "Minimum number of days between displays of Set as default prompt.\n"
type: Int
default: 14
enabled:
description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n"
type: Boolean
default: true
max-number-of-times-to-display:
description: "Maximum number of time the prompt should be displayed.\n"
type: Int
default: 3
ship:
description: The feature that controls Session History in Parent (SHIP) in Gecko.
variables:
disabled:
description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n"
type: Boolean
default: true
shopping-experience:
description: A feature that shows product review quality information.
variables:
enabled:
description: "if true, the shopping experience feature is shown to the user."
type: Boolean
default: false
product-recommendations:
description: "if true, recommended products feature is enabled to be shown to the user based on their preference."
type: Boolean
default: false
product-recommendations-exposure:
description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled."
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
suggest-shipped-domains:
description: Feature that suggests domains from the shipped domain list.
variables:
enabled:
description: "Suggest domains from the shipped domain list.\n"
type: Boolean
default: true
translations:
description: The feature that allows on-device translations of web content.
variables:
downloads-enabled:
description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-lang-settings-enabled:
description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-settings-enabled:
description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-site-settings-enabled:
description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
main-flow-browser-menu-enabled:
description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n"
type: Boolean
default: true
main-flow-toolbar-enabled:
description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n"
type: Boolean
default: true
page-settings-enabled:
description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
user-characteristics:
description: A feature for control user characteristic data collection
variables:
currentVersion:
description: The current collection version of the user characteristics.
type: Int
default: 0
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.
CookieBannersSection:
description: The identifiers for the sections of the MR 2022.
variants:
feature-setting-detect-only:
description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules:
description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules-sub-frames:
description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-value:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-setting-value-pbm:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-ui:
description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog."
HomeScreenSection:
description: The identifiers for the sections of the homescreen.
variants:
bookmarks:
description: The sites the user has bookmarked.
jump-back-in:
description: The tabs the user was looking immediately before being interrupted.
pocket:
description: The pocket section. This should only be available in the US.
pocket-sponsored-stories:
description: Subsection of the Pocket homescreen section which shows sponsored stories.
recent-explorations:
description: The tab groups
top-sites:
description: The frecency and pinned sites.
MR2022Section:
description: The identifiers for the sections of the MR 2022.
variants:
home-onboarding-dialog-existing-users:
description: Home onboarding dialog for upgraded users.
jump-back-in-cfr:
description: Jump back-in onboarding message.
sync-cfr:
description: CFR for the first time you see a synced tab on the home screen.
tcp-cfr:
description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen.
tcp-feature:
description: Controls the Total Cookie Protection feature.
wallpapers-selection-tool:
description: Wallpapers selection dialog tool for the home screen.
OnboardingCardType:
description: An enum to describe a type of card.
variants:
add-search-widget:
description: Allows user to add search widget to homescreen.
default-browser:
description: Allows user to set Firefox as the default browser.
notification-permission:
description: Allows user to enable notification permission.
sync-sign-in:
description: Allows user to sync with a Firefox account.
OnboardingPanel:
description: The types of onboarding panels in the onboarding page
variants:
privacy-notice:
description: The onboarding panel where users can tap to view our privacy notice.
sync:
description: The onboarding panel where users can sign in to sync
tcp:
description: The onboarding panel where users can choose their total cookie protection settings
themes:
description: The themes onboarding panel where users pick themes
toolbar-placement:
description: The onboarding panel where users choose their toolbar placement (bottom or top)
QueryParameterStrippingSection:
description: The identifiers for the options for the Query Parameter Stripping feature.
variants:
query-parameter-stripping:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-allow-list:
description: An string separated by commas indicating the sites where should from query stripping should be exempted.
query-parameter-stripping-pmb:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-strip-list:
description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings.
SuggestionType:
description: The type of a Firefox Suggest search suggestion.
variants:
amp:
description: A Firefox Suggestion from adMarketplace.
ampMobile:
description: A firefox Suggestion from adMarketplace specifically for mobile.
wikipedia:
description: A Firefox Suggestion for a Wikipedia page.
objects:
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.\n"
fields:
action:
description: "A URL of a page or a deeplink. This may have substitution variables in.\n"
type: ActionName
default: OPEN_URL
action-params:
description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n"
type: "Map<String, String>"
default: {}
button-label:
description: "The text on the button. If no text is present, the whole message is clickable.\n"
type: Option<Text>
default: ~
exclude-if-any:
description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n"
type: List<TriggerName>
default: []
experiment:
description: The slug of the experiment that this message came from.
type: Option<ExperimentSlug>
default: ~
is-control:
description: "Indicates if this message is the control message, if true shouldn't be displayed"
type: Boolean
default: false
microsurvey-config:
description: Optional configuration data for a microsurvey.
type: Option<MicrosurveyConfig>
default: ~
style:
description: "The style as described in a `StyleData` from the styles table.\n"
type: StyleName
default: DEFAULT
surface:
description: The surface identifier for this message.
type: SurfaceName
default: homescreen
text:
description: The message text displayed to the user
type: Text
default: ""
title:
description: The title text displayed to the user
type: Option<Text>
default: ~
trigger-if-all:
description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n"
type: List<TriggerName>
default: []
MicrosurveyAnswer:
description: Attributes relating to microsurvey content.
fields:
ordering:
description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n"
type: Int
default: 0
text:
description: The text for the answer.
type: Text
default: ""
MicrosurveyConfig:
description: Attributes relating to microsurvey content.
fields:
answers:
description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"."
type: List<MicrosurveyAnswer>
default: []
icon:
description: The icon shown in the survey.
type: Option<Image>
default: ~
utm-content:
description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed."
type: Option<String>
default: ~
NotificationConfig:
description: Attributes controlling the global configuration of notification messages.
fields:
refresh-interval:
description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n"
type: Int
default: 240
OnboardingCardData:
description: An object to describe a user facing onboarding card.
fields:
body:
description: The message text displayed to the user. May contain linkable text.
type: Text
default: ""
card-type:
description: The type of the card.
type: OnboardingCardType
default: default-browser
disqualifiers:
description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n"
type: List<ConditionName>
default:
- NEVER
enabled:
description: "If true, this card is shown to the user."
type: Boolean
default: true
image-res:
description: The resource id of the image to be displayed.
type: Image
default: ic_onboarding_welcome
ordering:
description: Used to sequence the cards.
type: Int
default: 0
prerequisites:
description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n"
type: List<ConditionName>
default:
- ALWAYS
primary-button-label:
description: The text to display on the primary button.
type: Text
default: ""
secondary-button-label:
description: The text to display on the secondary button.
type: Text
default: ""
title:
description: The title text displayed to the user.
type: Text
default: ""
StyleData:
description: "A group of properties (predominantly visual) to describe the style of the message.\n"
fields:
max-display-count:
description: "How many sessions will this message be shown to the user before it is expired.\n"
type: Int
default: 5
priority:
description: "The importance of this message. 0 is not very important, 100 is very important.\n"
type: Int
default: 50

Просмотреть файл

@ -0,0 +1,869 @@
---
version: 1.0.0
about:
description: Nimbus Feature Manifest for Fenix (Firefox Android)
channels:
- developer
features:
alternative-app-launcher-icon:
description: A feature that changes the app launcher icon background color.
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
reset-to-default:
description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n"
type: Boolean
default: false
awesomebar-suggestion-provider:
description: Configuration for the Firefox Suggest awesomebar suggestion provider.
variables:
available-suggestion-types:
description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n"
type: "Map<SuggestionType, Boolean>"
default:
amp: true
ampMobile: false
wikipedia: true
bookmarks:
description: Feature for Bookmarks
variables:
new-compose-ui:
description: "if true, enable new compose based UI"
type: Boolean
default: false
cookie-banners:
description: Features for cookie banner handling.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<CookieBannersSection, Int>"
default:
feature-ui: 1
feature-setting-value: 0
feature-setting-value-pbm: 1
feature-setting-detect-only: 0
feature-setting-global-rules: 1
feature-setting-global-rules-sub-frames: 1
fingerprinting-protection:
description: Control Fingerprinting Protection
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
enabled-normal:
description: "Enables / disables fingerprinting protection in normal browsing mode.\n"
type: Boolean
default: false
enabled-private:
description: "Enables / disables fingerprinting protection in private browsing mode.\n"
type: Boolean
default: true
fdlibm-math:
description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n"
type: Boolean
default: false
overrides:
description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n"
type: String
default: ""
fx-suggest:
description: A feature that provides Firefox Suggest search suggestions.
variables:
enabled:
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.\n"
type: Boolean
default: true
glean:
description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs).
variables:
delay-ping-lifetime-io:
description: Glean will delay io for ping lifetime metrics
type: Boolean
default: true
enable-event-timestamps:
description: Enables precise event timestamps for Glean events
type: Boolean
default: false
metrics-enabled:
description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric."
type: "Map<String, Boolean>"
default: {}
ping-lifetime-max-time:
description: After what time to auto-flush
type: Int
default: 0
ping-lifetime-threshold:
description: Write count threshold when to auto-flush
type: Int
default: 1000
allow-coenrollment: true
growth-data:
description: A feature measuring campaign growth data
variables:
enabled:
description: "If true, the feature is active"
type: Boolean
default: false
homescreen:
description: The homescreen that the user goes to when they press home or new tab.
variables:
sections-enabled:
description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default."
type: "Map<HomeScreenSection, Boolean>"
default:
top-sites: true
jump-back-in: true
bookmarks: true
recent-explorations: true
pocket: true
pocket-sponsored-stories: true
juno-onboarding:
description: A feature that shows the onboarding flow.
variables:
cards:
description: Collection of user facing onboarding cards.
type: "Map<OnboardingCardKey, OnboardingCardData>"
default:
default-browser:
body: juno_onboarding_default_browser_description_nimbus_3
card-type: default-browser
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_welcome
ordering: 10
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_default_browser_positive_button
secondary-button-label: juno_onboarding_default_browser_negative_button
title: juno_onboarding_default_browser_title_nimbus_2
add-search-widget:
body: juno_onboarding_add_search_widget_description
card-type: add-search-widget
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_search_widget
ordering: 15
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_add_search_widget_positive_button
secondary-button-label: juno_onboarding_add_search_widget_negative_button
title: juno_onboarding_add_search_widget_title
sync-sign-in:
body: juno_onboarding_sign_in_description_3
card-type: sync-sign-in
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_sync
ordering: 20
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_sign_in_positive_button
secondary-button-label: juno_onboarding_sign_in_negative_button
title: juno_onboarding_sign_in_title_2
notification-permission:
body: juno_onboarding_enable_notifications_description_nimbus_2
card-type: notification-permission
disqualifiers:
- NEVER
enabled: true
image-res: ic_notification_permission
ordering: 30
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_enable_notifications_positive_button
secondary-button-label: juno_onboarding_enable_notifications_negative_button
title: juno_onboarding_enable_notifications_title_nimbus_2
string-alias: OnboardingCardKey
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.\n"
type: "Map<ConditionName, String>"
default:
ALWAYS: "true"
NEVER: "false"
string-alias: ConditionName
menu-redesign:
description: Control the new menu redesign.
variables:
enabled:
description: "If true, the new menu redesign is available."
type: Boolean
default: false
messaging:
description: "The in-app messaging system.\n"
variables:
$$experiment:
description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment."
type: ExperimentSlug
default: "{experiment}"
string-alias: ExperimentSlug
$$surfaces:
description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n"
type: List<SurfaceName>
default:
- homescreen
- notification
- survey
- microsurvey
string-alias: SurfaceName
actions:
description: A growable map of action URLs.
type: "Map<ActionName, String>"
default:
OPEN_URL: "://open"
ENABLE_PRIVATE_BROWSING: "://enable_private_browsing"
INSTALL_SEARCH_WIDGET: "://install_search_widget"
MAKE_DEFAULT_BROWSER: "://make_default_browser"
VIEW_BOOKMARKS: "://urls_bookmarks"
VIEW_COLLECTIONS: "://home_collections"
VIEW_HISTORY: "://urls_history"
VIEW_HOMESCREEN: "://home"
OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility"
OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager"
OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data"
OPEN_SETTINGS_LOGINS: "://settings_logins"
OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications"
OPEN_SETTINGS_PRIVACY: "://settings_privacy"
OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine"
OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection"
OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers"
OPEN_SETTINGS: "://settings"
TURN_ON_SYNC: "://turn_on_sync"
string-alias: ActionName
message-under-experiment:
description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases."
type: Option<MessageKey>
default: ~
messages:
description: A growable collection of messages
type: "Map<MessageKey, MessageData>"
default:
default-browser:
title: default_browser_experiment_card_title
text: default_browser_experiment_card_text
surface: homescreen
action: MAKE_DEFAULT_BROWSER
trigger-if-all:
- USER_ESTABLISHED_INSTALL
- ANDROID_API_BELOW_29
exclude-if-any:
- I_AM_DEFAULT_BROWSER
style: PERSISTENT
button-label: preferences_set_as_default_browser
default-browser-notification:
title: nimbus_notification_default_browser_title
text: nimbus_notification_default_browser_text
surface: notification
style: NOTIFICATION
trigger-if-all:
- DAY_3_AFTER_INSTALL
exclude-if-any:
- I_AM_DEFAULT_BROWSER
action: MAKE_DEFAULT_BROWSER
microsurvey-printing-example:
title: microsurvey_prompt_printing_title
text: microsurvey_survey_printing_title
surface: microsurvey
trigger-if-all:
- RECENTLY_PRINTED
style: MICROSURVEY
microsurvey-config:
utm-content: homepage
icon: ic_print
answers:
- text: likert_scale_option_1
ordering: 0
- text: likert_scale_option_2
ordering: 1
- text: likert_scale_option_3
ordering: 2
- text: likert_scale_option_4
ordering: 3
- text: likert_scale_option_5
ordering: 4
- text: likert_scale_option_6
ordering: 5
string-alias: MessageKey
notification-config:
description: Configuration of the notification worker for all notification messages.
type: NotificationConfig
default:
refresh-interval: 120
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.\n"
type: "Map<StyleName, StyleData>"
default:
DEFAULT:
priority: 50
max-display-count: 100
SURVEY:
priority: 55
max-display-count: 1
PERSISTENT:
priority: 50
max-display-count: 20
WARNING:
priority: 60
max-display-count: 10
URGENT:
priority: 100
max-display-count: 10
NOTIFICATION:
priority: 50
max-display-count: 1
MICROSURVEY:
priority: 50
max-display-count: 5
EXPIRES_QUICKLY:
priority: 100
max-display-count: 1
string-alias: StyleName
triggers:
description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n"
type: "Map<TriggerName, String>"
default:
USER_ESTABLISHED_INSTALL: number_of_app_launches >=4
ANDROID_API_BELOW_29: android_version < 29
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'"
ALWAYS: "true"
NEVER: "false"
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
I_AM_DEFAULT_BROWSER: is_default_browser
I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false
FUNNEL_PAID: "adjust_campaign != ''"
FUNNEL_ORGANIC: "adjust_campaign == ''"
INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24"
INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2"
INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3"
INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4"
INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5"
RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24"
SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2"
PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1"
FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true
FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1
FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4"
FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4"
USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7"
USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14"
USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21"
USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21"
LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1"
string-alias: TriggerName
allow-coenrollment: true
microsurveys:
description: Feature for microsurveys.
variables:
enabled:
description: "When the feature is enabled then microsurveys can be used.\n"
type: Boolean
default: true
mr2022:
description: Features for MR 2022.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<MR2022Section, Boolean>"
default:
home-onboarding-dialog-existing-users: true
sync-cfr: true
wallpapers-selection-tool: true
jump-back-in-cfr: true
tcp-cfr: true
tcp-feature: true
navigation-toolbar:
description: Feature for navigation toolbar.
variables:
enabled:
description: "When the feature is enabled then the user will see the new navigation toolbar.\n"
type: Boolean
default: true
nimbus-is-ready:
description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n"
variables:
event-count:
description: The number of events that should be sent.
type: Int
default: 1
nimbus-system:
description: "Configuration of the Nimbus System in Android.\n"
variables:
refresh-interval-foreground:
description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n"
type: Int
default: 60
nimbus-validation:
description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production.
variables:
settings-icon:
description: The drawable displayed in the app menu for Settings
type: String
default: mozac_ic_settings
settings-punctuation:
description: The emoji displayed in the Settings screen title.
type: String
default: ""
settings-title:
description: The title of displayed in the Settings screen and app menu.
type: Text
default: browser_menu_settings
onboarding:
description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments."
variables:
order:
description: Determines the order of the onboarding page panels
type: List<OnboardingPanel>
default:
- themes
- toolbar-placement
- sync
- tcp
- privacy-notice
one-click-search:
description: Enable/disable the one click search feature.
variables:
enabled:
description: "If true, the one click search will be enabled."
type: Boolean
default: false
pdfjs:
description: PDF.js features
variables:
download-button:
description: Download button
type: Boolean
default: true
open-in-app-button:
description: Open in app button
type: Boolean
default: true
print:
description: A feature for printing from the share or browser menu.
variables:
browser-print-enabled:
description: "If true, a print button from the browser menu is available."
type: Boolean
default: true
share-print-enabled:
description: "If true, a print button from the share menu is available."
type: Boolean
default: true
private-browsing:
description: Private Browsing Mode
variables:
felt-privacy-enabled:
description: "if true, enable felt privacy related UI"
type: Boolean
default: false
query-parameter-stripping:
description: Features for query parameter stripping.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<QueryParameterStrippingSection, String>"
default:
query-parameter-stripping: "0"
query-parameter-stripping-pmb: "0"
query-parameter-stripping-allow-list: ""
query-parameter-stripping-strip-list: ""
re-engagement-notification:
description: A feature that shows the re-engagement notification if the user is inactive.
variables:
enabled:
description: "If true, the re-engagement notification is shown to the inactive user."
type: Boolean
default: false
type:
description: The type of re-engagement notification that is shown to the inactive user.
type: Int
default: 0
remote-tab-management:
description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n"
variables:
close-tabs-enabled:
description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n"
type: Boolean
default: true
search-extra-params:
description: A feature that provides additional args for search.
variables:
channel-id:
description: The channel Id param name with arg.
type: "Map<String, String>"
default: {}
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
feature-enabler:
description: "The feature enabler param name with arg, NOTE this map could be empty."
type: "Map<String, String>"
default: {}
search-engine:
description: The search engine name.
type: String
default: ""
search-term-groups:
description: A feature allowing the grouping of URLs around the search term that it came from.
variables:
enabled:
description: "If true, the feature shows up on the homescreen and on the new tab screen."
type: Boolean
default: true
set-as-default-prompt:
description: "Displays native default browser prompt to existing users.\n"
variables:
app-cold-starts-between-prompts:
description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n"
type: Int
default: 4
days-between-prompts:
description: "Minimum number of days between displays of Set as default prompt.\n"
type: Int
default: 14
enabled:
description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n"
type: Boolean
default: true
max-number-of-times-to-display:
description: "Maximum number of time the prompt should be displayed.\n"
type: Int
default: 3
ship:
description: The feature that controls Session History in Parent (SHIP) in Gecko.
variables:
disabled:
description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n"
type: Boolean
default: true
shopping-experience:
description: A feature that shows product review quality information.
variables:
enabled:
description: "if true, the shopping experience feature is shown to the user."
type: Boolean
default: true
product-recommendations:
description: "if true, recommended products feature is enabled to be shown to the user based on their preference."
type: Boolean
default: true
product-recommendations-exposure:
description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled."
type: Boolean
default: true
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
suggest-shipped-domains:
description: Feature that suggests domains from the shipped domain list.
variables:
enabled:
description: "Suggest domains from the shipped domain list.\n"
type: Boolean
default: false
translations:
description: The feature that allows on-device translations of web content.
variables:
downloads-enabled:
description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-lang-settings-enabled:
description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-settings-enabled:
description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-site-settings-enabled:
description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
main-flow-browser-menu-enabled:
description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n"
type: Boolean
default: true
main-flow-toolbar-enabled:
description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n"
type: Boolean
default: true
page-settings-enabled:
description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
user-characteristics:
description: A feature for control user characteristic data collection
variables:
currentVersion:
description: The current collection version of the user characteristics.
type: Int
default: 0
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.
CookieBannersSection:
description: The identifiers for the sections of the MR 2022.
variants:
feature-setting-detect-only:
description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules:
description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules-sub-frames:
description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-value:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-setting-value-pbm:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-ui:
description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog."
HomeScreenSection:
description: The identifiers for the sections of the homescreen.
variants:
bookmarks:
description: The sites the user has bookmarked.
jump-back-in:
description: The tabs the user was looking immediately before being interrupted.
pocket:
description: The pocket section. This should only be available in the US.
pocket-sponsored-stories:
description: Subsection of the Pocket homescreen section which shows sponsored stories.
recent-explorations:
description: The tab groups
top-sites:
description: The frecency and pinned sites.
MR2022Section:
description: The identifiers for the sections of the MR 2022.
variants:
home-onboarding-dialog-existing-users:
description: Home onboarding dialog for upgraded users.
jump-back-in-cfr:
description: Jump back-in onboarding message.
sync-cfr:
description: CFR for the first time you see a synced tab on the home screen.
tcp-cfr:
description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen.
tcp-feature:
description: Controls the Total Cookie Protection feature.
wallpapers-selection-tool:
description: Wallpapers selection dialog tool for the home screen.
OnboardingCardType:
description: An enum to describe a type of card.
variants:
add-search-widget:
description: Allows user to add search widget to homescreen.
default-browser:
description: Allows user to set Firefox as the default browser.
notification-permission:
description: Allows user to enable notification permission.
sync-sign-in:
description: Allows user to sync with a Firefox account.
OnboardingPanel:
description: The types of onboarding panels in the onboarding page
variants:
privacy-notice:
description: The onboarding panel where users can tap to view our privacy notice.
sync:
description: The onboarding panel where users can sign in to sync
tcp:
description: The onboarding panel where users can choose their total cookie protection settings
themes:
description: The themes onboarding panel where users pick themes
toolbar-placement:
description: The onboarding panel where users choose their toolbar placement (bottom or top)
QueryParameterStrippingSection:
description: The identifiers for the options for the Query Parameter Stripping feature.
variants:
query-parameter-stripping:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-allow-list:
description: An string separated by commas indicating the sites where should from query stripping should be exempted.
query-parameter-stripping-pmb:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-strip-list:
description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings.
SuggestionType:
description: The type of a Firefox Suggest search suggestion.
variants:
amp:
description: A Firefox Suggestion from adMarketplace.
ampMobile:
description: A firefox Suggestion from adMarketplace specifically for mobile.
wikipedia:
description: A Firefox Suggestion for a Wikipedia page.
objects:
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.\n"
fields:
action:
description: "A URL of a page or a deeplink. This may have substitution variables in.\n"
type: ActionName
default: OPEN_URL
action-params:
description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n"
type: "Map<String, String>"
default: {}
button-label:
description: "The text on the button. If no text is present, the whole message is clickable.\n"
type: Option<Text>
default: ~
exclude-if-any:
description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n"
type: List<TriggerName>
default: []
experiment:
description: The slug of the experiment that this message came from.
type: Option<ExperimentSlug>
default: ~
is-control:
description: "Indicates if this message is the control message, if true shouldn't be displayed"
type: Boolean
default: false
microsurvey-config:
description: Optional configuration data for a microsurvey.
type: Option<MicrosurveyConfig>
default: ~
style:
description: "The style as described in a `StyleData` from the styles table.\n"
type: StyleName
default: DEFAULT
surface:
description: The surface identifier for this message.
type: SurfaceName
default: homescreen
text:
description: The message text displayed to the user
type: Text
default: ""
title:
description: The title text displayed to the user
type: Option<Text>
default: ~
trigger-if-all:
description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n"
type: List<TriggerName>
default: []
MicrosurveyAnswer:
description: Attributes relating to microsurvey content.
fields:
ordering:
description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n"
type: Int
default: 0
text:
description: The text for the answer.
type: Text
default: ""
MicrosurveyConfig:
description: Attributes relating to microsurvey content.
fields:
answers:
description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"."
type: List<MicrosurveyAnswer>
default: []
icon:
description: The icon shown in the survey.
type: Option<Image>
default: ~
utm-content:
description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed."
type: Option<String>
default: ~
NotificationConfig:
description: Attributes controlling the global configuration of notification messages.
fields:
refresh-interval:
description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n"
type: Int
default: 240
OnboardingCardData:
description: An object to describe a user facing onboarding card.
fields:
body:
description: The message text displayed to the user. May contain linkable text.
type: Text
default: ""
card-type:
description: The type of the card.
type: OnboardingCardType
default: default-browser
disqualifiers:
description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n"
type: List<ConditionName>
default:
- NEVER
enabled:
description: "If true, this card is shown to the user."
type: Boolean
default: true
image-res:
description: The resource id of the image to be displayed.
type: Image
default: ic_onboarding_welcome
ordering:
description: Used to sequence the cards.
type: Int
default: 0
prerequisites:
description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n"
type: List<ConditionName>
default:
- ALWAYS
primary-button-label:
description: The text to display on the primary button.
type: Text
default: ""
secondary-button-label:
description: The text to display on the secondary button.
type: Text
default: ""
title:
description: The title text displayed to the user.
type: Text
default: ""
StyleData:
description: "A group of properties (predominantly visual) to describe the style of the message.\n"
fields:
max-display-count:
description: "How many sessions will this message be shown to the user before it is expired.\n"
type: Int
default: 5
priority:
description: "The importance of this message. 0 is not very important, 100 is very important.\n"
type: Int
default: 50

Просмотреть файл

@ -0,0 +1,398 @@
---
alternative-app-launcher-icon:
description: A feature that changes the app launcher icon background color.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "If true, the feature is active."
reset-to-default:
type: boolean
description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n"
awesomebar-suggestion-provider:
description: Configuration for the Firefox Suggest awesomebar suggestion provider.
hasExposure: true
exposureDescription: ""
variables:
available-suggestion-types:
type: json
description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n"
bookmarks:
description: Feature for Bookmarks
hasExposure: true
exposureDescription: ""
variables:
new-compose-ui:
type: boolean
description: "if true, enable new compose based UI"
cookie-banners:
description: Features for cookie banner handling.
hasExposure: true
exposureDescription: ""
variables:
sections-enabled:
type: json
description: This property provides a lookup table of whether or not the given section should be enabled.
fingerprinting-protection:
description: Control Fingerprinting Protection
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "If true, the feature is active."
enabled-normal:
type: boolean
description: "Enables / disables fingerprinting protection in normal browsing mode.\n"
enabled-private:
type: boolean
description: "Enables / disables fingerprinting protection in private browsing mode.\n"
fdlibm-math:
type: boolean
description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n"
overrides:
type: string
description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n"
fx-suggest:
description: A feature that provides Firefox Suggest search suggestions.
hasExposure: true
exposureDescription: ""
variables:
enabled:
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.\n"
glean:
description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs).
hasExposure: true
exposureDescription: ""
variables:
delay-ping-lifetime-io:
type: boolean
description: Glean will delay io for ping lifetime metrics
enable-event-timestamps:
type: boolean
description: Enables precise event timestamps for Glean events
metrics-enabled:
type: json
description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric."
ping-lifetime-max-time:
type: int
description: After what time to auto-flush
ping-lifetime-threshold:
type: int
description: Write count threshold when to auto-flush
growth-data:
description: A feature measuring campaign growth data
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "If true, the feature is active"
homescreen:
description: The homescreen that the user goes to when they press home or new tab.
hasExposure: true
exposureDescription: ""
variables:
sections-enabled:
type: json
description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default."
juno-onboarding:
description: A feature that shows the onboarding flow.
hasExposure: true
exposureDescription: ""
variables:
cards:
type: json
description: Collection of user facing onboarding cards.
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.\n"
menu-redesign:
description: Control the new menu redesign.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "If true, the new menu redesign is available."
messaging:
description: "The in-app messaging system.\n"
hasExposure: true
exposureDescription: ""
variables:
$$experiment:
type: string
description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment."
$$surfaces:
type: json
description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n"
actions:
type: json
description: A growable map of action URLs.
message-under-experiment:
type: string
description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases."
messages:
type: json
description: A growable collection of messages
notification-config:
type: json
description: Configuration of the notification worker for all notification messages.
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.\n"
triggers:
type: json
description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n"
microsurveys:
description: Feature for microsurveys.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "When the feature is enabled then microsurveys can be used.\n"
mr2022:
description: Features for MR 2022.
hasExposure: true
exposureDescription: ""
variables:
sections-enabled:
type: json
description: This property provides a lookup table of whether or not the given section should be enabled.
navigation-toolbar:
description: Feature for navigation toolbar.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "When the feature is enabled then the user will see the new navigation toolbar.\n"
nimbus-is-ready:
description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n"
hasExposure: true
exposureDescription: ""
variables:
event-count:
type: int
description: The number of events that should be sent.
nimbus-system:
description: "Configuration of the Nimbus System in Android.\n"
hasExposure: true
exposureDescription: ""
variables:
refresh-interval-foreground:
type: int
description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n"
nimbus-validation:
description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production.
hasExposure: true
exposureDescription: ""
variables:
settings-icon:
type: string
description: The drawable displayed in the app menu for Settings
settings-punctuation:
type: string
description: The emoji displayed in the Settings screen title.
settings-title:
type: string
description: The title of displayed in the Settings screen and app menu.
onboarding:
description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments."
hasExposure: true
exposureDescription: ""
variables:
order:
type: json
description: Determines the order of the onboarding page panels
one-click-search:
description: Enable/disable the one click search feature.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "If true, the one click search will be enabled."
pdfjs:
description: PDF.js features
hasExposure: true
exposureDescription: ""
variables:
download-button:
type: boolean
description: Download button
open-in-app-button:
type: boolean
description: Open in app button
print:
description: A feature for printing from the share or browser menu.
hasExposure: true
exposureDescription: ""
variables:
browser-print-enabled:
type: boolean
description: "If true, a print button from the browser menu is available."
share-print-enabled:
type: boolean
description: "If true, a print button from the share menu is available."
private-browsing:
description: Private Browsing Mode
hasExposure: true
exposureDescription: ""
variables:
felt-privacy-enabled:
type: boolean
description: "if true, enable felt privacy related UI"
query-parameter-stripping:
description: Features for query parameter stripping.
hasExposure: true
exposureDescription: ""
variables:
sections-enabled:
type: json
description: This property provides a lookup table of whether or not the given section should be enabled.
re-engagement-notification:
description: A feature that shows the re-engagement notification if the user is inactive.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "If true, the re-engagement notification is shown to the inactive user."
type:
type: int
description: The type of re-engagement notification that is shown to the inactive user.
remote-tab-management:
description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n"
hasExposure: true
exposureDescription: ""
variables:
close-tabs-enabled:
type: boolean
description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n"
search-extra-params:
description: A feature that provides additional args for search.
hasExposure: true
exposureDescription: ""
variables:
channel-id:
type: json
description: The channel Id param name with arg.
enabled:
type: boolean
description: "If true, the feature is active."
feature-enabler:
type: json
description: "The feature enabler param name with arg, NOTE this map could be empty."
search-engine:
type: string
description: The search engine name.
search-term-groups:
description: A feature allowing the grouping of URLs around the search term that it came from.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "If true, the feature shows up on the homescreen and on the new tab screen."
set-as-default-prompt:
description: "Displays native default browser prompt to existing users.\n"
hasExposure: true
exposureDescription: ""
variables:
app-cold-starts-between-prompts:
type: int
description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n"
days-between-prompts:
type: int
description: "Minimum number of days between displays of Set as default prompt.\n"
enabled:
type: boolean
description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n"
max-number-of-times-to-display:
type: int
description: "Maximum number of time the prompt should be displayed.\n"
ship:
description: The feature that controls Session History in Parent (SHIP) in Gecko.
hasExposure: true
exposureDescription: ""
variables:
disabled:
type: boolean
description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n"
shopping-experience:
description: A feature that shows product review quality information.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "if true, the shopping experience feature is shown to the user."
product-recommendations:
type: boolean
description: "if true, recommended products feature is enabled to be shown to the user based on their preference."
product-recommendations-exposure:
type: boolean
description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled."
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.
suggest-shipped-domains:
description: Feature that suggests domains from the shipped domain list.
hasExposure: true
exposureDescription: ""
variables:
enabled:
type: boolean
description: "Suggest domains from the shipped domain list.\n"
translations:
description: The feature that allows on-device translations of web content.
hasExposure: true
exposureDescription: ""
variables:
downloads-enabled:
type: boolean
description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
global-lang-settings-enabled:
type: boolean
description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
global-settings-enabled:
type: boolean
description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n"
global-site-settings-enabled:
type: boolean
description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
main-flow-browser-menu-enabled:
type: boolean
description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n"
main-flow-toolbar-enabled:
type: boolean
description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n"
page-settings-enabled:
type: boolean
description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n"
user-characteristics:
description: A feature for control user characteristic data collection
hasExposure: true
exposureDescription: ""
variables:
currentVersion:
type: int
description: The current collection version of the user characteristics.

Просмотреть файл

@ -0,0 +1,866 @@
---
version: 1.0.0
about:
description: Nimbus Feature Manifest for Fenix (Firefox Android)
channels:
- nightly
features:
alternative-app-launcher-icon:
description: A feature that changes the app launcher icon background color.
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
reset-to-default:
description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n"
type: Boolean
default: false
awesomebar-suggestion-provider:
description: Configuration for the Firefox Suggest awesomebar suggestion provider.
variables:
available-suggestion-types:
description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n"
type: "Map<SuggestionType, Boolean>"
default:
amp: true
ampMobile: false
wikipedia: true
bookmarks:
description: Feature for Bookmarks
variables:
new-compose-ui:
description: "if true, enable new compose based UI"
type: Boolean
default: false
cookie-banners:
description: Features for cookie banner handling.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<CookieBannersSection, Int>"
default:
feature-ui: 1
feature-setting-value: 0
feature-setting-value-pbm: 1
feature-setting-detect-only: 0
feature-setting-global-rules: 1
feature-setting-global-rules-sub-frames: 1
fingerprinting-protection:
description: Control Fingerprinting Protection
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
enabled-normal:
description: "Enables / disables fingerprinting protection in normal browsing mode.\n"
type: Boolean
default: false
enabled-private:
description: "Enables / disables fingerprinting protection in private browsing mode.\n"
type: Boolean
default: true
fdlibm-math:
description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n"
type: Boolean
default: false
overrides:
description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n"
type: String
default: ""
fx-suggest:
description: A feature that provides Firefox Suggest search suggestions.
variables:
enabled:
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.\n"
type: Boolean
default: true
glean:
description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs).
variables:
delay-ping-lifetime-io:
description: Glean will delay io for ping lifetime metrics
type: Boolean
default: true
enable-event-timestamps:
description: Enables precise event timestamps for Glean events
type: Boolean
default: false
metrics-enabled:
description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric."
type: "Map<String, Boolean>"
default: {}
ping-lifetime-max-time:
description: After what time to auto-flush
type: Int
default: 0
ping-lifetime-threshold:
description: Write count threshold when to auto-flush
type: Int
default: 1000
allow-coenrollment: true
growth-data:
description: A feature measuring campaign growth data
variables:
enabled:
description: "If true, the feature is active"
type: Boolean
default: false
homescreen:
description: The homescreen that the user goes to when they press home or new tab.
variables:
sections-enabled:
description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default."
type: "Map<HomeScreenSection, Boolean>"
default:
top-sites: true
jump-back-in: true
bookmarks: true
recent-explorations: true
pocket: true
pocket-sponsored-stories: true
juno-onboarding:
description: A feature that shows the onboarding flow.
variables:
cards:
description: Collection of user facing onboarding cards.
type: "Map<OnboardingCardKey, OnboardingCardData>"
default:
default-browser:
body: juno_onboarding_default_browser_description_nimbus_3
card-type: default-browser
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_welcome
ordering: 10
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_default_browser_positive_button
secondary-button-label: juno_onboarding_default_browser_negative_button
title: juno_onboarding_default_browser_title_nimbus_2
add-search-widget:
body: juno_onboarding_add_search_widget_description
card-type: add-search-widget
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_search_widget
ordering: 15
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_add_search_widget_positive_button
secondary-button-label: juno_onboarding_add_search_widget_negative_button
title: juno_onboarding_add_search_widget_title
sync-sign-in:
body: juno_onboarding_sign_in_description_3
card-type: sync-sign-in
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_sync
ordering: 20
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_sign_in_positive_button
secondary-button-label: juno_onboarding_sign_in_negative_button
title: juno_onboarding_sign_in_title_2
notification-permission:
body: juno_onboarding_enable_notifications_description_nimbus_2
card-type: notification-permission
disqualifiers:
- NEVER
enabled: true
image-res: ic_notification_permission
ordering: 30
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_enable_notifications_positive_button
secondary-button-label: juno_onboarding_enable_notifications_negative_button
title: juno_onboarding_enable_notifications_title_nimbus_2
string-alias: OnboardingCardKey
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.\n"
type: "Map<ConditionName, String>"
default:
ALWAYS: "true"
NEVER: "false"
string-alias: ConditionName
menu-redesign:
description: Control the new menu redesign.
variables:
enabled:
description: "If true, the new menu redesign is available."
type: Boolean
default: false
messaging:
description: "The in-app messaging system.\n"
variables:
$$experiment:
description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment."
type: ExperimentSlug
default: "{experiment}"
string-alias: ExperimentSlug
$$surfaces:
description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n"
type: List<SurfaceName>
default:
- homescreen
- notification
- survey
- microsurvey
string-alias: SurfaceName
actions:
description: A growable map of action URLs.
type: "Map<ActionName, String>"
default:
OPEN_URL: "://open"
ENABLE_PRIVATE_BROWSING: "://enable_private_browsing"
INSTALL_SEARCH_WIDGET: "://install_search_widget"
MAKE_DEFAULT_BROWSER: "://make_default_browser"
VIEW_BOOKMARKS: "://urls_bookmarks"
VIEW_COLLECTIONS: "://home_collections"
VIEW_HISTORY: "://urls_history"
VIEW_HOMESCREEN: "://home"
OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility"
OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager"
OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data"
OPEN_SETTINGS_LOGINS: "://settings_logins"
OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications"
OPEN_SETTINGS_PRIVACY: "://settings_privacy"
OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine"
OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection"
OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers"
OPEN_SETTINGS: "://settings"
TURN_ON_SYNC: "://turn_on_sync"
string-alias: ActionName
message-under-experiment:
description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases."
type: Option<MessageKey>
default: ~
messages:
description: A growable collection of messages
type: "Map<MessageKey, MessageData>"
default:
default-browser:
title: default_browser_experiment_card_title
text: default_browser_experiment_card_text
surface: homescreen
action: MAKE_DEFAULT_BROWSER
trigger-if-all:
- USER_ESTABLISHED_INSTALL
- ANDROID_API_BELOW_29
exclude-if-any:
- I_AM_DEFAULT_BROWSER
style: PERSISTENT
button-label: preferences_set_as_default_browser
default-browser-notification:
title: nimbus_notification_default_browser_title
text: nimbus_notification_default_browser_text
surface: notification
style: NOTIFICATION
trigger-if-all:
- DAY_3_AFTER_INSTALL
exclude-if-any:
- I_AM_DEFAULT_BROWSER
action: MAKE_DEFAULT_BROWSER
microsurvey-printing-example-nightly:
title: microsurvey_prompt_printing_title
text: microsurvey_survey_printing_title
surface: microsurvey
trigger-if-all:
- RECENTLY_PRINTED
style: MICROSURVEY
microsurvey-config:
utm-content: homepage
icon: ic_print
answers:
- text: likert_scale_option_1
ordering: 0
- text: likert_scale_option_2
ordering: 1
- text: likert_scale_option_3
ordering: 2
- text: likert_scale_option_4
ordering: 3
- text: likert_scale_option_5
ordering: 4
- text: likert_scale_option_6
ordering: 5
string-alias: MessageKey
notification-config:
description: Configuration of the notification worker for all notification messages.
type: NotificationConfig
default:
refresh-interval: 240
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.\n"
type: "Map<StyleName, StyleData>"
default:
DEFAULT:
priority: 50
max-display-count: 5
SURVEY:
priority: 55
max-display-count: 1
PERSISTENT:
priority: 50
max-display-count: 20
WARNING:
priority: 60
max-display-count: 10
URGENT:
priority: 100
max-display-count: 10
NOTIFICATION:
priority: 50
max-display-count: 1
MICROSURVEY:
priority: 50
max-display-count: 5
string-alias: StyleName
triggers:
description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n"
type: "Map<TriggerName, String>"
default:
USER_ESTABLISHED_INSTALL: number_of_app_launches >=4
ANDROID_API_BELOW_29: android_version < 29
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'"
ALWAYS: "true"
NEVER: "false"
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
I_AM_DEFAULT_BROWSER: is_default_browser
I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false
FUNNEL_PAID: "adjust_campaign != ''"
FUNNEL_ORGANIC: "adjust_campaign == ''"
INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24"
INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2"
INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3"
INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4"
INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5"
RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24"
SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2"
PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1"
FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true
FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1
FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4"
FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4"
USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7"
USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14"
USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21"
USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21"
LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1"
string-alias: TriggerName
allow-coenrollment: true
microsurveys:
description: Feature for microsurveys.
variables:
enabled:
description: "When the feature is enabled then microsurveys can be used.\n"
type: Boolean
default: true
mr2022:
description: Features for MR 2022.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<MR2022Section, Boolean>"
default:
home-onboarding-dialog-existing-users: true
sync-cfr: true
wallpapers-selection-tool: true
jump-back-in-cfr: true
tcp-cfr: true
tcp-feature: true
navigation-toolbar:
description: Feature for navigation toolbar.
variables:
enabled:
description: "When the feature is enabled then the user will see the new navigation toolbar.\n"
type: Boolean
default: true
nimbus-is-ready:
description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n"
variables:
event-count:
description: The number of events that should be sent.
type: Int
default: 1
nimbus-system:
description: "Configuration of the Nimbus System in Android.\n"
variables:
refresh-interval-foreground:
description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n"
type: Int
default: 60
nimbus-validation:
description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production.
variables:
settings-icon:
description: The drawable displayed in the app menu for Settings
type: String
default: mozac_ic_settings
settings-punctuation:
description: The emoji displayed in the Settings screen title.
type: String
default: ""
settings-title:
description: The title of displayed in the Settings screen and app menu.
type: Text
default: browser_menu_settings
onboarding:
description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments."
variables:
order:
description: Determines the order of the onboarding page panels
type: List<OnboardingPanel>
default:
- themes
- toolbar-placement
- sync
- tcp
- privacy-notice
one-click-search:
description: Enable/disable the one click search feature.
variables:
enabled:
description: "If true, the one click search will be enabled."
type: Boolean
default: false
pdfjs:
description: PDF.js features
variables:
download-button:
description: Download button
type: Boolean
default: true
open-in-app-button:
description: Open in app button
type: Boolean
default: true
print:
description: A feature for printing from the share or browser menu.
variables:
browser-print-enabled:
description: "If true, a print button from the browser menu is available."
type: Boolean
default: true
share-print-enabled:
description: "If true, a print button from the share menu is available."
type: Boolean
default: true
private-browsing:
description: Private Browsing Mode
variables:
felt-privacy-enabled:
description: "if true, enable felt privacy related UI"
type: Boolean
default: false
query-parameter-stripping:
description: Features for query parameter stripping.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<QueryParameterStrippingSection, String>"
default:
query-parameter-stripping: "0"
query-parameter-stripping-pmb: "0"
query-parameter-stripping-allow-list: ""
query-parameter-stripping-strip-list: ""
re-engagement-notification:
description: A feature that shows the re-engagement notification if the user is inactive.
variables:
enabled:
description: "If true, the re-engagement notification is shown to the inactive user."
type: Boolean
default: false
type:
description: The type of re-engagement notification that is shown to the inactive user.
type: Int
default: 0
remote-tab-management:
description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n"
variables:
close-tabs-enabled:
description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n"
type: Boolean
default: true
search-extra-params:
description: A feature that provides additional args for search.
variables:
channel-id:
description: The channel Id param name with arg.
type: "Map<String, String>"
default: {}
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
feature-enabler:
description: "The feature enabler param name with arg, NOTE this map could be empty."
type: "Map<String, String>"
default: {}
search-engine:
description: The search engine name.
type: String
default: ""
search-term-groups:
description: A feature allowing the grouping of URLs around the search term that it came from.
variables:
enabled:
description: "If true, the feature shows up on the homescreen and on the new tab screen."
type: Boolean
default: true
set-as-default-prompt:
description: "Displays native default browser prompt to existing users.\n"
variables:
app-cold-starts-between-prompts:
description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n"
type: Int
default: 4
days-between-prompts:
description: "Minimum number of days between displays of Set as default prompt.\n"
type: Int
default: 14
enabled:
description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n"
type: Boolean
default: true
max-number-of-times-to-display:
description: "Maximum number of time the prompt should be displayed.\n"
type: Int
default: 3
ship:
description: The feature that controls Session History in Parent (SHIP) in Gecko.
variables:
disabled:
description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n"
type: Boolean
default: true
shopping-experience:
description: A feature that shows product review quality information.
variables:
enabled:
description: "if true, the shopping experience feature is shown to the user."
type: Boolean
default: false
product-recommendations:
description: "if true, recommended products feature is enabled to be shown to the user based on their preference."
type: Boolean
default: false
product-recommendations-exposure:
description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled."
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
suggest-shipped-domains:
description: Feature that suggests domains from the shipped domain list.
variables:
enabled:
description: "Suggest domains from the shipped domain list.\n"
type: Boolean
default: false
translations:
description: The feature that allows on-device translations of web content.
variables:
downloads-enabled:
description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-lang-settings-enabled:
description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-settings-enabled:
description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-site-settings-enabled:
description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
main-flow-browser-menu-enabled:
description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n"
type: Boolean
default: true
main-flow-toolbar-enabled:
description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n"
type: Boolean
default: true
page-settings-enabled:
description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
user-characteristics:
description: A feature for control user characteristic data collection
variables:
currentVersion:
description: The current collection version of the user characteristics.
type: Int
default: 0
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.
CookieBannersSection:
description: The identifiers for the sections of the MR 2022.
variants:
feature-setting-detect-only:
description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules:
description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules-sub-frames:
description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-value:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-setting-value-pbm:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-ui:
description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog."
HomeScreenSection:
description: The identifiers for the sections of the homescreen.
variants:
bookmarks:
description: The sites the user has bookmarked.
jump-back-in:
description: The tabs the user was looking immediately before being interrupted.
pocket:
description: The pocket section. This should only be available in the US.
pocket-sponsored-stories:
description: Subsection of the Pocket homescreen section which shows sponsored stories.
recent-explorations:
description: The tab groups
top-sites:
description: The frecency and pinned sites.
MR2022Section:
description: The identifiers for the sections of the MR 2022.
variants:
home-onboarding-dialog-existing-users:
description: Home onboarding dialog for upgraded users.
jump-back-in-cfr:
description: Jump back-in onboarding message.
sync-cfr:
description: CFR for the first time you see a synced tab on the home screen.
tcp-cfr:
description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen.
tcp-feature:
description: Controls the Total Cookie Protection feature.
wallpapers-selection-tool:
description: Wallpapers selection dialog tool for the home screen.
OnboardingCardType:
description: An enum to describe a type of card.
variants:
add-search-widget:
description: Allows user to add search widget to homescreen.
default-browser:
description: Allows user to set Firefox as the default browser.
notification-permission:
description: Allows user to enable notification permission.
sync-sign-in:
description: Allows user to sync with a Firefox account.
OnboardingPanel:
description: The types of onboarding panels in the onboarding page
variants:
privacy-notice:
description: The onboarding panel where users can tap to view our privacy notice.
sync:
description: The onboarding panel where users can sign in to sync
tcp:
description: The onboarding panel where users can choose their total cookie protection settings
themes:
description: The themes onboarding panel where users pick themes
toolbar-placement:
description: The onboarding panel where users choose their toolbar placement (bottom or top)
QueryParameterStrippingSection:
description: The identifiers for the options for the Query Parameter Stripping feature.
variants:
query-parameter-stripping:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-allow-list:
description: An string separated by commas indicating the sites where should from query stripping should be exempted.
query-parameter-stripping-pmb:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-strip-list:
description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings.
SuggestionType:
description: The type of a Firefox Suggest search suggestion.
variants:
amp:
description: A Firefox Suggestion from adMarketplace.
ampMobile:
description: A firefox Suggestion from adMarketplace specifically for mobile.
wikipedia:
description: A Firefox Suggestion for a Wikipedia page.
objects:
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.\n"
fields:
action:
description: "A URL of a page or a deeplink. This may have substitution variables in.\n"
type: ActionName
default: OPEN_URL
action-params:
description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n"
type: "Map<String, String>"
default: {}
button-label:
description: "The text on the button. If no text is present, the whole message is clickable.\n"
type: Option<Text>
default: ~
exclude-if-any:
description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n"
type: List<TriggerName>
default: []
experiment:
description: The slug of the experiment that this message came from.
type: Option<ExperimentSlug>
default: ~
is-control:
description: "Indicates if this message is the control message, if true shouldn't be displayed"
type: Boolean
default: false
microsurvey-config:
description: Optional configuration data for a microsurvey.
type: Option<MicrosurveyConfig>
default: ~
style:
description: "The style as described in a `StyleData` from the styles table.\n"
type: StyleName
default: DEFAULT
surface:
description: The surface identifier for this message.
type: SurfaceName
default: homescreen
text:
description: The message text displayed to the user
type: Text
default: ""
title:
description: The title text displayed to the user
type: Option<Text>
default: ~
trigger-if-all:
description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n"
type: List<TriggerName>
default: []
MicrosurveyAnswer:
description: Attributes relating to microsurvey content.
fields:
ordering:
description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n"
type: Int
default: 0
text:
description: The text for the answer.
type: Text
default: ""
MicrosurveyConfig:
description: Attributes relating to microsurvey content.
fields:
answers:
description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"."
type: List<MicrosurveyAnswer>
default: []
icon:
description: The icon shown in the survey.
type: Option<Image>
default: ~
utm-content:
description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed."
type: Option<String>
default: ~
NotificationConfig:
description: Attributes controlling the global configuration of notification messages.
fields:
refresh-interval:
description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n"
type: Int
default: 240
OnboardingCardData:
description: An object to describe a user facing onboarding card.
fields:
body:
description: The message text displayed to the user. May contain linkable text.
type: Text
default: ""
card-type:
description: The type of the card.
type: OnboardingCardType
default: default-browser
disqualifiers:
description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n"
type: List<ConditionName>
default:
- NEVER
enabled:
description: "If true, this card is shown to the user."
type: Boolean
default: true
image-res:
description: The resource id of the image to be displayed.
type: Image
default: ic_onboarding_welcome
ordering:
description: Used to sequence the cards.
type: Int
default: 0
prerequisites:
description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n"
type: List<ConditionName>
default:
- ALWAYS
primary-button-label:
description: The text to display on the primary button.
type: Text
default: ""
secondary-button-label:
description: The text to display on the secondary button.
type: Text
default: ""
title:
description: The title text displayed to the user.
type: Text
default: ""
StyleData:
description: "A group of properties (predominantly visual) to describe the style of the message.\n"
fields:
max-display-count:
description: "How many sessions will this message be shown to the user before it is expired.\n"
type: Int
default: 5
priority:
description: "The importance of this message. 0 is not very important, 100 is very important.\n"
type: Int
default: 50

Просмотреть файл

@ -0,0 +1,843 @@
---
version: 1.0.0
about:
description: Nimbus Feature Manifest for Fenix (Firefox Android)
channels:
- release
features:
alternative-app-launcher-icon:
description: A feature that changes the app launcher icon background color.
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
reset-to-default:
description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n"
type: Boolean
default: false
awesomebar-suggestion-provider:
description: Configuration for the Firefox Suggest awesomebar suggestion provider.
variables:
available-suggestion-types:
description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n"
type: "Map<SuggestionType, Boolean>"
default:
amp: true
ampMobile: false
wikipedia: true
bookmarks:
description: Feature for Bookmarks
variables:
new-compose-ui:
description: "if true, enable new compose based UI"
type: Boolean
default: false
cookie-banners:
description: Features for cookie banner handling.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<CookieBannersSection, Int>"
default:
feature-ui: 0
feature-setting-value: 0
feature-setting-value-pbm: 0
feature-setting-detect-only: 0
feature-setting-global-rules: 1
feature-setting-global-rules-sub-frames: 1
fingerprinting-protection:
description: Control Fingerprinting Protection
variables:
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
enabled-normal:
description: "Enables / disables fingerprinting protection in normal browsing mode.\n"
type: Boolean
default: false
enabled-private:
description: "Enables / disables fingerprinting protection in private browsing mode.\n"
type: Boolean
default: true
fdlibm-math:
description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n"
type: Boolean
default: false
overrides:
description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n"
type: String
default: ""
fx-suggest:
description: A feature that provides Firefox Suggest search suggestions.
variables:
enabled:
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.\n"
type: Boolean
default: false
glean:
description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs).
variables:
delay-ping-lifetime-io:
description: Glean will delay io for ping lifetime metrics
type: Boolean
default: true
enable-event-timestamps:
description: Enables precise event timestamps for Glean events
type: Boolean
default: false
metrics-enabled:
description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric."
type: "Map<String, Boolean>"
default: {}
ping-lifetime-max-time:
description: After what time to auto-flush
type: Int
default: 0
ping-lifetime-threshold:
description: Write count threshold when to auto-flush
type: Int
default: 1000
allow-coenrollment: true
growth-data:
description: A feature measuring campaign growth data
variables:
enabled:
description: "If true, the feature is active"
type: Boolean
default: true
homescreen:
description: The homescreen that the user goes to when they press home or new tab.
variables:
sections-enabled:
description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default."
type: "Map<HomeScreenSection, Boolean>"
default:
top-sites: true
jump-back-in: true
bookmarks: true
recent-explorations: true
pocket: true
pocket-sponsored-stories: true
juno-onboarding:
description: A feature that shows the onboarding flow.
variables:
cards:
description: Collection of user facing onboarding cards.
type: "Map<OnboardingCardKey, OnboardingCardData>"
default:
default-browser:
body: juno_onboarding_default_browser_description_nimbus_3
card-type: default-browser
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_welcome
ordering: 10
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_default_browser_positive_button
secondary-button-label: juno_onboarding_default_browser_negative_button
title: juno_onboarding_default_browser_title_nimbus_2
add-search-widget:
body: juno_onboarding_add_search_widget_description
card-type: add-search-widget
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_search_widget
ordering: 15
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_add_search_widget_positive_button
secondary-button-label: juno_onboarding_add_search_widget_negative_button
title: juno_onboarding_add_search_widget_title
sync-sign-in:
body: juno_onboarding_sign_in_description_3
card-type: sync-sign-in
disqualifiers:
- NEVER
enabled: true
image-res: ic_onboarding_sync
ordering: 20
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_sign_in_positive_button
secondary-button-label: juno_onboarding_sign_in_negative_button
title: juno_onboarding_sign_in_title_2
notification-permission:
body: juno_onboarding_enable_notifications_description_nimbus_2
card-type: notification-permission
disqualifiers:
- NEVER
enabled: true
image-res: ic_notification_permission
ordering: 30
prerequisites:
- ALWAYS
primary-button-label: juno_onboarding_enable_notifications_positive_button
secondary-button-label: juno_onboarding_enable_notifications_negative_button
title: juno_onboarding_enable_notifications_title_nimbus_2
string-alias: OnboardingCardKey
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.\n"
type: "Map<ConditionName, String>"
default:
ALWAYS: "true"
NEVER: "false"
string-alias: ConditionName
menu-redesign:
description: Control the new menu redesign.
variables:
enabled:
description: "If true, the new menu redesign is available."
type: Boolean
default: false
messaging:
description: "The in-app messaging system.\n"
variables:
$$experiment:
description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment."
type: ExperimentSlug
default: "{experiment}"
string-alias: ExperimentSlug
$$surfaces:
description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n"
type: List<SurfaceName>
default:
- homescreen
- notification
- survey
- microsurvey
string-alias: SurfaceName
actions:
description: A growable map of action URLs.
type: "Map<ActionName, String>"
default:
OPEN_URL: "://open"
ENABLE_PRIVATE_BROWSING: "://enable_private_browsing"
INSTALL_SEARCH_WIDGET: "://install_search_widget"
MAKE_DEFAULT_BROWSER: "://make_default_browser"
VIEW_BOOKMARKS: "://urls_bookmarks"
VIEW_COLLECTIONS: "://home_collections"
VIEW_HISTORY: "://urls_history"
VIEW_HOMESCREEN: "://home"
OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility"
OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager"
OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data"
OPEN_SETTINGS_LOGINS: "://settings_logins"
OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications"
OPEN_SETTINGS_PRIVACY: "://settings_privacy"
OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine"
OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection"
OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers"
OPEN_SETTINGS: "://settings"
TURN_ON_SYNC: "://turn_on_sync"
string-alias: ActionName
message-under-experiment:
description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases."
type: Option<MessageKey>
default: ~
messages:
description: A growable collection of messages
type: "Map<MessageKey, MessageData>"
default:
default-browser:
title: default_browser_experiment_card_title
text: default_browser_experiment_card_text
surface: homescreen
action: MAKE_DEFAULT_BROWSER
trigger-if-all:
- USER_ESTABLISHED_INSTALL
- ANDROID_API_BELOW_29
exclude-if-any:
- I_AM_DEFAULT_BROWSER
style: PERSISTENT
button-label: preferences_set_as_default_browser
default-browser-notification:
title: nimbus_notification_default_browser_title
text: nimbus_notification_default_browser_text
surface: notification
style: NOTIFICATION
trigger-if-all:
- DAY_3_AFTER_INSTALL
exclude-if-any:
- I_AM_DEFAULT_BROWSER
action: MAKE_DEFAULT_BROWSER
string-alias: MessageKey
notification-config:
description: Configuration of the notification worker for all notification messages.
type: NotificationConfig
default:
refresh-interval: 240
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.\n"
type: "Map<StyleName, StyleData>"
default:
DEFAULT:
priority: 50
max-display-count: 5
SURVEY:
priority: 55
max-display-count: 1
PERSISTENT:
priority: 50
max-display-count: 20
WARNING:
priority: 60
max-display-count: 10
URGENT:
priority: 100
max-display-count: 10
NOTIFICATION:
priority: 50
max-display-count: 1
MICROSURVEY:
priority: 50
max-display-count: 5
string-alias: StyleName
triggers:
description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n"
type: "Map<TriggerName, String>"
default:
USER_ESTABLISHED_INSTALL: number_of_app_launches >=4
ANDROID_API_BELOW_29: android_version < 29
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'"
ALWAYS: "true"
NEVER: "false"
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
I_AM_DEFAULT_BROWSER: is_default_browser
I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false
FUNNEL_PAID: "adjust_campaign != ''"
FUNNEL_ORGANIC: "adjust_campaign == ''"
INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24"
INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2"
INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3"
INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4"
INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5"
RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24"
SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2"
PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1"
FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true
FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1
FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4"
FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4"
USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7"
USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14"
USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21"
USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21"
LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1"
string-alias: TriggerName
allow-coenrollment: true
microsurveys:
description: Feature for microsurveys.
variables:
enabled:
description: "When the feature is enabled then microsurveys can be used.\n"
type: Boolean
default: true
mr2022:
description: Features for MR 2022.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<MR2022Section, Boolean>"
default:
home-onboarding-dialog-existing-users: true
sync-cfr: true
wallpapers-selection-tool: true
jump-back-in-cfr: true
tcp-cfr: true
tcp-feature: true
navigation-toolbar:
description: Feature for navigation toolbar.
variables:
enabled:
description: "When the feature is enabled then the user will see the new navigation toolbar.\n"
type: Boolean
default: false
nimbus-is-ready:
description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n"
variables:
event-count:
description: The number of events that should be sent.
type: Int
default: 1
nimbus-system:
description: "Configuration of the Nimbus System in Android.\n"
variables:
refresh-interval-foreground:
description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n"
type: Int
default: 60
nimbus-validation:
description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production.
variables:
settings-icon:
description: The drawable displayed in the app menu for Settings
type: String
default: mozac_ic_settings
settings-punctuation:
description: The emoji displayed in the Settings screen title.
type: String
default: ""
settings-title:
description: The title of displayed in the Settings screen and app menu.
type: Text
default: browser_menu_settings
onboarding:
description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments."
variables:
order:
description: Determines the order of the onboarding page panels
type: List<OnboardingPanel>
default:
- themes
- toolbar-placement
- sync
- tcp
- privacy-notice
one-click-search:
description: Enable/disable the one click search feature.
variables:
enabled:
description: "If true, the one click search will be enabled."
type: Boolean
default: false
pdfjs:
description: PDF.js features
variables:
download-button:
description: Download button
type: Boolean
default: true
open-in-app-button:
description: Open in app button
type: Boolean
default: true
print:
description: A feature for printing from the share or browser menu.
variables:
browser-print-enabled:
description: "If true, a print button from the browser menu is available."
type: Boolean
default: true
share-print-enabled:
description: "If true, a print button from the share menu is available."
type: Boolean
default: true
private-browsing:
description: Private Browsing Mode
variables:
felt-privacy-enabled:
description: "if true, enable felt privacy related UI"
type: Boolean
default: false
query-parameter-stripping:
description: Features for query parameter stripping.
variables:
sections-enabled:
description: This property provides a lookup table of whether or not the given section should be enabled.
type: "Map<QueryParameterStrippingSection, String>"
default:
query-parameter-stripping: "0"
query-parameter-stripping-pmb: "0"
query-parameter-stripping-allow-list: ""
query-parameter-stripping-strip-list: ""
re-engagement-notification:
description: A feature that shows the re-engagement notification if the user is inactive.
variables:
enabled:
description: "If true, the re-engagement notification is shown to the inactive user."
type: Boolean
default: false
type:
description: The type of re-engagement notification that is shown to the inactive user.
type: Int
default: 0
remote-tab-management:
description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n"
variables:
close-tabs-enabled:
description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n"
type: Boolean
default: true
search-extra-params:
description: A feature that provides additional args for search.
variables:
channel-id:
description: The channel Id param name with arg.
type: "Map<String, String>"
default: {}
enabled:
description: "If true, the feature is active."
type: Boolean
default: false
feature-enabler:
description: "The feature enabler param name with arg, NOTE this map could be empty."
type: "Map<String, String>"
default: {}
search-engine:
description: The search engine name.
type: String
default: ""
search-term-groups:
description: A feature allowing the grouping of URLs around the search term that it came from.
variables:
enabled:
description: "If true, the feature shows up on the homescreen and on the new tab screen."
type: Boolean
default: false
set-as-default-prompt:
description: "Displays native default browser prompt to existing users.\n"
variables:
app-cold-starts-between-prompts:
description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n"
type: Int
default: 4
days-between-prompts:
description: "Minimum number of days between displays of Set as default prompt.\n"
type: Int
default: 14
enabled:
description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n"
type: Boolean
default: true
max-number-of-times-to-display:
description: "Maximum number of time the prompt should be displayed.\n"
type: Int
default: 3
ship:
description: The feature that controls Session History in Parent (SHIP) in Gecko.
variables:
disabled:
description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n"
type: Boolean
default: true
shopping-experience:
description: A feature that shows product review quality information.
variables:
enabled:
description: "if true, the shopping experience feature is shown to the user."
type: Boolean
default: false
product-recommendations:
description: "if true, recommended products feature is enabled to be shown to the user based on their preference."
type: Boolean
default: false
product-recommendations-exposure:
description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled."
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
suggest-shipped-domains:
description: Feature that suggests domains from the shipped domain list.
variables:
enabled:
description: "Suggest domains from the shipped domain list.\n"
type: Boolean
default: true
translations:
description: The feature that allows on-device translations of web content.
variables:
downloads-enabled:
description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-lang-settings-enabled:
description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-settings-enabled:
description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
global-site-settings-enabled:
description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
main-flow-browser-menu-enabled:
description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n"
type: Boolean
default: true
main-flow-toolbar-enabled:
description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n"
type: Boolean
default: true
page-settings-enabled:
description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n"
type: Boolean
default: true
user-characteristics:
description: A feature for control user characteristic data collection
variables:
currentVersion:
description: The current collection version of the user characteristics.
type: Int
default: 0
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.
CookieBannersSection:
description: The identifiers for the sections of the MR 2022.
variants:
feature-setting-detect-only:
description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules:
description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-global-rules-sub-frames:
description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting."
feature-setting-value:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-setting-value-pbm:
description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all."
feature-ui:
description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog."
HomeScreenSection:
description: The identifiers for the sections of the homescreen.
variants:
bookmarks:
description: The sites the user has bookmarked.
jump-back-in:
description: The tabs the user was looking immediately before being interrupted.
pocket:
description: The pocket section. This should only be available in the US.
pocket-sponsored-stories:
description: Subsection of the Pocket homescreen section which shows sponsored stories.
recent-explorations:
description: The tab groups
top-sites:
description: The frecency and pinned sites.
MR2022Section:
description: The identifiers for the sections of the MR 2022.
variants:
home-onboarding-dialog-existing-users:
description: Home onboarding dialog for upgraded users.
jump-back-in-cfr:
description: Jump back-in onboarding message.
sync-cfr:
description: CFR for the first time you see a synced tab on the home screen.
tcp-cfr:
description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen.
tcp-feature:
description: Controls the Total Cookie Protection feature.
wallpapers-selection-tool:
description: Wallpapers selection dialog tool for the home screen.
OnboardingCardType:
description: An enum to describe a type of card.
variants:
add-search-widget:
description: Allows user to add search widget to homescreen.
default-browser:
description: Allows user to set Firefox as the default browser.
notification-permission:
description: Allows user to enable notification permission.
sync-sign-in:
description: Allows user to sync with a Firefox account.
OnboardingPanel:
description: The types of onboarding panels in the onboarding page
variants:
privacy-notice:
description: The onboarding panel where users can tap to view our privacy notice.
sync:
description: The onboarding panel where users can sign in to sync
tcp:
description: The onboarding panel where users can choose their total cookie protection settings
themes:
description: The themes onboarding panel where users pick themes
toolbar-placement:
description: The onboarding panel where users choose their toolbar placement (bottom or top)
QueryParameterStrippingSection:
description: The identifiers for the options for the Query Parameter Stripping feature.
variants:
query-parameter-stripping:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-allow-list:
description: An string separated by commas indicating the sites where should from query stripping should be exempted.
query-parameter-stripping-pmb:
description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting."
query-parameter-stripping-strip-list:
description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings.
SuggestionType:
description: The type of a Firefox Suggest search suggestion.
variants:
amp:
description: A Firefox Suggestion from adMarketplace.
ampMobile:
description: A firefox Suggestion from adMarketplace specifically for mobile.
wikipedia:
description: A Firefox Suggestion for a Wikipedia page.
objects:
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.\n"
fields:
action:
description: "A URL of a page or a deeplink. This may have substitution variables in.\n"
type: ActionName
default: OPEN_URL
action-params:
description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n"
type: "Map<String, String>"
default: {}
button-label:
description: "The text on the button. If no text is present, the whole message is clickable.\n"
type: Option<Text>
default: ~
exclude-if-any:
description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n"
type: List<TriggerName>
default: []
experiment:
description: The slug of the experiment that this message came from.
type: Option<ExperimentSlug>
default: ~
is-control:
description: "Indicates if this message is the control message, if true shouldn't be displayed"
type: Boolean
default: false
microsurvey-config:
description: Optional configuration data for a microsurvey.
type: Option<MicrosurveyConfig>
default: ~
style:
description: "The style as described in a `StyleData` from the styles table.\n"
type: StyleName
default: DEFAULT
surface:
description: The surface identifier for this message.
type: SurfaceName
default: homescreen
text:
description: The message text displayed to the user
type: Text
default: ""
title:
description: The title text displayed to the user
type: Option<Text>
default: ~
trigger-if-all:
description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n"
type: List<TriggerName>
default: []
MicrosurveyAnswer:
description: Attributes relating to microsurvey content.
fields:
ordering:
description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n"
type: Int
default: 0
text:
description: The text for the answer.
type: Text
default: ""
MicrosurveyConfig:
description: Attributes relating to microsurvey content.
fields:
answers:
description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"."
type: List<MicrosurveyAnswer>
default: []
icon:
description: The icon shown in the survey.
type: Option<Image>
default: ~
utm-content:
description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed."
type: Option<String>
default: ~
NotificationConfig:
description: Attributes controlling the global configuration of notification messages.
fields:
refresh-interval:
description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n"
type: Int
default: 240
OnboardingCardData:
description: An object to describe a user facing onboarding card.
fields:
body:
description: The message text displayed to the user. May contain linkable text.
type: Text
default: ""
card-type:
description: The type of the card.
type: OnboardingCardType
default: default-browser
disqualifiers:
description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n"
type: List<ConditionName>
default:
- NEVER
enabled:
description: "If true, this card is shown to the user."
type: Boolean
default: true
image-res:
description: The resource id of the image to be displayed.
type: Image
default: ic_onboarding_welcome
ordering:
description: Used to sequence the cards.
type: Int
default: 0
prerequisites:
description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n"
type: List<ConditionName>
default:
- ALWAYS
primary-button-label:
description: The text to display on the primary button.
type: Text
default: ""
secondary-button-label:
description: The text to display on the secondary button.
type: Text
default: ""
title:
description: The title text displayed to the user.
type: Text
default: ""
StyleData:
description: "A group of properties (predominantly visual) to describe the style of the message.\n"
fields:
max-display-count:
description: "How many sessions will this message be shown to the user before it is expired.\n"
type: Int
default: 5
priority:
description: "The importance of this message. 0 is not very important, 100 is very important.\n"
type: Int
default: 50

Просмотреть файл

@ -1,5 +1,5 @@
beta: b3a0e54efa02e00229cc29477b63ff5aec8dc911
central: 4e75481ca2636e965da299cb585ad12d1ac02301
beta: 299911741634267ce7f7e31fb80a97483562a8a1
central: db07c33528d623f09163e684653be46575f563e1
esr115: 49aae7825e825c290102609ba4240f7ed2b788e7
esr128: ee41bed4901e47aa46e49ab9ff5c8e85e479490a
release: 32c3e97cf9edee02dcd78e5e6bbef11647a241db
esr128: e6099586845f23c0f85fe29a636980e57d206897
release: 41f7afc15996877ed0aace3625597c9f4e87eabe

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,344 @@
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json",
"title": "Messaging Experiment",
"description": "A Firefox Messaging System message.",
"if": {
"type": "object",
"properties": {
"template": {
"const": "multi"
}
},
"required": [
"template"
]
},
"then": {
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/MultiMessage"
},
"else": {
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage"
},
"$defs": {
"ToastNotification": {
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "file:///ToastNotification.schema.json",
"title": "ToastNotification",
"description": "A template for toast notifications displayed by the Alert service.",
"allOf": [
{
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message"
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"title": {
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText",
"description": "Id of localized string or message override of toast notification title"
},
"body": {
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText",
"description": "Id of localized string or message override of toast notification body"
},
"icon_url": {
"description": "The URL of the image used as an icon of the toast notification.",
"type": "string",
"format": "moz-url-format"
},
"image_url": {
"description": "The URL of an image to be displayed as part of the notification.",
"type": "string",
"format": "moz-url-format"
},
"launch_url": {
"description": "The URL to launch when the notification or an action button is clicked.",
"type": "string",
"format": "moz-url-format"
},
"launch_action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "The launch action to be performed when Firefox is launched."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true
},
"requireInteraction": {
"type": "boolean",
"description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically."
},
"tag": {
"type": "string",
"description": "An identifying tag for the toast notification."
},
"data": {
"type": "object",
"description": "Arbitrary data associated with the toast notification."
},
"actions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText",
"description": "The action text to be shown to the user."
},
"action": {
"type": "string",
"description": "Opaque identifer that identifies action."
},
"iconURL": {
"type": "string",
"format": "uri",
"description": "URL of an icon to display with the action."
},
"windowsSystemActivationType": {
"type": "boolean",
"description": "Whether to have Windows process the given `action`."
},
"launch_action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "The launch action to be performed when Firefox is launched."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true
}
},
"required": [
"action",
"title"
],
"additionalProperties": true
}
}
},
"additionalProperties": true,
"required": [
"title",
"body"
]
},
"template": {
"type": "string",
"const": "toast_notification"
}
},
"required": [
"content",
"targeting",
"template",
"trigger"
],
"additionalProperties": true
},
"Message": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The message identifier"
},
"groups": {
"description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.",
"type": "array",
"items": {
"type": "string",
"description": "Preference name"
}
},
"template": {
"type": "string",
"description": "Which messaging template this message is using.",
"enum": [
"toast_notification"
]
},
"frequency": {
"type": "object",
"description": "An object containing frequency cap information for a message.",
"properties": {
"lifetime": {
"type": "integer",
"description": "The maximum lifetime impressions for a message.",
"minimum": 1,
"maximum": 100
},
"custom": {
"type": "array",
"description": "An array of custom frequency cap definitions.",
"items": {
"description": "A frequency cap definition containing time and max impression information",
"type": "object",
"properties": {
"period": {
"type": "integer",
"description": "Period of time in milliseconds (e.g. 86400000 for one day)"
},
"cap": {
"type": "integer",
"description": "The maximum impressions for the message within the defined period.",
"minimum": 1,
"maximum": 100
}
},
"required": [
"period",
"cap"
]
}
}
}
},
"priority": {
"description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown",
"type": "integer"
},
"order": {
"description": "The order in which messages should be shown. Messages will be shown in increasing order.",
"type": "integer"
},
"targeting": {
"description": "A JEXL expression representing targeting information",
"type": "string"
},
"trigger": {
"description": "An action to trigger potentially showing the message",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A string identifying the trigger action"
},
"params": {
"type": "array",
"description": "An optional array of string parameters for the trigger action",
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
}
},
"required": [
"id"
]
},
"provider": {
"description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".",
"type": "string"
}
},
"additionalProperties": true,
"dependentRequired": {
"content": [
"id",
"template"
],
"template": [
"id",
"content"
]
}
},
"localizedText": {
"type": "object",
"properties": {
"string_id": {
"description": "Id of localized string to be rendered.",
"type": "string"
}
},
"required": [
"string_id"
]
},
"localizableText": {
"description": "Either a raw string or an object containing the string_id of the localized text",
"oneOf": [
{
"type": "string",
"description": "The string to be rendered."
},
{
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizedText"
}
]
},
"TemplatedMessage": {
"description": "An FxMS message of one of a variety of types.",
"type": "object",
"allOf": [
{
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message"
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"toast_notification"
]
}
},
"required": [
"template"
]
},
"then": {
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/ToastNotification"
}
}
]
},
"MultiMessage": {
"description": "An object containing an array of messages.",
"type": "object",
"properties": {
"template": {
"type": "string",
"const": "multi"
},
"messages": {
"type": "array",
"description": "An array of messages.",
"items": {
"$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage"
}
}
},
"required": [
"template",
"messages"
]
}
}
}

Просмотреть файл

@ -0,0 +1,48 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"prefs": {
"description": "The prefs to set",
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"branch": {
"description": "The branch the pref should be set on.",
"type": "string",
"enum": ["user", "default"]
},
"value": {
"description": "The value of the pref. Set to null to clear prefs.",
"type": ["string", "integer", "boolean", "null"]
}
},
"required": ["branch", "value"],
"allOf": [
{
"description": "Prevent clearing the default branch",
"if": {
"properties": {
"branch": {
"const": "default"
}
}
},
"then": {
"properties": {
"value": {
"type": ["string", "integer", "boolean"]
}
}
}
}
]
}
}
}
},
"required": ["prefs"],
"additionalProperties": false
}

Просмотреть файл

@ -0,0 +1,73 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Legacy (Normandy) Heartbeat, via Nimbus",
"description": "The schema for the Legacy Heartbeat Nimbus feature.",
"type": "object",
"properties": {
"survey": {
"$comment": "Hearbeat arguments are nested under survey to prevent simultaneous rollouts and experiments from overriding eachothers optional variables",
"type": "object",
"properties": {
"repeatOption": {
"type": "string",
"enum": ["once", "xdays", "nag"],
"description": "Determines how often a prompt is shown executes.",
"default": "once"
},
"repeatEvery": {
"description": "For repeatOption=xdays, how often (in days) the prompt is displayed.",
"default": null,
"type": ["number", "null"]
},
"includeTelemetryUUID": {
"type": "boolean",
"description": "Include unique user ID in post-answer-url and Telemetry",
"default": false
},
"surveyId": {
"description": "Slug uniquely identifying this survey in telemetry",
"type": "string"
},
"message": {
"description": "Message to show to the user",
"type": "string"
},
"engagementButtonLabel": {
"description": "Text for the engagement button. If specified, this button will be shown instead of rating stars.",
"default": null,
"type": ["string", "null"]
},
"thanksMessage": {
"description": "Thanks message to show to the user after they've rated Firefox",
"type": "string"
},
"postAnswerUrl": {
"description": "URL to redirect the user to after rating Firefox or clicking the engagement button",
"default": null,
"type": ["string", "null"]
},
"learnMoreMessage": {
"description": "Message to show to the user to learn more",
"default": null,
"type": ["string", "null"]
},
"learnMoreUrl": {
"description": "URL to show to the user when they click Learn More",
"default": null,
"type": ["string", "null"]
}
},
"required": [
"surveyId",
"message",
"thanksMessage",
"postAnswerUrl",
"learnMoreMessage",
"learnMoreUrl"
],
"additionalProperties": false
}
},
"required": ["survey"],
"additionalProperties": false
}

Просмотреть файл

@ -11,7 +11,7 @@ focus/klar-v130.0: 0b359af1d789a91976657cbe22c7d3d9c7fdadc3
focus/klar-v131.0: 34d92c8df1b1522a1da88c23879b439d763ec133
focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912
focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac
main: d9352d7bce60a040503424888555353b86a205a9
main: 731d7fc9f0dbe6a9f3a5f25acc1fcf2c63778a80
release/v124: da250bed9e19c4978d4400d6d404cb312e33636e
release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd
release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494
@ -21,4 +21,4 @@ release/v129: 500c57e46f0de7c5125ba823eb4f72500934bdca
release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12
release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8
release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc
release/v133: 2f8458be87b6293d1525a78d00b0d95265ad8eaf
release/v133: 2ca6c2c59919516b2a38462addcedef7cf069677

Просмотреть файл

@ -1,4 +1,4 @@
main: d9352d7bce60a040503424888555353b86a205a9
main: 731d7fc9f0dbe6a9f3a5f25acc1fcf2c63778a80
release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502
release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524
release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b
@ -15,7 +15,7 @@ release/v129: 500c57e46f0de7c5125ba823eb4f72500934bdca
release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12
release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8
release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc
release/v133: 2f8458be87b6293d1525a78d00b0d95265ad8eaf
release/v133: 2ca6c2c59919516b2a38462addcedef7cf069677
v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a
v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688
v117.2: 5cc367aa8857199cd8a54d53e8faf6696c5614c3