Skip to content

Releases: macadmins/nudge

Nudge 2.0.2.81720

22 Jul 11:25
bf2f59f
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

Requires macOS 12.0 and higher.

Changed

  • With a default of false, many admins do not set the randomDelay, resulting in an increase in SOFA queries every 30 minutes due to the default LaunchAgent. Moving forward, this will be defaulted to true and an organization must actively opt-out of this behavior.

Changes

No Changes.

Nudge 2.0.1.81717

19 Jul 21:58
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

Requires macOS 12.0 and higher.

Fixed

  • Some incorrect logic was applied to the requiredInstallatonDate when using the new gracePeriodInstallDelay

Added

  • To ease "Unsupported UI" testing, you can now pass -simulate-os-version as an argument to override the built-in OS check.
    • Ex: -simulate-os-version "14.4.1"
  • To ease "Unsupported UI" testing, you can now pass -simulate-hardware-id as an argument to override the built-in hardware ID check.
    • Ex: -simulate-hardware-id "J516cAP"

Changes

  • 61997a6 - fix logic in gracePeriodInstallDelay
  • d1015cf - add simulated logic arguments
  • d67bbd8 - add schema for testing
  • b1600c1 - 2.0.1 version

Nudge 2.0.0.81713

18 Jul 21:05
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

Requires macOS 12.0 and higher.

Breaking Changes

  • macOS 11 is now unsupported
    • Please use Nudge 1.x releases for macOS 11
  • Due to implementing markdown support, many of the elements within Nudge may no longer be in bold if you customize them.
    • To work around this please add ** elements to these customizations
    • For example: The mainContentNote value of Important Notes would become **Important Notes**
  • The SOFA feed is opt-out, which included the new Unsupported UI. If you do not want the Unsupported UI features, you will need to actively opt-out of these options.

Changed

  • Now built on Swift 5.10, Xcode 15.4 and macOS 14
  • New Xcode Scheme -bundle-mode-profile to test profile logic
    • -bundle-mode has been renamed to -bundle-mode-json
  • You can now pass two formats of strings to requiredInstallationDate
    • 2025-01-01T00:00:00Z for UTC
    • 2025-01-01T00:00:00 for local time
    • If you are using a MDM profile and passing the original Date key, you must change to utilizing String as Apple requires ISO8601 formatted dates
  • You can now pass the strings latest, latest-supported and latest-minor in the requiredMinimumOSVersion key
    • latest: always force latest release and if the machine can't this version, show the new "unsupported device" user interface
    • latest-supported: always get the latest version sofa shows that is supported by this device
    • latest-minor: stay in the current major release and get the latest minor updates available
    • This requires utilizing the SOFA feed features to properly work, which is opt-out by default
    • Nudge will then utilize two date integers to automatically calculate the requiredInstallationDate
      • activelyExploitedCVEsMajorUpgradeSLA under the osVersionRequirement key will default to 14 days
      • activelyExploitedCVEsMinorUpdateSLA under the osVersionRequirement key will default to 14 days
      • nonActivelyExploitedCVEsMajorUpgradeSLA under the osVersionRequirement key will default to 21 days
      • nonActivelyExploitedCVEsMinorUpdateSLA under the osVersionRequirement key will default to 21 days
      • standardMajorUpgradeSLA under the osVersionRequirement key will default to 28 days
      • standardMinorUpdateSLA under the osVersionRequirement key will default to 28 days
      • These dates are calculated against the ReleaseDate key in the SOFA feed, which is UTC formatted. Local timezones will not be supported with the automatic sofa feed unless you use a custom feed and change this value yourself, following ISO-8601 date formats
        • To artificially delay the SOFA nudge events, see the details below for nudgeMajorUpgradeEventLaunchDelay and nudgeMinorUpdateEventLaunchDelay
      • If you'd like to not have nudge events for releases without any known CVEs, please configure the disableNudgeForStandardInstalls key under optionalFeatures to true
  • You can now disable the Days Remaining To Update: item on the left side of the UI.
    • Configure the showDaysRemainingToUpdate key under userInterface to false

Fixed

  • screenshotDisplay view had a bug that may result in the screenshot being partially cut off or zoomable
  • fallbackLanguage would return the wrong language even when specified in the configuration
  • The timer controller logic was utilizing hours remaining vs seconds, which resulted in the elapsedRefreshCycle being used at the final hour of the nudge event vs the imminentRefreshCycle. This has been corrected to calculate the seconds remaining.
  • More descriptive logs when loading json/mdm profile keys
  • Refactor portions of the softwareupdate logic to reduce potential errors
  • Fixed errors when moving to Swift 5.10
  • Fixed wrong requiredInstallationDate calculations when using Non-Gregorian calendars
  • Fixed UI logic when requiredInstallationDate is under an hour and allowLaterDeferralButton is set to false

Added

  • To artificially change the requredInstallationDate thereby giving your users a default grace period for all Nudge events updates, please configure the nudgeMajorUpgradeEventLaunchDelay and nudgeMinorUpdateEventLaunchDelay keys under userExperience in amount of days.
  • A local image path can now be specified for the notification event when Nudge terminates and application
    • Please configure the applicationTerminatedNotificationImagePath key under userInterface
    • Due to limitations within Apple's API, a local path is only supported at this time
  • An admin can now alter the text when Nudge terminates and application
    • Please configure the applicationTerminatedTitleText and applicationTerminatedBodyText keys under the updateElements key in UserInterface
  • Remote URLs can now be used on iconDarkPath, iconLightPath, screenShotDarkPath and screenShotLightPath
    • Please note that these files will be downloaded each time Nudge is ran and there is currently not a way to cache these objects.
    • If these files fail to download, a default company logo will be shown.
  • Actively Exploited CVEs in the left sidebar
    • To disable this item, please configure the showActivelyExploitedCVEs key under userInterface to false
  • An admin can now allow users to move the Nudge window with userExperience key allowMovableWindow
  • To ease testing, you can now pass -disable-randomDelay as an argument to ignore the randomDelay key if it is set by a JSON or mobileconfig
  • Basic SwiftUI support for Markdown text options
    • Utilizing Apple's markdown features, you can now utilize, bold, italic, underline, subscript and url links directly into any of the text fields
  • SOFA feed support
    • Set the utilizeSOFAFeed key false under optionalFeatures to disable this feature
    • Nudge will by default check the feed every 24 hours and save a cache file under ~/Library/Application Support/com.github.macadmins.Nudge/sofa-macos_data_feed.json
    • In order to change this, please configure the refreshSOFAFeedTime key under optionalFeatures in seconds
    • If you are utilizing a custom sofa feed, please configure the customSOFAFeedURL key under optionalFeatures
  • "Unsupported device" UI in standard mode that utilizes the SOFA feed
    • Set the attemptToCheckForSupportedDevice key false under optionalFeatures to disable this feature
    • There are new keys to set all of text fields: actionButtonTextUnsupported, mainContentHeaderUnsupported, mainContentNoteUnsupported, mainContentSubHeaderUnsupported, mainContentTextUnsupported, subHeaderUnsupported under the updateElements key in UserInterface
    • unsupportedURL and unsupportedURLs can change the information button itself, but it will remain in the osVersionRequirement key with unsupportedURLs and unsupportedURLs.
    • An icon will appear as an overlay on top of the company image to further emphasize the device is no longer supported
  • An admin can now show the requiredInstallationDate as a item on the left side of nudge.
    • To enable this, please configure the showRequiredDate key under userInterface to true
    • You can also expirement with the format of this date through the key requiredInstallationDisplayFormat under userInterface
    • Be aware that the format you desire may not look good on the UI.
  • Nudge can now honor the current cycle timers when user's press the Quit button.
    • Set the honorCycleTimersOnExit key to true under optionalFeatures to enable this feature
    • Issue 548
  • When the device is running macOS 12.3 or higher, Nudge uses the delta logic for macOS Upgrades
  • Nudge can now bypass activations and re-activations when a macOS update is Downloading, Preparing or Staged for installation.
    • To disable this, please configure the acceptableUpdatePreparingUsage key under optionalFeatures to false
    • Issue 555 and 571
  • Nudge can now attempt to honor DoNotDisturb/Focus times
    • To enable this, please configure the honorFocusModes key in optionalFeatures to true
    • This is an expiremental feature and may not work due to significant changes that Apple has designed for detecting these events.
  • Nudge now attempts to reload the preferences if the MDM profile is updated

Changes

Read more

Nudge 1.1.16.81564

14 Mar 15:12
ea34aba
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

This will be the final Nudge release for macOS 11 and potentially other versions of macOS.

A subsequent regression caused by the v1.1.14 refactor was found in v1.1.15.

There are currently no known regressions from v1.1.13.

Changed

  • Nudge no longer resets or writes the User's plist file (~/Library/Preferences/com.github.macadmins.Nudge.plist) when there is a broken configuration, missing configuration or Nudge is unable to download a remote configuration file.
    • This impacted the following keys: requiredInstallationDate, userDeferrals, userQuitDeferrals, and userSessionDeferrals
    • When in this state, Nudge would improperly trigger the following log event: New Nudge event detected - resetting all deferral values
    • Addresses #561

Fixed

  • When using terminateApplicationsOnLaunch, Nudge was terminating applications listed in blockedApplicationBundleIDs prior to the requiredInstallationDate
    • Application launches post Nudge launching were not impacted, but previously launched applications were.
    • Addresses #562

Changes

  • 26e7fc1 - try and move back to zsh with --no-rcs in the shebangs

Nudge 1.1.16.81563

14 Mar 01:04
ea34aba
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

This will be the final Nudge release for macOS 11 and potentially other versions of macOS.

A subsequent regression caused by the v1.1.14 refactor was found in v1.1.15.

There are currently no known regressions from v1.1.13.

Changed

  • Nudge no longer resets or writes the User's plist file (~/Library/Preferences/com.github.macadmins.Nudge.plist) when there is a broken configuration, missing configuration or Nudge is unable to download a remote configuration file.
    • This impacted the following keys: requiredInstallationDate, userDeferrals, userQuitDeferrals, and userSessionDeferrals
    • When in this state, Nudge would improperly trigger the following log event: New Nudge event detected - resetting all deferral values
    • Addresses #561

Fixed

  • When using terminateApplicationsOnLaunch, Nudge was terminating applications listed in blockedApplicationBundleIDs prior to the requiredInstallationDate
    • Application launches post Nudge launching were not impacted, but previously launched applications were.
    • Addresses #562

Changes

Nudge 1.1.15.81559

07 Mar 15:15
ca0df33
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

This will be the final Nudge release for macOS 11 and potentially other versions of macOS.

Due to several bugs found in the v1.1.14 release, including many subsequent v1.1.14.x builds, this release is being created to address them.

There are currently no known regressions from v1.1.13.

Added

  • Essentials Package
    • This signed and notarized package contains the Nudge application and LaunchAgent
  • Additional shortcut keys to ignore list when Nudge is in the forefront
  • Security.md file added for pentesters to send potential security issues within the project

Changed

  • macOS upgrade logic now uses /System/Library/CoreServices/Software Update.app as the default path for unknown installer versions
  • The LaunchAgent and Logger packages are now signed and notarized
  • The Zsh package scripts are now embedded into the Nudge application
    • Please note that if you install the LaunchAgent or Logger packages, you will need to install them after the Nudge application package. Failure to do this will result in the postinstall scripts not triggering.
  • The postinstall script is now in Bash, but calls Zsh without global/user environment variables
  • Moved the preinstall script logic to postinstall
    • This materially changes the Nudge application package and the Suite package

Fixed

  • All known regressions in v1.1.14
  • Some ignored shortcut keys were improperly designed and not working
  • userSessionDeferrals were not being accurately calculated
  • When using calendarDeferralUnit, the upper bounds of the calendar may return a negative integer, causing Nudge to crash.
    • The behavior will now return 0

Changes

  • e2f7c1b - fix notification center triggers on app launches
  • 002f305 - fix gracePeriodInstallDelay
  • cd03a8c - fix userSessionDeferral log events
  • 17a249f - Default to /System/Library/CoreServices/Software Update.app for backup major app upgrade
  • c29a2fe - only log userSessionDeferrals after first launch
  • 039296c - fix actionButtonPath for major upgrades and add more logs
  • 5a06353 - initial security.md
  • 2defb16 - Fixed minor typo
  • 90dcb61 - Move installer scripts within Nudge.app
  • fe21c79 - bring back legacy logic for now
  • 91f433a - move everything to postinstalls and cleanup duplicate code
  • 89c8a0b - fix upper bounds in calendar range
  • f860e46 - Create a new Essentials package
  • 67232e3 - only run the logger postinstalls if they exist
  • bedf0a5 - bump to v1.1.15
  • ca0df33 - Merge pull request #558 from macadmins/development

Nudge 1.1.15.81560

11 Mar 18:22
ca0df33
Compare
Choose a tag to compare
Nudge 1.1.15.81560 Pre-release
Pre-release

Notes

This is a pre-release version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

This will be the final Nudge release for macOS 11 and potentially other versions of macOS.

Due to several bugs found in the v1.1.14 release, including many subsequent v1.1.14.x builds, this release is being created to address them.

There are currently no known regressions from v1.1.13.

Added

  • Essentials Package
    • This signed and notarized package contains the Nudge application and LaunchAgent
  • Additional shortcut keys to ignore list when Nudge is in the forefront
  • Security.md file added for pentesters to send potential security issues within the project

Changed

  • macOS upgrade logic now uses /System/Library/CoreServices/Software Update.app as the default path for unknown installer versions
  • The LaunchAgent and Logger packages are now signed and notarized
  • The Zsh package scripts are now embedded into the Nudge application
    • Please note that if you install the LaunchAgent or Logger packages, you will need to install them after the Nudge application package. Failure to do this will result in the postinstall scripts not triggering.
  • The postinstall script is now in Bash, but calls Zsh without global/user environment variables
  • Moved the preinstall script logic to postinstall
    • This materially changes the Nudge application package and the Suite package

Fixed

  • All known regressions in v1.1.14
  • Some ignored shortcut keys were improperly designed and not working
  • userSessionDeferrals were not being accurately calculated
  • When using calendarDeferralUnit, the upper bounds of the calendar may return a negative integer, causing Nudge to crash.
    • The behavior will now return 0

Changes

  • 2f38780 - Do not write userPrefs if config is broken or unavailable

Nudge 1.1.14.81549

27 Feb 19:29
92a5e13
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

This will be the final Nudge release for macOS 11 and potentially other versions of macOS.

If there are any bugs present in the v1.1.14 branch, subsequent v1.1.14.x builds may be created to address them for legacy macOS versions.

Added

  • screenShotAltText key to customize the accessible hover over on screen shots

Changed

  • GitHub Actions now use Xcode 15.2 for building/signing/notarizing Nudge
  • All code has been rewritten across all 29 Swift/SwiftUI files and Test files
  • Many small code paths have had increased safety added to them
  • Slight changes to the unit tests based on new methods created

Fixed

Changes

  • e2f7c1b - fix notification center triggers on app launches
  • 002f305 - fix gracePeriodInstallDelay
  • cd03a8c - fix userSessionDeferral log events
  • 17a249f - Default to /System/Library/CoreServices/Software Update.app for backup major app upgrade
  • c29a2fe - only log userSessionDeferrals after first launch
  • 039296c - fix actionButtonPath for major upgrades and add more logs

Nudge 1.1.14.81535

02 Feb 16:05
Compare
Choose a tag to compare

Notes

This is a pre-release version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

This will be the final Nudge release for macOS 11 and potentially other versions of macOS.

If there are any bugs present in the v1.1.14 branch, subsequent v1.1.14.x builds may be created to address them for legacy macOS versions.

Added

  • screenShotAltText key to customize the accessible hover over on screen shots

Changed

  • GitHub Actions now use Xcode 15.2 for building/signing/notarizing Nudge
  • All code has been rewritten across all 29 Swift/SwiftUI files and Test files
  • Many small code paths have had increased safety added to them
  • Slight changes to the unit tests based on new methods created

Fixed

Changes

  • 4bbf22e - bump test json to 2025-01-01
  • 376a165 - fix all base64 inconsistent framing
  • 3eef2fc - Move to Xcode 15.1 for builds
  • e8a3f17 - first major refactor of most swiftui code
  • 4aee8ee - bump to v1.1.14
  • 8f0b3e5 - second large refactor of ui logic
  • 41b1475 - refactor camera logic and fix compiling errors
  • ca00622 - first (giant) refactor of Utils.swift
  • b0fc6f0 - more utilities refactoring
  • 4440161 - finish utilities refactor
  • 1b82018 - Utils.swift - alphabetize and complete camera struct
  • 7b63156 - mark remaining files to refactor so I dont forget
  • a618cfb - finish defaults refactor
  • e2a18f5 - finish preferences swift file refactor
  • e147e21 - fix a todo
  • 8436273 - finish preferences structure refactor
  • 9655c4b - remove all remaining .public calls for logs
  • 444b3bf - finish the main file refactoring
  • 59f42a2 - quick fix for the unit tests
  • 7663eaa - actually fix nudge tests
  • 911b47b - add provisional changelog
  • 1b1fcc9 - fix privacy on logging
  • ca36988 - fix issue where there is not a "default" targetedOSVersionsRule
  • 47bc9b5 - correctly handle file paths for actionButtonPath if it is not passed with file://
  • b1af336 - use xcode 15.2
  • bdb3180 - finish v1.1.14
  • 1889e2f - potentially fix some debug lines for the json url
  • 5912309 - actually fix log event

Nudge 1.1.13.81510

03 Jan 15:48
Compare
Choose a tag to compare

Notes

This is a version of Nudge created by GitHub Actions.
Nudge.app has been signed and notarized. The package has been signed, notarized and stapled.

By default Nudge looks for a com.github.macadmins.Nudge.json file located in /Library/Preferences. If you would like to use an alternative path, please read the README or the WIKI

About the LaunchAgent

This is a basic launch agent that opens Nudge twice an hour, every 30 minutes.
If you would like to reduce the amount of times Nudge launches per day, it is recommended to create your own LaunchAgent.

Changelog

Fixed

Changes

  • 24bd3ff - Added alt text
  • 800f6e4 - Removed screenShotAltText from UpdateElement initializer and reordered UserInterface initializer with screenShotAltText after screenShotLightPath.
  • 74e5a30 - Updated screenShotAltText to reside in UpdateElement. Updated Example Assets with screenShotAltText alterations.
  • eb58016 - move to 15.0.1 xcode
  • f4ca968 - bump test json to 2025-01-01
  • df4dbfd - fix all base64 inconsistent framing
  • a095523 - Move to Xcode 15.1 for builds