New Features
- Configuration Drift Tracker — snapshot policies, configuration profiles, and scripts to a local SQLite database. Each subsequent snapshot is diffed against the previous; Added, Modified, and Removed changes appear in a chronological timeline grouped by date. Tap any row for a field-level diff sheet.
- Fleet Health Score — computed 0–100 score (A–F grade) based on FileVault, SIP, Gatekeeper, Firewall, patch compliance, and stale-device ratio. Shown as a circular gauge in Security Posture. Dock tile badge and macOS notification fire when the score drops below a configurable threshold.
- DDM Monitor — per-device DDM declaration status (identifier, result, errors) and a fleet-wide overview showing succeeded/failed/pending counts per declaration.
- Audit Dashboard — built-in security and hygiene checks across your Jamf Pro environment, surfaced as severity-rated findings (Critical · High · Medium · Low · Info) with full remediation guidance.
- Device Correlation — when both Jamf Pro and Jamf Protect are connected, join device inventories by serial number. Filter by match state (Matched · Pro Only · Protect Only) and inspect both sides in a split detail panel.
- Settings Inspector — browse all Jamf Pro settings endpoints exposed by
jamf-cliin a searchable two-pane layout.
Improvements & Fixes
- Resolved GUI rendering artifacts in Blueprints and Compliance Benchmarks.
- Improved overall application stability.
- Addressed multiple accessibility issues (VoiceOver labels, reduce-motion support, keyboard focus for list rows and filter chips).
- Fixed XPC communication and App Sandbox integration issues.
- Corrected checksum validation when downloading
jamf-cli. - Fixed the Overview title bar display issue.
Debug Logging
JamfDash v0.6 adds comprehensive structured logging via macOS Unified Logging (com.jamfdash subsystem):
- Per-
jamf-clicall timing (duration + response size) - App phase transitions (
AppStatecategory) - Cache-hit skips in Fleet, Security, and Devices ViewModels
- Sparkle update check and download events (
Sparklecategory) OSSignposterintervals on main sync task groups for Instruments profiling
Stream all debug messages:
log stream --predicate 'subsystem == "com.jamfdash"' --level debug
CLI timing only:
log stream --predicate 'subsystem == "com.jamfdash" AND category == "CLIManager"' --level debug
Command arguments are .private by default. To reveal them, drop a plist into /Library/Preferences/Logging/Subsystems/com.jamfdash.plist containing Enable-Private-Data = true, or install the included JamfDash-Debug-Logging.mobileconfig on fleet-managed Macs.
Full category reference and stream examples are in the README → Debug Logging section.
macOS 27 Compatibility
@State is now a Swift macro in macOS 27. Initialising a state property at declaration time and inside init() no longer compiles. JamfDashApp.swift was updated to use State(initialValue:) as the single initialisation path.