Skip to content

Update Fleet-maintained apps - #47421

Merged
allenhouchins merged 1 commit into
mainfrom
fma-2606111346
Jun 11, 2026
Merged

Update Fleet-maintained apps#47421
allenhouchins merged 1 commit into
mainfrom
fma-2606111346

Conversation

@fleet-release

@fleet-release fleet-release commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Automated ingestion of latest Fleet-maintained app data.

Summary by CodeRabbit

  • Chores
    • Updated version metadata for 40+ maintained applications across macOS and Windows platforms, including installer URLs and integrity checksums.
    • Refreshed version constraints and detection logic to match latest releases.
    • Updated uninstall scripts where necessary to target correct application versions.

Generated automatically with cmd/maintained-apps.
@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/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 upload

ee/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) ===

@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

This 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 patched query threshold to match, replaces the installer_url download path, and updates the corresponding sha256 checksum. Some applications also introduce or modify install/uninstall script references and embeddings. The changes span both macOS (darwin.json) and Windows (windows.json) platforms, with most updates following a consistent metadata schema while a subset include functional script or category changes.

Possibly related PRs

  • fleetdm/fleet#46616: Updates ChatGPT macOS manifest version, patched query threshold, and installer checksum in the same chatgpt/darwin.json file.
  • fleetdm/fleet#45016: Updates Postman Windows manifest version and installer metadata in postman/windows.json with matching patched query and SHA256 changes.
  • fleetdm/fleet#46151: Updates Zen Browser macOS manifest version, patched threshold, installer URL, and checksum in zen/darwin.json.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The PR description is minimal but appropriate for an automated data ingestion process. However, it does not follow the provided template structure with required sections like testing, checklist items, or issue references. Consider adding a related issue reference (e.g., 'Resolves #') and clarify which template sections are applicable for automated data-only changes.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Update Fleet-maintained apps' accurately summarizes the main change—updating version metadata across multiple Fleet-maintained applications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fma-2606111346

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 9fd4da8 and b8f01d8.

📒 Files selected for processing (52)
  • ee/maintained-apps/outputs/ableton-live-suite/darwin.json
  • ee/maintained-apps/outputs/adobe-acrobat-reader/darwin.json
  • ee/maintained-apps/outputs/anka-virtualization/darwin.json
  • ee/maintained-apps/outputs/aws-cli/windows.json
  • ee/maintained-apps/outputs/background-music/darwin.json
  • ee/maintained-apps/outputs/badgeify/darwin.json
  • ee/maintained-apps/outputs/bettertouchtool/darwin.json
  • ee/maintained-apps/outputs/chatgpt/darwin.json
  • ee/maintained-apps/outputs/chrome-remote-desktop-host/darwin.json
  • ee/maintained-apps/outputs/codexbar/darwin.json
  • ee/maintained-apps/outputs/cog-app/darwin.json
  • ee/maintained-apps/outputs/cursor/darwin.json
  • ee/maintained-apps/outputs/cursor/windows.json
  • ee/maintained-apps/outputs/dropbox/windows.json
  • ee/maintained-apps/outputs/eclipse-ide/darwin.json
  • ee/maintained-apps/outputs/element/darwin.json
  • ee/maintained-apps/outputs/elgato-game-capture-hd/darwin.json
  • ee/maintained-apps/outputs/elmedia-player/darwin.json
  • ee/maintained-apps/outputs/ente-auth/darwin.json
  • ee/maintained-apps/outputs/extradock/darwin.json
  • ee/maintained-apps/outputs/goland/windows.json
  • ee/maintained-apps/outputs/goodsync/darwin.json
  • ee/maintained-apps/outputs/hive-app/darwin.json
  • ee/maintained-apps/outputs/imazing/darwin.json
  • ee/maintained-apps/outputs/kiro-cli/darwin.json
  • ee/maintained-apps/outputs/kiro/darwin.json
  • ee/maintained-apps/outputs/linear/darwin.json
  • ee/maintained-apps/outputs/loom/darwin.json
  • ee/maintained-apps/outputs/loom/windows.json
  • ee/maintained-apps/outputs/microsoft-office/windows.json
  • ee/maintained-apps/outputs/omnioutliner/darwin.json
  • ee/maintained-apps/outputs/opencode-desktop/darwin.json
  • ee/maintained-apps/outputs/postman/darwin.json
  • ee/maintained-apps/outputs/postman/windows.json
  • ee/maintained-apps/outputs/powertoys/windows.json
  • ee/maintained-apps/outputs/python-3.13/windows.json
  • ee/maintained-apps/outputs/python-3.14/windows.json
  • ee/maintained-apps/outputs/sabnzbd/darwin.json
  • ee/maintained-apps/outputs/signal/darwin.json
  • ee/maintained-apps/outputs/signal/windows.json
  • ee/maintained-apps/outputs/tableau/darwin.json
  • ee/maintained-apps/outputs/tableplus/darwin.json
  • ee/maintained-apps/outputs/telegram/windows.json
  • ee/maintained-apps/outputs/vc-redist-x64/windows.json
  • ee/maintained-apps/outputs/visual-studio-code/windows.json
  • ee/maintained-apps/outputs/warp/darwin.json
  • ee/maintained-apps/outputs/wealthfolio/darwin.json
  • ee/maintained-apps/outputs/whatsapp/darwin.json
  • ee/maintained-apps/outputs/zed/darwin.json
  • ee/maintained-apps/outputs/zed/windows.json
  • ee/maintained-apps/outputs/zen/darwin.json
  • ee/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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

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.

Suggested change
"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.

Comment thread ee/maintained-apps/outputs/warp/darwin.json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants