From 6fc9bf3bd54cd470192424724ae85331c383b917 Mon Sep 17 00:00:00 2001 From: Dominik Kapusta Date: Thu, 14 Mar 2024 08:48:04 +0100 Subject: [PATCH 01/30] Improve checking whether a nightly build is due --- .github/workflows/bump_internal_release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/bump_internal_release.yml b/.github/workflows/bump_internal_release.yml index 624ecf6fb3..8ec3932231 100644 --- a/.github/workflows/bump_internal_release.yml +++ b/.github/workflows/bump_internal_release.yml @@ -63,10 +63,10 @@ jobs: echo "skip-release=false" >> $GITHUB_OUTPUT else latest_tag="$(git describe --tags --abbrev=0)" - changed_files="$(git diff --name-only "$latest_tag".."origin/${release_branch}" | grep -v -E '.github|scripts')" + changed_files="$(git diff --name-only "$latest_tag".."origin/${release_branch}")" - if [[ ${#changed_files} == 0 ]]; then - echo "::warning::No changes to the release branch (or only scripts and workflows). Skipping automatic release." + if grep -q -v -e '.github' -e 'scripts' <<< "$changed_files"; then + echo "::warning::No changes to the release branch (or only changes to scripts and workflows). Skipping automatic release." echo "skip-release=true" >> $GITHUB_OUTPUT else echo "skip-release=false" >> $GITHUB_OUTPUT From 8b794b0698b0f00d7da9ff2e93c8df554f9f034d Mon Sep 17 00:00:00 2001 From: Dominik Kapusta Date: Thu, 14 Mar 2024 09:05:54 +0100 Subject: [PATCH 02/30] Fix nighly build check --- .github/workflows/bump_internal_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bump_internal_release.yml b/.github/workflows/bump_internal_release.yml index 8ec3932231..ba06acdcc6 100644 --- a/.github/workflows/bump_internal_release.yml +++ b/.github/workflows/bump_internal_release.yml @@ -66,10 +66,10 @@ jobs: changed_files="$(git diff --name-only "$latest_tag".."origin/${release_branch}")" if grep -q -v -e '.github' -e 'scripts' <<< "$changed_files"; then + echo "skip-release=false" >> $GITHUB_OUTPUT + else echo "::warning::No changes to the release branch (or only changes to scripts and workflows). Skipping automatic release." echo "skip-release=true" >> $GITHUB_OUTPUT - else - echo "skip-release=false" >> $GITHUB_OUTPUT fi fi From 7830b586a1073377a9748382598a65fb9cf7c7d0 Mon Sep 17 00:00:00 2001 From: Diego Rey Mendez Date: Thu, 14 Mar 2024 10:37:16 +0100 Subject: [PATCH 03/30] Renames "Network Protection" to "VPN" in all user-facing text (#2392) Task/Issue URL: https://app.asana.com/0/0/1206800069675133/f iOS: https://github.com/duckduckgo/iOS/pull/2588 BSK: https://github.com/duckduckgo/BrowserServicesKit/pull/721 ## Description Updates the copy from "Network Protection" to "VPN" or "DuckDuckGo VPN" --- .../NetworkProtectionSystemExtension.xcconfig | 2 +- Configuration/Global.xcconfig | 2 +- DuckDuckGo.xcodeproj/project.pbxproj | 30 +-- .../xcshareddata/swiftpm/Package.resolved | 6 +- DuckDuckGo/Application/URLEventHandler.swift | 2 +- .../Common/Extensions/NSAlertExtension.swift | 6 +- .../UserText+NetworkProtection.swift | 172 +++++++++--------- DuckDuckGo/Common/Logging/Logging.swift | 2 +- .../Utilities/UserDefaultsWrapper.swift | 4 +- DuckDuckGo/Info.plist | 2 +- DuckDuckGo/LoginItems/LoginItemsManager.swift | 4 +- DuckDuckGo/Menus/MainMenu.swift | 2 +- DuckDuckGo/NavigationBar/PinningManager.swift | 2 +- .../NavigationBar/View/MoreOptionsMenu.swift | 2 +- .../View/NavigationBar.storyboard | 2 +- .../View/NavigationBarPopovers.swift | 2 +- .../View/NavigationBarViewController.swift | 8 +- .../AppLauncher.swift | 5 +- .../NetworkProtectionAppEvents.swift | 8 +- .../NetworkProtectionDebugMenu.swift | 8 +- .../NetworkProtectionDebugUtilities.swift | 2 +- .../NetworkProtectionNavBarButtonModel.swift | 2 +- ...etworkProtectionNavBarPopoverManager.swift | 9 + .../NetworkProtectionOnboardingMenu.swift | 2 +- ...NetworkProtectionSimulateFailureMenu.swift | 8 +- .../NetworkProtectionTunnelController.swift | 6 +- ...tionWaitlistFeatureFlagOverridesMenu.swift | 6 +- ...NetworkProtectionIPCTunnelController.swift | 2 +- .../NetworkProtectionRemoteMessaging.swift | 6 +- ...rkProtectionUNNotificationsPresenter.swift | 1 + ...UserText+NetworkProtectionExtensions.swift | 22 +-- .../MacPacketTunnelProvider.swift | 4 - DuckDuckGo/Statistics/PixelEvent.swift | 2 +- .../NetworkProtectionFeatureDisabler.swift | 2 +- .../NetworkProtectionFeatureVisibility.swift | 6 +- .../WaitlistTermsAndConditionsView.swift | 2 +- DuckDuckGo/Waitlist/Waitlist.swift | 2 +- .../View/WindowControllersManager.swift | 2 +- DuckDuckGoNotifications/Logging.swift | 6 +- DuckDuckGoVPN/DuckDuckGoVPNAppDelegate.swift | 3 + .../NetworkExtensionController.swift | 2 +- DuckDuckGoVPN/NetworkProtectionBouncer.swift | 6 +- DuckDuckGoVPN/UserText.swift | 1 + .../DataBrokerProtection/Package.swift | 2 +- .../NetworkProtectionMac/Package.swift | 2 +- LocalPackages/NetworkProtectionMac/README.md | 6 +- .../AppLaunching/AppLaunching.swift | 39 ++++ .../UserText+NetworkProtectionUI.swift | 14 +- .../Menu/NavigationBarIconProvider.swift | 2 +- .../Menu/StatusBarMenu.swift | 2 +- .../NetworkProtectionStatusViewModel.swift | 4 +- .../TunnelControllerViewModel.swift | 6 +- .../AppLaunching/MockAppLauncher.swift | 30 +++ .../TunnelControllerViewModelTests.swift | 8 +- LocalPackages/SubscriptionUI/Package.swift | 2 +- .../DebugMenu/SubscriptionDebugMenu.swift | 2 +- 56 files changed, 291 insertions(+), 203 deletions(-) create mode 100644 LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/AppLaunching/AppLaunching.swift create mode 100644 LocalPackages/NetworkProtectionMac/Tests/NetworkProtectionUITests/AppLaunching/MockAppLauncher.swift diff --git a/Configuration/Extensions/NetworkProtection/NetworkProtectionSystemExtension.xcconfig b/Configuration/Extensions/NetworkProtection/NetworkProtectionSystemExtension.xcconfig index c6b581e569..9cc1c7ae28 100644 --- a/Configuration/Extensions/NetworkProtection/NetworkProtectionSystemExtension.xcconfig +++ b/Configuration/Extensions/NetworkProtection/NetworkProtectionSystemExtension.xcconfig @@ -29,7 +29,7 @@ CODE_SIGN_IDENTITY[config=Debug][sdk=macosx*] = Apple Development GENERATE_INFOPLIST_FILE = YES INFOPLIST_FILE = NetworkProtectionSystemExtension/Info.plist INFOPLIST_KEY_NSHumanReadableCopyright = Copyright © 2023 DuckDuckGo. All rights reserved. -INFOPLIST_KEY_NSSystemExtensionUsageDescription = Network Protection +INFOPLIST_KEY_NSSystemExtensionUsageDescription = DuckDuckGo VPN FEATURE_FLAGS[arch=*][sdk=*] = NETP_SYSTEM_EXTENSION NETWORK_EXTENSION NETWORK_PROTECTION FEATURE_FLAGS[config=CI][arch=*][sdk=*] = NETP_SYSTEM_EXTENSION NETWORK_EXTENSION NETWORK_PROTECTION diff --git a/Configuration/Global.xcconfig b/Configuration/Global.xcconfig index 39c875ee65..37ab4747ad 100644 --- a/Configuration/Global.xcconfig +++ b/Configuration/Global.xcconfig @@ -91,7 +91,7 @@ SWIFT_COMPILATION_MODE = wholemodule SWIFT_COMPILATION_MODE[config=CI][arch=*][sdk=*] = SWIFT_COMPILATION_MODE[config=Debug][arch=*][sdk=*] = -// This is temporarily set back to its default value, as a part of merging Network Protection. There are a small number of warnings introduced in +// This is temporarily set back to its default value, as a part of merging the VPN. There are a small number of warnings introduced in // that feature, and more time is needed to address them. To avoid bothering other developers, this is being disabled and a task to fix it will be // prioritized. SWIFT_STRICT_CONCURRENCY = minimal; diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index ebc0323dd8..1ebb57cfa5 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -2177,6 +2177,8 @@ 7B1E819E27C8874900FF0E60 /* ContentOverlayPopover.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B1E819B27C8874900FF0E60 /* ContentOverlayPopover.swift */; }; 7B1E819F27C8874900FF0E60 /* ContentOverlay.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7B1E819C27C8874900FF0E60 /* ContentOverlay.storyboard */; }; 7B1E81A027C8874900FF0E60 /* ContentOverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B1E819D27C8874900FF0E60 /* ContentOverlayViewController.swift */; }; + 7B25856C2BA2F2D000D49F79 /* AppLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAD7A6E2A1D3E1F002A24E7 /* AppLauncher.swift */; }; + 7B25856E2BA2F2ED00D49F79 /* NetworkProtectionUI in Frameworks */ = {isa = PBXBuildFile; productRef = 7B25856D2BA2F2ED00D49F79 /* NetworkProtectionUI */; }; 7B2DDCF82A93A8BB0039D884 /* NetworkProtectionAppEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B2DDCF72A93A8BB0039D884 /* NetworkProtectionAppEvents.swift */; }; 7B2DDCFA2A93B25F0039D884 /* KeychainType+ClientDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BD3AF5C2A8E7AF1006F9F56 /* KeychainType+ClientDefault.swift */; }; 7B2DDCFB2A93B25F0039D884 /* KeychainType+ClientDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BD3AF5C2A8E7AF1006F9F56 /* KeychainType+ClientDefault.swift */; }; @@ -2190,6 +2192,7 @@ 7B4CE8E726F02135009134B1 /* TabBarTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B4CE8E626F02134009134B1 /* TabBarTests.swift */; }; 7B5DD69A2AE51FFA001DE99C /* PixelKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7B5DD6992AE51FFA001DE99C /* PixelKit */; }; 7B5F9A752AE2BE4E002AEBC0 /* PixelKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7B5F9A742AE2BE4E002AEBC0 /* PixelKit */; }; + 7B624F172BA25C1F00A6C544 /* NetworkProtectionUI in Frameworks */ = {isa = PBXBuildFile; productRef = 7B624F162BA25C1F00A6C544 /* NetworkProtectionUI */; }; 7B7DFB202B7E736B009EA1A3 /* MacPacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEF12E6D2A2111880023E6BF /* MacPacketTunnelProvider.swift */; }; 7B7DFB222B7E7473009EA1A3 /* Networking in Frameworks */ = {isa = PBXBuildFile; productRef = 7B7DFB212B7E7473009EA1A3 /* Networking */; }; 7B8C083C2AE1268E00F4C67F /* PixelKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7B8C083B2AE1268E00F4C67F /* PixelKit */; }; @@ -3112,13 +3115,10 @@ EE7295E32A545B9A008C0991 /* NetworkProtection in Frameworks */ = {isa = PBXBuildFile; productRef = EE7295E22A545B9A008C0991 /* NetworkProtection */; }; EE7295E72A545BBB008C0991 /* NetworkProtection in Frameworks */ = {isa = PBXBuildFile; productRef = EE7295E62A545BBB008C0991 /* NetworkProtection */; }; EE7295E92A545BC4008C0991 /* NetworkProtection in Frameworks */ = {isa = PBXBuildFile; productRef = EE7295E82A545BC4008C0991 /* NetworkProtection */; }; - EE7295EB2A545BFC008C0991 /* NetworkProtection in Frameworks */ = {isa = PBXBuildFile; productRef = EE7295EA2A545BFC008C0991 /* NetworkProtection */; }; EE7295ED2A545C0A008C0991 /* NetworkProtection in Frameworks */ = {isa = PBXBuildFile; productRef = EE7295EC2A545C0A008C0991 /* NetworkProtection */; }; EE7295EF2A545C12008C0991 /* NetworkProtection in Frameworks */ = {isa = PBXBuildFile; productRef = EE7295EE2A545C12008C0991 /* NetworkProtection */; }; EEA3EEB12B24EBD000E8333A /* NetworkProtectionVPNCountryLabelsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEA3EEB02B24EBD000E8333A /* NetworkProtectionVPNCountryLabelsModel.swift */; }; EEA3EEB32B24EC0600E8333A /* VPNLocationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEA3EEB22B24EC0600E8333A /* VPNLocationViewModel.swift */; }; - EEAD7A7A2A1D3E20002A24E7 /* AppLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAD7A6E2A1D3E1F002A24E7 /* AppLauncher.swift */; }; - EEAD7A7B2A1D3E20002A24E7 /* AppLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAD7A6E2A1D3E1F002A24E7 /* AppLauncher.swift */; }; EEAD7A7C2A1D3E20002A24E7 /* AppLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAD7A6E2A1D3E1F002A24E7 /* AppLauncher.swift */; }; EEC111E4294D06020086524F /* JSAlert.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EEC111E3294D06020086524F /* JSAlert.storyboard */; }; EEC111E6294D06290086524F /* JSAlertViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEC111E5294D06290086524F /* JSAlertViewModel.swift */; }; @@ -4618,7 +4618,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EE7295EB2A545BFC008C0991 /* NetworkProtection in Frameworks */, + 7B624F172BA25C1F00A6C544 /* NetworkProtectionUI in Frameworks */, 37269F052B3332C2005E8E46 /* Common in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -4631,6 +4631,7 @@ EE7295E72A545BBB008C0991 /* NetworkProtection in Frameworks */, 4B4D60982A0B2A5C00BCD287 /* PixelKit in Frameworks */, 4B4D60AF2A0C837F00BCD287 /* Networking in Frameworks */, + 7B25856E2BA2F2ED00D49F79 /* NetworkProtectionUI in Frameworks */, 4B4D603F2A0B290200BCD287 /* NetworkExtension.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -8632,8 +8633,8 @@ ); name = DuckDuckGoNotifications; packageProductDependencies = ( - EE7295EA2A545BFC008C0991 /* NetworkProtection */, 37269F042B3332C2005E8E46 /* Common */, + 7B624F162BA25C1F00A6C544 /* NetworkProtectionUI */, ); productName = DuckDuckGoNotifications; productReference = 4B4BEC202A11B4E2001D9AC5 /* DuckDuckGo Notifications.app */; @@ -8659,6 +8660,7 @@ 4B4D60AE2A0C837F00BCD287 /* Networking */, EE7295E62A545BBB008C0991 /* NetworkProtection */, 37269EFE2B332FBB005E8E46 /* Common */, + 7B25856D2BA2F2ED00D49F79 /* NetworkProtectionUI */, ); productName = NetworkProtectionAppExtension; productReference = 4B4D603D2A0B290200BCD287 /* NetworkProtectionAppExtension.appex */; @@ -10770,7 +10772,6 @@ 4B2D062D2A11C12300DE1F49 /* Logging.swift in Sources */, 7B2E52252A5FEC09000C6D39 /* NetworkProtectionAgentNotificationsPresenter.swift in Sources */, B602E8232A1E260E006D261F /* Bundle+NetworkProtectionExtensions.swift in Sources */, - EEAD7A7B2A1D3E20002A24E7 /* AppLauncher.swift in Sources */, 4B2D062A2A11C0C900DE1F49 /* NetworkProtectionOptionKeyExtension.swift in Sources */, B602E8192A1E2570006D261F /* URL+NetworkProtection.swift in Sources */, 4B2D06322A11C1D300DE1F49 /* NSApplicationExtension.swift in Sources */, @@ -10874,6 +10875,7 @@ buildActionMask = 2147483647; files = ( 4B41EDA02B15437A001EEDF4 /* NetworkProtectionNotificationsPresenterFactory.swift in Sources */, + 7B25856C2BA2F2D000D49F79 /* AppLauncher.swift in Sources */, 4B4D609F2A0B2C7300BCD287 /* Logging.swift in Sources */, 7B7DFB202B7E736B009EA1A3 /* MacPacketTunnelProvider.swift in Sources */, 4B4D60A12A0B2D6100BCD287 /* NetworkProtectionOptionKeyExtension.swift in Sources */, @@ -10886,7 +10888,6 @@ 4BF0E50C2AD2552300FFEC9E /* NetworkProtectionPixelEvent.swift in Sources */, 4B4D60AC2A0C804B00BCD287 /* OptionalExtension.swift in Sources */, B65DA5F22A77D3C600CBEE8D /* UserDefaultsWrapper.swift in Sources */, - EEAD7A7A2A1D3E20002A24E7 /* AppLauncher.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -13704,7 +13705,7 @@ repositoryURL = "https://github.com/duckduckgo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 122.2.0; + version = 122.2.1; }; }; AA06B6B52672AF8100F541C5 /* XCRemoteSwiftPackageReference "Sparkle" */ = { @@ -14130,6 +14131,10 @@ isa = XCSwiftPackageProductDependency; productName = NetworkProtectionProxy; }; + 7B25856D2BA2F2ED00D49F79 /* NetworkProtectionUI */ = { + isa = XCSwiftPackageProductDependency; + productName = NetworkProtectionUI; + }; 7B31FD8B2AD125620086AA24 /* NetworkProtectionIPC */ = { isa = XCSwiftPackageProductDependency; productName = NetworkProtectionIPC; @@ -14146,6 +14151,10 @@ isa = XCSwiftPackageProductDependency; productName = PixelKit; }; + 7B624F162BA25C1F00A6C544 /* NetworkProtectionUI */ = { + isa = XCSwiftPackageProductDependency; + productName = NetworkProtectionUI; + }; 7B7DFB212B7E7473009EA1A3 /* Networking */ = { isa = XCSwiftPackageProductDependency; package = 9807F643278CA16F00E1547B /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; @@ -14396,11 +14405,6 @@ package = 9807F643278CA16F00E1547B /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; productName = NetworkProtection; }; - EE7295EA2A545BFC008C0991 /* NetworkProtection */ = { - isa = XCSwiftPackageProductDependency; - package = 9807F643278CA16F00E1547B /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; - productName = NetworkProtection; - }; EE7295EC2A545C0A008C0991 /* NetworkProtection */ = { isa = XCSwiftPackageProductDependency; package = 9807F643278CA16F00E1547B /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 9111ff4055..ff344fde70 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/duckduckgo/BrowserServicesKit", "state" : { - "revision" : "4e05a46f0a9ce56f6d6379b79a92dc7a0182e027", - "version" : "122.2.0" + "revision" : "1295a22823157c9b7d11793299cd58b189e87629", + "version" : "122.2.1" } }, { @@ -165,7 +165,7 @@ { "identity" : "trackerradarkit", "kind" : "remoteSourceControl", - "location" : "https://github.com/duckduckgo/TrackerRadarKit.git", + "location" : "https://github.com/duckduckgo/TrackerRadarKit", "state" : { "revision" : "a6b7ba151d9dc6684484f3785293875ec01cc1ff", "version" : "1.2.2" diff --git a/DuckDuckGo/Application/URLEventHandler.swift b/DuckDuckGo/Application/URLEventHandler.swift index 3af3ef418f..d73a1ea414 100644 --- a/DuckDuckGo/Application/URLEventHandler.swift +++ b/DuckDuckGo/Application/URLEventHandler.swift @@ -21,7 +21,7 @@ import Foundation import AppKit #if NETWORK_PROTECTION -import NetworkProtection +import NetworkProtectionUI #endif #if DBP diff --git a/DuckDuckGo/Common/Extensions/NSAlertExtension.swift b/DuckDuckGo/Common/Extensions/NSAlertExtension.swift index 8aa901b548..feafa950f9 100644 --- a/DuckDuckGo/Common/Extensions/NSAlertExtension.swift +++ b/DuckDuckGo/Common/Extensions/NSAlertExtension.swift @@ -88,11 +88,11 @@ extension NSAlert { static func resetNetworkProtectionAlert() -> NSAlert { let alert = NSAlert() - alert.messageText = "Reset Network Protection?" + alert.messageText = "Reset VPN?" alert.informativeText = """ This will remove your stored network configuration (including private key) and disable the VPN. - You can re-enable the VPN from the Network Protection view. + You can re-enable the VPN from the status view. """ alert.alertStyle = .warning alert.addButton(withTitle: "Reset") @@ -108,7 +108,7 @@ extension NSAlert { let sysExText = "" #endif alert.messageText = "Uninstall \(sysExText)Login Items?" - alert.informativeText = "This will remove the Network Protection \(sysExText)Status Menu icon and disable the VPN." + alert.informativeText = "This will remove the VPN \(sysExText)Status Menu icon and disable the VPN." alert.alertStyle = .warning alert.addButton(withTitle: "Uninstall") alert.addButton(withTitle: UserText.cancel) diff --git a/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift index 8653bba9e2..b77431c7ef 100644 --- a/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift +++ b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift @@ -21,37 +21,39 @@ import Foundation extension UserText { // "network.protection.tunnel.name" - The name of the NetP VPN that will be visible in the system to the user - static let networkProtectionTunnelName = "DuckDuckGo Network Protection" - // "network.protection" - Menu item for opening Network Protection - static let networkProtection = "Network Protection" + static let networkProtectionTunnelName = "DuckDuckGo VPN" + // "network.protection" - Menu item for opening the VPN + static let networkProtection = "VPN" // MARK: - Navigation Bar // "network.protection.status.button.tooltip" - The tooltip for NetP's nav bar button - static let networkProtectionButtonTooltip = "Network Protection" + static let networkProtectionButtonTooltip = "VPN" // MARK: - Invite Code - // "network.protection.invite.dialog.title" - Title for the network protection invite dialog + // "network.protection.invite.dialog.title" - Title for the VPN invite dialog static let networkProtectionInviteDialogTitle = "Enter your invite code" - // "network.protection.invite.dialog.message" - Message for the network protection invite dialog + // "network.protection.invite.dialog.message" - Message for the VPN invite dialog static let networkProtectionInviteDialogMessage = "Enter your invite code to get started." - // "network.protection.invite.field.prompt" - Prompt for the network protection invite code text field + // "network.protection.invite.field.prompt" - Prompt for the VPN invite code text field static let networkProtectionInviteFieldPrompt = "Code" - // "network.protection.invite.success.title" - Title for the network protection invite success view + // "network.protection.invite.success.title" - Title for the VPN invite success view static let networkProtectionInviteSuccessTitle = "Success! You’re in." - // "network.protection.invite.success.title" - Message for the network protection invite success view + // "network.protection.invite.success.title" - Message for the VPN invite success view static let networkProtectionInviteSuccessMessage = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere." // MARK: - Navigation Bar Status View - // "network.protection.navbar.status.view.share.feedback" - Menu item for 'Send VPN Feedback' in the Network Protection status view that's shown in the navigation bar + // "network.protection.navbar.status.view.share.feedback" - Menu item for 'Send VPN Feedback' in the VPN status view that's shown in the navigation bar static let networkProtectionNavBarStatusViewShareFeedback = "Send VPN Feedback…" // "network.protection.status.menu.vpn.settings" - The status menu 'VPN Settings' menu item static let networkProtectionNavBarStatusMenuVPNSettings = "VPN Settings…" + // "network.protection.status.menu.faq" - The status menu 'FAQ' menu item + static let networkProtectionNavBarStatusMenuFAQ = "Frequently Asked Questions…" // MARK: - System Extension Installation Messages - // "network.protection.configuration.system-settings.legacy" - Text for a label in the Network Protection popover, displayed after attempting to enable Network Protection for the first time while using macOS 12 and below - private static let networkProtectionSystemSettingsLegacy = "Go to Security & Privacy in System Preferences to allow Network Protection to activate" - // "network.protection.configuration.system-settings.modern" - Text for a label in the Network Protection popover, displayed after attempting to enable Network Protection for the first time while using macOS 13 and above - private static let networkProtectionSystemSettingsModern = "Go to Privacy & Security in System Settings to allow Network Protection to activate" + // "network.protection.configuration.system-settings.legacy" - Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 12 and below + private static let networkProtectionSystemSettingsLegacy = "Go to Security & Privacy in System Preferences to allow DuckDuckGo VPN to activate" + // "network.protection.configuration.system-settings.modern" - Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 13 and above + private static let networkProtectionSystemSettingsModern = "Go to Privacy & Security in System Settings to allow DuckDuckGo VPN to activate" // Dynamically selected based on macOS version, not directly convertible to static string static var networkProtectionSystemSettings: String { @@ -65,161 +67,161 @@ extension UserText { // "network.protection.system.extension.unknown.activation.error" - Message shown to users when they try to enable NetP and there is an unexpected activation error. static let networkProtectionUnknownActivationError = "There as an unexpected error. Please try again." // "network.protection.system.extension.please.reboot" - Message shown to users when they try to enable NetP and they need to reboot the computer to complete the installation - static let networkProtectionPleaseReboot = "Please reboot to activate Network Protection" + static let networkProtectionPleaseReboot = "Please reboot to activate the VPN" } -// MARK: - Network Protection Waitlist +// MARK: - VPN Waitlist extension UserText { - // "network-protection.waitlist.notification.title" - Title for Network Protection waitlist notification - static let networkProtectionWaitlistNotificationTitle = "Network Protection beta is ready!" - // "network-protection.waitlist.notification.text" - Title for Network Protection waitlist notification + // "network-protection.waitlist.notification.title" - Title for VPN waitlist notification + static let networkProtectionWaitlistNotificationTitle = "DuckDuckGo VPN beta is ready!" + // "network-protection.waitlist.notification.text" - Title for VPN waitlist notification static let networkProtectionWaitlistNotificationText = "Open your invite" - // "network-protection.waitlist.join.title" - Title for Network Protection join waitlist screen - static let networkProtectionWaitlistJoinTitle = "Network Protection Beta" - // "network-protection.waitlist.join.subtitle.1" - First subtitle for Network Protection join waitlist screen - static let networkProtectionWaitlistJoinSubtitle1 = "Secure your connection anytime, anywhere with Network Protection, the VPN from DuckDuckGo." - // "network-protection.waitlist.join.subtitle.2" - Second subtitle for Network Protection join waitlist screen + // "network-protection.waitlist.join.title" - Title for VPN join waitlist screen + static let networkProtectionWaitlistJoinTitle = "DuckDuckGo VPN Beta" + // "network-protection.waitlist.join.subtitle.1" - First subtitle for VPN join waitlist screen + static let networkProtectionWaitlistJoinSubtitle1 = "Secure your connection anytime, anywhere with DuckDuckGo VPN." + // "network-protection.waitlist.join.subtitle.2" - Second subtitle for VPN join waitlist screen static let networkProtectionWaitlistJoinSubtitle2 = "Join the waitlist, and we’ll notify you when it’s your turn." - // "network-protection.waitlist.joined.title" - Title for Network Protection joined waitlist screen + // "network-protection.waitlist.joined.title" - Title for VPN joined waitlist screen static let networkProtectionWaitlistJoinedTitle = "You’re on the list!" - // "network-protection.waitlist.joined.with-notifications.subtitle.1" - Subtitle 1 for Network Protection joined waitlist screen when notifications are enabled + // "network-protection.waitlist.joined.with-notifications.subtitle.1" - Subtitle 1 for VPN joined waitlist screen when notifications are enabled static let networkProtectionWaitlistJoinedWithNotificationsSubtitle1 = "New invites are sent every few days, on a first come, first served basis." - // "network-protection.waitlist.joined.with-notifications.subtitle.2" - Subtitle 2 for Network Protection joined waitlist screen when notifications are enabled + // "network-protection.waitlist.joined.with-notifications.subtitle.2" - Subtitle 2 for VPN joined waitlist screen when notifications are enabled static let networkProtectionWaitlistJoinedWithNotificationsSubtitle2 = "We’ll notify you when your invite is ready." - // "network-protection.waitlist.enable-notifications" - Enable notifications prompt for Network Protection joined waitlist screen - static let networkProtectionWaitlistEnableNotifications = "Want to get a notification when your Network Protection invite is ready?" + // "network-protection.waitlist.enable-notifications" - Enable notifications prompt for VPN joined waitlist screen + static let networkProtectionWaitlistEnableNotifications = "Want to get a notification when your VPN invite is ready?" - // "network-protection.waitlist.invited.title" - Title for Network Protection invited screen - static let networkProtectionWaitlistInvitedTitle = "You’re invited to try\nNetwork Protection beta!" - // "network-protection.waitlist.invited.subtitle" - Subtitle for Network Protection invited screen + // "network-protection.waitlist.invited.title" - Title for VPN invited screen + static let networkProtectionWaitlistInvitedTitle = "You’re invited to try\nDuckDuckGo VPN beta!" + // "network-protection.waitlist.invited.subtitle" - Subtitle for VPN invited screen static let networkProtectionWaitlistInvitedSubtitle = "Get an extra layer of protection online with the VPN built for speed and simplicity. Encrypt your internet connection across your entire device and hide your location and IP address from sites you visit." - // "network-protection.waitlist.invited.section-1.title" - Title for section 1 of the Network Protection invited screen + // "network-protection.waitlist.invited.section-1.title" - Title for section 1 of the VPN invited screen static let networkProtectionWaitlistInvitedSection1Title = "Full-device coverage" - // "network-protection.waitlist.invited.section-1.subtitle" - Subtitle for section 1 of the Network Protection invited screen + // "network-protection.waitlist.invited.section-1.subtitle" - Subtitle for section 1 of the VPN invited screen static let networkProtectionWaitlistInvitedSection1Subtitle = "Encrypt online traffic across your browsers and apps." - // "network-protection.waitlist.invited.section-2.title" - Title for section 2 of the Network Protection invited screen + // "network-protection.waitlist.invited.section-2.title" - Title for section 2 of the VPN invited screen static let networkProtectionWaitlistInvitedSection2Title = "Fast, reliable, and easy to use" - // "network-protection.waitlist.invited.section-2.subtitle" - Subtitle for section 2 of the Network Protection invited screen + // "network-protection.waitlist.invited.section-2.subtitle" - Subtitle for section 2 of the VPN invited screen static let networkProtectionWaitlistInvitedSection2Subtitle = "No need for a separate app. Connect in one click and see your connection status at a glance." - // "network-protection.waitlist.invited.section-3.title" - Title for section 3 of the Network Protection invited screen + // "network-protection.waitlist.invited.section-3.title" - Title for section 3 of the VPN invited screen static let networkProtectionWaitlistInvitedSection3Title = "Strict no-logging policy" - // "network-protection.waitlist.invited.section-3.subtitle" - Subtitle for section 3 of the Network Protection invited screen + // "network-protection.waitlist.invited.section-3.subtitle" - Subtitle for section 3 of the VPN invited screen static let networkProtectionWaitlistInvitedSection3Subtitle = "We do not log or save any data that can connect you to your online activity." - // "network-protection.waitlist.enable.title" - Title for Network Protection enable screen - static let networkProtectionWaitlistEnableTitle = "Ready to enable Network Protection?" - // "network-protection.waitlist.enable.subtitle" - Subtitle for Network Protection enable screen - static let networkProtectionWaitlistEnableSubtitle = "Look for the globe icon in the browser toolbar or in the Mac menu bar.\n\nYou'll be asked to Allow a VPN connection once when setting up Network Protection the first time." + // "network-protection.waitlist.enable.title" - Title for VPN enable screen + static let networkProtectionWaitlistEnableTitle = "Ready to enable DuckDuckGo VPN?" + // "network-protection.waitlist.enable.subtitle" - Subtitle for VPN enable screen + static let networkProtectionWaitlistEnableSubtitle = "Look for the globe icon in the browser toolbar or in the Mac menu bar.\n\nYou'll be asked to Allow a VPN connection once when setting up DuckDuckGo VPN the first time." - // "network-protection.waitlist.availability-disclaimer" - Availability disclaimer for Network Protection join waitlist screen - static let networkProtectionWaitlistAvailabilityDisclaimer = "Network Protection is free to use during the beta." + // "network-protection.waitlist.availability-disclaimer" - Availability disclaimer for VPN join waitlist screen + static let networkProtectionWaitlistAvailabilityDisclaimer = "DuckDuckGo VPN is free to use during the beta." - // "network-protection.waitlist.button.close" - Close button for Network Protection join waitlist screen + // "network-protection.waitlist.button.close" - Close button for VPN join waitlist screen static let networkProtectionWaitlistButtonClose = "Close" - // "network-protection.waitlist.button.done" - Close button for Network Protection joined waitlist screen + // "network-protection.waitlist.button.done" - Close button for VPN joined waitlist screen static let networkProtectionWaitlistButtonDone = "Done" - // "network-protection.waitlist.button.dismiss" - Dismiss button for Network Protection join waitlist screen + // "network-protection.waitlist.button.dismiss" - Dismiss button for VPN join waitlist screen static let networkProtectionWaitlistButtonDismiss = "Dismiss" - // "network-protection.waitlist.button.cancel" - Cancel button for Network Protection join waitlist screen + // "network-protection.waitlist.button.cancel" - Cancel button for VPN join waitlist screen static let networkProtectionWaitlistButtonCancel = "Cancel" - // "network-protection.waitlist.button.no-thanks" - No Thanks button for Network Protection joined waitlist screen + // "network-protection.waitlist.button.no-thanks" - No Thanks button for VPN joined waitlist screen static let networkProtectionWaitlistButtonNoThanks = "No Thanks" - // "network-protection.waitlist.button.get-started" - Get Started button for Network Protection joined waitlist screen + // "network-protection.waitlist.button.get-started" - Get Started button for VPN joined waitlist screen static let networkProtectionWaitlistButtonGetStarted = "Get Started" - // "network-protection.waitlist.button.got-it" - Got It button for Network Protection joined waitlist screen + // "network-protection.waitlist.button.got-it" - Got It button for VPN joined waitlist screen static let networkProtectionWaitlistButtonGotIt = "Got It" - // "network-protection.waitlist.button.enable-notifications" - Enable Notifications button for Network Protection joined waitlist screen + // "network-protection.waitlist.button.enable-notifications" - Enable Notifications button for VPN joined waitlist screen static let networkProtectionWaitlistButtonEnableNotifications = "Enable Notifications" - // "network-protection.waitlist.button.join-waitlist" - Join Waitlist button for Network Protection join waitlist screen + // "network-protection.waitlist.button.join-waitlist" - Join Waitlist button for VPN join waitlist screen static let networkProtectionWaitlistButtonJoinWaitlist = "Join the Waitlist" - // "network-protection.waitlist.button.agree-and-continue" - Agree and Continue button for Network Protection join waitlist screen + // "network-protection.waitlist.button.agree-and-continue" - Agree and Continue button for VPN join waitlist screen static let networkProtectionWaitlistButtonAgreeAndContinue = "Agree and Continue" } -// MARK: - Network Protection Terms of Service +// MARK: - VPN Terms of Service extension UserText { - // "network-protection.privacy-policy.title" - Privacy Policy title for Network Protection + // "network-protection.privacy-policy.title" - Privacy Policy title for VPN static let networkProtectionPrivacyPolicyTitle = "Privacy Policy" - // "network-protection.privacy-policy.section.1.title" - Privacy Policy title for Network Protection + // "network-protection.privacy-policy.section.1.title" - Privacy Policy title for VPN static let networkProtectionPrivacyPolicySection1Title = "We don’t ask for any personal information from you in order to use this beta service." - // "network-protection.privacy-policy.section.1.list" - Privacy Policy list for Network Protection (Markdown version) + // "network-protection.privacy-policy.section.1.list" - Privacy Policy list for VPN (Markdown version) static let networkProtectionPrivacyPolicySection1ListMarkdown = "This Privacy Policy is for our limited waitlist beta VPN product.\n\nOur main [Privacy Policy](https://duckduckgo.com/privacy) also applies here." - // "network-protection.privacy-policy.section.1.list" - Privacy Policy list for Network Protection (Non-Markdown version) + // "network-protection.privacy-policy.section.1.list" - Privacy Policy list for VPN (Non-Markdown version) static let networkProtectionPrivacyPolicySection1ListNonMarkdown = "This Privacy Policy is for our limited waitlist beta VPN product.\n\nOur main Privacy Policy also applies here." - // "network-protection.privacy-policy.section.2.title" - Privacy Policy title for Network Protection + // "network-protection.privacy-policy.section.2.title" - Privacy Policy title for VPN static let networkProtectionPrivacyPolicySection2Title = "We don’t keep any logs of your online activity." - // "network-protection.privacy-policy.section.2.list" - Privacy Policy list for Network Protection + // "network-protection.privacy-policy.section.2.list" - Privacy Policy list for VPN static let networkProtectionPrivacyPolicySection2List = "That means we have no way to tie what you do online to you as an individual and we don’t have any record of things like:\n • Website visits\n • DNS requests\n • Connections made\n • IP addresses used\n • Session lengths" - // "network-protection.privacy-policy.section.3.title" - Privacy Policy title for Network Protection + // "network-protection.privacy-policy.section.3.title" - Privacy Policy title for VPN static let networkProtectionPrivacyPolicySection3Title = "We only keep anonymous performance metrics that we cannot connect to your online activity." - // "network-protection.privacy-policy.section.3.list" - Privacy Policy list for Network Protection + // "network-protection.privacy-policy.section.3.list" - Privacy Policy list for VPN static let networkProtectionPrivacyPolicySection3List = "Our servers store generic usage (for example, CPU load) and diagnostic data (for example, errors), but none of that data is connected to any individual’s activity.\n\nWe use this non-identifying information to monitor and ensure the performance and quality of the service, for example to make sure servers aren’t overloaded." - // "network-protection.privacy-policy.section.4.title" - Privacy Policy title for Network Protection + // "network-protection.privacy-policy.section.4.title" - Privacy Policy title for VPN static let networkProtectionPrivacyPolicySection4Title = "We use dedicated servers for all VPN traffic." - // "network-protection.privacy-policy.section.4.list" - Privacy Policy list for Network Protection + // "network-protection.privacy-policy.section.4.list" - Privacy Policy list for VPN static let networkProtectionPrivacyPolicySection4List = "Dedicated servers means they are not shared with anyone else.\n\nWe rent our servers from providers we carefully selected because they meet our privacy requirements.\n\nWe have strict access controls in place so that only limited DuckDuckGo team members have access to our servers." - // "network-protection.privacy-policy.section.5.title" - Privacy Policy title for Network Protection + // "network-protection.privacy-policy.section.5.title" - Privacy Policy title for VPN static let networkProtectionPrivacyPolicySection5Title = "We protect and limit use of your data when you communicate directly with DuckDuckGo." - // "network-protection.privacy-policy.section.5.list" - Privacy Policy list for Network Protection + // "network-protection.privacy-policy.section.5.list" - Privacy Policy list for VPN static let networkProtectionPrivacyPolicySection5List = "If you reach out to us for support by submitting a bug report or through email and agree to be contacted to troubleshoot the issue, we’ll contact you using the information you provide.\n\nIf you participate in a voluntary product survey or questionnaire and agree to provide further feedback, we may contact you using the information you provide.\n\nWe will permanently delete all personal information you provided to us (email, contact information), within 30 days after closing a support case or, in the case of follow up feedback, within 60 days after ending this beta service." - // "network-protection.terms-of-service.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceTitle = "Terms of Service" - // "network-protection.terms-of-service.section.1.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.1.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection1Title = "The service is for limited and personal use only." - // "network-protection.terms-of-service.section.1.list" - Terms of Service list for Network Protection + // "network-protection.terms-of-service.section.1.list" - Terms of Service list for VPN static let networkProtectionTermsOfServiceSection1List = "This service is provided for your personal use only.\n\nYou are responsible for all activity in the service that occurs on or through your device.\n\nThis service may only be used through the DuckDuckGo app on the device on which you are given access. If you delete the DuckDuckGo app, you will lose access to the service.\n\nYou may not use this service through a third-party client." - // "network-protection.terms-of-service.section.2.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.2.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection2Title = "You agree to comply with all applicable laws, rules, and regulations." - // "network-protection.terms-of-service.section.2.list" - Terms of Service list for Network Protection (Markdown version) + // "network-protection.terms-of-service.section.2.list" - Terms of Service list for VPN (Markdown version) static let networkProtectionTermsOfServiceSection2ListMarkdown = "You agree that you will not use the service for any unlawful, illicit, criminal, or fraudulent purpose, or in any manner that could give rise to civil or criminal liability under applicable law.\n\nYou agree to comply with our [DuckDuckGo Terms of Service](https://duckduckgo.com/terms), which are incorporated by reference." - // "network-protection.terms-of-service.section.2.list" - Terms of Service list for Network Protection (Non-Markdown version) + // "network-protection.terms-of-service.section.2.list" - Terms of Service list for VPN (Non-Markdown version) static let networkProtectionTermsOfServiceSection2ListNonMarkdown = "You agree that you will not use the service for any unlawful, illicit, criminal, or fraudulent purpose, or in any manner that could give rise to civil or criminal liability under applicable law.\n\nYou agree to comply with our DuckDuckGo Terms of Service, which are incorporated by reference." - // "network-protection.terms-of-service.section.3.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.3.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection3Title = "You must be eligible to use this service." - // "network-protection.terms-of-service.section.3.list" - Terms of Service list for Network Protection + // "network-protection.terms-of-service.section.3.list" - Terms of Service list for VPN static let networkProtectionTermsOfServiceSection3List = "Access to this beta is randomly awarded. You are responsible for ensuring eligibility.\n\nYou must be at least 18 years old and live in a location where use of a VPN is legal in order to be eligible to use this service." - // "network-protection.terms-of-service.section.4.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.4.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection4Title = "We provide this beta service as-is and without warranty." - // "network-protection.terms-of-service.section.4.list" - Terms of Service list for Network Protection + // "network-protection.terms-of-service.section.4.list" - Terms of Service list for VPN static let networkProtectionTermsOfServiceSection4List = "This service is provided as-is and without warranties or guarantees of any kind.\n\nTo the extent possible under applicable law, DuckDuckGo will not be liable for any damage or loss arising from your use of the service. In any event, the total aggregate liability of DuckDuckGo shall not exceed $25 or the equivalent in your local currency.\n\nWe may in the future transfer responsibility for the service to a subsidiary of DuckDuckGo. If that happens, you agree that references to “DuckDuckGo” will refer to our subsidiary, which will then become responsible for providing the service and for any liabilities relating to it." - // "network-protection.terms-of-service.section.5.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.5.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection5Title = "We may terminate access at any time." - // "network-protection.terms-of-service.section.5.list" - Terms of Service list for Network Protection + // "network-protection.terms-of-service.section.5.list" - Terms of Service list for VPN static let networkProtectionTermsOfServiceSection5List = "We reserve the right to revoke access to the service at any time in our sole discretion.\n\nWe may also terminate access for violation of these terms, including for repeated infringement of the intellectual property rights of others." - // "network-protection.terms-of-service.section.6.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.6.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection6Title = "The service is free during the beta period." - // "network-protection.terms-of-service.section.6.list" - Terms of Service list for Network Protection + // "network-protection.terms-of-service.section.6.list" - Terms of Service list for VPN static let networkProtectionTermsOfServiceSection6List = "Access to this service is currently free of charge, but that is limited to this beta period.\n\nYou understand and agree that this service is provided on a temporary, testing basis only." - // "network-protection.terms-of-service.section.7.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.7.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection7Title = "We are continually updating the service." - // "network-protection.terms-of-service.section.7.list" - Terms of Service list for Network Protection + // "network-protection.terms-of-service.section.7.list" - Terms of Service list for VPN static let networkProtectionTermsOfServiceSection7List = "The service is in beta, and we are regularly changing it.\n\nService coverage, speed, server locations, and quality may vary without warning." - // "network-protection.terms-of-service.section.8.title" - Terms of Service title for Network Protection + // "network-protection.terms-of-service.section.8.title" - Terms of Service title for VPN static let networkProtectionTermsOfServiceSection8Title = "We need your feedback." - // "network-protection.terms-of-service.section.8.list" - Terms of Service list for Network Protection + // "network-protection.terms-of-service.section.8.list" - Terms of Service list for VPN static let networkProtectionTermsOfServiceSection8List = "You may be asked during the beta period to provide feedback about your experience. Doing so is optional and your feedback may be used to improve the service.\n\nIf you have enabled notifications for the DuckDuckGo app, we may use notifications to ask about your experience. You can disable notifications if you do not want to receive them." // MARK: - Feedback Form diff --git a/DuckDuckGo/Common/Logging/Logging.swift b/DuckDuckGo/Common/Logging/Logging.swift index e6c9d18b36..70b37f76b7 100644 --- a/DuckDuckGo/Common/Logging/Logging.swift +++ b/DuckDuckGo/Common/Logging/Logging.swift @@ -41,7 +41,7 @@ extension OSLog { case duckPlayer = "Duck Player" case tabSnapshots = "Tab Snapshots" case sync = "Sync" - case networkProtection = "Network Protection" + case networkProtection = "VPN" case dbp = "dbp" } diff --git a/DuckDuckGo/Common/Utilities/UserDefaultsWrapper.swift b/DuckDuckGo/Common/Utilities/UserDefaultsWrapper.swift index 272d63cca0..2539f79a8e 100644 --- a/DuckDuckGo/Common/Utilities/UserDefaultsWrapper.swift +++ b/DuckDuckGo/Common/Utilities/UserDefaultsWrapper.swift @@ -146,13 +146,13 @@ public struct UserDefaultsWrapper { case dataBrokerProtectionTermsAndConditionsAccepted = "data-broker-protection.waitlist-terms-and-conditions.accepted" case shouldShowDBPWaitlistInvitedCardUI = "shouldShowDBPWaitlistInvitedCardUI" - // Network Protection + // VPN case networkProtectionExcludedRoutes = "netp.excluded-routes" case networkProtectionTermsAndConditionsAccepted = "network-protection.waitlist-terms-and-conditions.accepted" case networkProtectionWaitlistSignUpPromptDismissed = "network-protection.waitlist.sign-up-prompt-dismissed" - // Network Protection: Shared Defaults + // VPN: Shared Defaults // --- // Please note that shared defaults MUST have a name that matches exactly their value, // or else KVO will just not work as of 2023-08-07 diff --git a/DuckDuckGo/Info.plist b/DuckDuckGo/Info.plist index 8c7dca0e52..bdb809d70e 100644 --- a/DuckDuckGo/Info.plist +++ b/DuckDuckGo/Info.plist @@ -60,7 +60,7 @@ CFBundleTypeRole Viewer CFBundleURLName - Network Protection URLs + VPN URLs CFBundleURLSchemes networkprotection diff --git a/DuckDuckGo/LoginItems/LoginItemsManager.swift b/DuckDuckGo/LoginItems/LoginItemsManager.swift index d8ab2356db..8fef5f953b 100644 --- a/DuckDuckGo/LoginItems/LoginItemsManager.swift +++ b/DuckDuckGo/LoginItems/LoginItemsManager.swift @@ -20,8 +20,8 @@ import Common import Foundation import LoginItems -/// Class to manage the login items for Network Protection and DBP -/// +/// Class to manage the login items for the VPN and DBP +/// final class LoginItemsManager { private enum Action: String { case enable diff --git a/DuckDuckGo/Menus/MainMenu.swift b/DuckDuckGo/Menus/MainMenu.swift index da7c0d9984..dac124ab05 100644 --- a/DuckDuckGo/Menus/MainMenu.swift +++ b/DuckDuckGo/Menus/MainMenu.swift @@ -609,7 +609,7 @@ import SubscriptionUI #endif #if NETWORK_PROTECTION - NSMenuItem(title: "Network Protection") + NSMenuItem(title: "VPN") .submenu(NetworkProtectionDebugMenu()) #endif diff --git a/DuckDuckGo/NavigationBar/PinningManager.swift b/DuckDuckGo/NavigationBar/PinningManager.swift index 64d29c104e..8a3e939e7e 100644 --- a/DuckDuckGo/NavigationBar/PinningManager.swift +++ b/DuckDuckGo/NavigationBar/PinningManager.swift @@ -133,7 +133,7 @@ final class LocalPinningManager: PinningManager { /// This method is useful for knowing if the view was manually toggled. /// It's particularly useful for initializing a pin to a certain value at a certain point during the execution of code, /// only if the user hasn't explicitly specified a desired state. - /// As an example: this is used in Network Protection for pinning the icon to the navigation bar the first time the + /// As an example: this is used in the VPN for pinning the icon to the navigation bar the first time the /// feature is enabled. /// func wasManuallyToggled(_ view: PinnableView) -> Bool { diff --git a/DuckDuckGo/NavigationBar/View/MoreOptionsMenu.swift b/DuckDuckGo/NavigationBar/View/MoreOptionsMenu.swift index 5dd8a9afdd..24ecc77e86 100644 --- a/DuckDuckGo/NavigationBar/View/MoreOptionsMenu.swift +++ b/DuckDuckGo/NavigationBar/View/MoreOptionsMenu.swift @@ -344,7 +344,7 @@ final class MoreOptionsMenu: NSMenu { let networkProtectionItem: NSMenuItem - // If the user can see the Network Protection option but they haven't joined the waitlist or don't have an auth token, show the "New" + // If the user can see the VPN option but they haven't joined the waitlist or don't have an auth token, show the "New" // badge to bring it to their attention. if !isWaitlistUser && !hasAuthToken { networkProtectionItem = makeNetworkProtectionItem(showNewLabel: true) diff --git a/DuckDuckGo/NavigationBar/View/NavigationBar.storyboard b/DuckDuckGo/NavigationBar/View/NavigationBar.storyboard index fe6b3f27ca..357dbe0d25 100644 --- a/DuckDuckGo/NavigationBar/View/NavigationBar.storyboard +++ b/DuckDuckGo/NavigationBar/View/NavigationBar.storyboard @@ -252,7 +252,7 @@ -