diff --git a/CHANGELOG.md b/CHANGELOG.md
index ee768a5b..17d8fb53 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [2.0.9] - 2024-08-16
+Requires macOS 12.0 and higher.
+
+### Fixed
+- When using `latest` or `latest-supported`, major upgrades were not correctly assessed, resulting in SLA extensions defaulting to the `90` day SLA default value
+
+### Changed
+- Additional Japenese localization changes
+
## [2.0.8] - 2024-08-16
Requires macOS 12.0 and higher.
diff --git a/Nudge.xcodeproj/project.pbxproj b/Nudge.xcodeproj/project.pbxproj
index 33102844..6f9e5aa2 100644
--- a/Nudge.xcodeproj/project.pbxproj
+++ b/Nudge.xcodeproj/project.pbxproj
@@ -698,7 +698,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 12.0;
- MARKETING_VERSION = 2.0.8;
+ MARKETING_VERSION = 2.0.9;
PRODUCT_BUNDLE_IDENTIFIER = com.github.macadmins.Nudge;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -729,7 +729,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 12.0;
- MARKETING_VERSION = 2.0.8;
+ MARKETING_VERSION = 2.0.9;
PRODUCT_BUNDLE_IDENTIFIER = com.github.macadmins.Nudge;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
diff --git a/Nudge/Info.plist b/Nudge/Info.plist
index ca2f68d5..32791129 100644
--- a/Nudge/Info.plist
+++ b/Nudge/Info.plist
@@ -15,9 +15,9 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 2.0.8
+ 2.0.9
CFBundleVersion
- 2.0.8
+ 2.0.9
LSApplicationCategoryType
public.app-category.utilities
LSMinimumSystemVersion
diff --git a/Nudge/UI/Main.swift b/Nudge/UI/Main.swift
index c941e0c9..71b0f71e 100644
--- a/Nudge/UI/Main.swift
+++ b/Nudge/UI/Main.swift
@@ -257,11 +257,17 @@ class AppDelegate: NSObject, NSApplicationDelegate {
let presentCVEs = selectedOS!.cves.count > 0
let slaExtension: TimeInterval
+ // Start setting UI fields
+ nudgePrimaryState.requiredMinimumOSVersion = selectedOS!.productVersion
+ nudgePrimaryState.sofaAboutUpdateURL = selectedOS!.securityInfo
+ nudgePrimaryState.activelyExploitedCVEs = activelyExploitedCVEs
switch (activelyExploitedCVEs, presentCVEs, AppStateManager().requireMajorUpgrade()) {
case (false, true, true):
slaExtension = TimeInterval(OSVersionRequirementVariables.nonActivelyExploitedCVEsMajorUpgradeSLA * 86400)
case (false, true, false):
slaExtension = TimeInterval(OSVersionRequirementVariables.nonActivelyExploitedCVEsMinorUpdateSLA * 86400)
+ case (true, false, true): // The selected major upgrade does not have CVEs, but the old OS does
+ slaExtension = TimeInterval(OSVersionRequirementVariables.activelyExploitedCVEsMajorUpgradeSLA * 86400)
case (true, true, true):
slaExtension = TimeInterval(OSVersionRequirementVariables.activelyExploitedCVEsMajorUpgradeSLA * 86400)
case (true, true, false):
@@ -271,6 +277,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
case (false, false, false):
slaExtension = TimeInterval(OSVersionRequirementVariables.standardMinorUpdateSLA * 86400)
default: // If we get here, something is wrong, use 90 days as a safety
+ LogManager.warning("SLA Extension logic failed, using 90 days as a safety", logger: sofaLog)
slaExtension = TimeInterval(90 * 86400)
}
@@ -280,10 +287,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
LogManager.notice("SOFA Actively Exploited CVEs: \(activelyExploitedCVEs)", logger: sofaLog)
- // Start setting UI fields
- nudgePrimaryState.requiredMinimumOSVersion = selectedOS!.productVersion
- nudgePrimaryState.sofaAboutUpdateURL = selectedOS!.securityInfo
- nudgePrimaryState.activelyExploitedCVEs = activelyExploitedCVEs
releaseDate = selectedOS!.releaseDate ?? Date()
if requiredInstallationDate == Date(timeIntervalSince1970: 0) {
if OSVersionRequirementVariables.minorVersionRecalculationThreshold > 0 {