From 7e308d19106857425e84eb4f13018f095d7ddeaa Mon Sep 17 00:00:00 2001 From: amddg44 Date: Wed, 1 May 2024 16:20:53 +0200 Subject: [PATCH 1/4] Fix RMF button styling for "big_two_action" format (#2811) Task/Issue URL: https://app.asana.com/0/414709148257752/1207213363644901/f Tech Design URL: CC: Description: Corrects button styling for remote messages with 2 buttons --- DuckDuckGo/HomeMessageViewModel.swift | 18 +++++++++--------- DuckDuckGo/HomeMessageViewModelBuilder.swift | 5 ++++- .../HomeMessageViewSectionRenderer.swift | 2 +- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/DuckDuckGo/HomeMessageViewModel.swift b/DuckDuckGo/HomeMessageViewModel.swift index 1f5a81b56a..e108700468 100644 --- a/DuckDuckGo/HomeMessageViewModel.swift +++ b/DuckDuckGo/HomeMessageViewModel.swift @@ -97,26 +97,26 @@ struct HomeMessageViewModel { case .bigSingleAction(_, _, _, let primaryActionText, let primaryAction): return [ HomeMessageButtonViewModel(title: primaryActionText, - actionStyle: primaryAction.actionStyle, + actionStyle: primaryAction.actionStyle(), action: mapActionToViewModel(remoteAction: primaryAction, buttonAction: .primaryAction(isShare: primaryAction.isShare), onDidClose: onDidClose)) ] case .bigTwoAction(_, _, _, let primaryActionText, let primaryAction, let secondaryActionText, let secondaryAction): return [ - HomeMessageButtonViewModel(title: primaryActionText, - actionStyle: primaryAction.actionStyle, - action: mapActionToViewModel(remoteAction: primaryAction, buttonAction: - .primaryAction(isShare: primaryAction.isShare), onDidClose: onDidClose)), - HomeMessageButtonViewModel(title: secondaryActionText, - actionStyle: secondaryAction.actionStyle, + actionStyle: secondaryAction.actionStyle(isSecondaryAction: true), action: mapActionToViewModel(remoteAction: secondaryAction, buttonAction: - .secondaryAction(isShare: primaryAction.isShare), onDidClose: onDidClose)) + .secondaryAction(isShare: secondaryAction.isShare), onDidClose: onDidClose)), + + HomeMessageButtonViewModel(title: primaryActionText, + actionStyle: primaryAction.actionStyle(), + action: mapActionToViewModel(remoteAction: primaryAction, buttonAction: + .primaryAction(isShare: primaryAction.isShare), onDidClose: onDidClose)) ] case .promoSingleAction(_, _, _, let actionText, let action): return [ HomeMessageButtonViewModel(title: actionText, - actionStyle: action.actionStyle, + actionStyle: action.actionStyle(), action: mapActionToViewModel(remoteAction: action, buttonAction: .action(isShare: action.isShare), onDidClose: onDidClose))] } diff --git a/DuckDuckGo/HomeMessageViewModelBuilder.swift b/DuckDuckGo/HomeMessageViewModelBuilder.swift index 91e1b425d0..4f54c60548 100644 --- a/DuckDuckGo/HomeMessageViewModelBuilder.swift +++ b/DuckDuckGo/HomeMessageViewModelBuilder.swift @@ -44,12 +44,15 @@ struct HomeMessageViewModelBuilder { extension RemoteAction { - var actionStyle: HomeMessageButtonViewModel.ActionStyle { + func actionStyle(isSecondaryAction: Bool = false) -> HomeMessageButtonViewModel.ActionStyle { switch self { case .share(let value, let title): return .share(value: value, title: title) case .appStore, .url, .surveyURL: + if isSecondaryAction { + return .cancel + } return .default case .dismiss: diff --git a/DuckDuckGo/HomeMessageViewSectionRenderer.swift b/DuckDuckGo/HomeMessageViewSectionRenderer.swift index b272151dca..8355f2466a 100644 --- a/DuckDuckGo/HomeMessageViewSectionRenderer.swift +++ b/DuckDuckGo/HomeMessageViewSectionRenderer.swift @@ -204,7 +204,7 @@ class HomeMessageViewSectionRenderer: NSObject, HomeViewSectionRenderer { extension RemoteAction { var isShare: Bool { - if case .share = self.actionStyle { + if case .share = self.actionStyle() { return true } return false From 41f554d327b2221a296d4dd2f8bdf8ada3f3a13c Mon Sep 17 00:00:00 2001 From: Christopher Brind Date: Wed, 1 May 2024 16:29:39 +0100 Subject: [PATCH 2/4] fix address bar weirdness (#2810) --- DuckDuckGo/AppDelegate.swift | 2 +- DuckDuckGo/AutoClear.swift | 6 ++++-- DuckDuckGo/OmniBar.swift | 15 +++++---------- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/DuckDuckGo/AppDelegate.swift b/DuckDuckGo/AppDelegate.swift index 05ee8b1793..a95494f062 100644 --- a/DuckDuckGo/AppDelegate.swift +++ b/DuckDuckGo/AppDelegate.swift @@ -288,7 +288,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { autoClear = AutoClear(worker: main) Task { - await autoClear?.clearDataIfEnabled() + await autoClear?.clearDataIfEnabled(launching: true) } AppDependencyProvider.shared.voiceSearchHelper.migrateSettingsFlagIfNecessary() diff --git a/DuckDuckGo/AutoClear.swift b/DuckDuckGo/AutoClear.swift index 7abb856b6a..d1bcb84e68 100644 --- a/DuckDuckGo/AutoClear.swift +++ b/DuckDuckGo/AutoClear.swift @@ -45,7 +45,7 @@ class AutoClear { } @MainActor - func clearDataIfEnabled() async { + func clearDataIfEnabled(launching: Bool = false) async { guard let settings = AutoClearSettingsModel(settings: appSettings) else { return } if settings.action.contains(.clearTabs) { @@ -56,7 +56,9 @@ class AutoClear { await worker.forgetData() } - worker.clearDataFinished(self) + if !launching { + worker.clearDataFinished(self) + } } /// Note: function is parametrised because of tests. diff --git a/DuckDuckGo/OmniBar.swift b/DuckDuckGo/OmniBar.swift index 751a15283d..1991df9c4f 100644 --- a/DuckDuckGo/OmniBar.swift +++ b/DuckDuckGo/OmniBar.swift @@ -174,17 +174,9 @@ class OmniBar: UIView { guard let range = field.selectedTextRange else { return } UIPasteboard.general.string = field.text(in: range) } - - textField.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector( onTextFieldTapped ))) } - var textFieldTapped = false - - @objc - private func onTextFieldTapped() { - textFieldTapped = true - textField.becomeFirstResponder() - } + var textFieldTapped = true private func configureSeparator() { separatorHeightConstraint.constant = 1.0 / UIScreen.main.scale @@ -374,6 +366,10 @@ class OmniBar: UIView { } @discardableResult override func becomeFirstResponder() -> Bool { + textFieldTapped = false + defer { + textFieldTapped = true + } return textField.becomeFirstResponder() } @@ -501,7 +497,6 @@ extension OmniBar: UITextFieldDelegate { func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { omniDelegate?.onTextFieldWillBeginEditing(self, tapped: textFieldTapped) - textFieldTapped = false return true } From 0c972d1c350850226b0e26503a55268d37ace676 Mon Sep 17 00:00:00 2001 From: Sam Symons Date: Wed, 1 May 2024 09:20:44 -0700 Subject: [PATCH 3/4] [Release PR] Update VPN metadata reporter (#2808) Task/Issue URL: https://app.asana.com/0/414235014887631/1207207179448754/f Tech Design URL: CC: Description: This PR updates the VPN metadata reporter to include the domain, code, and information about any underlying errors. It also includes the localized description. --- .../Feedback/VPNMetadataCollector.swift | 82 +++++++++---------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/DuckDuckGo/Feedback/VPNMetadataCollector.swift b/DuckDuckGo/Feedback/VPNMetadataCollector.swift index 963cae47da..755b8ba95a 100644 --- a/DuckDuckGo/Feedback/VPNMetadataCollector.swift +++ b/DuckDuckGo/Feedback/VPNMetadataCollector.swift @@ -48,7 +48,8 @@ struct VPNMetadata: Encodable { struct VPNState: Encodable { let connectionState: String - let lastDisconnectError: String + let lastDisconnectError: LastDisconnectError? + let underlyingErrors: [LastDisconnectError]? let connectedServer: String let connectedServerIP: String } @@ -77,6 +78,12 @@ struct VPNMetadata: Encodable { let subscriptionActive: Bool } + struct LastDisconnectError: Encodable { + let domain: String + let code: Int + let description: String + } + let appInfo: AppInfo let deviceInfo: DeviceInfo let networkInfo: NetworkInfo @@ -220,61 +227,30 @@ final class DefaultVPNMetadataCollector: VPNMetadataCollector { let connectionState = String(describing: statusObserver.recentValue) let connectedServer = serverInfoObserver.recentValue.serverLocation?.serverLocation ?? "none" let connectedServerIP = serverInfoObserver.recentValue.serverAddress ?? "none" + let lastDisconnectError = await lastDisconnectError() return .init(connectionState: connectionState, - lastDisconnectError: await lastDisconnectError(), + lastDisconnectError: lastDisconnectError?.error, + underlyingErrors: lastDisconnectError?.underlyingErrors, connectedServer: connectedServer, connectedServerIP: connectedServerIP) } - public func lastDisconnectError() async -> String { + public func lastDisconnectError() async -> (error: VPNMetadata.LastDisconnectError, underlyingErrors: [VPNMetadata.LastDisconnectError])? { if #available(iOS 16, *) { guard let tunnelManager = try? await NETunnelProviderManager.loadAllFromPreferences().first else { - return "none" + return nil } - return await withCheckedContinuation { continuation in - tunnelManager.connection.fetchLastDisconnectError { error in - let message = { - if let error = error as? NSError { - if error.domain == NEVPNConnectionErrorDomain, - let code = NEVPNConnectionError(rawValue: error.code) { - switch code { - case .overslept: return "overslept" - case .noNetworkAvailable: return "noNetworkAvailable" - case .unrecoverableNetworkChange: return "unrecoverableNetworkChange" - case .configurationFailed: return "configurationFailed" - case .serverAddressResolutionFailed: return "serverAddressResolutionFailed" - case .serverNotResponding: return "serverNotResponding" - case .serverDead: return "serverDead" - case .authenticationFailed: return "authenticationFailed" - case .clientCertificateInvalid: return "clientCertificateInvalid" - case .clientCertificateNotYetValid: return "clientCertificateNotYetValid" - case .clientCertificateExpired: return "clientCertificateExpired" - case .pluginFailed: return "pluginFailed" - case .configurationNotFound: return "configurationNotFound" - case .pluginDisabled: return "pluginDisabled" - case .negotiationFailed: return "negotiationFailed" - case .serverDisconnected: return "serverDisconnected" - case .serverCertificateInvalid: return "serverCertificateInvalid" - case .serverCertificateNotYetValid: return "serverCertificateNotYetValid" - case .serverCertificateExpired: return "serverCertificateExpired" - default: return error.localizedDescription - } - } else { - return error.localizedDescription - } - } - - return "none" - }() - - continuation.resume(returning: message) - } + do { + try await tunnelManager.connection.fetchLastDisconnectError() + return nil + } catch { + return (error as NSError).toMetadataError() } } - return "none" + return nil } func collectVPNSettingsState() -> VPNMetadata.VPNSettingsState { @@ -319,3 +295,23 @@ extension VPNMetadata.PrivacyProInfo.Source { } } } + +private extension NSError { + + @available(iOS 16.0, *) + func toMetadataError() -> (error: VPNMetadata.LastDisconnectError, underlyingErrors: [VPNMetadata.LastDisconnectError]) { + let metadataError = VPNMetadata.LastDisconnectError(domain: self.domain, code: self.code, description: self.localizedDescription) + + let underlyingErrors = self.underlyingErrors.compactMap { underlyingError in + let underlyingNSError = underlyingError as NSError + return VPNMetadata.LastDisconnectError( + domain: underlyingNSError.domain, + code: underlyingNSError.code, + description: underlyingNSError.localizedDescription + ) + } + + return (metadataError, underlyingErrors) + } + +} From ef173b394ffe3161b03db75183544c2f2664499d Mon Sep 17 00:00:00 2001 From: Christopher Brind Date: Wed, 1 May 2024 20:47:35 +0100 Subject: [PATCH 4/4] Release 7.118.0-1 (#2812) --- DuckDuckGo.xcodeproj/project.pbxproj | 56 ++++++++++----------- fastlane/metadata/default/release_notes.txt | 4 +- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index ff31d352ae..87370cae60 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -7914,7 +7914,7 @@ CODE_SIGN_ENTITLEMENTS = PacketTunnelProvider/PacketTunnelProvider.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -7951,7 +7951,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8043,7 +8043,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = ShareExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8071,7 +8071,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8221,7 +8221,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8247,7 +8247,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; INFOPLIST_FILE = DuckDuckGo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8313,7 +8313,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Widgets/Info.plist; @@ -8348,7 +8348,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8382,7 +8382,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = OpenAction/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8413,7 +8413,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8728,7 +8728,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAlpha.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8760,7 +8760,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = ShareExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8789,7 +8789,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = OpenAction/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8823,7 +8823,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Widgets/Info.plist; @@ -8854,7 +8854,7 @@ CODE_SIGN_ENTITLEMENTS = PacketTunnelProvider/PacketTunnelProviderAlpha.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -8887,11 +8887,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 0; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9125,7 +9125,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAlpha.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9153,7 +9153,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9186,7 +9186,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9224,7 +9224,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9260,7 +9260,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9295,11 +9295,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 0; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9473,11 +9473,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 0; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9506,10 +9506,10 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 0; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; diff --git a/fastlane/metadata/default/release_notes.txt b/fastlane/metadata/default/release_notes.txt index 6cd7a9e939..6fd26d5972 100644 --- a/fastlane/metadata/default/release_notes.txt +++ b/fastlane/metadata/default/release_notes.txt @@ -1,3 +1,5 @@ -- Bug fixes and other improvements. +- Keep your passwords in easy reach with new widgets for your Home Screen and Lock Screen. +- Wondering how to import passwords from our desktop browser and other apps? We added instructions in Settings > Passwords > Import Passwords. +- Bug fixes and improvements. Join our fully distributed team and help raise the standard of trust online! https://duckduckgo.com/hiring