--- channels: - release - beta - nightly - developer features: 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 default: { "top-sites": true, "jump-back-in": true, "recently-saved": true, "recent-explorations": true, "pocket": true, "contile-top-sites": false, } defaults: - channel: nightly value: { "sections-enabled": { "top-sites": true, "jump-back-in": true, "recently-saved": true, "recent-explorations": true, "pocket": true, "contile-top-sites": false, } } 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-title: description: The title of displayed in the Settings screen and app menu. type: Text default: browser_menu_settings settings-punctuation: description: The emoji displayed in the Settings screen title. type: String default: "" settings-icon: description: The drawable displayed in the app menu for Settings type: String default: mozac_ic_settings 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 defaults: - channel: nightly value: enabled: true - channel: developer value: enabled: true default-browser-message: description: A small feature allowing experiments on the placement of a default browser message. variables: message-location: description: Where is the message to be put. type: Option default: null messaging: description: | Configuration for the messaging system. In practice this is a set of growable lookup tables for the message controller to piece together. variables: message-under-experiment: description: Id or prefix of the message under experiment. type: Option default: null messages: description: A growable collection of messages type: Map default: {} triggers: description: > A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. type: Map default: english-speaking: "'en' in locale" ALWAYS: "true" NEW_USER: "days_since_install < 7" styles: description: > A map of styles to configure message appearance. type: Map default: urgent: background-color: red text-color: white button-background: bright-blue button-text-color: white priority: 70 warning: background-color: cyan, text-color: black, button-background: bright-blue button-text-color: white priority: 55 default: background-color: blue text-color: white button-background: bright-blue button-text-color: white priority: 50 excited: background-color: blue text-color: white button-background: bright-blue button-text-color: white priority: 60 actions: type: Map description: A growable map of action URLs. default: OPEN_SYNC_SETTINGS: firefox://settings/sync OPEN_POCKET_SETTINGS: https:///getpocket.com/settings?fxa={fxa-token} OPEN_SETTINGS: ://settings defaults: - channel: developer value: { "messages": { "my-viewpoint-survey": { "title": "Message tile", "text": "Love Firefox? Fill in our survey!", "action": "https://surveyprovider.com/survey-id/{uuid}", "trigger": [ "ALWAYS" ], "max-display-count": 5, "style": "warning", "button-label": "Go to the survey" } }, "message-under-experiment": "my-viewpoint-survey" } - channel: developer value: { "messages": { "private-tabs-auto-close": { "action": "OPEN_SETTINGS", "text": "Sharing your phone? Autoclosing private tabs is for you!", "style": "warning", "trigger": [ "NEW_USER", "first-private-tabs-opened" ], "max-display-count": 5 } }, "message-under-experiment": "private-tabs-auto-close" } - channel: developer value: { "triggers": { "ireland": "'IE' in locale" }, "styles": { "irish-green": { "background-color": "green", "text-color": "dark-green", "button-background": "foo", "button-text-color": "very-green", "priority": 50 } }, "actions": { "OPEN_SETTINGS": "://settings" }, "messages": { "eu-tracking-protection-for-ireland": { "action": "OPEN_SETTINGS", "text": "GDPR has you covered. Firefox has GDPR covered", "style": "irish-green", "trigger": [ "NEW_USER", "ireland" ], "max-display-count": 5 } }, "message-under-experiment": "eu-tracking-protection-for-" } types: 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. fields: action: type: String description: > A URL of a page or a deeplink. This may have substitution variables in. # This should never be defaulted. default: empty_string title: type: Option description: "The title text displayed to the user" default: null text: type: Text description: "The message text displayed to the user" # This should never be defaulted. default: empty_string is-control: type: Boolean description: "Indicates if this message is the control message, if true shouldn't be displayed" default: false button-label: type: Option description: > The text on the button. If no text is present, the whole message is clickable. default: null style: type: String description: > The style as described in a `StyleData` from the styles table. default: "default" max-display-count: type: Int description: > The number of sessions the user is shown the message before the message expires. If the user is able to dismiss the message, this is the number of times they dismiss it before the message expires. A count of -1 means that the message will never expire. default: 5 # These triggers aren't part of the MVP, # so may be excluded. trigger: type: List description: > A list of strings corresponding to targeting expressions. The message will be shown if all expressions `true`. default: [] StyleData: description: > A group of properities (predominantly visual) to describe the style of the message. fields: # How the string is transformed into a color is unspecified background-color: type: String description: The color of the background. default: "blue" text-color: type: String description: The color of the background. default: "white" button-background: type: String description: The color of the button background. default: "bright-blue" button-text-color: type: String description: The color of the button text. default: "white" priority: type: Int description: > The importance of this message. 0 is not very important, 100 is very important. default: 50 enums: HomeScreenSection: description: The identifiers for the sections of the homescreen. variants: top-sites: description: The frecency and pinned sites. recently-saved: description: The sites the user has bookmarked recently. jump-back-in: description: The tabs the user was looking immediately before being interrupted. recent-explorations: description: The tab groups pocket: description: The pocket section. This should only be available in the US. contile-top-sites: description: The sponsored shortcuts in the homescreen. MessageSurfaceId: description: The identity of a message surface, used in the default browser experiments variants: app-menu-item: description: An item in the default toolbar menu. settings: description: A setting in the settings screen. homescreen-banner: description: A banner in the homescreen.