diff --git a/Morphic/Morphic.xcodeproj/project.pbxproj b/Morphic/Morphic.xcodeproj/project.pbxproj index cbd3ab6a..4294be53 100644 --- a/Morphic/Morphic.xcodeproj/project.pbxproj +++ b/Morphic/Morphic.xcodeproj/project.pbxproj @@ -1507,7 +1507,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -1563,7 +1563,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; @@ -1587,8 +1587,8 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.6; + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = 1.7; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "org.raisingthefloor.Morphic-Debug"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1613,8 +1613,8 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.6; + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = 1.7; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.Morphic; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1638,8 +1638,8 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.6; + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = 1.7; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "org.raisingthefloor.MorphicConfigurator-Debug"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1663,8 +1663,8 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.6; + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = 1.7; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicConfigurator; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1689,7 +1689,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = "org.raisingthefloor.MorphicDockApp-Debug"; PRODUCT_NAME = " Morphic "; SWIFT_VERSION = 5.0; @@ -1713,7 +1713,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicDockApp; PRODUCT_NAME = " Morphic "; PROVISIONING_PROFILE_SPECIFIER = "Morphic Dock App for macOS"; @@ -1738,7 +1738,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "org.raisingthefloor.MorphicLauncher-Debug"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1764,7 +1764,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicLauncher; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/Morphic/Morphic/About Box/AboutBoxWindowController.swift b/Morphic/Morphic/About Box/AboutBoxWindowController.swift index 46d7cbc9..4b8a2a51 100644 --- a/Morphic/Morphic/About Box/AboutBoxWindowController.swift +++ b/Morphic/Morphic/About Box/AboutBoxWindowController.swift @@ -29,7 +29,9 @@ class AboutBoxWindowController: NSWindowController, NSWindowDelegate { @IBOutlet weak var versionTextField: NSTextField! @IBOutlet weak var buildTextField: NSTextField! - + + @IBOutlet weak var copyrightTextField: NSTextField! + override var windowNibName: NSNib.Name? { return NSNib.Name("AboutBoxWindowController") } @@ -59,16 +61,18 @@ class AboutBoxWindowController: NSWindowController, NSWindowDelegate { // populate the version and build # in our labels if let shortVersionAsString = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String { - versionTextField.stringValue = "version " + shortVersionAsString + self.versionTextField.stringValue = "version " + shortVersionAsString } else { - versionTextField.stringValue = "[version is unknown]" + self.versionTextField.stringValue = "[version is unknown]" } // if let buildAsString = Bundle.main.infoDictionary?["CFBundleVersion" as String] { - buildTextField.stringValue = "(build \(buildAsString))" + self.buildTextField.stringValue = "(build \(buildAsString))" } else { - buildTextField.stringValue = "[build version is unknown]" + self.buildTextField.stringValue = "[build version is unknown]" } + + self.copyrightTextField.stringValue = "Copyright (c) 2020-2024 Raising the Floor - US Inc." } func centerOnScreen() { diff --git a/Morphic/Morphic/About Box/Base.lproj/AboutBoxWindowController.xib b/Morphic/Morphic/About Box/Base.lproj/AboutBoxWindowController.xib index 37079067..70b83745 100644 --- a/Morphic/Morphic/About Box/Base.lproj/AboutBoxWindowController.xib +++ b/Morphic/Morphic/About Box/Base.lproj/AboutBoxWindowController.xib @@ -1,14 +1,15 @@ - + - + + @@ -18,63 +19,73 @@ - + - + - - + + - - + + - - + + - - - + + + + + + + + + + + - + - - + + - - + + + + diff --git a/Morphic/Morphic/About Box/en.lproj/AboutBoxWindowController.strings b/Morphic/Morphic/About Box/en.lproj/AboutBoxWindowController.strings index 7bec5a4d..48d979c7 100644 --- a/Morphic/Morphic/About Box/en.lproj/AboutBoxWindowController.strings +++ b/Morphic/Morphic/About Box/en.lproj/AboutBoxWindowController.strings @@ -5,8 +5,8 @@ /* Class = "NSTextFieldCell"; title = "Morphic for macOS"; ObjectID = "P3l-Rg-JEz"; */ "P3l-Rg-JEz.title" = "Morphic for macOS"; -/* Class = "NSTextFieldCell"; title = "Contact Us"; ObjectID = "bKV-Nb-ezu"; */ -"bKV-Nb-ezu.title" = "Contact Us"; +/* Class = "NSTextFieldCell"; title = "Learn More about Morphic"; ObjectID = "bKV-Nb-ezu"; */ +"bKV-Nb-ezu.title" = "Learn More about Morphic"; /* Class = "NSTextFieldCell"; title = "(Build)"; ObjectID = "dcf-3V-XXl"; */ "dcf-3V-XXl.title" = "(Build)"; diff --git a/Morphic/Morphic/About Box/es.lproj/AboutBoxWindowController.strings b/Morphic/Morphic/About Box/es.lproj/AboutBoxWindowController.strings index 92cd01c4..7d008f43 100644 --- a/Morphic/Morphic/About Box/es.lproj/AboutBoxWindowController.strings +++ b/Morphic/Morphic/About Box/es.lproj/AboutBoxWindowController.strings @@ -4,8 +4,8 @@ /* Class = "NSTextFieldCell"; title = "Morphic for macOS"; ObjectID = "P3l-Rg-JEz"; */ "P3l-Rg-JEz.title" = "Morphic para macOS"; -/* Class = "NSTextFieldCell"; title = "Contact Us"; ObjectID = "bKV-Nb-ezu"; */ -"bKV-Nb-ezu.title" = "Contacto"; +/* Class = "NSTextFieldCell"; title = "Learn More about Morphic"; ObjectID = "bKV-Nb-ezu"; */ +"bKV-Nb-ezu.title" = "Más información sobre Morphic"; /* Class = "NSTextFieldCell"; title = "(Build)"; ObjectID = "dcf-3V-XXl"; */ "dcf-3V-XXl.title" = "(Compilar)"; diff --git a/Morphic/Morphic/AppDelegate.swift b/Morphic/Morphic/AppDelegate.swift index cf6e42ed..8e88d2b9 100644 --- a/Morphic/Morphic/AppDelegate.swift +++ b/Morphic/Morphic/AppDelegate.swift @@ -43,9 +43,12 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele @IBOutlet weak var showMorphicBarMenuItem: NSMenuItem? @IBOutlet weak var hideMorphicBarMenuItem: NSMenuItem? @IBOutlet weak var copySettingsBetweenComputersMenuItem: NSMenuItem! + @IBOutlet weak var saveCurrentSettingsMenuItem: NSMenuItem! + @IBOutlet weak var howToCopySettingsMenuItem: NSMenuItem! @IBOutlet weak var loginMenuItem: NSMenuItem! @IBOutlet weak var logoutMenuItem: NSMenuItem? @IBOutlet weak var selectMorphicBarMenuItem: NSMenuItem! + @IBOutlet weak var customizeMorphicBarMenuItem: NSMenuItem! @IBOutlet weak var automaticallyStartMorphicAtLoginMenuItem: NSMenuItem! @IBOutlet weak var showMorphicBarAtStartMenuItem: NSMenuItem! @@ -96,18 +99,33 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele let commonConfiguration = self.getCommonConfiguration() ConfigurableFeatures.shared.morphicBarVisibilityAfterLogin = commonConfiguration.morphicBarVisibilityAfterLogin ConfigurableFeatures.shared.morphicBarExtraItems = commonConfiguration.extraMorphicBarItems + // +// ConfigurableFeatures.shared.atOnDemandIsEnbled = commonConfiguration.atOnDemandIsEnabled // NOTE: Windows-exclusive feature in current release +// ConfigurableFeatures.shared.atUseCounterIsEnabled = commonConfiguration.atUseCounterIsEnabled // NOTE: Windows-exclusive feature in current release ConfigurableFeatures.shared.autorunConfig = commonConfiguration.autorunConfig ConfigurableFeatures.shared.checkForUpdatesIsEnabled = commonConfiguration.checkForUpdatesIsEnabled +// ConfigurableFeatures.shared.cloudSettingsTransferIsEnabled = commonConfiguration.cloudSettingsTransferIsEnabled // NOTE: currently specified in Session instead of ConfigurableFeatures + ConfigurableFeatures.shared.customMorphicBarsIsEnabled = commonConfiguration.customMorphicBarsIsEnabled ConfigurableFeatures.shared.resetSettingsIsEnabled = commonConfiguration.resetSettingsIsEnabled + ConfigurableFeatures.shared.signInIsEnabled = commonConfiguration.signInIsEnabled + // ConfigurableFeatures.shared.telemetryIsEnabled = telemetryIsEnabled Session.shared.isCaptureAndApplyEnabled = commonConfiguration.cloudSettingsTransferIsEnabled Session.shared.isServerPreferencesSyncEnabled = true ConfigurableFeatures.shared.telemetrySiteId = commonConfiguration.telemetrySiteId + // + // public var hideMorphicAfterLoginUntil: Date? = nil // NOTE: Windows-exclusive feature in current release if ConfigurableFeatures.shared.telemetryIsEnabled == true { self.configureTelemetry() } + // NOTE: if ConfigurableFeatures.shared.signInIsEnabled is false, then cascade this 'false' setting to force-disable related login-related features + if ConfigurableFeatures.shared.signInIsEnabled == false { + Session.shared.isCaptureAndApplyEnabled = false + ConfigurableFeatures.shared.customMorphicBarsIsEnabled = false + } + #if DEBUG // do not run the auto-updater checks in debug mode #else @@ -133,13 +151,28 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele self.resetSettings() } - self.copySettingsBetweenComputersMenuItem?.isHidden = (Session.shared.isCaptureAndApplyEnabled == false) + let hideCopySettingsMenuItems = (Session.shared.isCaptureAndApplyEnabled == false) + self.copySettingsBetweenComputersMenuItem?.isHidden = hideCopySettingsMenuItems + self.saveCurrentSettingsMenuItem?.isHidden = hideCopySettingsMenuItems + self.howToCopySettingsMenuItem?.isHidden = hideCopySettingsMenuItems - self.loginMenuItem?.isHidden = (Session.shared.user != nil) - self.logoutMenuItem?.isHidden = (Session.shared.user == nil) + if ConfigurableFeatures.shared.signInIsEnabled == true { + // if ConfigurableFeatures.shared.signInIsEnabled is true, then show the appropriate login/logout menu item (and hide the opposite menu item) + self.loginMenuItem?.isHidden = (Session.shared.user != nil) + self.logoutMenuItem?.isHidden = (Session.shared.user == nil) + } else { + // if ConfigurableFeatures.shared.signInIsEnabled is false, then hide the settings which allow the user to sign in + self.loginMenuItem?.isHidden = true + self.logoutMenuItem?.isHidden = true + } self.mainMenu?.delegate = self + // show/hide our 'switch MorphicBar' and 'customize MorphicBar' menu items depending on whether or not custom MorphicBars are enabled + let hideCustomMorphicBarMenuItems = !ConfigurableFeatures.shared.customMorphicBarsIsEnabled + self.selectMorphicBarMenuItem.isHidden = hideCustomMorphicBarMenuItems + self.customizeMorphicBarMenuItem.isHidden = hideCustomMorphicBarMenuItems + // update our list of custom MorphicBars self.updateSelectMorphicBarMenuItem() @@ -677,10 +710,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele guard let session = notification.object as? Session else { return } - self.loginMenuItem?.isHidden = (session.user != nil) - self.logoutMenuItem?.isHidden = (session.user == nil) + self.loginMenuItem?.isHidden = (session.user != nil || ConfigurableFeatures.shared.signInIsEnabled == false) + self.logoutMenuItem?.isHidden = (session.user == nil || ConfigurableFeatures.shared.signInIsEnabled == false) - if session.user != nil { + if session.user != nil && ConfigurableFeatures.shared.customMorphicBarsIsEnabled == true { // reload the custom bar reloadCustomMorphicBars() { success, error in @@ -746,10 +779,14 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele public let scope: String? } // +// internal let atOnDemand: EnabledFeature? // NOTE: Windows-exclusive feature in current release +// internal let atUseCounter: EnabledFeature? // NOTE: Windows-exclusive feature in current release internal let autorunAfterLogin: EnabledFeature? internal let checkForUpdates: EnabledFeature? internal let cloudSettingsTransfer: EnabledFeature? + internal let customMorphicBars: EnabledFeature? internal let resetSettings: EnabledFeature? + internal let signIn: EnabledFeature? } internal struct MorphicBarConfigSection: Decodable { @@ -775,38 +812,50 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele let disableTelemetryFileExists = FileManager.default.fileExists(atPath: disableTelemetryFilePath) return disableTelemetryFileExists } - + struct CommonConfigurationContents { - public var autorunConfig: ConfigurableFeatures.AutorunConfigOption? = nil + public var autorunConfig: ConfigurableFeatures.AutorunConfigOption? // - public var checkForUpdatesIsEnabled: Bool = false - public var cloudSettingsTransferIsEnabled: Bool = false - public var resetSettingsIsEnabled: Bool = false +// public var atOnDemandIsEnabled: Bool // NOTE: Windows-exclusive feature in current release +// public var atUseCounterIsEnabled: Bool // NOTE: Windows-exclusive feature in current release + public var checkForUpdatesIsEnabled: Bool + public var cloudSettingsTransferIsEnabled: Bool + public var customMorphicBarsIsEnabled: Bool + public var resetSettingsIsEnabled: Bool + public var signInIsEnabled: Bool // - public var morphicBarVisibilityAfterLogin: ConfigurableFeatures.MorphicBarVisibilityAfterLoginOption? = nil - public var extraMorphicBarItems: [MorphicBarExtraItem] = [] + public var morphicBarVisibilityAfterLogin: ConfigurableFeatures.MorphicBarVisibilityAfterLoginOption? + public var extraMorphicBarItems: [MorphicBarExtraItem] // - public var telemetrySiteId: String? = nil + public var telemetrySiteId: String? } func getCommonConfiguration() -> CommonConfigurationContents { // set up default configuration - var result = CommonConfigurationContents() - // - // autorun - result.autorunConfig = nil - // - // check for updates - result.checkForUpdatesIsEnabled = true - // - // copy settings to/from cloud - result.cloudSettingsTransferIsEnabled = true - // - // reset settings (to standard) - result.resetSettingsIsEnabled = false - // - // morphic bar (visibility and extra items) - result.morphicBarVisibilityAfterLogin = nil - result.extraMorphicBarItems = [] + var result = CommonConfigurationContents( + // autorun + autorunConfig: nil, + // + // AT on Demand +// atOnDemandIsEnabled = true, // NOTE: Windows-exclusive feature in current release + // AT Use counter +// atUseCounterIsEnabled = false, // NOTE: Windows-exclusive feature in current release + // check for updates + checkForUpdatesIsEnabled: true, + // copy settings to/from cloud + cloudSettingsTransferIsEnabled: true, + // enable use of custom MorphicBars (from cloud) + customMorphicBarsIsEnabled: true, + // reset settings (to standard) + resetSettingsIsEnabled: false, + // enable sign-in to Morphic services (settings transfer, custom MorphicBars, etc.) + signInIsEnabled: true, + // + // morphic bar (visibility and extra items) + morphicBarVisibilityAfterLogin: nil, + extraMorphicBarItems: [], + // + telemetrySiteId: nil + ) guard let applicationSupportPath = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .localDomainMask, true).first else { os_log(.error, log: logger, "Could not locate system application support directory") @@ -881,10 +930,20 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele result.cloudSettingsTransferIsEnabled = configFileCloudSettingsTransferIsEnabled } + // capture the custom MorphicBars "is enabled" setting + if let configFileCustomMorphicBarsIsEnabled = decodedConfigFile.features?.customMorphicBars?.enabled { + result.customMorphicBarsIsEnabled = configFileCustomMorphicBarsIsEnabled + } + // capture the reset settings (to standard) "is enabled" setting if let configFileResetSettingsIsEnabled = decodedConfigFile.features?.resetSettings?.enabled { result.resetSettingsIsEnabled = configFileResetSettingsIsEnabled } + + // cature the sign-in enable/disable setting + if let configFileSignInIsEnabled = decodedConfigFile.features?.signIn?.enabled { + result.signInIsEnabled = configFileSignInIsEnabled + } // capture the desired after-login (autorun) visibility of the MorphicBar switch decodedConfigFile.morphicBar?.visibilityAfterLogin @@ -1224,8 +1283,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele } func updateSelectMorphicBarMenuItem() { - self.selectMorphicBarMenuItem.isHidden = false - // TODO: we should determine if the user has a subscription; if so we should display the "Edit my MorphicBars..." item in the menu as well // remove all the menu items before the 'Basic MorphicBar' menu item @@ -1421,8 +1478,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele self.updateSelectMorphicBarMenuItem() } - self.loginMenuItem?.isHidden = false - self.logoutMenuItem?.isHidden = true + if ConfigurableFeatures.shared.signInIsEnabled == true { + self.loginMenuItem?.isHidden = false + self.logoutMenuItem?.isHidden = true + } else { + self.loginMenuItem?.isHidden = true + self.logoutMenuItem?.isHidden = true + } } } @@ -1619,7 +1681,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate, NSMenuDele // NOTE: in the future, we may want to save the autostart state in UserDefaults (although perhaps not in "UserDefaults.morphic"); we'd need to store in the UserDefaults area which was specific to _this_ user and _this_ application (including differentiating between Morphic and Morphic Community if there are two apps for that // If we do switch to UserDefaults in the future, we will effectively capture its "autostart enabled" state when we set it and then trust that the user hasn't used launchctl at the command-line to reverse our state; the worst-case scenario with this approach should be that our corresponding menu item checkbox is out of sync with system reality, and a poweruser who uses launchctl could simply uncheck and then recheck the menu item (or use launchctl) to reenable autostart-at-login for Morphic - // NOTE: SMCopyAllJobDictionaries (the API typically used to get the list of login items) was deprecated in macOS 10.10 but has not been replaced. It is technically still available as of macOS 10.15. + // NOTE: SMCopyAllJobDictionaries (the API typically used to get the list of login items) was deprecated in macOS 10.10 but has not been replaced. It is technically still available as of macOS 10.15+. guard let userLaunchedApps = SMCopyAllJobDictionaries(kSMDomainUserLaunchd)?.takeRetainedValue() as? [[String: Any]] else { return false } diff --git a/Morphic/Morphic/Base.lproj/Main.xib b/Morphic/Morphic/Base.lproj/Main.xib index 7528e7ba..f82590b8 100644 --- a/Morphic/Morphic/Base.lproj/Main.xib +++ b/Morphic/Morphic/Base.lproj/Main.xib @@ -1,8 +1,8 @@ - + - + @@ -10,11 +10,14 @@ + + + diff --git a/Morphic/Morphic/ConfigurableFeatures.swift b/Morphic/Morphic/ConfigurableFeatures.swift index 14d3b1b6..16985e16 100644 --- a/Morphic/Morphic/ConfigurableFeatures.swift +++ b/Morphic/Morphic/ConfigurableFeatures.swift @@ -36,14 +36,21 @@ internal class ConfigurableFeatures case restore } +// public var atOnDemandIsEnbled: Bool = true // NOTE: Windows-exclusive feature in current release +// public var atUseCounterIsEnabled: Bool = false // NOTE: Windows-exclusive feature in current release public var autorunConfig: AutorunConfigOption? = nil - public var checkForUpdatesIsEnabled: Bool = false + public var checkForUpdatesIsEnabled: Bool = true +// public var cloudSettingsTransferIsEnabled: Bool = true // NOTE: currently specified in Session instead of ConfigurableFeatures + public var customMorphicBarsIsEnabled: Bool = true public var resetSettingsIsEnabled: Bool = false - public var telemetryIsEnabled: Bool = true + public var signInIsEnabled: Bool = true public var morphicBarVisibilityAfterLogin: MorphicBarVisibilityAfterLoginOption? = nil public var morphicBarExtraItems: [AppDelegate.MorphicBarExtraItem] = [] + // public var hideMorphicAfterLoginUntil: Date? = nil // NOTE: Windows-exclusive feature in current release + + public var telemetryIsEnabled: Bool = true public var telemetrySiteId: String? static var shared: ConfigurableFeatures = { diff --git a/Morphic/Morphic/MorphicInstaller/Morphic/Distribution.plist b/Morphic/Morphic/MorphicInstaller/Morphic/Distribution.plist index 05ccaab9..9f31b069 100644 --- a/Morphic/Morphic/MorphicInstaller/Morphic/Distribution.plist +++ b/Morphic/Morphic/MorphicInstaller/Morphic/Distribution.plist @@ -3,10 +3,10 @@ Morphic - + - + diff --git a/Morphic/Morphic/MorphicInstaller/Requirements.plist b/Morphic/Morphic/MorphicInstaller/Requirements.plist index fe5055fd..a8abfeaf 100644 --- a/Morphic/Morphic/MorphicInstaller/Requirements.plist +++ b/Morphic/Morphic/MorphicInstaller/Requirements.plist @@ -5,10 +5,11 @@ arch x86_64 + arm64 os - 10.15 + 12.0 diff --git a/Morphic/Morphic/SettingsLinkActions.swift b/Morphic/Morphic/SettingsLinkActions.swift index 797512c0..f956aa86 100644 --- a/Morphic/Morphic/SettingsLinkActions.swift +++ b/Morphic/Morphic/SettingsLinkActions.swift @@ -153,7 +153,7 @@ class SettingsLinkActions { } // NOTE: this legacy implementation of openSystemSettingsPane is only compatible with macOS versions prior to macOS 13.0; once we deprecate support for earlier versions of macOS, we should delete this function and its callback - // NOTE: macOS 12.0 supports async functionality, so we could merge this functionality into the async function once we deprecate support for macOS 11.0. [Early versions of macOS 11.0 don't seem to support async with Swift, but late builds of macOS 11 have some support for async and macOS 12.0 seems to support async robustly.] If we do the merge, we'd still need to copy the "macOS 12.x and earlier" section into the above function; the settings panels ARE different in earlier versions of macOS (prior to macOS 13). + // NOTE: macOS 12.0 supports async functionality, so we could merge this functionality into the async function now that we have deprecated support for macOS 11.0. [Early versions of macOS 11.0 don't seem to support async with Swift, but late builds of macOS 11 have some support for async and macOS 12.0 seems to support async robustly.] If we do the merge, we'd still need to copy the "macOS 12.x and earlier" section into the above function; the settings panels ARE different in earlier versions of macOS (prior to macOS 13). static func openSystemSettingsPane_macOS12AndEarlier(_ pane: SystemPreferencePane) { if #available(macOS 13.0, *) { fatalError("This version of macOS is not supported by this code; use the new async version instead.") diff --git a/MorphicCore/MorphicCore.xcodeproj/project.pbxproj b/MorphicCore/MorphicCore.xcodeproj/project.pbxproj index 0097e827..ab013cee 100644 --- a/MorphicCore/MorphicCore.xcodeproj/project.pbxproj +++ b/MorphicCore/MorphicCore.xcodeproj/project.pbxproj @@ -309,7 +309,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -366,7 +366,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; @@ -396,7 +396,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicCore; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -425,7 +425,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicCore; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/MorphicCore/MorphicCore/Info.plist b/MorphicCore/MorphicCore/Info.plist index 9452e3c1..2651faed 100644 --- a/MorphicCore/MorphicCore/Info.plist +++ b/MorphicCore/MorphicCore/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.6 + 1.7 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/MorphicMacOSNative/MorphicMacOSNative.xcodeproj/project.pbxproj b/MorphicMacOSNative/MorphicMacOSNative.xcodeproj/project.pbxproj index a9503d58..6f077594 100644 --- a/MorphicMacOSNative/MorphicMacOSNative.xcodeproj/project.pbxproj +++ b/MorphicMacOSNative/MorphicMacOSNative.xcodeproj/project.pbxproj @@ -338,7 +338,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicMacOSNative; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; @@ -369,7 +369,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicMacOSNative; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; diff --git a/MorphicMacOSNative/MorphicMacOSNative/AccessibilityUI/MorphicA11yUIElement.swift b/MorphicMacOSNative/MorphicMacOSNative/AccessibilityUI/MorphicA11yUIElement.swift index 2dc4dcfa..c7d1426c 100644 --- a/MorphicMacOSNative/MorphicMacOSNative/AccessibilityUI/MorphicA11yUIElement.swift +++ b/MorphicMacOSNative/MorphicMacOSNative/AccessibilityUI/MorphicA11yUIElement.swift @@ -1,4 +1,4 @@ -// Copyright 2020-2022 Raising the Floor - US, Inc. +// Copyright 2020-2023 Raising the Floor - US, Inc. // // Licensed under the New BSD license. You may not use this file except in // compliance with this License. diff --git a/MorphicManualTester/MorphicManualTester.xcodeproj/project.pbxproj b/MorphicManualTester/MorphicManualTester.xcodeproj/project.pbxproj index 96636cb9..3b286836 100644 --- a/MorphicManualTester/MorphicManualTester.xcodeproj/project.pbxproj +++ b/MorphicManualTester/MorphicManualTester.xcodeproj/project.pbxproj @@ -271,7 +271,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -326,7 +326,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; @@ -352,7 +352,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicManualTester; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -376,7 +376,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicManualTester; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; diff --git a/MorphicManualTester/MorphicManualTester/Info.plist b/MorphicManualTester/MorphicManualTester/Info.plist index 33a384a9..684f48fa 100644 --- a/MorphicManualTester/MorphicManualTester/Info.plist +++ b/MorphicManualTester/MorphicManualTester/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.6 + 1.7 CFBundleVersion 1 LSApplicationCategoryType diff --git a/MorphicService/MorphicService.xcodeproj/project.pbxproj b/MorphicService/MorphicService.xcodeproj/project.pbxproj index e71ea0be..9014a115 100644 --- a/MorphicService/MorphicService.xcodeproj/project.pbxproj +++ b/MorphicService/MorphicService.xcodeproj/project.pbxproj @@ -319,7 +319,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -376,7 +376,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; @@ -406,7 +406,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicService; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -435,7 +435,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicService; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/MorphicService/MorphicService/Info.plist b/MorphicService/MorphicService/Info.plist index 9452e3c1..2651faed 100644 --- a/MorphicService/MorphicService/Info.plist +++ b/MorphicService/MorphicService/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.6 + 1.7 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/MorphicSettings/MorphicSettings.xcodeproj/project.pbxproj b/MorphicSettings/MorphicSettings.xcodeproj/project.pbxproj index 5b4172ac..83b59beb 100644 --- a/MorphicSettings/MorphicSettings.xcodeproj/project.pbxproj +++ b/MorphicSettings/MorphicSettings.xcodeproj/project.pbxproj @@ -765,7 +765,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -822,7 +822,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; @@ -857,7 +857,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MODULEMAP_FILE = MorphicSettings/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicSettings; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; @@ -892,7 +892,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MODULEMAP_FILE = MorphicSettings/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicSettings; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; diff --git a/MorphicSettings/MorphicSettings/AccessibilityUI/SystemPrefs/AccessibilityPreferencesElement.swift b/MorphicSettings/MorphicSettings/AccessibilityUI/SystemPrefs/AccessibilityPreferencesElement.swift index b0be0131..dbc3c82c 100644 --- a/MorphicSettings/MorphicSettings/AccessibilityUI/SystemPrefs/AccessibilityPreferencesElement.swift +++ b/MorphicSettings/MorphicSettings/AccessibilityUI/SystemPrefs/AccessibilityPreferencesElement.swift @@ -42,13 +42,7 @@ public class AccessibilityPreferencesElement: UIElement { case .overview: return "Overview" case .speech: - if ProcessInfo().isOperatingSystemAtLeast(OperatingSystemVersion(majorVersion: 10, minorVersion: 16, patchVersion: 0)) { - // >= macOS 11.0 - return "Spoken Content" - } else { - // macOS 10.15 - return "Speech" - } + return "Spoken Content" case .voiceOver: return "VoiceOver" case .zoom: @@ -71,11 +65,6 @@ public class AccessibilityPreferencesElement: UIElement { return } AsyncUtils.wait(atMost: 1.0, for: { - // macOS 10.15 - if self.tabGroup?.tab(titled: "Overview") != nil { - return true - } - // macOS 11.0 if self.label(value: "Your Mac can be customized to support your vision, hearing, physical motor, and learning & literacy requirements.") != nil { return true } @@ -114,13 +103,7 @@ public class AccessibilityPreferencesElement: UIElement { } // let waitForCheckboxTitle: String - if ProcessInfo().isOperatingSystemAtLeast(OperatingSystemVersion(majorVersion: 10, minorVersion: 16, patchVersion: 0)) { - // >= macOS 11.0 - waitForCheckboxTitle = "Speak announcements" - } else { - // macOS 10.15 - waitForCheckboxTitle = "Enable announcements" - } + waitForCheckboxTitle = "Speak announcements" // AsyncUtils.wait(atMost: 1.0, for: { self.checkbox(titled: waitForCheckboxTitle) != nil}) { success in diff --git a/MorphicSettings/MorphicSettings/Automations/SpeechUIAutomations.swift b/MorphicSettings/MorphicSettings/Automations/SpeechUIAutomations.swift index f8eacaf6..20d719f3 100644 --- a/MorphicSettings/MorphicSettings/Automations/SpeechUIAutomations.swift +++ b/MorphicSettings/MorphicSettings/Automations/SpeechUIAutomations.swift @@ -63,13 +63,7 @@ public class SpeechCheckboxUIAutomation: AccessibilityUIAutomation { public class SpeakSelectedTextEnabledUIAutomation: SpeechCheckboxUIAutomation { override var checkboxTitle: String! { - if ProcessInfo().isOperatingSystemAtLeast(OperatingSystemVersion(majorVersion: 10, minorVersion: 16, patchVersion: 0)) { - // >= macOS 11.0 - return "Speak selection" - } else { - // macOS 10.15 - return "Speak selected text when the key is pressed" - } + return "Speak selection" } } diff --git a/MorphicSettings/MorphicSettings/Info.plist b/MorphicSettings/MorphicSettings/Info.plist index 9452e3c1..2651faed 100644 --- a/MorphicSettings/MorphicSettings/Info.plist +++ b/MorphicSettings/MorphicSettings/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.6 + 1.7 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/MorphicTelemetry/MorphicTelemetry.xcodeproj/project.pbxproj b/MorphicTelemetry/MorphicTelemetry.xcodeproj/project.pbxproj index 11210047..cf2eca59 100644 --- a/MorphicTelemetry/MorphicTelemetry.xcodeproj/project.pbxproj +++ b/MorphicTelemetry/MorphicTelemetry.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -229,7 +229,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -287,7 +287,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; @@ -317,7 +317,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicTelemetry; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -346,7 +346,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicTelemetry; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/MorphicTelemetry/MorphicTelemetry/Info.plist b/MorphicTelemetry/MorphicTelemetry/Info.plist index 9452e3c1..2651faed 100644 --- a/MorphicTelemetry/MorphicTelemetry/Info.plist +++ b/MorphicTelemetry/MorphicTelemetry/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.6 + 1.7 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/MorphicUIAutomation/MorphicUIAutomation.xcodeproj/project.pbxproj b/MorphicUIAutomation/MorphicUIAutomation.xcodeproj/project.pbxproj index 60c501fb..b0a0961d 100644 --- a/MorphicUIAutomation/MorphicUIAutomation.xcodeproj/project.pbxproj +++ b/MorphicUIAutomation/MorphicUIAutomation.xcodeproj/project.pbxproj @@ -623,7 +623,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -680,7 +680,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; @@ -712,7 +712,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicUIAutomation; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; @@ -745,7 +745,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 12.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = org.raisingthefloor.MorphicUIAutomation; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; diff --git a/MorphicUIAutomation/MorphicUIAutomation/SystemSettings/macOS13AndNewer/SystemSettingsMainWindow_macOS13.swift b/MorphicUIAutomation/MorphicUIAutomation/SystemSettings/macOS13AndNewer/SystemSettingsMainWindow_macOS13.swift index 3a8fdbb3..dcf73fea 100644 --- a/MorphicUIAutomation/MorphicUIAutomation/SystemSettings/macOS13AndNewer/SystemSettingsMainWindow_macOS13.swift +++ b/MorphicUIAutomation/MorphicUIAutomation/SystemSettings/macOS13AndNewer/SystemSettingsMainWindow_macOS13.swift @@ -67,7 +67,25 @@ internal class SystemSettingsMainWindow_macOS13 { } private static func windowTitleForCategory(_ category: CategoryPane) -> String { - if #available(macOS 13.0, *) { + if #available(macOS 15.0, *) { + switch category { + case .accessibility: + return "Accessibility" + case .appearance: + return "Appearance" + case .displays: + return "Displays" + case .general: + // OBSERVATION: ideally in macOS 15.0 (and maybe 14.x?) we would look for the "general" header up top, since an empty string is problematic to match (i.e. could easily cause a false match) + return "" + case .keyboard: + return "Keyboard" + case .mouse: + return "Mouse" + case .trackpad: + return "Trackpad" + } + } else if #available(macOS 13.0, *) { switch category { case .accessibility: return "Accessibility" diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 69681042..6093e864 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -17,9 +17,9 @@ variables: # Provides: P12_PASSWORD, APPLICATION_SIGNING_IDENTITY, INSTALLER_SIGNING_IDENTITY, ALTOOL_USERNAME, ALTOOL_APP_PASSWORD, TEAM_ID - group: 'macos-signing' - name: sdk - value: macosx12.3 + value: macosx15.0 - name: xcodeDeveloperDir - value: '/Applications/Xcode_14.0.app/Contents/Developer' + value: '/Applications/Xcode_16.app/Contents/Developer' - name: configuration value: 'Release' - name: workspacePath @@ -33,7 +33,7 @@ variables: value: 'OTHER_CODE_SIGN_FLAGS="--timestamp" CURRENT_PROJECT_VERSION="$(Build.BuildNumber)"' pool: - vmImage: 'macOS-12' + vmImage: 'macOS-14' stages: - stage: build