diff --git a/locales-pending/fix.ftl b/locales-pending/fix.ftl index 2a365235f..3977239a3 100644 --- a/locales-pending/fix.ftl +++ b/locales-pending/fix.ftl @@ -49,7 +49,7 @@ fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-2-content = Some fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-3-title = Mark as fixed on this page fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-3-content = This will help you keep track of which exposures still need your attention, and make your overall exposures go down. fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-title = Watch for re-exposures -fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-content = This process does not remove your information from public records, so even after your information is removed, sites often add you back. If you’d like us to handle this for you and automatically remove any new exposures, upgrade to { -brand-monitor-premium }. +fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-content = This process does not remove your information from public records, so even after your information is removed, sites often add you back. If you’d like us to handle this for you and automatically remove any new exposures, subscribe to { -brand-monitor-plus }. fix-flow-data-broker-profiles-manual-remove-review-profiles-headline = Review & remove your profiles fix-flow-data-broker-profiles-manual-remove-button-mark-fixed = Mark as fixed fix-flow-data-broker-profiles-manual-remove-button-remove-for-me = Remove them for me @@ -59,13 +59,13 @@ fix-flow-data-broker-profiles-automatic-remove-headline = We’ll auto-remove th # $data_broker_count is the number of data brokers scanned monthly fix-flow-data-broker-profiles-automatic-remove-subheadline = { $data_broker_count -> - [one] Removing these stops the sale of your personal info on { $data_broker_count } site. Upgrade to { -brand-monitor-premium } and you’ll get: - *[other] Removing these stops the sale of your personal info on { $data_broker_count } sites. Upgrade to { -brand-monitor-premium } and you’ll get: + [one] Removing these stops the sale of your personal info on { $data_broker_count } site. Subscribe to { -brand-monitor-plus } and you’ll get: + *[other] Removing these stops the sale of your personal info on { $data_broker_count } sites. Subscribe to { -brand-monitor-plus } and you’ll get: } # Variables: # $percent is the percentage you can save subscribing to an annual/yearly plan fix-flow-data-broker-profiles-automatic-remove-save-percent = Save { $percent }% with yearly plan 🎉 -fix-flow-data-broker-profiles-automatic-remove-features-select-plan-headline = { -brand-premium } Protection +fix-flow-data-broker-profiles-automatic-remove-features-select-plan-headline = { -brand-monitor-plus } fix-flow-data-broker-profiles-automatic-remove-features-select-plan-toggle-yearly = Yearly fix-flow-data-broker-profiles-automatic-remove-features-select-plan-toggle-monthly = Monthly fix-flow-data-broker-profiles-automatic-remove-features-select-plan-monthly-frequency = Billed monthly @@ -73,7 +73,7 @@ fix-flow-data-broker-profiles-automatic-remove-features-select-plan-monthly-butt fix-flow-data-broker-profiles-automatic-remove-features-select-plan-yearly-frequency = Billed yearly fix-flow-data-broker-profiles-automatic-remove-features-select-plan-yearly-button = Select yearly plan fix-flow-data-broker-profiles-automatic-remove-features-headline = Features: -fix-flow-data-broker-profiles-automatic-remove-features-remove-personal-info = Automatic removal of personal info from sites that are selling it +fix-flow-data-broker-profiles-automatic-remove-features-remove-personal-info = Automatic data removal from sites that are selling your personal info fix-flow-data-broker-profiles-automatic-remove-features-guided-experience = Guided experience through high risk data breaches that require manual steps fix-flow-data-broker-profiles-automatic-remove-features-continuous-monitoring = Continuous monitoring for new exposures fix-flow-data-broker-profiles-automatic-remove-features-breach-alerts = Alerts when your data has been breached diff --git a/locales-pending/landing-all.ftl b/locales-pending/landing-all.ftl index 0d142aaa6..7a3e8a49b 100644 --- a/locales-pending/landing-all.ftl +++ b/locales-pending/landing-all.ftl @@ -1,4 +1,4 @@ -public-nav-name = { -brand-fx-monitor } +public-nav-name = { -brand-mozilla-monitor } landing-all-hero-title = Find where your private info is exposed — and take it back landing-all-hero-lead = We scan data breaches to see if your data has been leaked and give you steps to fix it. @@ -21,6 +21,18 @@ landing-all-value-prop-info-at-risk-description = Data leaks are unfortunately p landing-all-quote = Data breaches happen every 11 minutes, exposing your private information — but don’t worry, we can help. +# Non-US FAQ + +landing-all-faq-title = Frequently asked questions +# FAQ is an acronym for Frequently Asked Questions +landing-all-faq-see-all = See all FAQs +landing-all-data-breach-definition-ans = What exactly is a data breach? +landing-all-data-breach-definition-qn = A data breach happens when personal or private information gets exposed, stolen or copied without permission. These security incidents can result from cyber attacks on websites, apps or any database where people’s personal information resides. A data breach can also happen accidentally, like if someone’s login credentials get posted publicly. +landing-all-data-breach-next-steps-qn = I just found out I’m in a data breach. What do I do next? +landing-all-data-breach-next-steps-ans = Visit { -brand-mozilla-monitor } to learn what to do after a data breach and get guided steps to resolve exposures of your personal info. Hackers rely on people reusing passwords, so it’s important to create strong, unique passwords for all your accounts. Keep your passwords in a safe place that only you have access to; this could be the same place where you store important documents or a password manager. +landing-all-data-breach-info-qn = What information gets exposed in data breaches? +landing-all-data-breach-info-ans = Not all breaches expose all the same info. It just depends on what hackers can access. Many data breaches expose email addresses and passwords. Others expose more sensitive information such as credit card numbers, PIN numbers, and social security numbers. + # Social proof # Variables diff --git a/locales-pending/landing-premium.ftl b/locales-pending/landing-premium.ftl index 9c3f8d34c..c3ac83457 100644 --- a/locales-pending/landing-premium.ftl +++ b/locales-pending/landing-premium.ftl @@ -97,7 +97,7 @@ landing-premium-plans-cards-feature-scan-plus = *[other] Monthly scan of { $dataBrokerTotalCount } data broker sites that may be selling your personal info } landing-premium-plans-cards-feature-removal-free = Manual removal of personal info from sites that are selling it -landing-premium-plans-cards-feature-removal-plus = Automatic removal of personal info from sites that are selling it +landing-premium-plans-cards-feature-removal-plus = Automatic data removal from sites that are selling your personal info landing-premium-plans-cards-feature-alerts = Get alerts when your data has been breached landing-premium-plans-cards-feature-guidance = Guided help to fix high-risk data breaches landing-premium-plans-cards-feature-monitoring = Continuous monitoring @@ -112,6 +112,17 @@ landing-premium-value-prop-progress-card-illustration-alt = Progress card deline landing-premium-quote = There’s a $240 billion industry of data brokers selling your private information for profit. It’s time to take back your privacy. +# US FAQ + +landing-premium-what-websites-sell-info-qn = What kinds of websites sell my personal information? +landing-premium-what-websites-sell-info-ans = Certain websites are in the business of collecting and selling people’s personal information without their consent, which is unfortunately legal in the US. These sites are called data brokers and they make up a $240 billion dollar industry. They use sophisticated methods to collect personal, financial, location, and even health information, often without your consent or even your knowledge. They’ll sell what they’ve collected to third parties, profiting from your information and leaving you open to violations of your privacy and security. +landing-premium-continuous-data-removal-qn = What kinds of websites sell my personal information? +# Variables: +# $data_broker_sites_total_num is the total number of data broker sites available to scan. It will always be plural. +landing-premium-continuous-data-removal-ans = { $data_broker_sites_total_num -> + *[other] Every month, we use the information you provided about yourself (name, location and birthdate) to search across { $data_broker_sites_total_num } data broker sites that sell people’s private information. If we find your data on any of these sites, we initiate the request for removal. Data removal can take anywhere from a day to a month. This feature is available for { -brand-monitor-plus } users only. Learn more here. +} + # Scan Limit landing-premium-max-scan = We’ve reached the maximum scans for the month. Enter your email to get on our waitlist. diff --git a/locales-pending/onboarding.ftl b/locales-pending/onboarding.ftl index 4a12797d5..e849d782f 100644 --- a/locales-pending/onboarding.ftl +++ b/locales-pending/onboarding.ftl @@ -6,7 +6,7 @@ onboarding-steps-enter-info-back = Go back onboarding-steps-find-exposures-label = Find exposures onboarding-get-started-heading = Welcome to { -product-short-name }. Let’s find your exposed information. onboarding-get-started-content-data = To find and fix your exposed data, we’ll need to ask for your personal info. Rest assured we will safeguard your information like it’s our own. -onboarding-get-started-content-price = We believe in your right to privacy, so basic { -product-short-name } is always free. Upgrade to { -brand-premium } for continuous protection and automatic removal of your personal info. +onboarding-get-started-content-price = We believe in your right to privacy, so basic { -product-short-name } is always free. Subscribe to { -brand-monitor-plus } for continuous protection and automatic removal of your personal info. onboarding-get-started-content-explainer = See how we protect your data onboarding-get-started-cta-label = Start my free scan onboarding-get-started-how-it-works-dialog-heading-line1 = We’re here to protect your personal information @@ -19,9 +19,9 @@ onboarding-get-started-how-it-works-dialog-step1-content = { *[other] With just a few key pieces of information, we’ll search for you in all known data breaches and { $dataBrokerTotalCount } major data broker sites. All users get the first scan free. } onboarding-get-started-how-it-works-dialog-step2-heading = Remove your personal info -onboarding-get-started-how-it-works-dialog-step2-content = We’ll show you what personal info each data broker site is selling. You’ll need to contact each data broker to request removal. Removal typically takes 7-10 business days, but some can take longer. Upgrade to { -brand-premium } and we’ll handle this for you. +onboarding-get-started-how-it-works-dialog-step2-content = We’ll show you what personal info each data broker site is selling. You’ll need to contact each data broker to request removal. Removal typically takes 7-10 business days, but some can take longer. Subscribe to { -brand-monitor-plus } and we’ll handle this for you. onboarding-get-started-how-it-works-dialog-step3-heading = Resolve data breaches -onboarding-get-started-how-it-works-dialog-step3-content = We’ll give you clear steps on how to resolve each data breach. They’ll require access to your accounts, so you’ll need to resolve them manually even if you upgrade to { -brand-premium }. +onboarding-get-started-how-it-works-dialog-step3-content = They’ll require access to your accounts, so you’ll need to resolve them manually even if you subscribe to { -brand-monitor-plus }. onboarding-get-started-how-it-works-dialog-confirm-label = OK onboarding-enter-details-title = Enter the details you want to protect diff --git a/locales-pending/premium.ftl b/locales-pending/premium.ftl index 9a13f4ac1..4d220910e 100644 --- a/locales-pending/premium.ftl +++ b/locales-pending/premium.ftl @@ -36,8 +36,8 @@ user-menu-signout-tooltip = Sign out of { -brand-fx-monitor } footer-external-link-faq-label = FAQs footer-external-link-faq-tooltip = Frequently asked questions -premium-badge-label = { -brand-premium } -premium-cta-label = Upgrade to { -brand-premium } +premium-badge-label = { -brand-monitor-plus } +premium-cta-label = Subscribe to { -brand-monitor-plus } # Chart summarizing total exposures @@ -88,16 +88,16 @@ progress-card-heres-what-we-fixed-headline = Here’s what we fixed progress-card-manually-fixed-headline = Manually fixed progress-card-auto-removed-headline = Auto-removed progress-card-in-progress-headline = In progress -progress-card-locked-alt = Only available with { -brand-premium } +progress-card-locked-alt = Only available with { -brand-monitor-plus } full-name = Full name # Here’s What We Fixed Modal modal-heres-what-we-fixed-title = About what we fixed -modal-heres-what-we-fixed-description-part-one = Manually fixed includes anything you’ve fixed yourself. All data breaches that require access to your accounts need - to be fixed manually, even if you’ve upgraded to { -brand-premium }. -modal-heres-what-we-fixed-description-part-two = Auto-removed includes any exposures from data broker profiles that we’ve removed for you. This is available only for - { -brand-premium } subscribers. +modal-heres-what-we-fixed-description-part-one = Manually fixed includes anything you’ve fixed yourself. All data breaches that require access to your accounts need + to be fixed manually, even if you’ve subscribed to { -brand-monitor-plus }. +modal-heres-what-we-fixed-description-part-two = Auto-removed includes any exposures from data broker profiles that we’ve removed for you. This is available only for + { -brand-monitor-plus } subscribers. modal-heres-what-we-fixed-description-part-three = In Progress includes anything that we are currently working on fixing. Removals typically take 7-14 days but the most difficult sites could take longer. You may also start to see removals @@ -156,10 +156,10 @@ modal-exposure-type-title = About exposure types # $data_broker_sites_total_num is the total number of data broker sites available to scan. It will always be more than 1. modal-exposure-type-description = We search for you in all known data breaches and { $data_broker_sites_total_num } data broker sites that sell your personal info. Here are the two types of exposures we find: modal-exposure-type-data-breach = Data breach means your information has been compromised in a breach and could be in the wrong hands. - Resolving these typically requires accessing your accounts, so you’ll need to take manual steps to resolve each breach even if you’ve upgraded to { -brand-premium }. + Resolving these typically requires accessing your accounts, so you’ll need to take manual steps to resolve each breach even if you’ve subscribed to { -brand-monitor-plus }. modal-exposure-type-data-broker-part-one = Info for sale means a data broker site is publicly publishing and selling your personal info. You’ll need to manually request removal from each site. -modal-exposure-type-data-broker-part-two = If you’re a { -brand-premium } user, we automatically remove all profiles for you. +modal-exposure-type-data-broker-part-two = For { -brand-monitor-plus } subscribers, we auto-remove these profiles on your behalf and make sure they don’t re-add you. In both cases, removals typically take 7-14 days. Some can take longer, while others can happen within the hour. # About Exposure Statuses Modal @@ -170,8 +170,8 @@ modal-exposure-status-title = About exposure statuses modal-exposure-status-description = We search for exposures in all known data breaches and { $data_broker_sites_total_num } data broker sites that sell your personal info. Your exposures will have one of the following statuses: modal-exposure-status-action-needed = Action needed means it is currently active and you need to take steps to fix it. -modal-exposure-status-in-progress = In progress means we are actively working on fixing the exposure for you. This is a { -brand-premium } feature. -modal-exposure-status-fixed = Fixed means the exposure has been resolved and theres no action for you to take. +modal-exposure-status-in-progress = In progress means we are actively working on fixing the exposure for you. This is a { -brand-monitor-plus } feature. +modal-exposure-status-fixed = Fixed means the exposure has been resolved and there’s no action for you to take. # Dashboard @@ -233,7 +233,7 @@ dashboard-top-banner-no-exposures-found-title = No exposures found # Variables: # $data_broker_sites_total_num is the total number of data broker sites available to scan. This will always be plural. dashboard-top-banner-no-exposures-found-description = Great news! We searched all known data breaches and { $data_broker_sites_total_num } data broker sites that sell personal info and found no exposures. -dashboard-top-banner-no-exposures-found-upsell-info = Upgrade to { -brand-premium } and we’ll monitor for any new exposures. +dashboard-top-banner-no-exposures-found-upsell-info = Subscribe to { -brand-monitor-plus } and we’ll scan for new exposures every month. dashboard-top-banner-no-exposures-found-cta = Get continuous protection dashboard-no-exposures-label = No exposures found @@ -261,8 +261,8 @@ dashboard-top-banner-your-data-is-protected-cta = See what’s fixed # $starting_exposure_total_num is the number of exposures the user has resolved. dashboard-top-banner-your-data-is-protected-all-fixed-description = { $starting_exposure_total_num -> - [one] Great work, { $starting_exposure_total_num } exposure of your data is fixed! Upgrade to { -brand-premium } and we’ll continue to monitor for new exposures. Plus, we’ll automatically remove your info from any sites that are selling it. - *[other] Great work, all { $starting_exposure_total_num } exposures of your data are fixed! Upgrade to { -brand-premium } and we’ll continue to monitor for new exposures. Plus, we’ll automatically remove your info from any sites that are selling it. + [one] Great work, { $starting_exposure_total_num } exposure of your data is fixed! Subscribe to { -brand-monitor-plus } and we’ll scan for new exposures every month. Plus, we’ll automatically remove your info from any sites that are selling it. + *[other] Great work, all { $starting_exposure_total_num } exposures of your data are fixed! Subscribe to { -brand-monitor-plus } and we’ll and we’ll scan for new exposures every month. Plus, we’ll automatically remove your info from any sites that are selling it. } # Variables: @@ -357,7 +357,7 @@ false-door-test-phase-3-content-part-two-dashboard = Automatically remove data f # Premium upsell dialog -premium-upsell-dialog-title = Choose the level of protection that’s right for you +premium-upsell-dialog-title = Turn on automatic data removal with { -brand-monitor-plus } # Guided Resolution Flow @@ -385,7 +385,7 @@ data-broker-profiles-exposure-reduction = Exposure reduction: { $exposure_reduct exposure-reduction-chart-heading = { $nr }% exposure-reduction-chart-explanation = exposures willbe reduced -welcome-to-premium-data-broker-profiles-title-part-one = Welcome to { -brand-premium }. +welcome-to-premium-data-broker-profiles-title-part-one = Welcome to { -brand-monitor-plus }. welcome-to-premium-data-broker-profiles-title-part-two = We’ll remove those profiles ASAP. # Variables: # $profile_total_num is the number of exposures came back from user data broker scans. diff --git a/locales/en/app.ftl b/locales/en/app.ftl index e61ad1178..8cd92b5d8 100644 --- a/locales/en/app.ftl +++ b/locales/en/app.ftl @@ -3,7 +3,7 @@ ## The following messages are brand and should be kept entirely in English ## unless otherwise indicated. --product-name = Firefox Monitor +-product-name = Mozilla Monitor -product-name-nowrap = { -product-name } -product-short-name = Monitor -brand-name = Firefox @@ -854,7 +854,7 @@ ad-unit-6-before-you-complete = Before you complete that next signup, use an ema -brand-firefox = Firefox -brand-monitor = Monitor --brand-fx-monitor = Firefox Monitor +-brand-fx-monitor = Mozilla Monitor -brand-mozilla = Mozilla -brand-premium = Premium -brand-monitor-premium = Monitor Premium @@ -862,6 +862,8 @@ ad-unit-6-before-you-complete = Before you complete that next signup, use an ema -brand-github = GitHub -brand-mozilla-vpn = Mozilla VPN -brand-relay = Firefox Relay +-brand-mozilla-monitor = Mozilla Monitor +-brand-monitor-plus = Monitor Plus ## @@ -875,8 +877,10 @@ meta-desc-2 = Find out if you’ve been part of a data breach with { -brand-fx-m ## Header +# Deprecated brand-fx-monitor = { -brand-fx-monitor } sign-in = Sign In +brand-mozilla-monitor = { -brand-fx-monitor } ## Site navigation diff --git a/public/images/email/monitor-logo-bg-light.png b/public/images/email/monitor-logo-bg-light.png index fedff2dc8..81cee0a88 100644 Binary files a/public/images/email/monitor-logo-bg-light.png and b/public/images/email/monitor-logo-bg-light.png differ diff --git a/public/images/email/monitor-logo-transparent-dark-mode.png b/public/images/email/monitor-logo-transparent-dark-mode.png index e55d5652b..4c1c347af 100644 Binary files a/public/images/email/monitor-logo-transparent-dark-mode.png and b/public/images/email/monitor-logo-transparent-dark-mode.png differ diff --git a/public/images/email/monitor-logo-transparent.png b/public/images/email/monitor-logo-transparent.png index 19ea1ef80..4c9874f3d 100644 Binary files a/public/images/email/monitor-logo-transparent.png and b/public/images/email/monitor-logo-transparent.png differ diff --git a/src/app/(nextjs_migration)/(authenticated)/user/breaches/page.tsx b/src/app/(nextjs_migration)/(authenticated)/user/breaches/page.tsx index 3dd5b9d03..c98cfe7e3 100644 --- a/src/app/(nextjs_migration)/(authenticated)/user/breaches/page.tsx +++ b/src/app/(nextjs_migration)/(authenticated)/user/breaches/page.tsx @@ -31,14 +31,14 @@ export function generateMetadata() { title: l10n.getString("breach-meta-title"), twitter: { card: "summary_large_image", - title: l10n.getString("brand-fx-monitor"), + title: l10n.getString("brand-mozilla-monitor"), description: l10n.getString("meta-desc-2"), images: ["/images/og-image.webp"], }, openGraph: { - title: l10n.getString("brand-fx-monitor"), + title: l10n.getString("brand-mozilla-monitor"), description: l10n.getString("meta-desc-2"), - siteName: l10n.getString("brand-fx-monitor"), + siteName: l10n.getString("brand-mozilla-monitor"), type: "website", url: process.env.SERVER_URL, images: ["/images/og-image.webp"], diff --git a/src/app/(nextjs_migration)/(authenticated)/user/layout.tsx b/src/app/(nextjs_migration)/(authenticated)/user/layout.tsx index 45cb2c9ab..2e66dcfe0 100644 --- a/src/app/(nextjs_migration)/(authenticated)/user/layout.tsx +++ b/src/app/(nextjs_migration)/(authenticated)/user/layout.tsx @@ -68,7 +68,7 @@ const MainLayout = async (props: Props) => { src={MonitorLogo} width="213" height="33" - alt={l10n.getString("brand-fx-monitor")} + alt={l10n.getString("brand-mozilla-monitor")} priority /> diff --git a/src/app/(nextjs_migration)/(guest)/breach-details/[breachName]/page.tsx b/src/app/(nextjs_migration)/(guest)/breach-details/[breachName]/page.tsx index 92865738e..375f9ffcb 100644 --- a/src/app/(nextjs_migration)/(guest)/breach-details/[breachName]/page.tsx +++ b/src/app/(nextjs_migration)/(guest)/breach-details/[breachName]/page.tsx @@ -52,7 +52,9 @@ const glyphs: Record = { export function generateMetadata(props: { params: { breachName: string } }) { const l10n = getL10n(); return { - title: `${l10n.getString("brand-fx-monitor")} - ${props.params.breachName}`, + title: `${l10n.getString("brand-mozilla-monitor")} - ${ + props.params.breachName + }`, twitter: { card: "summary_large_image", title: l10n.getString("breach-detail-meta-social-title", { @@ -66,7 +68,7 @@ export function generateMetadata(props: { params: { breachName: string } }) { company: props.params.breachName, }), description: l10n.getString("breach-detail-meta-social-description"), - siteName: l10n.getString("brand-fx-monitor"), + siteName: l10n.getString("brand-mozilla-monitor"), type: "website", url: process.env.SERVER_URL, images: ["/images/og-image.webp"], diff --git a/src/app/(nextjs_migration)/(guest)/layout.tsx b/src/app/(nextjs_migration)/(guest)/layout.tsx index 975f2e032..86ab4c1b8 100644 --- a/src/app/(nextjs_migration)/(guest)/layout.tsx +++ b/src/app/(nextjs_migration)/(guest)/layout.tsx @@ -78,7 +78,7 @@ const GuestLayout = async (props: Props) => { src={MonitorLogo} width="213" height="33" - alt={l10n.getString("brand-fx-monitor")} + alt={l10n.getString("brand-mozilla-monitor")} priority /> diff --git a/src/app/(nextjs_migration)/components/client/FalseDoorBanner.tsx b/src/app/(nextjs_migration)/components/client/FalseDoorBanner.tsx index 3db6fac32..c8f707b82 100644 --- a/src/app/(nextjs_migration)/components/client/FalseDoorBanner.tsx +++ b/src/app/(nextjs_migration)/components/client/FalseDoorBanner.tsx @@ -5,7 +5,7 @@ "use client"; import Image from "next/image"; -import MozillaMonitorLogo from "../../../(proper_react)/images/firefox-monitor-logo.webp"; +import MozillaMonitorLogo from "../../../(proper_react)/images/monitor-logo.webp"; import styles from "./FalseDoorBanner.module.scss"; import { CloseBtn } from "../../../components/server/Icons"; import { useEffect, useState } from "react"; diff --git a/src/app/(proper_react)/images/monitor-logo.webp b/src/app/(proper_react)/images/monitor-logo.webp index 83e5397a0..59dce0a8a 100644 Binary files a/src/app/(proper_react)/images/monitor-logo.webp and b/src/app/(proper_react)/images/monitor-logo.webp differ diff --git a/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/Dashboard.test.tsx b/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/Dashboard.test.tsx index a2d25a6b9..e2b50932c 100644 --- a/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/Dashboard.test.tsx +++ b/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/Dashboard.test.tsx @@ -424,7 +424,7 @@ it("shows US users with Premium the Premium badge", () => { render(); // We show a Premium badge on desktop in the toolbar and in the mobile menu - const premiumBadges = screen.queryAllByText("Premium"); + const premiumBadges = screen.queryAllByText("Monitor Plus"); expect(premiumBadges.length).toBe(2); }); @@ -437,7 +437,7 @@ it("shows US users without Premium the upsell button", () => { // We show a CTA on desktop in the toolbar and in the mobile menu const premiumCtas = screen.queryAllByRole("button", { - name: "Upgrade to ⁨Premium⁩", + name: "Subscribe to ⁨Monitor Plus⁩", }); expect(premiumCtas.length).toBe(2); }); @@ -447,7 +447,7 @@ it("does not show non-US users the Premium badge", () => { render(); // We show a Premium badge on desktop in the toolbar and in the mobile menu - const premiumBadges = screen.queryAllByText("Premium"); + const premiumBadges = screen.queryAllByText("Monitor Plus"); expect(premiumBadges.length).toBe(0); }); @@ -457,7 +457,7 @@ it("does not show non-US users the upsell button", () => { // We show a CTA on desktop in the toolbar and in the mobile menu const premiumCtas = screen.queryAllByRole("button", { - name: "Upgrade to ⁨Premium⁩", + name: "Subscribe to ⁨Monitor Plus⁩", }); expect(premiumCtas.length).toBe(0); }); @@ -472,30 +472,30 @@ it("opens and closes the premium upsell dialog via the Premium upsell badge)", a // We show a CTA on desktop in the toolbar and in the mobile menu const premiumCtas = screen.queryAllByRole("button", { - name: "Upgrade to ⁨Premium⁩", + name: "Subscribe to ⁨Monitor Plus⁩", }); expect(premiumCtas.length).toBe(2); // Shows the modal for the desktop layout await user.click(premiumCtas[0]); expect( - screen.getByText("Choose the level of protection that’s right for you"), + screen.getByText("Turn on automatic data removal with ⁨Monitor Plus⁩"), ).toBeInTheDocument(); const closeButtonIcon1 = screen.getByLabelText("Close"); await user.click(closeButtonIcon1.parentElement as HTMLElement); expect( - screen.queryByText("Choose the level of protection that’s right for you"), + screen.queryByText("Turn on automatic data removal with ⁨Monitor Plus⁩"), ).not.toBeInTheDocument(); // Shows the modal for the mobile layout await user.click(premiumCtas[1]); expect( - screen.getByText("Choose the level of protection that’s right for you"), + screen.getByText("Turn on automatic data removal with ⁨Monitor Plus⁩"), ).toBeInTheDocument(); const closeButtonIcon2 = screen.getByLabelText("Close"); await user.click(closeButtonIcon2.parentElement as HTMLElement); expect( - screen.queryByText("Choose the level of protection that’s right for you"), + screen.queryByText("Turn on automatic data removal with ⁨Monitor Plus⁩"), ).not.toBeInTheDocument(); }); @@ -514,12 +514,12 @@ it("opens and closes the premium upsell dialog via the Premium upsell button)", await user.click(premiumCta); expect( - screen.getByText("Choose the level of protection that’s right for you"), + screen.getByText("Turn on automatic data removal with ⁨Monitor Plus⁩"), ).toBeInTheDocument(); const closeButtonIcon1 = screen.getByLabelText("Close"); await user.click(closeButtonIcon1.parentElement as HTMLElement); expect( - screen.queryByText("Choose the level of protection that’s right for you"), + screen.queryByText("Turn on automatic data removal with ⁨Monitor Plus⁩"), ).not.toBeInTheDocument(); }); @@ -533,7 +533,7 @@ it("toggles between the product offerings in the premium upsell dialog", async ( // We show a CTA on desktop in the toolbar and in the mobile menu const premiumCtas = screen.queryAllByRole("button", { - name: "Upgrade to ⁨Premium⁩", + name: "Subscribe to ⁨Monitor Plus⁩", }); expect(premiumCtas.length).toBe(2); @@ -572,7 +572,7 @@ it("counts in Glean how often people click the upgrade CTA to purchase the month // We show a CTA on desktop in the toolbar and in the mobile menu const premiumCtas = screen.queryAllByRole("button", { - name: "Upgrade to ⁨Premium⁩", + name: "Subscribe to ⁨Monitor Plus⁩", }); await user.click(premiumCtas[0]); const productTabMonthly = screen.getByRole("tab", { name: "Monthly" }); @@ -606,7 +606,7 @@ it("counts in Glean how often people click the upgrade CTA to purchase the yearl // We show a CTA on desktop in the toolbar and in the mobile menu const premiumCtas = screen.queryAllByRole("button", { - name: "Upgrade to ⁨Premium⁩", + name: "Subscribe to ⁨Monitor Plus⁩", }); await user.click(premiumCtas[0]); // Switch to the monthly tab by clicking it... @@ -642,7 +642,7 @@ it("shows returned free user who has resolved all tasks premium upsell and all f // We show a CTA on desktop in the toolbar and in the mobile menu const premiumCtas = screen.queryAllByRole("button", { - name: "Upgrade to ⁨Premium⁩", + name: "Subscribe to ⁨Monitor Plus⁩", }); expect(premiumCtas.length).toBe(2); diff --git a/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/manual-remove/ManualRemoveView.tsx b/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/manual-remove/ManualRemoveView.tsx index a1e6f25e5..d0ecca5c5 100644 --- a/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/manual-remove/ManualRemoveView.tsx +++ b/src/app/(proper_react)/redesign/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/manual-remove/ManualRemoveView.tsx @@ -117,7 +117,7 @@ export function ManualRemoveView(props: Props) { "fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-content", { elems: { - upgrade_link: ( + subscribe_link: ( ), }, diff --git a/src/app/api/utils/auth.ts b/src/app/api/utils/auth.ts index d0f90f578..832c3801d 100644 --- a/src/app/api/utils/auth.ts +++ b/src/app/api/utils/auth.ts @@ -25,7 +25,7 @@ import { SerializedSubscriber } from "../../../next-auth.js"; const fxaProviderConfig: OAuthConfig = { // As per https://mozilla.slack.com/archives/C4D36CAJW/p1683642497940629?thread_ts=1683642325.465929&cid=C4D36CAJW, // we should file a ticket against SVCSE with the `fxa` component to add - // a redirect URL of /api/auth/callback/fxa for Firefox Monitor, + // a redirect URL of /api/auth/callback/fxa for Mozilla Monitor, // for every environment we deploy to: id: "fxa", name: "Mozilla accounts", diff --git a/src/app/components/client/toolbar/AppPicker.tsx b/src/app/components/client/toolbar/AppPicker.tsx index 1a1b3d6b5..bda025f37 100644 --- a/src/app/components/client/toolbar/AppPicker.tsx +++ b/src/app/components/client/toolbar/AppPicker.tsx @@ -89,7 +89,7 @@ export const AppPicker = () => { /* c8 ignore next 3 */ typeof document !== "undefined" ? document.location.host - : "monitor.firefox.com"; + : "monitor.mozilla.org"; const products = getProducts(referringHost, l10n); const linkRefs: Record< keyof typeof products, diff --git a/src/app/functions/server/getExperiments.ts b/src/app/functions/server/getExperiments.ts index b30c379c5..d8ff09099 100644 --- a/src/app/functions/server/getExperiments.ts +++ b/src/app/functions/server/getExperiments.ts @@ -15,7 +15,6 @@ import { logger } from "./logging"; export async function getExperiments( userId: string | undefined, ): Promise { - let features; if (["stage", "production"].includes(process.env.APP_ENV ?? "local")) { const serverUrl = process.env.NIMBUS_SIDECAR_URL; if (!serverUrl) { @@ -23,7 +22,7 @@ export async function getExperiments( } try { - features = await fetch(`${serverUrl}/v1/features/`, { + const features = await fetch(`${serverUrl}/v1/features/`, { headers: { "Content-Type": "application/json", }, @@ -33,11 +32,11 @@ export async function getExperiments( context: { key: "example-key" }, }), }); + + return features?.json(); } catch (ex) { logger.error(`Could not connect to Cirrus on ${serverUrl}`, ex); captureException(ex); } } - - return features?.json(); } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 5b0d1e185..1cd10b97e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -24,7 +24,7 @@ const inter = Inter({ subsets: ["latin"], variable: "--font-inter" }); export function generateMetadata(): Metadata { const l10n = getL10n(); return { - title: l10n.getString("brand-fx-monitor"), + title: l10n.getString("brand-mozilla-monitor"), description: l10n.getString("meta-desc-2"), metadataBase: typeof process.env.SERVER_URL === "string" @@ -32,14 +32,14 @@ export function generateMetadata(): Metadata { : undefined, twitter: { card: "summary_large_image", - title: l10n.getString("brand-fx-monitor"), + title: l10n.getString("brand-mozilla-monitor"), description: l10n.getString("meta-desc-2"), images: ["/images/og-image.webp"], }, openGraph: { - title: l10n.getString("brand-fx-monitor"), + title: l10n.getString("brand-mozilla-monitor"), description: l10n.getString("meta-desc-2"), - siteName: l10n.getString("brand-fx-monitor"), + siteName: l10n.getString("brand-mozilla-monitor"), type: "website", url: process.env.SERVER_URL, images: ["/images/og-image.webp"], diff --git a/src/client/images/email/monitor-logo-bg-light.png b/src/client/images/email/monitor-logo-bg-light.png index fedff2dc8..81cee0a88 100644 Binary files a/src/client/images/email/monitor-logo-bg-light.png and b/src/client/images/email/monitor-logo-bg-light.png differ diff --git a/src/client/images/email/monitor-logo-transparent-dark-mode.png b/src/client/images/email/monitor-logo-transparent-dark-mode.png index e55d5652b..4c1c347af 100644 Binary files a/src/client/images/email/monitor-logo-transparent-dark-mode.png and b/src/client/images/email/monitor-logo-transparent-dark-mode.png differ diff --git a/src/client/images/email/monitor-logo-transparent.png b/src/client/images/email/monitor-logo-transparent.png index 19ea1ef80..4c9874f3d 100644 Binary files a/src/client/images/email/monitor-logo-transparent.png and b/src/client/images/email/monitor-logo-transparent.png differ diff --git a/src/client/images/monitor-logo-bg-light.webp b/src/client/images/monitor-logo-bg-light.webp index 1c6c305ed..c085d3a8b 100644 Binary files a/src/client/images/monitor-logo-bg-light.webp and b/src/client/images/monitor-logo-bg-light.webp differ diff --git a/src/client/images/monitor-logo-transparent-dark-mode.webp b/src/client/images/monitor-logo-transparent-dark-mode.webp index 0b9174767..a6b9b5cdd 100644 Binary files a/src/client/images/monitor-logo-transparent-dark-mode.webp and b/src/client/images/monitor-logo-transparent-dark-mode.webp differ diff --git a/src/client/images/monitor-logo-transparent.webp b/src/client/images/monitor-logo-transparent.webp index 83e5397a0..96860c00b 100644 Binary files a/src/client/images/monitor-logo-transparent.webp and b/src/client/images/monitor-logo-transparent.webp differ diff --git a/src/client/images/monitor-logo-transparent@2x.webp b/src/client/images/monitor-logo-transparent@2x.webp index d6930b7c2..713f3fe45 100644 Binary files a/src/client/images/monitor-logo-transparent@2x.webp and b/src/client/images/monitor-logo-transparent@2x.webp differ diff --git a/src/e2e/pages/dashBoardPage.ts b/src/e2e/pages/dashBoardPage.ts index 21930b5fb..e25d20d29 100644 --- a/src/e2e/pages/dashBoardPage.ts +++ b/src/e2e/pages/dashBoardPage.ts @@ -49,7 +49,7 @@ export class DashboardPage { name: "Mozilla apps and services", }); this.upgradeToPremium = page.getByRole("button", { - name: "Upgrade To Premium", + name: "Subscribe to Monitor Plus", }); //sidebar nav diff --git a/src/e2e/pages/dataBreachPage.ts b/src/e2e/pages/dataBreachPage.ts index ebaa1e952..1c22034bc 100644 --- a/src/e2e/pages/dataBreachPage.ts +++ b/src/e2e/pages/dataBreachPage.ts @@ -33,7 +33,7 @@ export class DataBreachPage { // navbar this.dataBreachesNavbar = page.locator(".header-wrapper"); - this.dataBreachesLogo = page.getByAltText("Firefox Monitor"); + this.dataBreachesLogo = page.getByAltText("Mozilla Monitor"); this.dataBreachesLogoLink = page.locator(".header-wrapper a"); this.dataBreachesNavbarProfile = page.locator(".user-menu-button"); this.dataBreachesNavbarProfileButton = page.locator(".nav-toggle"); diff --git a/src/utils/recommendations.js b/src/utils/recommendations.js index 9c9d2f6cb..5e89dd533 100644 --- a/src/utils/recommendations.js +++ b/src/utils/recommendations.js @@ -83,7 +83,7 @@ export function getAllPriorityDataClasses (isUserBrowserFirefox = false, isUserL { recommendationCopy: { subhead: 'rec-pw-2-subhead', - // Comment this CTA back in once monitor.firefox.com + // Comment this CTA back in once monitor.mozilla.org // has been added to the allowlist and is able to open about:logins // https://searchfox.org/mozilla-central/source/browser/app/permissions // cta: isUserBrowserFirefox ? "rec-pw-2-cta-fx" : "", diff --git a/src/views/emails/email2022.js b/src/views/emails/email2022.js index 6715cab92..171f00c28 100644 --- a/src/views/emails/email2022.js +++ b/src/views/emails/email2022.js @@ -321,7 +321,7 @@ const getTemplate = (data, partial, l10n) => { - ${getMessage('brand-fx-monitor')} + ${getMessage('brand-mozilla-monitor')} ${getStyles()} diff --git a/src/views/guestLayout.js b/src/views/guestLayout.js index a80001d7a..a494fc342 100644 --- a/src/views/guestLayout.js +++ b/src/views/guestLayout.js @@ -10,8 +10,8 @@ import { getFloatingBanner } from '../views/partials/floatingBanner.js' * @type {ViewPartial>} */ const guestLayout = data => { - const siteTitle = data.meta?.title ?? getMessage('brand-fx-monitor') - const metaTitle = data.meta?.socialTitle ?? getMessage('brand-fx-monitor') + const siteTitle = data.meta?.title ?? getMessage('brand-mozilla-monitor') + const metaTitle = data.meta?.socialTitle ?? getMessage('brand-mozilla-monitor') const metaDescription = data.meta?.socialDescription ?? getMessage('meta-desc-2') const pageUrl = `${AppConstants.SERVER_URL}${data.pathname ?? '/'}` @@ -31,7 +31,7 @@ const guestLayout = data => { - + @@ -64,7 +64,7 @@ const guestLayout = data => {
- +
  • ${getMessage('sign-in')}
  • diff --git a/src/views/mainLayout.js b/src/views/mainLayout.js index 127664bf8..addfb9a7f 100644 --- a/src/views/mainLayout.js +++ b/src/views/mainLayout.js @@ -10,8 +10,8 @@ import { getFloatingBanner } from '../views/partials/floatingBanner.js' * @type {ViewPartial>} */ const mainLayout = data => { - const siteTitle = data.meta?.title ?? getMessage('brand-fx-monitor') - const metaTitle = data.meta?.socialTitle ?? getMessage('brand-fx-monitor') + const siteTitle = data.meta?.title ?? getMessage('brand-mozilla-monitor') + const metaTitle = data.meta?.socialTitle ?? getMessage('brand-mozilla-monitor') const metaDescription = data.meta?.socialDescription ?? getMessage('meta-desc-2') const pageUrl = `${AppConstants.SERVER_URL}${data.pathname ?? '/'}` @@ -54,7 +54,7 @@ const mainLayout = data => { - + @@ -80,7 +80,7 @@ const mainLayout = data => { ${showRecruitmentBanner()}