Skip to content

Commit 5318575

Browse files
authored
4.0.0
## 16-Jul-2026 - Raised the minimum required swiftDialog version to `3.1.0.4994` and refactored pre-flight checks to skip redundant production package downloads when the installed release already matches the latest production build - Added JSON health reporting with optional Splunk HTTP Event Collector (HEC) delivery, plus stricter cached-report validation so failed cached uploads no longer look like successful report generation - Added the Inspect Mode-flavored end-user report (`inspectSummaryPreset="on"`) for `Self Service`, including cached replay via `inspectReplayMaximumAgeSeconds`, `Next Steps`, `Quick Actions`, a conditional `Remediation Guide`, status-aware bento-grid cards, and a stronger unhealthy-results hierarchy - Updated the generated and detached Preset 6 Inspect configs and demo assets for swiftDialog `3.1.0.4979` compliance findings with live compliance plist sources, trigger/readiness/result control paths, source-level labels, plist-backed detail sheets, non-plist `detailOverlay` support, renderer-owned 6 / 12 / 24 / 36pt spacing, an explicit `12`-point bento-grid gap, and stricter validation for highlight content - Refactored full `Silent` health-check runs to write `/var/tmp/MacHealthCheck-Inspect-Config.json` and `/var/tmp/MacHealthCheck-Inspect-Compliance.plist` without launching swiftDialog - Refactored `Silent` with `splunkOperationMode=production` to suppress non-Splunk console output while still logging fully to `scriptLog`, skip `jamf recon`, and return success when local report generation plus Splunk HEC delivery succeed regardless of recorded health findings - Added Force Fresh Run support for `Silent` with `splunkOperationMode=production`, including the `/var/tmp/MacHealthCheck-Force-Fresh-Run` one-shot trigger file, Script Parameter 11 `forceFreshRun`, source-level `reportDebug`, and cached local Splunk report removal before fresh report generation - Added Client-Side Cache nightly report generation, Jamf Pro cached Splunk upload optimization, LaunchDaemon deployment for daily `Silent` report refresh with deterministic per-Mac jitter around 1:23 a.m., and LaunchDaemon-only loginwindow `lastUserName` fallback for user-scoped checks when no GUI user is active - Sanitized the client-side script copy so it does not perform Jamf inventory submission, routed LaunchDaemon stdout/stderr to `/dev/null` to prevent duplicate prefixed `Silent` log lines, and normalized client-side cache, LaunchDaemon validation/loading, external-check helper, and user-context command-preview logging - Added `checkWiFiStrength()` and enhanced Wi-Fi Strength test reporting; thanks, @kgolden-code and thanks for PR #90, @HowardGMac! - Added `checkEntraIDRegistration()` to Jamf Pro-specific checks and included `identity.entraIDRegistration` in JSON reports and Inspect Mode summaries - Refactored Palo Alto GlobalProtect-related code to support connected-non-pa status, safe plist reads, disconnected-as-warning behavior, and normalized external-check output; inspired by @kgolden-code's PR #88 - Refactored `checkHomebrewStatus()` to more accurately reflect Homebrew's actual installation status and `checkElectronCornerMask` to reduce execution time - Updated Free Disk Space and folder size/item count reporting info; thanks for PR #89, @HowardGMac! - Refactored `updateComputerInventory()` to warn end users when `jamf recon` fails and added a `90`-second timeout with timeout-specific logging and messaging - Refactored the final standard dialog to distinguish warning-only results from failures, showing `Computer Needs Attention` with an amber exclamation mark and returning exit code `0` when no checks failed - Removed `displayFailureNotification()` in favor of the Inspect Mode-flavored report - Improved external-check result parsing, logging, and client-side cache installs - Documented PR #684 tolerant scalar decoding while continuing to emit strictly typed JSON, and refreshed tracked Preset 6 demo assets and Inspect Mode documentation
1 parent aab6841 commit 5318575

57 files changed

Lines changed: 10125 additions & 1025 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.codex/config.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
cli_auth_credentials_store = "keyring"
2+
3+
[features]
4+
codex_hooks = true

.codex/hooks.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"hooks": {
3+
"SessionStart": [
4+
{
5+
"matcher": "startup|resume",
6+
"hooks": [
7+
{
8+
"type": "command",
9+
"command": "echo 'CAVEMAN MODE ACTIVE. Rules: Drop articles/filler/pleasantries/hedging. Fragments OK. Short synonyms. Pattern: [thing] [action] [reason]. [next step]. Not: Sure! I would be happy to help you with that. Yes: Bug in auth middleware. Fix: Code/commits/security: write normal. User says stop caveman or normal mode to deactivate.'",
10+
"timeout": 5,
11+
"statusMessage": "Loading caveman mode"
12+
}
13+
]
14+
}
15+
]
16+
}
17+
}

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
name: Bug Report
2+
description: Something is sideways with Mac Health Check
3+
title: "[Bug]: "
4+
labels: ["bug"]
5+
assignees:
6+
- dan-snelson
7+
body:
8+
- type: markdown
9+
attributes:
10+
value: |
11+
**Thank you** for taking time to file a bug report for Mac Health Check!
12+
13+
Please complete this form with as much detail as possible.
14+
15+
Before filing, retest with the latest Mac Health Check release or prerelease you can deploy, review the current documentation at https://snelson.us/mhc, and check whether the issue is specific to swiftDialog by reviewing open upstream issues.
16+
17+
If you want to discuss first, Mac Admins Slack [#mac-health-check](https://slack.com/app_redirect?channel=C0977DRT7UY) is available.
18+
19+
- type: checkboxes
20+
id: preflight
21+
attributes:
22+
label: Before you submit
23+
options:
24+
- label: I reviewed the current documentation and reproduced this with the latest Mac Health Check release or prerelease available to me.
25+
required: true
26+
- label: I reviewed open swiftDialog issues when the problem appears related to dialog rendering or UI behavior.
27+
required: true
28+
29+
- type: input
30+
id: installed-macos-version
31+
attributes:
32+
label: Installed macOS version
33+
description: From About This Mac or `sw_vers -productVersion`
34+
placeholder: "e.g. 15.7.5"
35+
validations:
36+
required: true
37+
38+
- type: input
39+
id: script-version
40+
attributes:
41+
label: Script version
42+
description: Which Mac Health Check version are you deploying?
43+
placeholder: "e.g. 4.0.0"
44+
validations:
45+
required: true
46+
47+
- type: input
48+
id: swiftdialog-version
49+
attributes:
50+
label: swiftDialog version
51+
description: From `dialog --version`
52+
placeholder: "e.g. 3.1.0.4979"
53+
validations:
54+
required: true
55+
56+
- type: dropdown
57+
id: operation-mode
58+
attributes:
59+
label: Operation mode
60+
description: Which Mac Health Check mode exposed the issue?
61+
options:
62+
- Self Service
63+
- Silent
64+
- Debug
65+
- Development
66+
- Test
67+
- More than one mode
68+
- Not sure
69+
validations:
70+
required: true
71+
72+
- type: dropdown
73+
id: device-management-solution
74+
attributes:
75+
label: Device management solution
76+
description: Select the primary MDM / UEM platform used in your environment.
77+
options:
78+
- Addigy
79+
- Apple Business Essentials
80+
- Cisco Meraki
81+
- FileWave
82+
- Fleet
83+
- Google Workspace
84+
- Hexnode
85+
- IBM MaaS360
86+
- Ivanti
87+
- Jamf
88+
- Kandji
89+
- ManageEngine
90+
- Microsoft Intune
91+
- Mosyle
92+
- Omnissa Workspace ONE
93+
- SOTI MobiControl
94+
- Custom built
95+
- Something else not on this list
96+
validations:
97+
required: true
98+
99+
- type: dropdown
100+
id: affected-area
101+
attributes:
102+
label: Which area looks broken?
103+
options:
104+
- Health check result or remediation text
105+
- Inspect Mode summary or cached replay
106+
- Silent mode or scheduled client-side cache run
107+
- Splunk HEC reporting
108+
- Jamf inventory or policy integration
109+
- swiftDialog rendering or button behavior
110+
- External check integration
111+
- Packaging or deployment helper resources
112+
- Documentation or examples
113+
- Other / not sure
114+
validations:
115+
required: true
116+
117+
- type: textarea
118+
id: what-happened
119+
attributes:
120+
label: What happened?
121+
description: Describe actual behavior.
122+
placeholder: |
123+
Example: The main dialog completed, but the detached Inspect Mode summary never launched and no cached replay assets were written to /var/tmp.
124+
validations:
125+
required: true
126+
127+
- type: textarea
128+
id: expected-behavior
129+
attributes:
130+
label: What did you expect to happen?
131+
placeholder: |
132+
Example: The run should have written the Inspect Mode assets and launched the summary after report generation.
133+
validations:
134+
required: true
135+
136+
- type: textarea
137+
id: reproduction
138+
attributes:
139+
label: Steps to reproduce
140+
description: Numbered steps make bugs much easier to act on.
141+
placeholder: |
142+
1. Deploy Mac Health Check with your current parameters
143+
2. Run it in the affected operation mode
144+
3. Note any local modifications or enabled external checks
145+
4. Observe the unexpected behavior
146+
validations:
147+
required: true
148+
149+
- type: textarea
150+
id: diagnostics
151+
attributes:
152+
label: Diagnostic artifacts
153+
description: Drag and drop sanitized logs, screenshots, JSON reports, plist exports, or other attachments here.
154+
placeholder: |
155+
Attach any of the following when available:
156+
- Full command or policy parameters used to launch the script
157+
- Relevant scriptLog excerpts
158+
- Exported Terminal output or `zsh -x` trace
159+
- /var/tmp/MacHealthCheck-Report.json excerpt
160+
- Inspect Mode JSON / compliance plist artifacts
161+
- Screenshots or screen recordings
162+
163+
- type: textarea
164+
id: additional-context
165+
attributes:
166+
label: Anything else
167+
description: Include environment details, workarounds, external checks, or deployment context that do not fit above.

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Mac Admins Slack `#mac-health-check`
4+
url: https://slack.com/app_redirect?channel=C0977DRT7UY
5+
about: Ask usage or deployment questions before filing an issue.
6+
- name: Mac Health Check documentation
7+
url: https://snelson.us/mhc
8+
about: Review setup, deployment, operation-mode, and support guidance.
9+
- name: swiftDialog upstream issues
10+
url: https://github.com/swiftDialog/swiftDialog/issues
11+
about: For dialog-engine issues that are outside this project.
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: Documentation
2+
description: Report missing, unclear, or outdated documentation for Mac Health Check
3+
title: "[Docs]: "
4+
labels: ["documentation"]
5+
assignees:
6+
- dan-snelson
7+
body:
8+
- type: markdown
9+
attributes:
10+
value: |
11+
Use this form for documentation-only issues: README gaps, diagram drift, setup guidance problems, screenshots, examples, or wording updates.
12+
13+
If your report includes a runtime defect, use the **Bug Report** form instead.
14+
15+
- type: dropdown
16+
id: docs-area
17+
attributes:
18+
label: Which documentation area needs attention?
19+
options:
20+
- README.md
21+
- CHANGELOG.md
22+
- Diagrams
23+
- Resources documentation
24+
- external-checks documentation
25+
- Issue templates
26+
- Deployment or packaging guidance
27+
- Screenshots or images
28+
- Other
29+
validations:
30+
required: true
31+
32+
- type: dropdown
33+
id: issue-type
34+
attributes:
35+
label: What kind of documentation problem is this?
36+
options:
37+
- Incorrect or outdated information
38+
- Missing instructions or example
39+
- Confusing wording or structure
40+
- Broken link or bad reference
41+
- Screenshot or diagram drift
42+
- Typo or grammar issue
43+
- Other
44+
validations:
45+
required: true
46+
47+
- type: textarea
48+
id: current-docs
49+
attributes:
50+
label: What is wrong today?
51+
description: Describe the current documentation problem.
52+
placeholder: |
53+
Example: README still implies a behavior that changed in 4.0.0 and no longer matches Silent mode output.
54+
validations:
55+
required: true
56+
57+
- type: textarea
58+
id: proposed-update
59+
attributes:
60+
label: What should it say instead?
61+
description: Suggest corrected wording, structure, or content when possible.
62+
placeholder: |
63+
Example: Update the Silent mode section to explain that full health-check runs write Inspect Mode assets without launching swiftDialog.
64+
validations:
65+
required: true
66+
67+
- type: input
68+
id: affected-links
69+
attributes:
70+
label: Affected file or URL
71+
description: Add the repo path, section heading, or public URL that needs updating.
72+
placeholder: "e.g. README.md#silent-mode or Diagrams/05-operation-modes.md"
73+
74+
- type: textarea
75+
id: supporting-context
76+
attributes:
77+
label: Supporting context
78+
description: Add screenshots, references, related commits, or release/version context.

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)