github dan-snelson/DDM-OS-Reminder v1.4.0
DDM OS Reminder (1.4.0)

latest releases: v2.3.0, v2.3.0rc2, v2.3.0rc1...
2 months ago

With quality-of-life improvements for both end-users and Mac Admins alike, version 1.4.0 is what version 1.0.0 should have been from the start

18-Nov-2025

  • (Reluctantly) added swiftDialog installation detection
  • Added meetingDelay variable to pause reminder display until meeting has completed (Issue #14; thanks for the suggestion, @sabanessts!)
  • Added Resources/createSelfExtracting.zsh script to create self-extracting version of assembled script
  • Updated Resources/README.md to include "Assemble DDM OS Reminder" and "Create Self-extracting Script" instructions
  • Re-re-refactored installedOSvsDDMenforcedOS to include @RGBpixel's recent discovery of setPastDuePaddedEnforcementDate (thanks again, @RGBpixel!)
  • Added daysBeforeDeadlineDisplayReminder variable to better align with — or supersede — Apple's behavior of when reminders begin displaying before DDM-enforced deadline (thanks for the suggestion, @kristian!)
  • Added Resources/JamfEA-DDM_Executed_OS_Update_Date.zsh script to report the date when the DDM-enforced macOS update was executed
  • Removed placeholder DDM-OS-Reminder End-user Message.zsh from ddmOSReminder.zsh; use Resources/assembleDDMOSReminder.zsh to assemble your organization's customized script instead

🆕 Pause reminder display until meeting has ended 🆕

tail -f /var/log/org.churchofjesuschrist.log 
dorm (1.4.0): 2025-11-17 04:30:06 - [PRE-FLIGHT]      Current Logged-in User ID: 502
dorm (1.4.0): 2025-11-17 04:30:06 - [PRE-FLIGHT]      Complete
dorm (1.4.0): 2025-11-17 04:30:06 - [NOTICE]          Installed OS Version: 26.0.1
dorm (1.4.0): 2025-11-17 04:30:06 - [INFO]            DDM-enforced OS Version: 26.1
dorm (1.4.0): 2025-11-17 04:30:06 - [INFO]            DDM-enforced OS Version Deadline: Thu, 20-Nov-2025, 6:00 p.m.
dorm (1.4.0): 2025-11-17 04:30:06 - [NOTICE]          Check dan's Display Sleep Assertions
dorm (1.4.0): 2025-11-17 04:30:06 - [INFO]            Found the following Display Sleep Assertion(s): pid 40742(MSTeams)
dorm (1.4.0): 2025-11-17 04:30:06 - [INFO]            Check 1 of 15: Display Sleep Assertion still active; pausing reminder. (Will check again in 5 minute(s).)
dor  (1.4.0): 2025-11-17 04:30:07 - [NOTICE]          LaunchDaemon Status
dor  (1.4.0): 2025-11-17 04:30:08 -                   42953   0       org.churchofjesuschrist.dor
displayAssertionsArray=( 'pid 40742(MSTeams): [0x0001df8800058453] 00:23:24 NoDisplaySleepAssertion named: "Microsoft Teams Call in progress"  ' )
dorm (1.4.0): 2025-11-17 04:35:07 - [INFO]            Found the following Display Sleep Assertion(s): pid 40742(MSTeams)
dorm (1.4.0): 2025-11-17 04:35:07 - [INFO]            Check 2 of 15: Display Sleep Assertion still active; pausing reminder. (Will check again in 5 minute(s).)
displayAssertionsArray=( 'pid 40742(MSTeams): [0x0001df8800058453] 00:28:24 NoDisplaySleepAssertion named: "Microsoft Teams Call in progress"  ' )
dorm (1.4.0): 2025-11-17 04:40:07 - [INFO]            Found the following Display Sleep Assertion(s): pid 40742(MSTeams)
dorm (1.4.0): 2025-11-17 04:40:07 - [INFO]            Check 3 of 15: Display Sleep Assertion still active; pausing reminder. (Will check again in 5 minute(s).)
displayAssertionsArray=( 'pid 40742(MSTeams): [0x0001df8800058453] 00:33:24 NoDisplaySleepAssertion named: "Microsoft Teams Call in progress"  ' )
dorm (1.4.0): 2025-11-17 04:45:07 - [INFO]            Found the following Display Sleep Assertion(s): pid 40742(MSTeams)
dorm (1.4.0): 2025-11-17 04:45:07 - [INFO]            Check 4 of 15: Display Sleep Assertion still active; pausing reminder. (Will check again in 5 minute(s).)
displayAssertionsArray=( 'pid 40742(MSTeams): [0x0001df8800058453] 00:38:24 NoDisplaySleepAssertion named: "Microsoft Teams Call in progress"  ' )
dorm (1.4.0): 2025-11-17 04:50:07 - [INFO]            dan's Display Sleep Assertion has ended after 20 minute(s).
dorm (1.4.0): 2025-11-17 04:50:07 - [NOTICE]          Presentation ended early; proceeding with reminder.
dorm (1.4.0): 2025-11-17 04:50:07 - [NOTICE]          Login Trigger Pause: Random 30 to 90 seconds
dorm (1.4.0): 2025-11-17 04:50:07 - [INFO]            Pausing for 1 minute(s), 29 second(s) …
dorm (1.4.0): 2025-11-17 04:51:37 - [NOTICE]          Display Dialog Window

🆕 Deadline vs. DDM-enforced Restart Date / Time 🆕

Special thanks to @RGBpixel for discovering Apple’s setPastDuePaddedEnforcementDate entry (also in /var/log/install.log), which should now make the past-deadline, DDM-enforced Restart Date / Time shown in the swiftDialog-generated message exactly match what’s displayed in the native macOS notification.


🆕 Days Before Deadline Display Reminder 🆕

To better align with Apple's documentation — as pointed out by @acodega — a new daysBeforeDeadlineDisplayReminder variable allows the Mac Admin to control how many days before the DDM-enforced deadline users will begin seeing reminders. (Thanks for the suggestion, @kristian!)


Full Changelog: v1.3.0...v1.4.0

Don't miss a new DDM-OS-Reminder release

NewReleases is sending notifications on new releases.