Update Fleet-maintained apps - #47421
Conversation
Generated automatically with cmd/maintained-apps.
Script Diff Resultsee/maintained-apps/outputs/ableton-live-suite/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/adobe-acrobat-reader/darwin.json=== Install // 94780f00 -> 03804f2c ===
--- /tmp/old.wPHb4s 2026-06-11 13:54:02.193728127 +0000
+++ /tmp/new.VTb2VD 2026-06-11 13:54:02.194728128 +0000
@@ -101,5 +101,5 @@
hdiutil detach "$MOUNT_POINT" || true
# install pkg files
quit_and_track_application 'com.adobe.Reader'
-sudo installer -pkg "$TMPDIR/AcroRdrDC_2600121529_MUI.pkg" -target /
+sudo installer -pkg "$TMPDIR/AcroRdrDC_2600121662_MUI.pkg" -target /
relaunch_application 'com.adobe.Reader'
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/anka-virtualization/darwin.json=== Install // 82c7a931 -> de345300 ===
--- /tmp/old.GBm0mD 2026-06-11 13:54:02.236728132 +0000
+++ /tmp/new.LFIcSq 2026-06-11 13:54:02.236728132 +0000
@@ -96,5 +96,5 @@
# install pkg files
quit_and_track_application 'com.veertu.anka'
-sudo installer -pkg "$TMPDIR/Anka-3.9.0.215.pkg" -target /
+sudo installer -pkg "$TMPDIR/Anka-3.9.1.216.pkg" -target /
relaunch_application 'com.veertu.anka'
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/aws-cli/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/background-music/darwin.json=== Install // bea133af -> a73cbc1e ===
--- /tmp/old.Q0mjeR 2026-06-11 13:54:02.297728140 +0000
+++ /tmp/new.AqQMvi 2026-06-11 13:54:02.297728140 +0000
@@ -96,5 +96,5 @@
# install pkg files
quit_and_track_application 'com.bearisdriving.BGM.App'
-sudo installer -pkg "$TMPDIR/BackgroundMusic-0.4.3.pkg" -target /
+sudo installer -pkg "$TMPDIR/BackgroundMusic-0.5.0.pkg" -target /
relaunch_application 'com.bearisdriving.BGM.App'
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/badgeify/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/bettertouchtool/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/chatgpt/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/chrome-remote-desktop-host/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/codexbar/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/cog-app/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/cursor/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/cursor/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/dropbox/windows.json=== Install Script (no changes) ===
=== Uninstall // fbaba8c4 -> 1035e43a ===
--- /tmp/old.omA6Vz 2026-06-11 13:54:02.539728168 +0000
+++ /tmp/new.NZQRkx 2026-06-11 13:54:02.539728168 +0000
@@ -1,4 +1,4 @@
-$product_code = '{03B15244-0E1C-5852-AF87-5B2CCF06E45A}'
+$product_code = '{C1BD7420-DAD0-58F1-BAD3-C58354BEE1AB}'
$timeoutSeconds = 300 # 5 minute timeout
# Fleet uninstalls app using product code that's extracted on uploadee/maintained-apps/outputs/eclipse-ide/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/element/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/elgato-game-capture-hd/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/elmedia-player/darwin.json=== Install // 564653f7 -> 68785a9b ===
--- /tmp/old.eUGOPJ 2026-06-11 13:54:02.651728181 +0000
+++ /tmp/new.MdqYhb 2026-06-11 13:54:02.651728181 +0000
@@ -100,9 +100,9 @@
sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
hdiutil detach "$MOUNT_POINT" || true
# copy to the applications folder
-quit_and_track_application 'com.Eltima.ElmediaPlayer.LSSharedFileList'
+quit_and_track_application 'com.Eltima.ElmediaPlayer'
if [ -d "$APPDIR/Elmedia Player.app" ]; then
sudo mv "$APPDIR/Elmedia Player.app" "$TMPDIR/Elmedia Player.app.bkp"
fi
sudo cp -R "$TMPDIR/Elmedia Player.app" "$APPDIR"
-relaunch_application 'com.Eltima.ElmediaPlayer.LSSharedFileList'
+relaunch_application 'com.Eltima.ElmediaPlayer'
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ente-auth/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/extradock/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/goland/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/goodsync/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/hive-app/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/imazing/darwin.json=== Install Script (no changes) ===
=== Uninstall // 64a2ebfc -> b213835e ===
--- /tmp/old.88UliB 2026-06-11 13:54:02.818730245 +0000
+++ /tmp/new.tPth6y 2026-06-11 13:54:02.818730245 +0000
@@ -92,8 +92,8 @@
fi
}
-quit_application 'com.DigiDNA.iMazing3.5.4.24052Mac'
-quit_application 'com.DigiDNA.iMazing3.5.4.24052Mac.Mini'
+quit_application 'com.DigiDNA.iMazing3.5.5.24057Mac'
+quit_application 'com.DigiDNA.iMazing3.5.5.24057Mac.Mini'
sudo rm -rf "$APPDIR/iMazing.app"
trash $LOGGED_IN_USER '/Users/Shared/iMazing Mini'
trash $LOGGED_IN_USER '/Users/Shared/iMazing'ee/maintained-apps/outputs/kiro-cli/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/kiro/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/linear/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/loom/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/loom/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/microsoft-office/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/omnioutliner/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/opencode-desktop/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/postman/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/postman/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/powertoys/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/python-3.13/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/python-3.14/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/sabnzbd/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/signal/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/signal/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/tableau/darwin.json=== Install Script (no changes) ===
=== Uninstall // 1e763b20 -> 95e2ce5d ===
--- /tmp/old.GZZiOh 2026-06-11 13:54:03.286736316 +0000
+++ /tmp/new.fC69IN 2026-06-11 13:54:03.287736329 +0000
@@ -144,12 +144,12 @@
forget_pkg 'com.tableausoftware.telemetry'
remove_pkg_files 'simba.sparkodbc'
forget_pkg 'simba.sparkodbc'
-sudo rm -rf '/Library/Preferences/com.tableau.Tableau-2026.1.plist'
-trash $LOGGED_IN_USER '/Library/Preferences/com.tableau.Tableau-2026.1.plist'
+sudo rm -rf '/Library/Preferences/com.tableau.Tableau-2026.2.plist'
+trash $LOGGED_IN_USER '/Library/Preferences/com.tableau.Tableau-2026.2.plist'
trash $LOGGED_IN_USER '~/Documents/My Tableau Repository'
trash $LOGGED_IN_USER '~/Library/Caches/com.tableau.caching'
trash $LOGGED_IN_USER '~/Library/Caches/com.tableausoftware.MapTiles'
trash $LOGGED_IN_USER '~/Library/Preferences/com.tableau.Registration.plist'
-trash $LOGGED_IN_USER '~/Library/Preferences/com.tableau.Tableau-2026.1.plist'
+trash $LOGGED_IN_USER '~/Library/Preferences/com.tableau.Tableau-2026.2.plist'
trash $LOGGED_IN_USER '~/Library/Saved Application State/com.tableausoftware.tableaudesktop.savedState'
trash $LOGGED_IN_USER '~/Library/Tableau'ee/maintained-apps/outputs/tableplus/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/telegram/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/vc-redist-x64/windows.json=== Install Script (no changes) ===
=== Uninstall // 5077ddcb -> c4fbbcfd ===
--- /tmp/old.TkqbtG 2026-06-11 13:54:03.386737613 +0000
+++ /tmp/new.OR45cY 2026-06-11 13:54:03.386737613 +0000
@@ -8,7 +8,7 @@
# the bundle by its ProductCode (injected by the ingester) and fall back to the
# cached bootstrapper in the Package Cache.
-$productCode = '{c157798c-9519-4e56-98d9-f696f78f4a61}'
+$productCode = '{0e3bb569-69d6-4c34-bff9-c2f81db5e5f0}'
function Invoke-Uninstaller {
param([string]$exe, [string]$exeArgs)ee/maintained-apps/outputs/visual-studio-code/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/warp/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/wealthfolio/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/whatsapp/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/zed/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/zed/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/zen/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/zotero/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) === |
WalkthroughThis pull request updates version-pinning and installer metadata across 50 maintained application manifests in Fleet's managed-apps output directory. Each update bumps the application version field, adjusts the SQL Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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: 2
🤖 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/imazing/darwin.json`:
- Line 19: The quit_application calls use version-stamped bundle IDs and must be
changed to the canonical app ID used elsewhere; update the two calls to
quit_application so they pass "com.DigiDNA.iMazing3Mac" (and the Mini variant
"com.DigiDNA.iMazing3Mac.Mini" if needed) instead of the versioned IDs, ensuring
the function quit_application and any other references that expect
com.DigiDNA.iMazing3Mac will match the manifest/app ID contract.
In `@ee/maintained-apps/outputs/warp/darwin.json`:
- Line 12: The darwin.json entry currently disables integrity checking by
setting the sha256 field to "no_check"; replace that placeholder with the actual
SHA256 checksum of the Warp DMG for the targeted release (or add logic to fetch
and verify a published checksum) so Fleet can cryptographically verify
downloads; update the "sha256" value for the Warp installer entry (the "sha256"
key in the Warp installer JSON) to the correct hex digest and, if necessary, add
a step in the installer/validation flow to fail the installation when the
checksum does not match.
🪄 Autofix (Beta)
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
Run ID: 655d1b82-a521-423c-81ff-f2aa2134f8a1
📒 Files selected for processing (52)
ee/maintained-apps/outputs/ableton-live-suite/darwin.jsonee/maintained-apps/outputs/adobe-acrobat-reader/darwin.jsonee/maintained-apps/outputs/anka-virtualization/darwin.jsonee/maintained-apps/outputs/aws-cli/windows.jsonee/maintained-apps/outputs/background-music/darwin.jsonee/maintained-apps/outputs/badgeify/darwin.jsonee/maintained-apps/outputs/bettertouchtool/darwin.jsonee/maintained-apps/outputs/chatgpt/darwin.jsonee/maintained-apps/outputs/chrome-remote-desktop-host/darwin.jsonee/maintained-apps/outputs/codexbar/darwin.jsonee/maintained-apps/outputs/cog-app/darwin.jsonee/maintained-apps/outputs/cursor/darwin.jsonee/maintained-apps/outputs/cursor/windows.jsonee/maintained-apps/outputs/dropbox/windows.jsonee/maintained-apps/outputs/eclipse-ide/darwin.jsonee/maintained-apps/outputs/element/darwin.jsonee/maintained-apps/outputs/elgato-game-capture-hd/darwin.jsonee/maintained-apps/outputs/elmedia-player/darwin.jsonee/maintained-apps/outputs/ente-auth/darwin.jsonee/maintained-apps/outputs/extradock/darwin.jsonee/maintained-apps/outputs/goland/windows.jsonee/maintained-apps/outputs/goodsync/darwin.jsonee/maintained-apps/outputs/hive-app/darwin.jsonee/maintained-apps/outputs/imazing/darwin.jsonee/maintained-apps/outputs/kiro-cli/darwin.jsonee/maintained-apps/outputs/kiro/darwin.jsonee/maintained-apps/outputs/linear/darwin.jsonee/maintained-apps/outputs/loom/darwin.jsonee/maintained-apps/outputs/loom/windows.jsonee/maintained-apps/outputs/microsoft-office/windows.jsonee/maintained-apps/outputs/omnioutliner/darwin.jsonee/maintained-apps/outputs/opencode-desktop/darwin.jsonee/maintained-apps/outputs/postman/darwin.jsonee/maintained-apps/outputs/postman/windows.jsonee/maintained-apps/outputs/powertoys/windows.jsonee/maintained-apps/outputs/python-3.13/windows.jsonee/maintained-apps/outputs/python-3.14/windows.jsonee/maintained-apps/outputs/sabnzbd/darwin.jsonee/maintained-apps/outputs/signal/darwin.jsonee/maintained-apps/outputs/signal/windows.jsonee/maintained-apps/outputs/tableau/darwin.jsonee/maintained-apps/outputs/tableplus/darwin.jsonee/maintained-apps/outputs/telegram/windows.jsonee/maintained-apps/outputs/vc-redist-x64/windows.jsonee/maintained-apps/outputs/visual-studio-code/windows.jsonee/maintained-apps/outputs/warp/darwin.jsonee/maintained-apps/outputs/wealthfolio/darwin.jsonee/maintained-apps/outputs/whatsapp/darwin.jsonee/maintained-apps/outputs/zed/darwin.jsonee/maintained-apps/outputs/zed/windows.jsonee/maintained-apps/outputs/zen/darwin.jsonee/maintained-apps/outputs/zotero/windows.json
| ], | ||
| "refs": { | ||
| "64a2ebfc": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.DigiDNA.iMazing3.5.4.24052Mac'\nquit_application 'com.DigiDNA.iMazing3.5.4.24052Mac.Mini'\nsudo rm -rf \"$APPDIR/iMazing.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing Mini'\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing Mini'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/MobileSync/Backup/iMazing.Versions'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.Mini.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.plist'\n", | ||
| "b213835e": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.DigiDNA.iMazing3.5.5.24057Mac'\nquit_application 'com.DigiDNA.iMazing3.5.5.24057Mac.Mini'\nsudo rm -rf \"$APPDIR/iMazing.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing Mini'\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing Mini'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/MobileSync/Backup/iMazing.Versions'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.Mini.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.plist'\n", |
There was a problem hiding this comment.
Align uninstall quit bundle IDs with the manifest’s app ID contract.
Line 19 uses version-stamped bundle IDs in quit_application (com.DigiDNA.iMazing3.5.5.24057Mac*), while Lines 6-7 and the install flow target com.DigiDNA.iMazing3Mac. This mismatch can skip the intended pre-uninstall quit behavior.
Suggested fix
-quit_application 'com.DigiDNA.iMazing3.5.5.24057Mac'
-quit_application 'com.DigiDNA.iMazing3.5.5.24057Mac.Mini'
+quit_application 'com.DigiDNA.iMazing3Mac'
+quit_application 'com.DigiDNA.iMazing3Mac.Mini'📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "b213835e": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.DigiDNA.iMazing3.5.5.24057Mac'\nquit_application 'com.DigiDNA.iMazing3.5.5.24057Mac.Mini'\nsudo rm -rf \"$APPDIR/iMazing.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing Mini'\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing Mini'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/MobileSync/Backup/iMazing.Versions'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.Mini.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.plist'\n", | |
| "b213835e": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.DigiDNA.iMazing3Mac'\nquit_application 'com.DigiDNA.iMazing3Mac.Mini'\nsudo rm -rf \"$APPDIR/iMazing.app\"\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing Mini'\ntrash $LOGGED_IN_USER '/Users/Shared/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing Mini'\ntrash $LOGGED_IN_USER '~/Library/Application Support/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Application Support/MobileSync/Backup/iMazing.Versions'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.DigiDNA.iMazing3Mac.Mini'\ntrash $LOGGED_IN_USER '~/Library/Caches/iMazing'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.Mini.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.DigiDNA.iMazing3Mac.plist'\n", |
🤖 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/imazing/darwin.json` at line 19, The
quit_application calls use version-stamped bundle IDs and must be changed to the
canonical app ID used elsewhere; update the two calls to quit_application so
they pass "com.DigiDNA.iMazing3Mac" (and the Mini variant
"com.DigiDNA.iMazing3Mac.Mini" if needed) instead of the versioned IDs, ensuring
the function quit_application and any other references that expect
com.DigiDNA.iMazing3Mac will match the manifest/app ID contract.
Automated ingestion of latest Fleet-maintained app data.
Summary by CodeRabbit