Releases: macadmins/outset
Outset 4.3.0.22014 Beta 1
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Fixed
-
Managed profile payload processing (
Login.swift,Payloads.swift, closes #64): three related bugs prevented scripts delivered via MDM managed profiles from running correctly when local Outset directories were empty. -
DMG package installation (
installPackage): corrected a variable assignment bug where the DMG mount path was used as the package path instead of the actual.pkg/.mpkgfile path. Also fixed a loop that overwrote a single variable on each iteration, meaning only the last package in a DMG was ever installed. -
Network timeout (
Boot.swift): the configurednetwork_timeoutpreference value was being divided by 10 before being passed towaitForNetworkUp, causing the actual wait to be ten times shorter than configured. -
Privileged login trigger (
Login.swift): the condition that fires thelogin-privilegedlaunchd trigger used||(OR) instead of&&(AND), meaning the trigger would only fire when both thelogin-privileged-onceandlogin-privileged-everydirectories were non-empty. -
Log file path is now context-aware (
Globals.swift,writeFileLog): Outset runs in both root context (boot, login-privileged, on-demand-privileged) and user context (login-every, login-once, on-demand). The previous single log path (/usr/local/outset/logs/outset.log) is in a root-owned directory, so user-context runs could not write to it. The log path is now determined at runtime: root context continues to log to/usr/local/outset/logs/outset.log; user-context runs log to~/Library/Logs/outset.log. Log file permissions are0o644in both cases (previously0o666). -
LaunchDaemon
Programkey (io.macadmins.Outset.on-demand-privileged.plist, closes #72): theProgramkey was incorrectly typed as an<array>instead of a<string>. All LaunchDaemon plists now use the correct<string>type for theProgramkey as required by launchd.
Added
-
Background script execution: scripts whose filename begins with an underscore (e.g.
_my-task.sh) are now dispatched concurrently on background threads while the remaining foreground scripts continue to execute sequentially. Documentation here -
Ed25519 script signing: scripts can now be signed with an Ed25519 private key, with the signature embedded directly in the script as a
# ed25519: <base64sig>comment. When an MDM-delivered public key (manifest_signing_keypreference) is present, every script must carry a valid embedded signature — scripts without a valid signature are refused with an error log. Documentation here
Changelog
- 675de98 - Made the EA more robust to any future changes in the number of agents/daemons. This should fix #59
- 96023e1 - Added check in case directories we want to look at are missing
- af323b9 - Some initial cleanup and re-arranging to assist with addressing issue #64
- fc44464 - Some more tidy up. Initial work on getting boot-once data recorded. More to do
- c5a6ca6 - Fixes boot-once issue when specifying a boot-once script as an MDM payload. run info is now properly recorded
- 9ace5fe - fix for making sure login-privileged-once only runs once
- fd49645 - more cleanup and comments. Also identified a logic error in removeIgnoredUsers
- b921a27 - update add and remove for ignored users and overrides
- 8f31c21 - Update created by
- 9cd6191 - fix logic issue loading and writing runeonce for boot-once when running as root
- 0ec1681 - Merge pull request #66 from macadmins/bugfix/jamf-ea
- 5bac290 - Merge pull request #65 from macadmins/bugfix/64-managed-profiles
- 737331e - Change program from type array to type string
- e53d1d4 - Merge pull request #67 from macadmins/bugfix/on-demand-privileged
- c873097 - Updated build number to 4.2.1
- 7c08827 - Merge pull request #68 from macadmins/v4.2.1
- 3ff2fb4 - Fix DMG package installation bugs in installPackage
- 8fadd59 - Fix network timeout being 10x shorter than configured value
- 4c34ea6 - Fix privileged login trigger not firing when only one directory has content
- 2d562c4 - Guard against empty array in computeChecksum
- e67b621 - Fix log file permissions and remove force unwraps in Logging and Shell
- 4ccab98 - Eliminate global mutable state; pass consoleUser explicitly (Option B)
- 7068957 - Add OutsetTests target with 27 unit tests
- 264c288 - Add UntestableFunctionality.swift documenting test coverage gaps
- e7fcb6f - Integration testing
- e889ca9 - Version bump
- 24c852b - Updated file permissions for integrated tests
- 044716c - Add background script execution support (closes #69)
- 9f0bfb5 - Update changelog
- 3307f2a - Fix managed profile payload processing bugs (closes #64)
- e34ba8d - Add Ed25519 embedded script signing (closes #70)
- 5a9bfde - Add --verify-script command to validate embedded Ed25519 signatures
- 7536b34 - Enforce MDM-managed requirement for manifest_signing_key
- c70f42e - Merge branch 'fix/payload-processing-64' into code_review
- b1d3397 - Update build workflow to use macos-latest and dynamic Xcode path
- f075c25 - Fix Info.plist version to match project.pbxproj (4.3.0)
- f263f77 - Update CHANGELOG for 4.3.0
- 8dbe841 - Remove stale DEVELOPMENT_TEAM SDK override from Outset Release config
- e180c6b - Context-aware log path: root logs to /usr/local/outset/logs, user to ~/Library/Logs
- 51e28b4 - Add managed profile payload processing fix to CHANGELOG (closes #64)
- b04be4c - Merge pull request #73 from macadmins/code_review
Outset 4.2.0
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
🎉 Highlighted Features
- Support for deploying scripts as mobileconfig payloads https://github.com/macadmins/outset/wiki/Payloads
- Includes script for assistance in generating payload plists
- Updated Jamf pro schema and service status EA https://github.com/macadmins/outset/tree/main/MDM/Jamf%20Pro #59
- Updated Icon - out with circle, in with squircle
🛠️ Fixes
- LaunchAgents+LaunchDaemons - Program is using Array instead of String. Should fix #60
- Fix the checksum all command so that the outset/logs folder is ignored #54
- Fixed link to wiki FAQ in README.md.
🐞 Something not on this list? Please create an issue.
Contributors
@strlng, @HowardGMac, @rodchristiansen, @spacelatte, @bartreardon
Changes
- 072f51e - ADD: JSON Schema for External Applications payload in Jamf Pro
- 9539615 - FIX: Mismatched indentation
- 89fc92c - Initial commit for 4.2.0 More code cleanup and re-arranging Added "on demand privileged" Added initial capability to run scripts contained as base64 bundles in a confir profile (currently nothing calls this)
- 5296d50 - Update README.md
- 7af77c1 - scripts as base64 encoded payloads TODO: - restrict to managed preferences - integrate with standard workflow including checks for run-once - remove debug code
- dc01bf0 - Moved a bunch of stuff around to support running scripts from a preference plist This should now be working for all script types. Some work to do on properly procesing
--add-overridewhich currently prepends the login-once path which causes the override check to not match. - 8f80fe9 - Merge pull request #56 from strlng/patch-1
- 4d91046 - Merge pull request #47 from VentionCo/jamfpro-jsonschema
- e22ceb4 - Fix for issue #54
- da95c68 - Merge pull request #58 from HowardGMac/dev_4.2.0
- 90270b3 - update version number
- ce6c46e - Merge remote-tracking branch 'refs/remotes/origin/dev_4.2.0'
- acbea2d - Fixing Info.plist version so the github action works
- 8c45f52 - Outset icon updated rocket graphic and as squircle
- 121c163 - Merge pull request #61 from rodchristiansen/main
- 9673efe - updating payload code for inclusion of scripts
- 230c085 - Merge remote-tracking branch 'refs/remotes/origin/dev_4.2.0'
- 73ae10e - Add logic to merge multiple script_payloads into one for processing. Add logic for add-override and remove-override to handle payload scripts with "payload=". The alternate is we don't assume
loginOnce.directoryPathif no path is given. Discussion welcome - 78002de - Update payload logic to properly collect payload data from all defaults domains. Added logic to skip a payload if it's not from a managed domain and debug is not enabled.
- 0e47d16 - Updated readme with new outset icon and cleaned up some of the text
- 62125b1 - Update build_outset.zsh
- ef7b4ad - Update build_outset_prerelease_manual.yml
- 345ebc9 - update workflows for macOS 14
- 650cfbc - update to v4 of upload-artifact
- 0e4ff18 - Update build_outset.zsh
- f9edb02 - Fix up processing for on-demand and on-demand-privileged tasks
- 18689ed - fix typo for registering the on demand daemon (was agent instead of daemon)
- 8626559 - update release build workflow
- 4078398 - Added script to generate payload plists for use with MDM
- d123560 - update project file referencing the new outset-payload script
- 2af330b - Updated payloads to use data type instead of string
- a1b1692 - fix(LaunchAgents+LaunchDaemons): Program is using Array instead of String
- 497df79 - Merge pull request #63 from spacelatte/spacelatte/fix-program-array-to-string
- 6499a45 - Update reference from outset-payload.sh to outset-payload
- 6e0d605 - Update build_outset_prerelease_manual.yml
- 5851ba9 - Update build_outset_release_manual.yml
- c01bad2 - Merge pull request #62 from macadmins/dev_4.2.0
Outset 4.2.0.21964 RC 1
This is a release candidate for Outset 4.2.0. Please report any remaining bugs by creating a new issue
Updated information on the new script payloads feature can be found in the wiki along with the outset-payload helper script for generating payloads.
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Changes
- 072f51e - ADD: JSON Schema for External Applications payload in Jamf Pro
- 9539615 - FIX: Mismatched indentation
- 89fc92c - Initial commit for 4.2.0 More code cleanup and re-arranging Added "on demand privileged" Added initial capability to run scripts contained as base64 bundles in a confir profile (currently nothing calls this)
- 5296d50 - Update README.md
- 7af77c1 - scripts as base64 encoded payloads TODO: - restrict to managed preferences - integrate with standard workflow including checks for run-once - remove debug code
- dc01bf0 - Moved a bunch of stuff around to support running scripts from a preference plist This should now be working for all script types. Some work to do on properly procesing
--add-overridewhich currently prepends the login-once path which causes the override check to not match. - 8f80fe9 - Merge pull request #56 from strlng/patch-1
- 4d91046 - Merge pull request #47 from VentionCo/jamfpro-jsonschema
- e22ceb4 - Fix for issue #54
- da95c68 - Merge pull request #58 from HowardGMac/dev_4.2.0
- 90270b3 - update version number
- ce6c46e - Merge remote-tracking branch 'refs/remotes/origin/dev_4.2.0'
- acbea2d - Fixing Info.plist version so the github action works
- 8c45f52 - Outset icon updated rocket graphic and as squircle
- 121c163 - Merge pull request #61 from rodchristiansen/main
- 9673efe - updating payload code for inclusion of scripts
- 230c085 - Merge remote-tracking branch 'refs/remotes/origin/dev_4.2.0'
- 73ae10e - Add logic to merge multiple script_payloads into one for processing. Add logic for add-override and remove-override to handle payload scripts with "payload=". The alternate is we don't assume
loginOnce.directoryPathif no path is given. Discussion welcome - 78002de - Update payload logic to properly collect payload data from all defaults domains. Added logic to skip a payload if it's not from a managed domain and debug is not enabled.
- 0e47d16 - Updated readme with new outset icon and cleaned up some of the text
- 345ebc9 - update workflows for macOS 14
- 650cfbc - update to v4 of upload-artifact
- 0e4ff18 - Update build_outset.zsh
- f9edb02 - Fix up processing for on-demand and on-demand-privileged tasks
- 18689ed - fix typo for registering the on demand daemon (was agent instead of daemon)
- 8626559 - update release build workflow
- 4078398 - Added script to generate payload plists for use with MDM
- d123560 - update project file referencing the new outset-payload script
What's Changed
- Update README.md by @strlng in #56
- JSON Schema for Jamf Pro in #47
- Fix for issue #54 by @HowardGMac in #58
- Outset updated rocket graphic as squircle icon by @rodchristiansen in #61
New Contributors
- @strlng made their first contribution in #56
- @rodchristiansen made their first contribution in #61
Full Changelog: main...dev_4.2.0
Outset 4.2.0.21970 RC2
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Changelog (new since last preview release)
- d123560 - update project file referencing the new outset-payload script
- 2af330b - Updated payloads to use data type instead of string
- a1b1692 - fix(LaunchAgents+LaunchDaemons): Program is using Array instead of String
- 497df79 - Merge pull request #63 from spacelatte/spacelatte/fix-program-array-to-string
- 6499a45 - Update reference from outset-payload.sh to outset-payload
Outset 4.2.0.21959
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
New
Script Payloads
This release contains a feature for deploying scripts as MDM payloads. overrides and run-once are recorded as per usual
Setup:
encode your script as a base64 string: base64 -i /path/to/script.sh -w80
construct a payload in the following format:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>script_payloads[OPTIONAL_IDENTIFIER]</key>
<dict>
<key>ACTION_TYPE</key>
<dict>
<key>SCRIPT_NAME</key>
<string>BASE64_ENCODED_DATA</string>
</dict>
</dict>
</dict>
</plist>ACTION_TYPE can be one of the standard outset folder names, e.g. login-every, login-once etc. You can include multiple action types with additional <key><string> pairs per action.
SCRIPT_NAME can be any unique string. Set the users desktop picture is a valid script name. You can include multiple scripts per action type with additional <key><string> pairs per script.
BASE64_ENCODED_DATA is your base64 encoded script
The parent key by default is <key>script_payloads</key>. Outset will look for this key and process the contents. This key must be unique if deploying multiple profiles so to support this you can add an optional identifier, e.g. <key>script_payloads-VIP_Users</key>. You can deploy multiple profiles to a dingle device and Outset will combine them together for processing.
By default, Outset will only process managed payload scripts (i.e. delivered via MDM). For testing with local profiles in /Library/Preferences/, run outset with the --debug flag
To create an override for a payload delivered script run /usr/local/outset/outset --add-override payload="Script Name"
More detailed documentation will be available in the wiki in the near future.
Changelog
Changes
- 072f51e - ADD: JSON Schema for External Applications payload in Jamf Pro
- 9539615 - FIX: Mismatched indentation
- 89fc92c - Initial commit for 4.2.0 More code cleanup and re-arranging Added "on demand privileged" Added initial capability to run scripts contained as base64 bundles in a confir profile (currently nothing calls this)
- 5296d50 - Update README.md
- 7af77c1 - scripts as base64 encoded payloads TODO: - restrict to managed preferences - integrate with standard workflow including checks for run-once - remove debug code
- dc01bf0 - Moved a bunch of stuff around to support running scripts from a preference plist This should now be working for all script types. Some work to do on properly procesing
--add-overridewhich currently prepends the login-once path which causes the override check to not match. - 8f80fe9 - Merge pull request #56 from strlng/patch-1
- 4d91046 - Merge pull request #47 from VentionCo/jamfpro-jsonschema
- e22ceb4 - Fix for issue #54
- da95c68 - Merge pull request #58 from HowardGMac/dev_4.2.0
- 90270b3 - update version number
- ce6c46e - Merge remote-tracking branch 'refs/remotes/origin/dev_4.2.0'
- acbea2d - Fixing Info.plist version so the github action works
- 8c45f52 - Outset icon updated rocket graphic and as squircle
- 121c163 - Merge pull request #61 from rodchristiansen/main
- 9673efe - updating payload code for inclusion of scripts
- 230c085 - Merge remote-tracking branch 'refs/remotes/origin/dev_4.2.0'
- 73ae10e - Add logic to merge multiple script_payloads into one for processing. Add logic for add-override and remove-override to handle payload scripts with "payload=". The alternate is we don't assume
loginOnce.directoryPathif no path is given. Discussion welcome - 78002de - Update payload logic to properly collect payload data from all defaults domains. Added logic to skip a payload if it's not from a managed domain and debug is not enabled.
- 0e47d16 - Updated readme with new outset icon and cleaned up some of the text
- 345ebc9 - update workflows for macOS 14
- 650cfbc - update to v4 of upload-artifact
- 0e4ff18 - Update build_outset.zsh
Outset 4.2.0.21949
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Changelog
Changes
- 072f51e - ADD: JSON Schema for External Applications payload in Jamf Pro
- 9539615 - FIX: Mismatched indentation
- 89fc92c - Initial commit for 4.2.0 More code cleanup and re-arranging Added "on demand privileged" Added initial capability to run scripts contained as base64 bundles in a confir profile (currently nothing calls this)
- 5296d50 - Update README.md
- 7af77c1 - scripts as base64 encoded payloads TODO: - restrict to managed preferences - integrate with standard workflow including checks for run-once - remove debug code
- dc01bf0 - Moved a bunch of stuff around to support running scripts from a preference plist This should now be working for all script types. Some work to do on properly procesing
--add-overridewhich currently prepends the login-once path which causes the override check to not match. - 8f80fe9 - Merge pull request #56 from strlng/patch-1
- 4d91046 - Merge pull request #47 from VentionCo/jamfpro-jsonschema
- e22ceb4 - Fix for issue #54
- da95c68 - Merge pull request #58 from HowardGMac/dev_4.2.0
- 90270b3 - update version number
- ce6c46e - Merge remote-tracking branch 'refs/remotes/origin/dev_4.2.0'
- acbea2d - Fixing Info.plist version so the github action works
Outset 4.1.2.21936
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Changelog
- Fixed issue where overrides were not being added correctly #41
- Fixed an issue where cleanup trigger was potentially being run in a context that didn't have permissions to clean up the files.
- Some processing logs changes from
.debugto.infoso they always appear in the log without requiring debug to be enabled - Attempt to address conditions where overrides from Outset 3 do not get migrated to
/Library/Preferences#50 - Improvements to
outset-pkg#35 - Added extension attribute script for Jamf Pro to indicate outset agent health
Legacy Outset:
- remove distutils/profiles, bump to 3.0.4 #52
Changes
- cca4e2e - Update Outset.swift
- 75f5645 - ADD: Service status extension attribute for Jamf Pro
- a1d0aa0 - Merge pull request #42 from HowardGMac/fix41
- 97446de - REF: simplify possible values for reporting to the extension attribute
- 2ecc76f - Merge pull request #48 from seanchristians-vention/jamfpro-ea
- 71bd8fe - Update outset-pkg with some additional features
- f953005 - fixes an issue where cleanup trigger was potentially being run in a context that didn't have permissions to clean up the files.
- 27f9f16 - fixes #44 all log content is sent to the log file now
- 1c38f94 - Addresses #49 "Processing" type messages are sent as info instead of debug.
- 8b91181 - Should address #50
- 84ed18f - version number
- ca069c9 - FIX: Expected behaviour when no user is logged in
- cba46a8 - Merge pull request #51 from VentionCo/jamfpro-ea
- ee29f32 - remove distutils/profiles, bump
- bd56546 - Merge pull request #52 from arubdesu/py3.12bugfix
- f3f7926 - reverting 27f9f16
- 45d9bfc - Merge remote-tracking branch 'refs/remotes/origin/dev_4.1.2'
- e1b64f1 - Merge pull request #53 from macadmins/dev_4.1.2
Outset 4.1.2.21935
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Changelog
Changes
- cca4e2e - Update Outset.swift
- 75f5645 - ADD: Service status extension attribute for Jamf Pro
- a1d0aa0 - Merge pull request #42 from HowardGMac/fix41
- 97446de - REF: simplify possible values for reporting to the extension attribute
- 2ecc76f - Merge pull request #48 from seanchristians-vention/jamfpro-ea
- 71bd8fe - Update outset-pkg with some additional features
- f953005 - fixes an issue where cleanup trigger was potentially being run in a context that didn't have permissions to clean up the files.
- 27f9f16 - fixes #44 all log content is sent to the log file now
- 1c38f94 - Addresses #49 "Processing" type messages are sent as info instead of debug.
- 8b91181 - Should address #50
- 84ed18f - version number
- ca069c9 - FIX: Expected behaviour when no user is logged in
- cba46a8 - Merge pull request #51 from VentionCo/jamfpro-ea
- ee29f32 - remove distutils/profiles, bump
- bd56546 - Merge pull request #52 from arubdesu/py3.12bugfix
- f3f7926 - reverting 27f9f16
- 45d9bfc - Merge remote-tracking branch 'refs/remotes/origin/dev_4.1.2'
Outset 4.1.2.21929
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Changelog
Changes
- cca4e2e - Update Outset.swift
- 75f5645 - ADD: Service status extension attribute for Jamf Pro
- a1d0aa0 - Merge pull request #42 from HowardGMac/fix41
- 97446de - REF: simplify possible values for reporting to the extension attribute
- 2ecc76f - Merge pull request #48 from seanchristians-vention/jamfpro-ea
- 71bd8fe - Update outset-pkg with some additional features
- f953005 - fixes an issue where cleanup trigger was potentially being run in a context that didn't have permissions to clean up the files.
- 27f9f16 - fixes #44 all log content is sent to the log file now
- 1c38f94 - Addresses #49 "Processing" type messages are sent as info instead of debug.
- 8b91181 - Should address #50
- 84ed18f - version number
Outset 4.1.1.21918
Notes
This is a version of Outset created by GitHub Actions.
Outset.app has been signed and notarized. The package has been signed, notarized and stapled.
Changelog
Changes
- e1d49b5 - Updated README.md with current info. Also moved some content around and linked classic outset to the copy contained in this repo
- 403a949 - Removed some typos
- 9ebcd3b - Fix issue where on-demand cleanup wasn't happening. Added cleanup of the cleanup trigger to the cleanup logic (yo dawg) Also tidied up some of the SwiftLint stuff and moved disabled rules to the
.swiftlint.ymlfile - ef84e94 - ugh, git cleanup - should be in line with main now
- e5197fa - use marketing version instead of static version in info.plist
- 140167e - ugh
- 101dab3 - keeping the linter happy
- 1cdcbbc - Moved things around so relevant components are easier to locate Some minor function renaming
- e3cd80a - Folder re-name bumped version to 4.1.0
- f03950b - update logging and output routines so error and debug are sent to stderr instead of stdout
- 70bdfcd - Added log rotate function - crude for now, should probably look at https://github.com/apple/swift-log package
- bcf8537 - moved some log variables around
- ac1c801 - Merge pull request #37 from macadmins/dev_4.1.0
- 9b6168a - Fixes #38
- 74f0bdc - ensure spelling is consistent
- feb75cc - Fix postinstall items
- 532e629 - Merge pull request #40 from macadmins/hotfix-override
- 457c116 - Merge pull request #39 from WardsParadox/main