Update Fleet-maintained apps - #50622
Conversation
Generated automatically with cmd/maintained-apps.
WalkthroughUpdated twelve Fleet-maintained application manifests. The changes update application versions, patch-version queries, installer URLs, and SHA-256 checksums for macOS and Windows packages. Installation, uninstallation, and existence-query logic remain unchanged where applicable. Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@ee/maintained-apps/outputs/clion/darwin.json`:
- Around line 9-12: Add artifact metadata verification for the manifest entries
at ee/maintained-apps/outputs/clion/darwin.json:9-12,
ee/maintained-apps/outputs/firefox@developer-edition/darwin.json:9-12,
ee/maintained-apps/outputs/gitkraken/darwin.json:9-12,
ee/maintained-apps/outputs/grammarly-desktop/darwin.json:9-12,
ee/maintained-apps/outputs/hive-app/darwin.json:9-12,
ee/maintained-apps/outputs/macpacker/darwin.json:9-12,
ee/maintained-apps/outputs/pdf-expert/darwin.json:9-12,
ee/maintained-apps/outputs/webstorm/darwin.json:9-12,
ee/maintained-apps/outputs/zed/darwin.json:9-12,
ee/maintained-apps/outputs/tailscale/windows.json:9-12, and
ee/maintained-apps/outputs/zed/windows.json:9-12. For each artifact, either add
a release-page or publisher metadata lookup that verifies the expected
application version and architecture, or record equivalent version and
architecture metadata in the manifest alongside the existing installer and hash
fields.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: f4f20bd8-54a6-4c1d-82fa-b79a673e8e23
📒 Files selected for processing (12)
ee/maintained-apps/outputs/clion/darwin.jsonee/maintained-apps/outputs/firefox@developer-edition/darwin.jsonee/maintained-apps/outputs/gitkraken/darwin.jsonee/maintained-apps/outputs/grammarly-desktop/darwin.jsonee/maintained-apps/outputs/hive-app/darwin.jsonee/maintained-apps/outputs/macpacker/darwin.jsonee/maintained-apps/outputs/pdf-expert/darwin.jsonee/maintained-apps/outputs/postman/windows.jsonee/maintained-apps/outputs/tailscale/windows.jsonee/maintained-apps/outputs/webstorm/darwin.jsonee/maintained-apps/outputs/zed/darwin.jsonee/maintained-apps/outputs/zed/windows.json
| "installer_url": "https://download.jetbrains.com/cpp/CLion-2026.2.1-aarch64.dmg", | ||
| "install_script_ref": "402571cd", | ||
| "uninstall_script_ref": "9c00be7f", | ||
| "sha256": "9e4909f34adcd5b0291013194f4663650727864cc01b78b5a7d1a1414038813e", | ||
| "sha256": "5017110b817f95aa2128658e0cd069b16935be85c0585f6e01b4fadd6fc663d3", |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
files=(
'ee/maintained-apps/outputs/clion/darwin.json'
'ee/maintained-apps/outputs/firefox@developer-edition/darwin.json'
'ee/maintained-apps/outputs/gitkraken/darwin.json'
'ee/maintained-apps/outputs/grammarly-desktop/darwin.json'
'ee/maintained-apps/outputs/hive-app/darwin.json'
'ee/maintained-apps/outputs/macpacker/darwin.json'
'ee/maintained-apps/outputs/pdf-expert/darwin.json'
'ee/maintained-apps/outputs/webstorm/darwin.json'
'ee/maintained-apps/outputs/zed/darwin.json'
'ee/maintained-apps/outputs/tailscale/windows.json'
'ee/maintained-apps/outputs/zed/windows.json'
)
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT
sha256() {
if command -v sha256sum >/dev/null 2>&1; then
sha256sum "$1" | awk '{print $1}'
else
shasum -a 256 "$1" | awk '{print $1}'
fi
}
for manifest in "${files[@]}"; do
jq -e '
.versions[0]
| (.version and .installer_url and .sha256)
and (.installer_url | startswith("https://"))
and (.sha256 | test("^[0-9a-f]{64}$"))
' "$manifest" >/dev/null
url="$(jq -r '.versions[0].installer_url' "$manifest")"
expected="$(jq -r '.versions[0].sha256' "$manifest")"
version="$(jq -r '.versions[0].version' "$manifest")"
artifact="$tmpdir/$(printf '%s' "$manifest" | tr '/@' '__').pkg"
curl --fail --location --proto '=https' --proto-redir '=https' \
--retry 3 --connect-timeout 20 --max-time 900 \
"$url" -o "$artifact"
actual="$(sha256 "$artifact")"
if [[ "$actual" != "$expected" ]]; then
printf 'checksum mismatch: %s\nexpected=%s\nactual=%s\n' \
"$manifest" "$expected" "$actual" >&2
exit 1
fi
printf 'verified checksum: %s version=%s\n' "$manifest" "$version"
command -v file >/dev/null 2>&1 && file "$artifact"
doneRepository: fleetdm/fleet
Length of output: 10418
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
files=(
'ee/maintained-apps/outputs/clion/darwin.json'
'ee/maintained-apps/outputs/firefox@developer-edition/darwin.json'
'ee/maintained-apps/outputs/gitkraken/darwin.json'
'ee/maintained-apps/outputs/grammarly-desktop/darwin.json'
'ee/maintained-apps/outputs/hive-app/darwin.json'
'ee/maintained-apps/outputs/macpacker/darwin.json'
'ee/maintained-apps/outputs/pdf-expert/darwin.json'
'ee/maintained-apps/outputs/webstorm/darwin.json'
'ee/maintained-apps/outputs/zed/darwin.json'
'ee/maintained-apps/outputs/tailscale/windows.json'
'ee/maintained-apps/outputs/zed/windows.json'
)
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT
jq -n '
. == {
clion: {app:"CLion", major:"2026.2.1", arch:"arm64", ext:"dmg", version:"2026.2.1"},
firefox_developer_edition: {app:"", major:"154.0b7", arch:"", ext:"dmg", version:"154.0b7"},
gitkraken: {app:"GitKraken", major:"12.4.0", arch:"arm64", ext:"zip", version:"12.4.0"},
grammarly_desktop: {app:"Grammarly", major:"1.181.2", arch:"", ext:"dmg", version:"1.181.2"},
hive_app: {app:"Hive", major:"1.2.26", arch:"arm64", ext:"dmg", version:"1.2.26"},
macpacker: {app:"MacPacker", major:"0.19.0", arch:"", ext:"zip", version:"0.19.0"},
pdf_expert: {app:"PDF Expert", major:"1168", arch:"", ext:"zip", version:"3.12"},
webstorm: {app:"WebStorm", major:"2026.2.1", arch:"arm64", ext:"dmg", version:"2026.2.1"},
zed_darwin: {app:"Zed", major:"1.14.2", arch:"arm64", ext:"dmg", version:"1.14.2"},
tailscale_windows: {app:"Tailscale", major:"1.102.2", arch:"amd64", ext:"msi", version:"1.102.2"},
zed_windows: {app:"Zed", major:"1.14.2", arch:"x86_64", ext:"exe", version:"1.14.2"},
}
' >/dev/null
idx=0
for manifest in "${files[@]}"; do
idx=$((idx+1))
url="$(jq -r '.versions[0].installer_url' "$manifest")"
expected="$(jq -r '.versions[0].sha256' "$manifest")"
version="$(jq -r '.versions[0].version' "$manifest")"
app="$(jq -r '.versions[0].versionApp // empty' "$manifest")"
architecture="$(jq -r '.versions[0].architecture // empty' "$manifest")"
artifact="$tmpdir/${idx}_$(printf '%s' "$manifest" | tr '/@' '__')"
set +e
http_code="$(curl --silent --show-error --fail --location --proto '=https' --proto-redir '=https' \
--retry 3 --connect-timeout 25 --max-time 900 \
-o "$artifact" -w '%{http_code}\n' "$url")"
status=$?
set -e
echo "${manifest} http=${http_code:-"curl=$status"} artifact=$artifact"
echo " manifest version=${version} app=${app:-<unset>} arch=${architecture:-<unset>}"
echo " manifest sha256=${expected}"
if [[ "${`#expected`}" -ne 64 ]]; then
echo " sha256 length invalid"
exit 1
fi
actual="$(sha256sum "$artifact" | awk '{print $1}')"
echo " downloaded sha256=${actual}"
if [[ "$actual" != "$expected" ]]; then
echo " CHECKSUM_MISMATCH"
exit 1
fi
case "${manifest##*/}" in
darwin.json)
if command -v hdiutil >/dev/null 2>&1; then
if [[ "$artifact" == *.dmg ]]; then
hdiutil attach -nobrowse -quiet -mountpoint "$tmpdir/mnt-$idx" "$artifact" || true
if [[ -d "$tmpdir/mnt-$idx" ]]; then
find "$tmpdir/mnt-$idx" -maxdepth 1 -type d -mindepth 1 | while read -r appdir; do
echo " mounted app=${appdir##*/}"
if [[ -e "$appdir/Contents/Info.plist" ]]; then
/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString; Print CFBundleIdentifier; Print CFBundleVersion' "$appdir/Contents/Info.plist" 2>/dev/null || true
fi
if [[ -x "$appdir/Contents/MacOS/CLion" ]]; then "$appdir/Contents/MacOS/CLion" --version 2>&1 | sed "s/^/ /" | head -n 20 || true; fi
if [[ -x "$appdir/Contents/MacOS/WebStorm" ]]; then "$appdir/Contents/MacOS/WebStorm" --version 2>&1 | sed "s/^/ /" | head -n 20 || true; fi
if [[ -x "$appdir/Contents/MacOS/Zed" ]]; then "$appdir/Contents/MacOS/Zed" --version 2>&1 | sed "s/^/ /" | head -n 20 || true; fi
if [[ -x "$appdir/Contents/MacOS/TextMate.app/Contents/MacOS/Grammarly" ]]; then "$appdir/Contents/MacOS/TextMate.app/Contents/MacOS/Grammarly" --version 2>&1 | sed "s/^/ /" | head -n 20 || true; fi
if ! lipo "$appdir/Contents/MacOS/Grammarly" 2>/dev/null | grep -q "x86_64 arm64"; then true; fi
if command -v otool >/dev/null 2>&1 && [[ -e "$appdir/Contents/MacOS/Grammarly" ]]; then otool -l "$appdir/Contents/MacOS/Grammarly" | grep -E 'arch|minos|flags' | sed "s/^/ /" | head -n 8 || true; fi
done
hdiutil detach -quiet "$tmpdir/mnt-$idx" 2>/dev/null || true
fi
elif [[ "$artifact" == *.zip ]]; then
unzip -lo "$artifact" -d "$tmpdir/unzipped-$idx" >/dev/null 2>&1
find "$tmpdir/unzipped-$idx" -maxdepth 2 -type f -executable -print | while read -r exe; do
echo " executable=${exe}"
"$exe" --version 2>&1 | sed "s/^/ /" | head -n 15 || true
done
find "$tmpdir/unzipped-$idx" -maxdepth 2 -type f \( -iname 'Contents/Info.plist' -o -name Info.plist \) -print | while read -r pl; do
echo " plist=${pl}"
/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString; Print CFBundleIdentifier; Print CFBundleVersion' "$pl" 2>/dev/null || true
done
fi
else
echo " hdiutil/unzip otool unavailable"
fi
;;
windows.json)
echo " windows platform: skipped mount inspection"
echo " file: $(file "$artifact")"
;;
esac
echo
doneRepository: fleetdm/fleet
Length of output: 4608
Add artifact metadata checks before merge.
The hash values match the downloaded files, but the static manifests do not prove each artifact contains the expected application version and architecture. Add a release-page or publisher metadata lookup for these artifacts, or record that metadata in the manifest.
📍 Affects 11 files
ee/maintained-apps/outputs/clion/darwin.json#L9-L12(this comment)ee/maintained-apps/outputs/firefox@developer-edition/darwin.json#L9-L12ee/maintained-apps/outputs/gitkraken/darwin.json#L9-L12ee/maintained-apps/outputs/grammarly-desktop/darwin.json#L9-L12ee/maintained-apps/outputs/hive-app/darwin.json#L9-L12ee/maintained-apps/outputs/macpacker/darwin.json#L9-L12ee/maintained-apps/outputs/pdf-expert/darwin.json#L9-L12ee/maintained-apps/outputs/webstorm/darwin.json#L9-L12ee/maintained-apps/outputs/zed/darwin.json#L9-L12ee/maintained-apps/outputs/tailscale/windows.json#L9-L12ee/maintained-apps/outputs/zed/windows.json#L9-L12
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ee/maintained-apps/outputs/clion/darwin.json` around lines 9 - 12, Add
artifact metadata verification for the manifest entries at
ee/maintained-apps/outputs/clion/darwin.json:9-12,
ee/maintained-apps/outputs/firefox@developer-edition/darwin.json:9-12,
ee/maintained-apps/outputs/gitkraken/darwin.json:9-12,
ee/maintained-apps/outputs/grammarly-desktop/darwin.json:9-12,
ee/maintained-apps/outputs/hive-app/darwin.json:9-12,
ee/maintained-apps/outputs/macpacker/darwin.json:9-12,
ee/maintained-apps/outputs/pdf-expert/darwin.json:9-12,
ee/maintained-apps/outputs/webstorm/darwin.json:9-12,
ee/maintained-apps/outputs/zed/darwin.json:9-12,
ee/maintained-apps/outputs/tailscale/windows.json:9-12, and
ee/maintained-apps/outputs/zed/windows.json:9-12. For each artifact, either add
a release-page or publisher metadata lookup that verifies the expected
application version and architecture, or record equivalent version and
architecture metadata in the manifest alongside the existing installer and hash
fields.
|
Closing in favor of #50626. |
Automated ingestion of latest Fleet-maintained app data.
Summary by CodeRabbit